Для многих людей мир
компьютерной безопасности и обнаружения
вторжений - книга за семью печатями. Обычно
все начинается с вопросов: Какие
инструменты вы используете? Могу я
смоделировать это дома? Какие знания
необходимы? В этой статьей я попробую
рассказать о том как работают системы
защиты - мы возьмем распространенный
эксплоит, проанализируем его работу и
обследуем с точки зрения системного
администратора.

Окружение

Я в своей работе использовал
примерно такую лабораторию:

  • SuSE Pro 9.1 для запуска эксплоита, 192.168.1.100.
  • Windows 2000 Pro без обновлений и файрвола (стандартная
    ситуация, не правда ли?). Такой выбор
    обусловлен тем, что мы будем тестить
    старый, но вполне радостный эксплоит
    для RPC DCOM
    уязвимости. Адрес этой машины
    192.168.1.101. 

Утилиты

Разобравшись с железом перейдем к софту.
МОи программы могут работать как в 32-битных
Windows, так и на Linux/Unix. поддавшись мнению
большинства я буду использовать в на
админской машине Windows ХР.

  • Snort
  • Snortsnarf
    - кросс-платформенна утилита на Perl с
    модулями JulianDay.pm, TimeZone.pm, и ParseDate.pm (качать тут,
    для опознания делать так: C:\snortsnarf.pl -usage)
  • Tcpdump and libpcap
    для Linux или windump
    and winpcap
    для винды
  • PERL версии 5.6. 1

Анализ трафика

Естественно нас будет интересовать
сетевой трафик той машины, на которой мы
будет испытывать действие эксплоита (192.168.1.101).
В моем примере я записал лог (дял примера
его размер и комплексность сведена к
минимуму) в формате "little endian" и его
можно использовать с Snort, windump или tcpdump, или
обработать через Ethereal.
Мой совет использовать все же более
низкоуровневые инструменты типа windump, так
как аналайзеры хоть и позволят
абстрагироваться от некоторых вещей (ведь с
другой стороны в windump сами придется искать в
пакетах все поля и данные), но не дадут на
практике более полно изучить протокол TCP/IP.

Snort

Первым шагом будет сборка эксплоита и
пропускание его через Snort. Если вы еще не в
курсе, то Snort - open-source система обнаружения
вторжения. Для теста использует программу с
со стандартными правилами, которые идут со
Snort:

c:\snort\bin\snort.exe -r file -c c:\snort.conf -A full

Здесь file - бинарник, который мы получили
при помощи windump во время работы эксплоита на
тестовой машиной, ключ 'с' указывает где
искать конфигурационный файл, 'А' - включить
полное логгирование. Eсли выскочит ошибка о
том, что нет доступа на запись в директорию
с логами, то вероятно просто такой
директории нет, для того что бы ее указать
запустите Snort с ключом '-l'.

Snortsnarf

Работающий Snort будет выдавать данные в
alert.ids, который мы затем запулим в snortsnarf,
который в свою очередь будет генерить милые
HTML страницы. Делаем так:

snortsnarf.pl alert.ids -win -rs

Snortsnarf создаст поддиректорию snfout.alert.ids, в
которой и сложит все страницы, которые вам
необходимы. В зависимости от версии Snort вы
увидите примерно такой список
предупреждений:

Priority Signature (click for sig info) # Alerts # Sources # Dests
1 WEB-PHP viewtopic.php access [sid] [BUGTRAQ] 3 1 2
1 NETBIOS DCERPC ISystemActivator bind attempt [sid] [CVE] 1 1 1
2 TFTP Get [sid] 3 1 1
2 ATTACK-RESPONSES directory listing [sid] 3 1 1
2 ATTACK-RESPONSES 403 Forbidden [sid] 1 1 1

Вот как это будет выглядеть в Snortsnarf:

Анализируем алярмы

Подошло время посмотреть что же выдал Snort.
За первым номером идет WEB-PHP, проследовав по
гиперссылке на сайте Snort можно прочитать
описание. Без осознания произошедшего нам
трудно будет построить bpf фильтр, который бы
изолировал враждебный трафик. Обратите так
же внимание, что в snortsnarfдля каждого
предупреждения указан точный пакет,
который вызвал срабатывание триггера.
Знание конкретного пакета конечно хорошо,
но в нашем случае я предпочитаю изолировать
весь трафик между двумя хостами,
заподозренными во вторжении. Фильтр,
приведенный ниже, позволит нам узнать
только тот трафик, которыми обменивались
два конкретных подозреваемых хоста. Кстати
говоря, в данном случае я предпочитаю
смотреть не только TCP, но и IP протокол -
очевидно, что интересно проследить за всей
деятельностью, которая происходила между
компьютерами, например обмен ICMP ECHO пакетами
довольно занимателен и полезен для
изучения :).

C:\ windump.exe -r log_file -nXvSs 0 ip and host 192.168.1.101 and host
64.233.67.99 > web_php

Что тут происходит? Я сказал tcpdump парсить
все пакеты с правильным заголовком с такими
адресами  в текстовый файл web_php. Обратите
внимание, что мы вскоре увидим, что адрес
64.x.x.x вовсе не при чем и вызвал ложно
срабатывание от простого серфинга. Ключ 'S' говорит
программе давать полную последовательный
номер TCP, а не относительный. Это позволит
вам не запариваясь наблюдать за Sequence и
Acknowledgement номерами.

Check Also

Туннель во времени. Выводим данные с компьютера через Network Time Protocol

Содержание статьиЧто такое NTPСтруктура пакета NTPОграничения на трафик по порту UDP-123Ко…

Оставить мнение