Создание собственных расширений Nlog
Если вы изучите дополнительные процедуры, то увидите, что это обычные программы на языке Perl. Если у вас есть опыт работы с Perl, вы в состоянии писать собственные расширения, позволяющие выполнять для просканированных хостов практически произвольную функцию. Например, можно извлечь и вывести HTTP-заголовки для всех обнаруженных web-серверов, чтобы было легче их идентифицировать. Не стоит слишком этим увлекаться, поскольку такие программы, как Nessus (рассматривается в лекции 5), могут производить значительно более обстоятельные проверки, но если вам нужен только заголовок или какой-то небольшой фрагмент информации, то применение Nlog будет хорошим решением.
Nlog поставляется с образцом пользовательского дополнения, названным nlog-bind.pl. Эта процедура предназначена для опроса сервера DNS и выдачи используемой версии BIND (Berkeley Internet Name Domain), однако она не закончена и служит лишь в качестве упражнения для создания собственных дополнений. Образец находится в каталоге /nlog*/extras/bind/. Следующие шаги помогут вам дописать процедуру. Этот подход можно использовать для самостоятельного создания любой пользовательской процедуры.
- Перейдите в упомянутый каталог и скомпилируйте процедуру с помощью компилятора Gcc, используя следующую команду: gcc -o bindinfo binfo-udp.c
В каталоге будет создан бинарный файл bindinfo.
- Скопируйте этот файл в каталог, где хранятся ваши Nlog-процедуры.
- Измените у него режим доступа, сделав его исполнимым (помните, что для выполнения этой команды вы должны быть суперпользователем): chmod 700 bindinfo
- Откройте файл nlog-config.ph в текстовом редакторе.
- Добавьте строку вида $bindinfo = "маршрут_к_bindinfo";
Замените маршрут_к_bindinfo на маршрутное имя каталога, в который вы поместили бинарный файл.
- Сохраните текстовый файл.
- Теперь отредактируйте файл nlog-search.pl. Это Perl-процедура, которая создает страницу с результатами поиска.
- Найдите раздел, который выглядит следующим образом:
1: # here we place each cgi-handler into a temp var for readability. 2: 3: $cgiSunRPC = "sunrpc+$cgidir/nlog-rpc.pl+SunRPC"; 4: $cgiSMB = "netbios-ssn+$cgidir/nlog=smb.pl+NetBIOS"; 5: $cgiFinder = "finder+$cgidir/nlog-finder.pl+Finder"; 6: 7: $qcgilinks = "$cgiSunRPC $cgiSMB $cgiFinder";
- Между строками 5 и 6 добавьте следующую строку: $cgiBIND = "domain+$cgidir/nlog-bind.pl+BIND";
- Отредактируйте строку 7, чтобы она имела следующий вид: $qcgilinks = "$cgiSunRPC $cgiSMB $cgiFinder $cgiBIND";
В строке 7 вы можете аналогичным образом добавить ссылки на любые другие созданные вами процедуры.
- Скопируйте файл nlog-bind.pl из этого каталога в свой cgi-каталог (var/www/cgi в Mandrake Linux), и измените режим доступа (chmod), чтобы приложение могло его прочитать.
Теперь, когда Nmap найдет открытым порт 53 (обычно это DNS-сервер), вы можете щелкнуть мышью на ссылке, которую создает Nlog, и выяснить, какая версия BIND выполняется. Следуя логике этого примера, можно написать дополнительные процедуры для расширения Nlog.