Инструментальные средства обеспечения безопасности

       

Синтаксис командной строки: спецификации фильтров


Утилита tcpdump позволяет использовать булевское выражение для определения пакетного фильтра. Булевское выражение может состоять из нескольких выражений, объединенных вместе с помощью операторов AND, OR или NOT. Типичный формат выражения такой:

<Характеристика пакета> <значение>

Спецификаторы типа. Наиболее типичные характеристики пакета, называемые спецификаторами (qualifiers) - спецификаторы типа: host (хост), net (сеть) и port (порт). Например, командная строка:

%tcpdump host 192.168.1.100

говорит о том, что мы хотим видеть только пакеты, идущие по адресу 192.168.1.100 или от него. Если нас интересует только Web-трафик, мы можем попробовать следующее:

%tcpdump host 192.168.1.100 and port 80

Это выражение позволяет нам иметь тот же самый уровень функциональности фильтра, который мы имели с программой BUTTSniffer. Но утилита tcpdump имеет еще несколько модификаторов, из которых вы можете выбирать. В данном случае, нам не надо сначала исключать весь трафик, чтобы сосредоточиться на определенном хосте.

Спецификаторы направления. tcpdump позволяет определять фильтры направлений. Например, если нас интересует только трафик, прибывающий с адреса 192.168.1.100, который предназначен чьему-то Web-порту, мы используем спецификаторы направлений src и dst:

%tcpdump src host 192.168.1.100 and dst port 80

Этот фильтр дает нам именно то, что мы ищем. Иначе, мы видели бы трафик, прибывающий из других мест на Web-сервер хоста 192.168.1.100, когда это нас совсем не интересует.

Если вы не указываете спецификатор направления для спецификатора типа, tcpdump подразумевает src или dst. Вторая команда, которую мы рассматривали, могла бы быть переписана следующим образом:

%tcpdump src or dst host 192.168.1.100 and src or dst port 80 Примечание. Для протоколов типа "точка-точка", таких как протоколы коммутируемых линий Serial Line Internet Protocol (SLIP) и Point-to-Point Protocol (PPP), утилита tcpdump использует другие спецификаторы направления inbound (прибывающий) и outbound (исходящий).


Спецификаторы протокола. У tcpdump также есть спецификаторы протокола, которые могут применяться к вашему выражению. Например, строка
%tcpdump src host 192.168.1.100 and udp dst port 53
даст исходящие DNS (Domain Name System) запросы с хоста 192.168.1.100. Обратите внимание на спецификатор протокола udp, расположенный перед спецификатором порта dst. Другие спецификаторы протокола для спецификаторов типа порта - tcp и icmp. Некоторые спецификаторы протокола используются при спецификаторах типа хоста, например ip, ip6, arp и ether.
Эта команда дает все arp-запросы на нашей локальной подсети:
%tcpdump arp net 192.168.1
Если мы знаем MAC-адрес определенного хоста, и хотим установить на него фильтр, то можно использовать следующую строку:
%tcpdump ether host 00:e0:29:38:b4:67
Если никакие спецификаторы протокола не даны, tcpdump подразумевает значения ip, arp или rarp для спецификаторов типа хоста, и tcp или udp для спецификаторов типа порта.
Другие спецификаторы. До сих пор синтаксис для отдельного выражения, устанавливающего соответствие пакетов некоторым требованиям, выглядит так:
[Спецификатор протокола] [спецификатор направления] <спецификатор типа> значение
Несколько других необязательных спецификаторов, которые могут использоваться для определения дополнительных характеристик пакета, показаны в таблице 14.1.

Таблица 14.1. Другие спецификаторы инструмента tcpdumpСпецификаторОписаниеПримеры
gatewayОтображает только пакеты, которые используют router1 в качестве шлюза (gateway). Значение, используемое с gateway, должно быть именем хоста, поскольку выражение должно разрешать имя хоста к IP-адресу (используя /etc/hosts или DNS), а также к Ethernet-адресу (используя /etc/ethers).tcpdump gateway router1 (Чтобы использовать прямо IP- и MAC-адреса, используйте tcpdump ether host <mac_of_host> and not ip host <ip_of_host>, что эквивалентно использованию фильтра шлюза, но с адресами вместо имен хостов.)
broadcast, multicastbroadcast отображает только широковещательные пакеты, (в данном случае, пакеты с адресами получателя 192.168.1.0 или 192.168.1.255). multicast отображает только IP-пакеты, предназначенные группе адресов.tcpdump ip broadcast net 192.168.1
protoЭтот полезный спецификатор позволяет вам определять подпротоколы определенного протокола, даже если у tcpdump нет для этого встроенного ключевого слова. Названия протоколов нужно отделять, используя обратную наклонную черту, чтобы оградить tcpdump от интерпретации их, как ключевого слова, но вы можете также в этом месте использовать номера протоколов. Некоторые популярные номера IP-подпротоколов следующие: 1 (ICMP), 6 (TCP) и 17 (UDP).tcpdump ip proto 17. (Выражение ip host 192.168.1.100 and tcp port 80 может быть записано как ether proto \\ip and host 192.168.1.100 and ip proto \\tcp and port 80. Обратите внимание, как модификатор протокола в каждом случае расширяется к <protocol> proto <sub-protocol>.)
maskЭтот спецификатор может определить маску подсети для спецификаторов типа сети. Это редко используется, потому что можно указать маску сети в значении, предназначенном для указания спецификатора типа сети.tcpdump net 192.168.1.0 mask 255.255.255.0. (Или по другому, как tcpdump net 192.168.1.0/24.)
len,_greater,_lessПакеты могут быть отфильтрованы по их размеру. Спецификаторы greater и less являются просто сокращением для длинных выражений, которые используют ключевое слово len. В обоих примерах показываются только пакеты, которые имеют размеры 80 байт или больше.tcpdump greater 80 и tcpdump len>= 80.
Packet_content_expressionsДля опытных пользователей. Вы можете фильтровать пакеты, основываясь на их содержании. Используйте название протокола (такое как ether, ip или tcp), за ним значение смещения в байтах от искомого заголовка в квадратных скобках, как индекс массива (udp [4], чтобы определить длину UDP-дэйтаграммы), далее булевский оператор и другое выражение. Обратите внимание, что большинство выражений должно быть заключено в кавычки, потому что интерпретатор команд (shell), который вы используете, вероятно, будет пробовать интерпретировать их прежде, чем это будет делать tcpdump.tcpdump 'udp[4] >= 24'. (В этом примере отображаются только UDP-пакеты, у которых размеры полезных данных превышают 24 байта. См. другие примеры в справке man.)
<


Значения. Очевидно, что значения для спецификаторов зависят от используемого спецификатора. В общем виде, значение может быть или символическим названием, или соответствующим числом.
  • host - спецификаторы типа хостов имеют значения имен хостов или числовых адресов. (Являются ли они IP-адресами, MAC-адресами или другими адресами, зависит от предшествующего им спецификатора протокола.)
  • port - спецификаторы типа портов используют символические названия (из /etc/services) для портов или непосредственно номера портов.
  • net - спецификаторы типа сети используют сетевые адреса и маски сети написанные или с сетевыми октетами (типа 192.168), с последующим числом сетевых байтов (192.168.0.0/16), или с последующей сетевой маской (192.168.0.0 mask 255.255.0.0).
  • proto - спецификаторы типа протокола используют символические названия (ip, tcp, udp) или номера протоколов, определенные в /etc/protocols.
Примечание. Поскольку в Windows нет никакого каталога /etc, WinDump использует хосты и файлы служб, которые установлены в корневом каталоге Windows (например, C:\Windows\).

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