Рефераты
 

Сетевые сканеры и анализаторы

Сетевые сканеры и анализаторы

Кубанский государственный технологический университет

Кафедра защиты информации

КУРСОВАЯ РАБОТА

По дисциплине:

языки программирования

На тему:

Сетевые сканеры и анализаторы

Краснодар 2008

ВВЕДЕНИЕ

Данный курсовой проект является обзорной статьей о передаче информации в локальных сетях и методах её отслеживания (нахождения). Собранный мною материал предназначен для опытных пользователей, работающих с локальными сетями, в частности - для сетевых администраторов.

Сканирование

Цель сканирования -- выявить открытые "окна" и "двери". В предварительно собранной информации содержатся сведения об адресах подсетей и отдельных компьютеров, полученных с помощью запросов whois и переноса зоны.

Информация, собранная на этом этапе, очень ценна для взломщика, поскольку содержит такие данные, как имена и фамилии сотрудников, номера телефонов, диапазоны IP-адресов, адреса DNS-серверов и почтовых серверов. Теперь можно приступать к выявлению тех компьютеров, которые подключены к сети и достижимы из Internet. Для этого будут использоваться разнообразные средства и приемы, такие как ping-прослушивание, сканирование портов и различные методы, позволяющие автоматизировать выполнение этих задач.

