По умолчанию TCPdump исследует или всю информацию о событиях в сети или собирает все записи из какого-то файла. Но что делать, если нужно обнаружить записи с определенными значениями полей в IP-дейтаграммах, которые бы указывали на вредоносную деятельность, направленную против хостов локальной сети? С помощью фильтров TCPdump можно найти IP-дейтаграммы с определенным значением какого-либо поля, т.е. провести выборку из общего объема записей. Фильтрация может осуществляться по значениям полей в ІР-заголовке (например, по длине IP-заголовка), в TCP-заголовке (например, по наличию флагов TCP), в UDP-заголовке (например, по значению порта получателя) или ICMP-заголовке (например, по типу ІСМР-сообщения).

В программе TCPdump предопределены несколько макросов для создания фильтров по значениям наиболее важных полей, например, макрос “port” для фильтрации по номеру порта отправителя или получателя, или макрос “host”, позволяющий выбирать записи о пакетах с определенным ІР-адресом или именем отправителя или получателя. В наших примерах мы не будем использовать эти макросы не потому, что мы пренебрегаем ими, а потому, что для интересующих нас полей макросы не предопределены. Поэтому при создании фильтра, проверяющего пакеты по значению определенного поля, нам придется указывать, в пакете какого протокола это поле используется, и где оно располагается (смещение в байтах).

В TCPdump заголовкам разных пакетов соответствуют различные имена. Например, имя “ip” используется для указания поля в заголовке IP-дейтаграммы или фрагмента данных в самой IP-дейтаграмме, имя “tcp” - для поля в ТСР-заголовке или фрагмента данных в TCP-сегменте, имя “udp” - для поля в UDP-заголовке или фрагмента данных в UDP-пакете и имя “істр” для поля в ІСМР-заголовке или фрагмента данных в ІСМР-сообщении.

Затем необходимо создать ссылку на расположение поля в пакете данного протокола, указав смещение в байтах от начала пакета. Например, запись ip [0] указывает на нулевое смещение в IP-дейтаграмме, конкретно - на смещение в ІР-заголовке (не забывайте, что счет начинается с нуля). Запись tcp [13] задает смещение 13 байт от начала TCP-сегмента, что тоже указывает на часть TCP-заголовка. Запись icmp [0] обозначает первый байт ІСМР-сообщения, т.е. тип ІСМР-сообщения.

Таким образом, для создания фильтра TCPdump используется следующий формат.

<заголовок_протокола>[смещение:длина] <отношение> <значение>

Для всех фильтров, рассматриваемых в этой главе, эталоном является стандартный формат ІР-заголовка (рис. 12.1). Обратите внимание на то, что каждая строка содержит 32 бит (с О до 31), что равно 4 байт. И не забывайте начинать счет с нуля!

Рис. 12.1. Заголовок IP-дейтаграммы

Предположим, что с помощью TCPdump необходимо выбрать все дейтаграммы с вложенными ICMP-сообщениями. Поле “Протокол” имеет смещение 9 байт (последний раз напоминаем, что счет начинается с 0) в IP-заголовке (см. рис. 12.1). Следовательно, его можно обозначить как ip [9]. Обратите внимание на то, что в формате создания фильтра указана форма записи смещение: длина. Однако по умолчанию длина считается равной 1 байт, и указывать ее нужно, только если значение отличается. Определив место расположения 1-байтового поля, необходимо указать на хранящееся в нем значение 1, которое соответствует протоколу ICMP. Полный фильтр для выявления записей об ICMP-сообщениях выглядит как ip [9] = X. Для сбора соответствующих записей в сети следует использовать следующую команду, tcpdump 'ip[9] = 1'

Эта команда позволяет организовать чтение информации с заданного по умолчанию сетевого интерфейса и выбирать только записи о передаче ICMP-сообщений. Фильтр записан в одиночных кавычках, чтобы командный интерпретатор UNIX интерпретировал его однозначно. С помощью параметра командной строки -F можно задать расположение файла, в котором хранится нужный фильтр. Если сохранить фильтр ip [9] = 1 в файле /tmp/filter, то для его использования потребуется следующая команда, tcpdump -F /tmp/filter

Результат будет аналогичен запуску команды tcpdump с указанием фильтра в командной строке. Параметр -F обычно используется для доступа к файлам с длинными фильтрами или для автоматизированных процессов TCPdump с целью устранить необходимость ввода фильтра из командной строки.

Создание фильтров tcpdump | Обнаружение нарушений безопасности в сетях | Побитовое маскирование


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



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

  • Октябрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс