
Запросы icmp
Если говорить о возможностях протокола ICMP для сбора информации о сети, то зондирование с помощью утилиты ping (или, другими словами, с помощью пакетов ECHO, пересылаемых по протоколу ICMP),— это только верхушка айсберга. Просто обмениваясь пакетами ICMP с интересующей вас системой, о ней можно получить любую информацию.
Например, с помощью таких утилит UNIX, как icmpquery (http://packetstorm.security.com/UNIX/scanners/icmpquery.с) или icmpush (http://packetstorm.securify.com/UNIX/scanners/icmpush22.tgz), можно узнать системное время удаленного узла (т.е. часовой пояс, в котором он находится). Для этого нужно отправить по протоколу ICMP сообщение типа 13 (TIMESTAMP). Точно так же, обратившись к определенному устройству с ICMP-запросом типа 17 (ADDRESS MASK REQUEST), можно узнать маску подсети. Знание маски подсети сетевой карты позволяет определить все существующие подсети. Например, используя маску подсети, усилия можно сосредоточить на определенной подсети и избежать необходимости обращения к адресам широковещательной рассылки сообщений. Утилита icmpquery позволяет запрашивать как системное время, так и маску подсети.
icmpquery <query> [-B] [-f fromhost] [-d delay] [-T time] targets.
Здесь параметр query принимает одно из следующих значений:
-t : ICMP-запрос системного времени (по умолчанию) ;
-m : ICMP-запрос маски подсети.
delay — задержка между пакетами в миллисекундах.
targets — список имен или адресов исследуемых узлов.
time - время в секундах, в течение которого следует ожидать отклика. По умолчанию используется значение 5 с.
-В — включение режима широковещательной рассылки. В этом режиме утилита ожидает в течение определенного периода, а затем выводит отчет о поступивших ответах.
Если вы используете модем, установите значения параметров -d и -Т большими, чем установленные по умолчанию.
Например, чтобы с помощью утилиты icmpquery узнать системное время маршрутизатора, воспользуйтесь следующей командой.
[tsunami] icmpquery -t 192.168.1.1
192.168.1.1 : 11:36:19
Запрос на получение маски подсети выглядит следующим образом.
[tsunami] icmpquery -m 192.168.1.1
192.168.1.1 : OxFFFFFFEO
Далеко не все маршрутизаторы/узлы отвечают на ICMP-запросы TIMESTAMP или NETMASK. Поэтому с помощью утилит icmpquery и icmpush на различных узлах можно получить разные результаты.
root@andLinux:~$ icmpush
icmpush v2.2 by Slayer, 1999/02/19
Try 'icmpush -h' to display the help.
vitnos@andLinux:~$ icmpush -h
Usage: icmpush type [options] host
Type:
-du Destination Unreach -echo Echo Request
-info Information Request -mask Address Mask Request
-rta Router Advertisement -rts Router Solicitation
-red Redirect -sq Source Quench
-tstamp Timestamp -tx Time Exceeded
-param Parameter Problem
-v Verbose mode on -vv Debug mode on
-h This help screen -V Program version
Options:
-sp address Spoof host.
-to secs Timeout secs to read the replies.
-n Don't use name resolution.
-lt secs Lifetime secs for an ICMP Router Advertisement.
-gw address Route gateway host for an ICMP Redirect.
-dest address Route destination host for an ICMP Redirect.
-orig address Original host for an ICMP error.
-psrc port Source port (tcp/udp) of ICMP error data.
-pdst port Destination port (tcp/udp) of ICMP error data.
-prot ICMP error data protocol ( tcp | udp | icmp ).
-id ident Identification for an ICMP information message.
-seq seq# Sequence number for an ICMP information message.
-pat pattern Data pattern to send within an ICMP Echo Request.
-gbg bytes|max Number of garbage data bytes to send or maximum(max).
-ptr byte Incorrect byte on an ICMP Parameter Problem.
-c code|num|max ICMP code. See the man page for details.
Контрмеры: защита от
ICМР-запросов
Одним из самых лучших методов защиты является блокирование ICМР-запросов тех типов, которые способствуют разглашению информации о сети за ее пределами. Как минимум, на пограничном маршрутизаторе необходимо заблокировать прохождение во внутреннюю сеть пакетов TIMESTAMP (ICMP-сообщение тип 13) и ADDRESS MASK (тип 17). Например, если в качестве пограничного маршрутизатора используется маршрутизатор Cisco, запретите ему отвечать на указанные запросы, добавив следующие строки в список управления доступом.
access-list 101 deny icmp any any 13 ! запрос системного времени access-list 101 deny icmp any any 17 ! запрос маски
Для выявления рассмотренных выше видов деятельности можно также воспользоваться сетевыми системами выявления вторжений (NIDS), например, программой snort (http://www.snort.org/). При выявлении такого типа вторжений будет выведена следующая информация.
[**] PING-ICMP Timestamp [**]
05/29-12:04:40.535502 192.168.1.10 -> 192.168.1.1
ICMP TTL:255 TOS:OxO ID:4321 TIMESTAMP REQUEST
Висновки
В данной лекции мы рассмотрели средства и методы, предназначенные для осуществления ping-зондирования (как с помощью протокола ICMP, так и с помощью TCP). С помощью средств ping-зондирования можно идентифицировать узлы сети, подключенные к Internet, что позволяет сузить область поиска потенциальных целей.