Курсовая работа: Сетевые сканеры и анализаторы
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.