Если говорить о возможностях протокола ICMP для сбора информации о сети, то прослушивание при помощи утилиты ping (или, иначе говоря, при помощи пакетов ECHO, пересылаемых по протоколу ICMP), - это лишь вершина айсберга. Просто обмениваясь пакетами ICMP с интересующей вас системой, о ней возможно получить любую информацию. К примеру, при помощи подобных утилит UNIX, как icmpquery (http://packetstorm.securify.com/UNIX/scanners/icmpquery.с) или icmpush (http://packetstorm.security.com/UNIX/scanners/icmpush22.tgz), возможно выяснить системное времени удаленного узла (т.е. часовой пояс, в коем он располагается). Для этого стоит отослать по протоколу ICMP сообщение типа 13 (TIMESTAMP). В точности так же, обратившись к определенному устройству с ICMP-запросом типа 17 (ADDRESS MASK REQUEST), возможно выяснить маску подсети. Знание маски подсети сетевой карты позволяет определить все существующие подсети. К примеру, используя маску подсети, усилия возможно сосредоточить на конкретной подсети и избежать потребности обращения к адресам рассылки широковещательных извещений. Тулза icmpquery позволяет запрашивать как системное времени, так и маску подсети.
icmpquery [-B] [-f fromhost] [-d delay] [-T time] targets Тут параметр query принимает одно из следующих значений: -t : ICMP-запрос системного время (изначально); -m : ICMP-запрос маски подсети. delay - задержка м/у пакетами в миллисекундах, targets - перечень имен или адресов исследуемых узлов, time - времени в секундах, на протяжении которого нужно ждать отклика. Изначально используется значение 5 с. -В - включение режима широковещательной рассылки. В этом режиме тулза ждет на протяжении периода, определенного параметром time, а после выводит отчет о поступивших ответах. Если вы используете модем, установите значения параметров -d и -Т огромными, чем установленные изначально.
К примеру, чтоб при помощи icmpquery выяснить системное времени маршрутизатора, воспользуйтесь следующей командой.
Отнюдь не все маршрутизаторы/узлы отвечают на ICMP-запросы TIMESTAMP или NETMASK. По этой причине при помощи утилит icmpquery и icmpush на разных узлах возможно получить разнообразные результаты.
Контрмеры: защита от ICМР-запросов
Одним из наиболее лучших методов защиты является блокирование IOМР-запросов тех типов, которые способствуют разглашению информации о сети за ее пределами. Хотя бы, на пограничном маршрутизаторе требуется заблокировать прохождение во внутреннюю сеть пакетов TIMESTAMP (ICMP-сообщение тип 13) и ADDRESS MASK (тип 17). К примеру, если в роли пограничного маршрутизатора используется маршрутизатор Cisco, запретите ему отвечать на указанные запросы, добавив последующие строки в перечень управления доступом.
access-list 101 deny icmp any any 13 ! timestamp request access-list 101 deny icmp any any 17 ! address mask request
Для выявления рассмотренных выше видов деятельности возможно тоже воспользоваться сетевыми системами выявления вторжений V(NIDS), к примеру, программой Марти Рош (Marty Roach) (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:0x0 АЙДИШНИК:4321 TIMESTAMP REQUEST