• Партнер

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

    Окружение

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

    • 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 номерами.

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии