Инструменты безопасности с открытым исходным кодом

Создание собственных расширений Nlog


Если вы изучите дополнительные процедуры, то увидите, что это обычные программы на языке Perl. Если у вас есть опыт работы с Perl, вы в состоянии писать собственные расширения, позволяющие выполнять для просканированных хостов практически произвольную функцию. Например, можно извлечь и вывести HTTP-заголовки для всех обнаруженных web-серверов, чтобы было легче их идентифицировать. Не стоит слишком этим увлекаться, поскольку такие программы, как Nessus (рассматривается в лекции 5), могут производить значительно более обстоятельные проверки, но если вам нужен только заголовок или какой-то небольшой фрагмент информации, то применение Nlog будет хорошим решением.

Nlog поставляется с образцом пользовательского дополнения, названным nlog-bind.pl. Эта процедура предназначена для опроса сервера DNS и выдачи используемой версии BIND (Berkeley Internet Name Domain), однако она не закончена и служит лишь в качестве упражнения для создания собственных дополнений. Образец находится в каталоге /nlog*/extras/bind/. Следующие шаги помогут вам дописать процедуру. Этот подход можно использовать для самостоятельного создания любой пользовательской процедуры.

  1. Перейдите в упомянутый каталог и скомпилируйте процедуру с помощью компилятора Gcc, используя следующую команду: gcc -o bindinfo binfo-udp.c

    В каталоге будет создан бинарный файл bindinfo.

  2. Скопируйте этот файл в каталог, где хранятся ваши Nlog-процедуры.
  3. Измените у него режим доступа, сделав его исполнимым (помните, что для выполнения этой команды вы должны быть суперпользователем): chmod 700 bindinfo
  4. Откройте файл nlog-config.ph в текстовом редакторе.
  5. Добавьте строку вида $bindinfo = "маршрут_к_bindinfo";

    Замените маршрут_к_bindinfo на маршрутное имя каталога, в который вы поместили бинарный файл.

  6. Сохраните текстовый файл.
  7. Теперь отредактируйте файл nlog-search.pl. Это Perl-процедура, которая создает страницу с результатами поиска.
  8. Найдите раздел, который выглядит следующим образом:

    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";

  9. Между строками 5 и 6 добавьте следующую строку: $cgiBIND = "domain+$cgidir/nlog-bind.pl+BIND";
  10. Отредактируйте строку 7, чтобы она имела следующий вид: $qcgilinks = "$cgiSunRPC $cgiSMB $cgiFinder $cgiBIND";

    В строке 7 вы можете аналогичным образом добавить ссылки на любые другие созданные вами процедуры.

  11. Скопируйте файл nlog-bind.pl из этого каталога в свой cgi-каталог (var/www/cgi в Mandrake Linux), и измените режим доступа (chmod), чтобы приложение могло его прочитать.

Теперь, когда Nmap найдет открытым порт 53 (обычно это DNS-сервер), вы можете щелкнуть мышью на ссылке, которую создает Nlog, и выяснить, какая версия BIND выполняется. Следуя логике этого примера, можно написать дополнительные процедуры для расширения Nlog.



Содержание раздела