Необходимо отметить, что факт наличия IP-адреса в перенесенной зоне еще не означает, что к соответствующему узлу можно получить доступ через Internet. Необходимо проверить каждый конкретный компьютер в отдельности и выяснить, подключен ли он к Internet и имеются ли на нем порты, находящиеся в состоянии ожидания запросов. Нам приходилось встречать немало неправильно настроенных DNS-серверов, которые предоставляли всем желающим адреса обслуживаемых ими частных сетей (например, 10.10.10.0). Поскольку такие адреса не маршрутизируются по Internet, вы понапрасну будете тратить время, пытаясь связаться с ними. Более подробная информация о том, какие адреса являются маршрутизируемыми, приведена в RFC 1918(http://www.ietf.org/rfc/rfcl918.txt).

Теперь давайте перейдем ко второму этапу сбора информации -- сканированию.

Прослушивание сети с помощью утилиты ping

Одним из основных этапов в определении структуры сети является ее автоматизированное прослушивание с помощью утилиты ping по диапазону IP-адресов или адресам подсетей. Цель такого прослушивания -- определить, имеется ли у отдельных компьютеров подключение к Internet. Утилита ping отправляет пакеты ICMP ECHO (тип 8) указанному компьютеру и ожидает ответного пакета ICMP ECHO_REPLY (тип 0). Получение такого ответа говорит о том, что компьютер в данный момент подключен к Internet. Хотя при некоторой настойчивости с помощью утилиты ping можно определить количество постоянно подключенных к Internet компьютеров в небольшой и даже средней сети, ручной перебор сетевых адресов будет малоэффективен, если необходимо обследовать корпоративную сеть крупной организации.

Для выполнения ping-прослушивания можно воспользоваться любым из .G® *-» многочисленных средств, разработанных как для системы UNIX, так и для i-""""" Windows NT. В мире UNIX одним из самых надежных и проверенных методов такого прослушивания является использование утилиты fping (http:/ packetstorm security.com/Exploit_Code_Archive/fping.tar.gz). В отличие от других подобных утилит, которые перед переходе к тестированию следующего компьютера ожидают ответа на ранее посланный запрос, утилита fping рассылает все запросы одновременно, а затем ожидает ответа сразу от всех узлов. Именно поэтому утилита fping обеспечивает гораздо более высокую скорость прослушивания большого диапазона IP-адресов, чем обычная утилита ping. Утилита fping была написана специально для использования в сценариях оболочек совместно с утилитой gping (http://www.hacking-exposed.com/tools/tools.html), которая входит в пакет, распространяемый вместе с fping. Утилита gping генерирует список IP-адресов, передаваемых на вход fping для прослушивания. Листинг использования утилиты gping для сетей класса А, В или С может показаться слегка непонятным, поэтому рассмотрим его подробнее.

[tsunami ]'$ gping

usage: gping aO aN bO bN cO cN dO dN

gping a bO bN cO cN dO dN

gping a b cO cN dO dN

gping a b с dO dN

gping abcd

В качестве параметров утилите gping необходимо передать диапазон IP-адресов. На основании этого диапазона будет генерироваться листинг, в котором адреса перебираются друг за другом. Каждый октет передаваемого IP-адреса должен отделяться от остальных пробелами. Например, если мы собираемся генерировать IP-адреса для сети класса С, нам необходимо просто добавить 254 в качестве последнего параметра. Это позволит утилите перебрать все адреса от 192.168.1.1 до 192.168.1.254. Предположим, что эта сеть не содержит подсетей и использует маску подсети 255.255.255.0. Кроме того, мы не будем проверять адрес самой сети 192.168.1.0 и адрес широковещательной рассылки 192.168.1.255. Следует избегать применения утилиты ping к адресам широковещательной рассылки, поскольку это может привести к отказу, или так называемому состоянию DoS (denial of service), если ответный пакет одновременно будет сгенерирован многимиузлами (более подробная информация о том, как установить маску подсети узла, приведена в документации по запросам ICMP). С использованием утилиты gping можно сгенерировать перечень адресов, которые затем будут использоваться утилитой fping.

[tsunami] gping 192 168 1 1 254

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

192.168.1.5

192.168.1.251

192.168.1.252

192.168.1.253

192.168.1.254

Теперь в нашем распоряжении имеется список всех узлов, которые могут находиться в исследуемой сети класса С. Осталось лишь перенаправить вывод утилиты gping на вход утилиты fping, которая выполнит прослушивание сети и определит, какие компьютеры в данный момент подключены к сети.

[tsunami]? gping 192 168 1 1 254 | fping -a

192.168.1.254 is alive

192.168.1.227 is alive

192.168.1.224 is alive

192.168.1.3 is alive

192.168.1.2 is alive

192.168.1.1 is alive

192.168.1.190 is alive

Параметр -а утилиты fping предназначен для включения режима, в котором выводится информация обо всех активных в данный момент компьютерах сети. Если нужно, утилита может выводить и информацию об именах узлов. Этот режим включается с помощью параметра -d. По нашему мнению, параметр -а лучше всего использовать в сценариях оболочки, а параметр -d -- при исследовании сети на предмет поиска определенных узлов. Среди других параметров необходимо упомянуть -f, который позволяет вводить адреса из заранее подготовленного файла, а также -h, с помощью которого можно получить перечень всех параметров утилиты и режимов их использования. Еще одной утилитой, о которой мы будем много говорить в этой книге, является утилита nmap, созданная хакером по имени Федор (Fyodor) (www.insecure.org/nmap). Более подробно эта утилита будет рассматриваться ниже в этой главе, однако будет нелишним упомянуть, что, кроме всех остальных возможностей, данная утилита также позволяет выполнить прослушивание сети. Для включения соответствующего режима необходимо указать параметр -SP.

[tsunami] nmap -sP 192.168.1.0/24

Starting nmap V. 2.53 by fyodor@insecure.org

(www.insecure.org/nmap/)

Host (192.168.1.0) seems to be a subnet broadcast

address (returned 3 extra pings).

Host (192.168.1.1) appears to be up.

Host (192.168.1.10) appears to be up.

Host (192.168.1.11) appears to be up.

Host (192.168.1.15) appears to be up.

Host (192.168.1.20) appears to be up.

Host (192.168.1.50) appears to be up.

Host (192.168.1.101) appears to be up.

Host (192.168.1.102) appears to be up.

Host (192.168.1.255) seems to be a subnet broadcast

address (returned 3 extra pings).

Nmap run completed -- 256

IP addresses (10 hosts up) scanned in 21 seconds

Что касается приверженцев Windows, они также не остались без внимания. В частности, имеется такая бесплатная утилита, как Finger (рис. 1.1), написанная хакерами из группы Rhino9 (http://www.nmrc.org/files/snt/). Эта утилита является одной из самых быстрых в своем классе. Как и fping, утилита Finger одновременно рассылает несколько ICMP-пакетов ECHO, а затем ожидает поступления ответов. Кроме того, Finger позволяет также получать имена узлов и сохранять результаты своей работы в файле. Такой же скоростью, как и Finger, обладает коммерческий продукт Ping Sweep, предлагаемый компанией SolarWinds (www.solarwinds.net). Поразительная скорость работы Ping Sweep объясняется тем, что данная программа позволяет устанавливать время задержки между передаваемыми пакетами (delay time). Установив это значение равным 0 или 1, можно просканировать всю сеть класса С и получить имена ее узлов менее чем за 7 секунд. Однако при использовании этих средств соблюдайте осторожность, поскольку в этом случае можно значительно снизить пропускную способность какого-нибудь низкоскоростного канала, например канала ISDN с пропускной способностью 128 Кбит/с или Frame Relay (не говоря уже о спутниковом или инфракрасном канале).

Среди других утилит Windows, предназначенных для прослушивания сети, можно отметить WS_Ping ProPack (www.ipswitch.com) и Netscan Tools (www.nwpsw.com). Хотя возможностей этих утилит вполне достаточно для прослушивания небольших сетей, они значительно медленнее Finger и Ping Sweep. Кроме того, не забывайте, что утилиты с графическим интерфейсом, несмотря на удобство их использования, лишают вас возможности их применения в сценариях и автоматизированных процедурах.

Возможно, вы хотите спросить, как поступать, если исследуемый узел блокирует сообщения ICMP? Хороший вопрос. Такой подход зачастую применяется на тех узлах, администраторы которых заботятся о безопасности. Однако, несмотря на блокировку пакетов ICMP, существуют дополнительные средства и методы, позволяющие определить, подключен ли такой узел к сети или нет. Вместе с тем необходимо отметить, что все эти средства оказываются не такими точными и эффективными, как обычные утилиты семейства ping.

В тех случаях, когда обмен данными по протоколу ICMP заблокирован, в первую очередь применяется метод сканирования портов (port scanning), который более подробно рассматривается ниже в этой главе. Просканировав стандартные порты каждого потенциального IP-адреса сети, можно определить, какие узлы подключены к сети. Если порт открыт (opened mode) или находится в режиме ожидания (listening mode), значит, по данному адресу находится подключенный к Internet узел сети. Недостатками этого метода являются большие временные затраты и некоторая неопределенность результата (если по какому-то адресу не удалось обнаружить ни одного порта, то это еще не означает, что соответствующий узел не подключен к Internet). Одной из утилит, которые можно использовать для сканирования портов, является nmap. Как уже упоминалось, с помощью этой утилиты можно проводить ICMP-прослушивание, однако этим перечень ее возможностей далеко не исчерпывается. В частности, эта утилита позволяет выполнять так называемое TCP-прослушивание сканированием (TCP ping scan). Данный режим включается с помощью параметра -рт и указания номера порта, например 80. Выбор порта с номером 80 обусловлен тем, что в подавляющем большинстве случаев именно он используется узлами сети для обмена данными через пограничные маршрутизаторы или брандмауэры с компьютерами, расположенными в так называемой демилитаризованной зоне (DMZ -- demilitarized zone). При использовании указанного параметра утилита рассылает узлам исследуемой сети пакеты АСК, а затем ожидает поступления пакетов RST, что свидетельствует о том, что узел подключен к Internet.

[tsunami] nmap -sP -PT80 192.168.1.0/24

TCP probe port is 80

Starting nmap V. 2.53

Host (192.168.1.0) appears to be up.

Host (192.168.1.1) appears to be up.

Host shadow (192.168.1.10) appears to be up.

Host (192.168.1.11) appears to be up.

Host (192.168.1.15) appears to be up.

Host (192.168.1.20) appears to be up.

Host (192.168.1.50) appears to be up.

Host (192.168.1.101) appears to be up.

Host (192.168.1.102) appears to be up.

Host (192.168.1.255) appears to be up.

Nmap run completed (10 hosts up) scanned in 5 seconds

Как видно из приведенного выше листинга, этот метод определения подключенных к Internet узлов очень эффективен, даже если на них блокируется передача пакетов ICMP. С помощью утилиты nmap имеет смысл провести несколько подобных проверок, тестируя такие стандартные порты как SMTP (25), POP (110), AUTH (110), IMАР (143) или другие порты, которые, по вашим сведениям, могут быть уникальными на каком-либо компьютере исследуемой сети.

Еще одной утилитой, специально предназначенной для TCP-прослушивания, является утилита hping (http://www.kyuzz.org/antirez/). По возможностям она даже превосходит утилиту nmap. Утилита hping позволяет пользователям управлять параметрами протокола TCP, что может обеспечить проникновение отправляемых пакетов даже через некоторые устройства управления доступом. Так, установив порт назначения с помощью параметра -р, можно обойти некоторые устройства управления доступом точно так же, как это было сделано с применением утилиты traceroute в главе 1. Поэтому утилита hping может с успехом служить не только для TCP-прослушивания, но и преодолевать преграды некоторых устройств управления доступом благодаря возможности фрагментации пакетов.

[tsunami] hping 192.168.1.2 -S -p 80 -f

HPING 192.168.1.2 (ethO 192.168.1.2):

S set, 40 data bytes

60 bytes from 192.168.1.2:

flags=SA seq=0 ttl=124 id=17501 win=0 time=46.5

60 bytes from 192.168.1.2:

flags=SA seq=l ttl=124 id=18013 win=0 time=169.1

В некоторых случаях простые устройства управления доступом не могут корректно обрабатывать фрагментированные пакеты, что позволяет им проходить через такие устройства и достигать интересующего взломщика адреса. Обратите внимание, что в случае, когда порт открыт, возвращаются флаги TCP SYN (s) и дек (А). Утилиту hping очень легко использовать в сценариях оболочки с параметром счетчика пакетов -cN, где N -- это количество пакетов, которые нужно отправить в Internet, прежде чем переходить к выполнению следующей команды сценария. Хотя данный метод и не обладает такой скоростью, как описанные выше методы ICMP-прослушивания, в некоторых случаях только он может помочь выяснить конфигурацию сети. Более подробно утилита hping рассматривается в главе 11, "Брандмауэры".

Последним из средств прослушивания рассмотрим утилиту icmpenum хакером Симплом Номадом (Simple Nomad) (http://www.nmrc.org/files/sunix/icmpenum-1.1.tgz). Эту утилиту удобно использовать для определения архитектуры сети. Утилита icmpenum позволяет быстро выявить подключенные к сети компьютеры, передавая стандартные ICMP-пакеты ECHO, а также ICMP-запросы TIME STAMP REQUEST и INFO. Если входные пакеты ECHO не пропускаются пограничным маршрутизатором или брандмауэром, то подключенные узлы можно по-прежнему идентифицировать с помощью альтернативных пакетов ICMP.

[shadow] icmpenum -i2 -с 192.168.1.0

192.168.1.1 is up

192.168.1.10 is up

192.168.1.11 is up

192.168.1.15 is up

192,168.1.20 is up

192.168.1.103 is up

В приведенном примере сеть класса С (192.168.1.0) была протестирована с использованием ICMP-запроса TIME STAMP REQUEST. Однако реальная мощь утилиты icmpenum заключается в возможности идентификации узлов с помощью ложных пакетов, что позволяет избежать обнаружения злоумышленника. Это возможно благодаря тому, что утилита icmpenum позволяет генерировать ложные пакеты с использованием параметра -s и пассивно ожидать отклика при указании параметра -р.

Подводя итог, можно отметить, что IСМР- или TCP-прослушивание позволяет точно установить, какие компьютеры сети подключены к Internet. Так, в рассматриваемом примере мы установили, что из 255 потенциальных адресов сети класса С к Internet подключены лишь несколько компьютеров. Выявленные узлы становятся предметом первоочередного внимания в дальнейших исследованиях. Таким образом, мы значительно сузили область поиска, что позволяет сэкономить время и силы для более эффективных действий.

Идентификация запущенных TCP- и UDP-служб

Использование хорошей утилиты сканирования портов -- важнейший этап сбора информации об исследуемой сети. Хотя для этих целей существует много различных программ, ориентированных как на платформу UNIX, так и на платформу Windows NT, мы ограничимся рассмотрением лишь самых популярных и проверенных временем сканеров.

strobe

Утилита strobe -- это общепризнанный и популярный TCP-сканер портов, написанный Джулианом Ассанжем (Julian Assange) (ftp://ftp.FreeBSD.org/pub/ FreeBSD/ports/distfiles/strobe-l.06.tgz). Она стала известной уже довольно давно и, вне всякого сомнения, считается одной из самых быстрых и надежных утилит этого класса. К основным возможностям утилиты strobe относится оптимизация системных и сетевых ресурсов, а также сканирование исследуемой системы с максимальной эффективностью. Помимо высокой эффективности, утилита strobe версии 1.04 и выше может собирать идентификационные маркеры (если, конечно, они имеются), связанные с каждым проверяемым портом. Эта информация может оказаться полезной при определении операционной системы, а также запущенных на компьютере службах. В данных, выводимых утилитой strobe, имеется информация о каждом прослушанном порте TCP.

[tsunami] strobe 192.168.1.10

strobe 1.03 © 1995 Julian Assange (proff@suburbia.net).

192.168.1.10 echo 7/tcp Echo [95,JBP]

192.168.1.10 discard 9/tcp Discard [94,JBP]

192.168.1.10 sunrpc 111/tcp rpcbind SUN RFC

192.168.1.10 daytime 13/tcp Daytime [93,JBP]

192.168.1.10 chargen 19/tcp ttytst source

192.168.1.10 ftp 21/tcp File Transfer [Control] [96,JBP]

192.168.1.10 exec 512/tcp remote process execution;

192.168.1.10 login . 513/tcp remote login a la telnet;

192.168.1.10 cmd 514/tcp shell like exec, but automatic

192.168.1.10 ssh 22/tcp Secure Shell

192.168.1.10 telnet 23,/tcp Telnet [112,JBP]

192.168.1.10 smtp 25/tcp Simple Mail Transfer [102,JBP]

192.168.1.10 nfs 2049/tcp networked file system

192.168.1.10 lockd 4045/tcp

192.168.1.10 unknown 32772/tcp unassigned

192.168.1.10 unknown 32773/tcp unassigned

192.168.1.10 unknown 32778/tcp unassigned

192.168.1.10 unknown 32799/tcp unassigned

192.168.1.10 unknown 32804/tcp unassigned

Хотя в большинстве случаев утилита strobe предоставляет точные данные, все же важно помнить о некоторых ее ограничениях. Во-первых, данная утилита выполняет TCP-сканирование, не поддерживая сканирование по протоколу UDP. Поэтому в некоторых случаях можно получить лишь половину требуемой информации. Во-вторых, при соединении с каждым портом утилита strobe выполняет лишь TCP-сканирование подключением. Хотя именно этим и объясняется высокая надежность получаемых результатов, в то же время использование утилиты strobe очень легко выявить на исследуемой системе. Поэтому необходимо рассмотреть и другие утилиты сканирования, лишенные указанных недостатков.

udp_scan

Для UDP-сканирования, которого не выполняет strobe, можно воспользоваться утилитой udp_scan, которая изначально входила в пакет SATAN (Security Administrator Tool for Analyzing Networks), написанный Дэном Фармером (Dan Farmer) и Вайетсом Венема (Wietse Venema) в 1995 году. Хотя сам пакет SATAN несколько устарел, входящие в его состав утилиты по-прежнему можно использовать. Кроме того, по адресу http://wwdsilx.wwdsi.com можно получить новую версию пакета SATAN, которая теперь называется SAINT. Несмотря на наличие множества других утилит UDP-сканирования, мы пришли к выводу, что udp_scan -- одна из самых надежных утилит, позволяющая получать достоверные результаты. Правда, необходимо сказать также о том, что, несмотря на высокую надежность утилиты udp_scan, у нее имеется и один существенный недостаток. Эта утилита не может противостоять контратаке какого-либо из пакетов IDS, который осведомлен о методах, используемых в пакете SATAN для сканирования портов. Таким образом, если сканирование необходимо выполнить более скрытно, поишите какое-нибудь другое средство. Обычно с помощью утилиты udp_scan проверяются порты с номерами, меньшими 1024, а также некоторые определенные порты с большими номерами.

;tsunami] udp_scan 192.168.1.1 1-1024

-: 2 : UNKNOWN: 5 3:UNKNOWN: 123:UNKNOWN: 135:UNKNOWN:

netcat

Еще одной прекрасной утилитой является netcat (или nc), написанная Хоббитом (Hobbit, hobbit@avian.org). Эта утилита может выполнять так много различных задач, что была названа нами "швейцарским армейским ножом". Помимо остальных возможностей, о которых мы еще не раз будем говорить на протяжении всей книги, утилита nc позволяет применять основные методы TCP- и UDP-сканирования. Степенью детализации выводимых данных можно управлять с помощью параметров -v и -vv, которые включают, соответственно, режимы подробного и очень подробного отображения результатов. Параметр -z применяется для включения режима нулевого ввода-вывода (zero mode I/O), используемого для сканировании портов, а параметр -..2 позволяет задать для каждого соединения интервал ожидания. По умолчанию утилита пс выполняет TCP-сканирование, а для UDP-сканирования необходимо использовать параметр -и (как показано во втором примере).

tsunami] nc -v -z -w2 192.168.1.1 1-140

192.168.1.1] 139 (?) open

192.168.1.1] 135 (?) open

192.168.1.1] 110 (pop-3) open

[192.168.1.1] 106 (?) open

[192.168.1.1] 81 (?) open

[192.168.1.1] 80 (http) open

[192.168.1.1] 79 (finger) open

[192.168.1.1] 53 (domain) open

[192.168.1.1] 42 (?) open

[192.168.1.1] 25 (smtp) open

[192.168.1.1] 21 (ftp) open

[tsunami] nc -u -v -z -w2 192.168.1.1 1-140

[192.168.1.1] 135 (ntportmap) open

[192.168.1.1] 123 (ntp) open

[192.168.1.1] 53 (domain) open

[192.168.1.1] 42 (name) open

nmap

Рассмотрев простейшие средства сканирования портов, давайте перейдем к обсуждению возможностей безусловного лидера этой категории -- утилиты nmap. Данная утилита, разработанная Федором (Fyodor) (http://www.insecure.org/nmap), обладает не только базовыми возможностями TCP- и UDP-сканирования, но и поддерживает все остальные упоминавшиеся выше методы. Очень редко можно найти утилиту, которая предоставляла бы столь богатый набор возможностей в одном пакете. Итак, запустим утилиту и посмотрим, какие возможности она предоставляет.

[tsunami]# nmap -h

nmap V. 2.53 Использование:

nmap [Тип(ы) сканирования] [Параметры]

<Список узлов или подсетей>

Некоторые стандартные типы сканирования

(При использовании параметров, отмеченных символом '*',

требуются привилегии root)

-sT TCP-сканирование подключением

(устанавливается по умолчанию) * -sS TCP-сканирование

с помощью сообщений SYN (среди всех методов TCP-сканирования является наилучшим)

* -sU UDP-сканирование

-sP ping-прослушивание

(выполняется поиск всех достижимых узлов)

* -sF,-sX,-sN сканирование с помощью сообщений FIN,

по методу "рождественской елки" и

нуль-сканирование,

соответственно (рекомендуется использовать только опытным пользователям)

-SR/-I сканирование с использованием демона

RPC/identd (применяется совместно с другими типами сканирования)

Некоторые стандартные параметры

(являются необязательными, могут комбинироваться друг с другом):

* -О режим изучения пакетов TCP/IP

с целью определения типа удаленной операционной системы

-р <диапазон> -- диапазон портов,

которые будут сканироваться.

Пример диапазона: '1-1024,1080,6666,31337'

-F Выполняется сканирование портов,

перечисленных в файле /etc/services

-v Режим вывода подробной информации.

Рекомендуется всегда использовать этот параметр.

Для включения режима вывода очень

подробной информации используйте параметр -vv

-РО Отключение проверки активности узла с помощью утилиты ping (применяется для сканирования таких узлов, как www.microsoft.com и аналогичных)

* -Ddecoy_hostl,decoy2[,...]

Скрытое сканирование с указанием нескольких ложных адресов узлов

-Т <Paranoici I Sneaky|Polite|Normal[Aggressive IInsane>

Принятая политика ожидания отклика от удаленного узла

-n/-R Никогда не выполнять разрешение имен DNS/

Всегда выполнять [по умолчанию: имена разрешаются

при необходимости] -oN/-oM <logfile>

Вывести результаты сканирования в файл <logfile> в

удобочитаемом/машинном формате -iL <inputfile>

Взять IP-адреса или имена узлов из файла <inputfiie>.

Для использования стандартного потока ввода stdin укажите '-'

* -S <your_IP>/-e <devicename>

позволяет указать исходный IP-адрес или устройство

--переход в интерактивный режим

(затем для получения справки нужно нажать клавишу h)

[tsunami] nmap -sS 192.168.1.1

Starting nmap V. 2.53 by fyodor@insecure.org

Interesting ports on (192.168.1.11):

(The 1504 ports scanned but

not shown below are in state: closed)

Port State Protocol Service

21 open tcp ftp

25 open tcp smtp

42 open tcp nameserver

53 open tcp domain

79 open tcp finger

80 open tcp http

81 open tcp hosts2-ns

106 open tcp popSpw

110 open tcp pop-3

135 open tcp loc-srv

139 open tcp netbios-ssn

443 open tcp https

Помимо вышеуказанных, утилита nmap предоставляет и другие полезные возможности, заслуживающие детального обсуждения. Так, в приведенном выше примере мы ис-ПОЛЬЗОЕИЛИ параметры командной строки, при которых осуществлялось сканирование одного узла. Однако утилита nmap с такой же легкостью позволяет сканировать и всю сеть. Как легко заметить, nmap поддерживает описания диапазонов адресов в нотации CIDR (Classless Inter-Domain Routing -- бесклассовая маршрутизация доменов Internet), описанной в RFC 1519 (среди всех методов TCP-сканирования является наилучшим)

* -sU UDP-сканирование

-sP ping-прослушивание (выполняется поиск всех достижимых узлов)

* -sF,-sX,-sN сканирование с помощью сообщений FIN,

по методу "рождественской елки" и нуль-сканирование, соответственно (рекомендуется использовать только опытным пользователям)

-SR/-I сканирование с использованием демона RPC/identd (применяется совместно с другими типами сканирования)

Некоторые стандартные параметры (являются необязательными, могут комбинироваться друг с другом):

* -О режим изучения пакетов TCP/IP

с целью определения типа удаленной операционной системы

-р <диапазон> -- диапазон портов, которые будут сканироваться.

Пример диапазона: '1-1024,1080,6666,31337'

-F Выполняется сканирование портов, перечисленных в файле /etc/services

-v Режим вывода подробной информации.

Рекомендуется всегда использовать этот параметр.

Для включения режима вывода очень подробной информации используйте параметр -vv

-РО Отключение проверки активности узла с помощью утилиты ping (применяется для сканирования таких узлов, как www.microsoft.com и аналогичных)

* -Ddecoy_hostl,decoy2[,...]

Скрытое сканирование с указанием нескольких ложных адресов узлов

-Т <Paranoici I Sneaky|Polite|Normal[Aggressive IInsane>

Принятая политика ожидания отклика от удаленного узла

-n/-R Никогда не выполнять разрешение имен DNS/

Всегда выполнять [по умолчанию: имена разрешаются при необходимости] -oN/-oM <logfile>

Вывести результаты сканирования в файл <logfile> в удобочитаемом/машинном формате -iL <inputfile>

Взять IP-адреса или имена узлов из файла <inputfiie>.

Для использования стандартного потока ввода stdin укажите '-'

* -S <your_IP>/-e <devicename>

позволяет указать исходный IP-адрес или устройство --переход в интерактивный режим (затем для получения справки нужно нажать клавишу h)

[tsunami] nmap -sS 192.168.1.1

Starting nmap V. 2.53 by fyodor@insecure.org

Interesting ports on (192.168.1.11):

(The 1504 ports scanned but

not shown below are in state: closed)

Port State Protocol Service

21 open tcp ftp

25 open tcp smtp

42 open tcp nameserver

53 open tcp domain

79 open tcp finger

80 open tcp http

81 open tcp hosts2-ns

106 open tcp popSpw

110 open tcp pop-3

135 open tcp loc-srv

139 open tcp netbios-ssn

443 open tcp https

Помимо вышеуказанных, утилита nmap предоставляет и другие полезные возможности, заслуживающие детального обсуждения. Так, в приведенном выше примере мы использовали параметры командной строки, при которых осуществлялось сканирование одного узла. Однако утилита nmap с такой же легкостью позволяет сканировать и всю сеть. Как легко заметить, nmap поддерживает описания диапазонов адресов в нотации CIDR (Classless Inter-Domain Routing -- бесклассовая маршрутизация доменов Internet), описанной в RFC 1519 (http://www.ietf.org/rfc/rfcl519.txt). В этом формате очень легко задавать диапазоны адресов вида 192.168.1.1-192.168.1.254. Полученную информацию можно сохранить в обычном текстовом файле с помощью параметра -о. При указании параметра -oN результаты будут сохранены в удобочитаемом формате.

[tsunar.i]# ranap -sF 192.168.1.0/24 -oN outfile

Если выводимые данные нужно сохранить в файле, в котором в качестве разделителей используются символы табуляции (например, чтобы впоследствии программно анализировать полученную информацию), используйте параметр -оМ. В любом случае при сканировании сети, скорее всего, будет получено очень много информации, поэтому имеет смысл сохранить результаты в любом из форматов. В некоторых случаях целесообразно сохранять их сразу в обоих форматах, используя как параметр -ON, так и -оM.

Предположим, что после сбора предварительных данных о сети организации мы пришли к выводу, что в качестве основного брандмауэра в ней используется простое устройство, выполняющее фильтрацию пакетов. В этом случае можно воспользоваться параметром -f утилиты nmap, чтобы включить режим фрагментации пакетов. Очевидно, что это приведет к отделению заголовков TCP-пакетов от самих пакетов, что затруднит для устройств управления доступом или систем IDS возможность выявления попытки сканирования. В большинстве случаев современные устройства фильтрации пакетов и брандмауэры прикладного уровня, прежде чем осуществлять анализ пакетов IP, помещают все фрагменты в очередь. Однако при использовании более старых моделей устройств управления доступом или устройств, в которых соответствующие функции были отключены для повышения производительности, дефрагментация не выполняется и пакеты передаются дальше во внутреннюю сеть в том виде, в котором они поступают.

Если архитектура системы безопасности исследуемой сети и ее узлов была хорошо продумана, то эта система без особого труда выявит сканирование, осуществляемое с помощью приведенных выше примеров. Для таких случаев утилита nmap предоставляет дополнительные возможности маскирования, предназначенные для заполнения системных журналов исследуемого узла избыточной информацией. Данный режим включается с помощью параметра -D. Главная идея данного подхода состоит в том, чтобы во время выполнения реального сканирования создать видимость одновременного сканирования из других указанных в командной строке адресов. Для того чтобы воспрепятствовать такому сканированию, системе безопасности исследуемого узла придется проверить все записи, чтобы выяснить, какие из полученных IP-адресов источников сканирования являются реальными, а какие -- фиктивными. При использовании данного метода нужно удостовериться в том, что IP-адреса, выступающие в качестве маскировочных, принадлежат реальным узлам, которые в момент сканирования подключены к Internet. В противном случае исследуемая система будет не в состоянии обработать все сообщения SYN, в результате чего возникнет условие DoS.

[tsunami] nmap -sS 192.168.1.1 -D 10.1.1.1

www.target_web.com,ME -p25,139,443

Starting nmap V. 2.53 by fyodor@insecure.org

Interesting ports on (192.168.1.1):

Port State ' Protocol Service

25 open tcp smtp

443 open tcp https

Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

В приведенном примере параметры, введенные в командной строке утилиты nmap, обеспечивают сканирование в режиме, затрудняющем обнаружение реального адреса сканирующего узла.

Еще одним полезным методом является сканирование с целью идентификации запущенных процессов (подробнее о нем говорится в RFC 1413, http://www.ieff.org/rfc/rfcl413.txt). Этот тип сканирования, называемый ident-сканированием, предназначен для определения пользователя путем установления TCP-соединения с портом 113. Очень часто в ответ приходит сообщение, содержащее идентификатор владельца процесса, связанного с данным портом. Однако этот метод годится лишь для исследования систем UNIX.

[tsunami] nmap -I 192.168.1.10

Starting nmap V. 2.53 by fyodor@insecure.org

Port State Protocol Service Owner

22 open tcp ssh root

25 open tcp smtp root

80 open tcp http root

110 open tcp pop-3 root

113 open tcp auth root

6000 open tcp Xll root

В приведенном выше фрагменте показано, как идентифицируются владельцы всех обнаруженных процессов. Опытный читатель должен обратить внимание на то, что Web-сервер принадлежит не пользователю nobody, как это должно быть в соответствии с элементарными правилами обеспечения безопасности, а пользователю root, что является вопиющим нарушением. Выполнив идентификацию процессов и установив такой интересный факт, можно заключить, что взломщик, которому удастся проникнуть через систему защиты Web-сервера, получит полный контроль над данным компьютером.

Последний метод, на котором мы остановимся, называется сканированием с прорывом по FTP (FTP bounce scanning). Этот метод впервые был описан Хоббитом (Hobbit). В своей статье, опубликованной в электронном бюллетене Bugtraq в 1995 году, он осветил некоторые скрытые недостатки протокола FTP (RFC 959, http://www.ietf.org/rfc/rfc0959.txt). Кратко данный метод можно описать как скрытное подключение через FTP-сервер, используя поддержку proxy-серверов, реализованную на этом FTP-сервере. Как отмечает Хоббит в вышеупомянутой статье, прорыв по FTP "можно использовать практически для неотслеживаемой отправки электронной почты и сообщений в группы новостей, взлома серверов различных сетей, заполнения диска, попыток прорыва через брандмауэры и другой вредоносной деятельности, которая при этом может оставаться практически незамеченной". Добавим, что с помощью прорыва по FTP можно сканировать порты, чтобы скрыть свой адрес, и, что еще более важно, обходить устройства управления доступом.

Конечно, утилита nmap поддерживает и этот режим сканирования (параметр -b). Однако для его выполнения необходимо соблюдение нескольких условий. Во-первых, на FTP-сервере должен быть каталог, доступный для чтения/записи со стороны любого пользователя, например /incoming. Во-вторых, FTP-сервер должен принять от утилиты nmap заведомо неправильную информацию о порте с помощью команды PORT. Хотя этот метод очень эффективен для проникновения через устройства управления доступом, а также для сокрытия своего адреса, у него есть один существенный недостаток -- слишком низкая скорость работы. Кроме того, многие современные FTP-серверы просто запрещают выполнение таких операций.

Однако применение различных средств для сканирования портов -- это только половина задачи. Теперь нужно разобраться с тем, как проанализировать данные, полученные с помощью каждой из утилит. Независимо от применяемого средства, необходимо идентифицировать открытые порты, поскольку их перечень позволит определить операционную систему удаленного узла. Например, если на узле открыты порты 135 и 139, то, скорее всего, этот узел работает под управлением операционной системы Windows NT. Обычно Windows NT опрашивает порты 135 и 139, тогда как Windows 95/98 -- лишь порт 139.

Например, изучив результаты, полученные во время работы утилиты strobe, которая рассматривалась выше в этой главе, можно заключить, что исследовавшийся в рассматриваемом примере узел работает под управлением операционной системы из семейства UNIX. Данный вывод можно сделать на основании того, что на исследуемом узле открыты порты с номерами 111 (portmapper), 512-514 (службы Berkley R), 2049 (NFS), а также порты с номерами 3277Х, что характерно именно для систем семейства UNIX. Более того, можно также предположить, что данная операционная система относится к семейству Solaris -- именно этой системе присуще использование служб RPC вместе с портам из этого диапазона. Нужно подчеркнуть, что это лишь предположения, поскольку в действительности установленная операционная система, если с ее настройкой поработал опытный администратор безопасности, может лишь "выдавать себя" за Solaris, а в действительности не иметь с ней ничего общего.

Итак, после завершения TCP- и (или) UDP-сканирования портов уже можно выдвинуть предположения о типе операционной системы, работающей на исследуемом узле, и, следовательно, о том, как можно проникнуть на этот узел. Например, если на сервере Windows NT открыт порт 139, то такой узел подвергается очень высокой степени риска. Подробнее о скрытых недостатках системы защиты Windows NT, а также о том, как с помощью порта 139 можно проникнуть в систему, в которой не приняты адекватные контрмеры для защиты этого порта, рассказывается в главе 5.

Рассматривавшаяся в качестве примера система UNIX, скорее всего, также подвергается большому риску, поскольку выявленные нами работающие службы предоставляют в распоряжение удачливого взломщика очень большие возможности. Например, использование служб удаленного вызова процедур (RPC -- Remote Procedure Call) и поддержки сетевой файловой системы (NFS -- Network File System) являются двумя основными методами проникновения через систему защиты сервера UNIX (подробнее см. главу 8).

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

Сканирование с помощью утилит

Утилита cheops (произносится "ки-опс", http://www.marko.net/cheops/), изображенная на рис. 1.2, представляет собой программу с графическим интерфейсом, предназначенную для полномасштабного исследования сети. При этом в одном пакете объединены утилиты ping, traceroute, средства сканирования портов, а также определения типа операционной системы (с помощью queso). Кроме этого, cheops позволяет получить графическое схематическое изображение исследуемой сети и связанных с ней сетей, что значительно облегчает понимание ее архитектуры.

Вторая утилита, на которой мы остановимся, называется tkined и входит в состав пакета Scotty (http://wwwhome.cs.utwente.nl/~schoenw/scotty/). По существу, эта утилита является редактором сетевого редактирования, написанным на языке Tel, который, объединяет различные средства управления сетью, обеспечивающие сбор всевозможной информации об архитектуре и работе сети. Утилита tkined обладает большой гибкостью и позволяет проводить исследование сети с представлением результатов в графической форме. Кроме утилиты tkined, в состав пакета Scotty входит немало других интересных средств, заслуживающих самого пристального внимания.

Контрмеры: защита от средств автоматического сбора информации

Поскольку в автоматизированных средствах, подобных Scotty, tkined и cheops, объединены приемы, о которых рассказывалось выше в данной главе, для защиты от них можно применять контрмеры, аналогичные тем, которые применяются для соответствующих средств сбора информации, сканирования и т.д.

Пассивное исследование стека

Основные принципы пассивного исследования стека аналогичны концепциям, лежащим в основе его активного исследования. Однако в данном случае вместо передачи пакетов для определения используемой операционной системы взломщик осуществляет мониторинг сетевого трафика. Таким образом, наблюдая за сетевым трафиком между различными компьютерами, можно определить тип и версию удаленной операционной системы. Большие исследования в этой области были проведены Ланцом Спитзнером (Lance Spitzner). На их основе была написана книга, которую можно найти по адресу http://www.enteract.com/~lspitz/finger.html. Кроме ТОГО, по адресу http://www.subterrain.net/projects/siphon можно также найти утилиту siphon, предназначенную для пассивного исследования портов и идентификации операционной системы. Теперь познакомимся с тем, как же выполняется пассивное исследование стека.

Страницы: 1, 2


© 2010 BANKS OF РЕФЕРАТ