Многие программы атаки и троянские программы используют UDP-порты, например, программа Back Orifice использует UDP-порт 31337. Поэтому нужно определить UDP-порты, попытки соединения с которыми будут отслеживаться. Принять решение поможет информация сайта www. snort .org/ports .html. Создайте фильтры, отслеживающие запросы к перечисленным на этом сайте портам. Например, следующий фильтр позволяет выявлять пакеты программы Back Orifice, udp and dst port 31337

Как видите, создать подобный фильтр очень просто. Сложнее принять решение, какие порты следует контролировать, добавить их в фильтр и постоянно обновлять его при появлении новых программ атаки, использующих UDP-порты.

Рассмотрим популярное UDP-приложение - программу Traceroute. При работе этой программы UDP-пакеты отправляются на привилегированные порты хоста-получателя. Если вы не хотите, чтобы этим хостом оказался хост вашей сети, следует создать фильтр, который будет отслеживать попытки установить UDP-соединение с портами в диапазоне 33000-33999. Этот фильтр позволит выявить большинство действий Traceroute. Однако Windows-программа Traceroute использует эхо-запросы и эхо-ответы ICMP, которые нельзя обнаружить с помощью этого фильтра. Кроме того, для некоторых UNIX-версий Traceroute с помощью параметра командной строки можно задавать номер порта получателя.

Напомним формат заголовка UDP-пакета (рис. 12.4). Обратите внимание на то, что номер порта получателя сохраняется в байтах 2 и 3 UDP-заголовка.

Рис. 12.4. Заголовок UDP-пакета

Резонно возникает вопрос: “А зачем считать смещение поля в байте, если можно просто воспользоваться макросом “port”?”. Например, почему бы не применить следующий фильтр, dst port >= 33000 and dst port < 34000

Дело в том, что в TCPdump при использовании подобных диапазонов, а не точных значений, необходимо определять значение и смещение этого поля по отношению к пакету базового протокола и отказаться от использования макросов. Правильный фильтр для выявления действий Traceroute должен выглядеть так.

udp[2:2] >= 33000 and udp[2:2] < 34000

Обратите внимание на первый пример использования параметра длины [2:2] для проверки сразу нескольких байтов. Задан анализ двух последовательных байтов начиная со второго (по номеру) байта UDP-пакета. Объем фиксируемого TCPdump трафика можно еще больше ограничить, добавив к этому фильтру проверку значения поля TTL. Программа Traceroute управляет значением поля TTL IP-заголовка отправляемых пакетов. Последовательно увеличивая значения этого поля на 1 в отправляемых пакетах, она составляет список адресов промежуточных маршрутизаторов на пути к получателю. Поэтому чаще всего в полученном от Traceroute пакете значение поля TTL будет равно 1. Таким образом, фильтр для выявления действий Traceroute можно улучшить, организовав дополнительный поиск по значению поля TTL. Поле TTL находится в 8-м байте (см. рис. 12.1) IP-заголовка, и макроса для него не существует. Новый фильтр принимает следующую форму.

udp[2:2] >= 33000 and udp[2:2] < 34000 and ip[8] = 1

Вы получили представление о создании UDP-фильтров. Фильтры TCPdump можно использовать и для ICMP-сообщений. В частности, полезно отслеживать поступление ICMP-запросов на получение масок подсети, попытки узнать MTU вашей сети (с помощью отправления пакетов с установленным флагом DF и ожидания ответа от вашего маршрутизатора), а также пакетов программы Loki. Все эти фильтры создать несложно. Попробуйте написать их самостоятельно. Для этого воспользуйтесь перечисленными ниже сигнатурами.

■ В первом байте (смещение 0) ICMP-запроса на адрес маски подсети содержится значение 17.

■ В ICMP-сообщении с установленным флагом DF в первом байте (смещение 0) содержится значение 3, а во втором (смещение 1) - значение 4.

■ Сигнатурой для Loki можно считать эхо-запрос (значение 8 в первом байте ICMP-сообщения) или эхо-ответ (значение 0 в первом байте ICMP-сообщения). Для двух байтов со смещением б и 7 можно контролировать шестнадцатеричные значения OxfOOl и 0x01ГО.

Проверьте, как вы справились с заданием, с помощью приведенных ниже фильтров. icmp[0] = 17

((icmp[0] = 3) and <icmp[l] = 4)

(((icmp[0] = 0) or (icmp[0]'= 8)) and

((icmp[6:2] = OxfOOl) or (icmp[6:2] = OxOlfO)))

Ip-фильтры программы tcpdump | Обнаружение нарушений безопасности в сетях | Tcp-фильтры программы tcpdump


Обнаружение нарушений безопасности в сетях



Новости за месяц

  • Июнь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс