Хакерский конвейер Докучаев Дмитрий 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. Прочитав этот журнал, можно определить, какие серверы были взломаны, а какие эксплуатируются в данный момент. |