Лабораторная работа №1 часть II
«Утилита для сканирования и исследования безопасности сети NMAP»
Цель работы: изучение и практическое применение утилиты для сканирования и исследования безопасности сети nmap.
Содержание
1 Описание 2
1.1 Введение 2
1.2 Методы сканирования 3
1.3 Определение операционной системы удаленного хоста 8
2 Использование 19
2.1 Опции (частично) 19
2.2 Способы задания целевого хоста 20
3 Рабочее задание 21
4 Форма отчета по лабораторной работе 22
5 Список рекомендуемой литературы 23
1 Описание
1.1 Введение
Nmap предназначен для сканирования сетей с любым количеством объектов, определения состояния объектов сканируемой сети, а также портов и соответствующих им служб. Для этого nmap использует много различных методов сканирования, таких, как:
UDP connect(),
TCP connect(),
TCP SYN (полуоткрытое),
FTP proxy (прорыв через ftp),
Reverse-ident,
ICMP (ping),
FIN-сканирование,
ACK-сканирование,
Xmas tree-сканирование,
SYN-сканирование,
NULL-сканирование.
Nmap также поддерживает большой набор дополнительных возможностей, а именно:
определение операционной системы удаленного хоста с использованием TCP/IP fingerprint,
«невидимое» сканирование,
динамическое вычисление времени задержки и повтор передачи пакетов,
параллельное сканирование,
определение неактивных хостов методом параллельного ping-опроса,
сканирование с использованием ложных хостов,
определение наличия пакетных фильтров,
прямое (без использования portmapper) RPC-сканирование,
сканирование с использованием IP-фрагментации,
произвольное указание IP-адресов и номеров портов сканируемых сетей.
Результатом работы Nmap является список отсканированных портов удаленной машины с указанием номера и состояния порта, типа используемого протокола, а также названия службы, закрепленной за этим портом. Порт характеризуется тремя возможными состояниями «открыт», «фильтруемый» и «нефильтруемый»:
открыт (open)- удаленная машина прослушивает данный порт;
фильтруемый (filtered) – межсетевой экран, пакетный фильтр или другое устройство блокирует доступ к этому порту и nmap не смог определить его состояние;
«Нефильтруемый» (closed) - по результатам сканирования nmap воспринял данный порт как закрытый, при этом средства защиты не помешали nmap определить его состояние. Это состояние nmap определяет в любом случае (даже если большинство сканируемых портов хоста фильтруются).
В зависимости от указанных опций, nmap также может определить следующие характеристики сканируемого хоста:
операционная система хоста,
метод генерации TCP ISN,
имя пользователя владельца процесса, зарезервировавшего сканируемый порт,
символьные имена, соответствующие сканируемым IP-адресам и т.д.
1.2 Методы сканирования
1.2.1 TCP connect()
Наиболее общий метод сканирования TCP портов. Функция connect(), присутствующая в любой ОС, позволяет создать соединение с любым портом удаленной машины. Если указанный в качестве аргумента порт открыт и прослушивается сканируемой машиной, то результат выполнения connect() будет успешным (т.е. соединение будет установлено), в противном случае указанный порт является закрытым, либо доступ к нему заблокирован средствами защиты.
Для того, чтобы использовать данный метод, пользователь может не иметь никаких привилегий на сканирующем хосте. Этот метод сканирования легко обнаруживается целевым (т.е. сканируемым) хостом, поскольку его log-файл будет содержать запротоколированные многочисленные попытки соединения и ошибки выполнения данной операции. Службы, обрабатывающие подключения, немедленно заблокируют доступ адресу, вызвавшему эти ошибки.
1.2.2 TCP SYN
Этот метод часто называют «полуоткрытым» сканированием, поскольку при этом полное TCP-соединение с портом сканируемой машины не устанавливается. Nmap посылает SYN-пакет, как бы намереваясь открыть настоящее соединение, и ожидает ответ. Наличие флагов SYN|ACK в ответе указывает на то, что порт удаленной машины открыт и прослушивается. Флаг RST в ответе означает обратное. Если nmap принял пакет SYN|ACK, то в ответ немедленно отправляет RST-пакет для сброса еще не установленного соединения (реально эту операцию выполняет сама ОС). Очень немного сайтов способны обнаружить такое сканирование.
Пользователь должен иметь статус root для формирования поддельного SYN-пакета.
1.2.3 «Невидимое» FIN, Xmas Tree и NULL-сканирование
Эти методы используются в случае, если SYN-сканирование по каким-либо причинам оказалось неработоспособным. Так, некоторые межсетевые экраны и пакетные фильтры «ожидают» поддельные SYN-пакеты на защищенные ими порты, и программы типа Synlogger или Courtney способны отследить SYN-сканирование.
Идея заключается в следующем. В FIN-сканировании в качестве запроса используется FIN-пакет. В Xmas Tree используется пакет с набором флагов FIN|URG|PSH, а NULL-сканирование использует пакет без флагов. Согласно рекомендации RFC 973 п. 64, ОС сканируемого хоста должна ответить на такой пакет, прибывший на закрытый порт, пакетом RST, в то время как открытый порт должен игнорировать эти пакеты. Разработчики Microsoft Windows, как обычно, решили полностью игнорировать все общепринятые стандарты и пойти своим путем. Поэтому любая ОС семейства Windows не посылает в ответ RST-пакет, и данные методы не будут работать с этими ОС. Однако во всем есть свои плюсы, и в nmap этот признак является основным для различения операционных систем, обладающих таким свойством. Если в результате FIN-сканирования вы получили список открытых портов, то это не Windows. Если же все эти методы выдали результат, что все порты закрыты, а SYN-сканирование обнаружило открытые порты, то вы скорей всего имеете дело с ОС Windows. Существует еще несколько ОС, обладающих данным недостатком.
1.2.4 Ping-сканирование
Иногда необходимо лишь узнать адреса активных хостов в сканируемой сети. Nmap может сделать это, послав ICMP-сообщение echo-request на каждый указанный IP-адрес. Хост, отправивший ответ на эхо, является активным. Некоторые сайты (например, microsoft.com) блокируют эхо-пакеты. По этой причине nmap также посылает TCP ACK-пакет на 80-й порт сканируемого хоста (по умолчанию). Если в ответ вы получили RST-пакет, хост активен. Третий метод использует SYN-пакет и ожидает в ответ RST либо SYN|ACK. Для пользователей, не обладающих статусом root, используется метод connect().
Для root-пользователей nmap по умолчанию использует параллельно оба метода - ICMP и ACK. Вы можете изменить это, используя опцию P.
Заметим, что ping-сканирование по умолчанию выполняется в любом случае и только активные хосты подвергаются сканированию.
1.2.5 Определение версий
После того, как определены открытые TCP и/или UDP порты с помощью какого-либо метода сканирования, nmap взаимодействует с этими портами пытаясь определить что именно скрывается за ними. Nmap пытается определить протокол обмена службы (например, ftp, ssh, telnet, http), имя приложения (например, ISC Bind, Apache http, Solaris telnetd), номер версии и иногда различные детали, например, есть ли возможность подключится к Х-серверу или номер версии SSH-протокола. Если nmap собран с поддержкой OpenSSL, он создает соединение с SSL-серверами пытаясь определить что скрыто за шифрованным каналом. Если обнаружены RPC-службы, nmap определяет программы, обслуживающие RPC-порты, и их версии. Некоторые UDP порты остаются в состоянии «open|filtered» после UDP-сканирования, если сканирование не смогло определить, является ли порт открытым или фильтруемым. Определение версий пытается получить «ответ» с этих портов (как оно делает и с открытыми портами) и, в случае успеха, меняет их состояние на «открыт».
1.2.6 UDP-сканирование
Этот метод используется для определения, какие UDP порты на сканируемом хосте являются открытыми. На каждый порт сканируемой машины отправляется UDP-пакет без данных. Если в ответ было получено ICMP-сообщение «порт недоступен» (port unreachable), это означает, что порт закрыт. Если на посланный UDP-пакет получен ответ, считается, что сканируемый порт открыт. Если на запрос не получено никаких ответов, то состояние порта будет «opened|filtered», что означает, что порт либо открыт, либо пакетные фильтры блокируют обмен данными. В данном случае определение версий поможет различить действительно открытые порты от фильтруемых.
1.2.7 Сканирование протоколов IP
Данный метод используется для определения IP-протоколов, поддерживаемых сканируемым хостом. Метод заключается в передаче хосту IP-пакетов без какого-либо заголовка для каждого протокола сканируемого хоста. Если получено сообщение «протокол недоступен» (protocol unreachable), то данный протокол хостом не используется. В противном случае nmap предполагает, что протокол поддерживается хостом.
Некоторые ОС и межсетевые экраны могут блокировать передачу сообщений «протокол недоступен». По этой причине все сканируемые протоколы будут «открыты» (т.е. поддерживаются).
1.2.8 Сканирование «вхолостую»
Позволяет произвести абсолютно невидимое сканирование портов. Атакующий может просканировать цель, не посылая при этом пакетов от своего IP-адреса. Вместо этого используется метод IdleScan, позволяющий просканировать жертву через так называемый хост-«зомби». Кроме абсолютной невидимости, этот тип сканирования позволяет определить политику доверия между машинами на уровне протокола IP. Листинг результатов показывает открытые порты со стороны хоста-«зомби».
Таким образом, можно просканировать цель с использованием нескольких «зомби», которым цель может «доверять», в обход межсетевых экранов и пакетных фильтров. Такого рода информация может быть самой важной при выборе целей «первого удара».
1.2.9 ACK-сканирование
Этот дополнительный метод используется для определения набора правил (ruleset) межсетевого экрана. В частности, он помогает определить, защищен ли сканируемый хост межсетевым экраном или просто пакетным фильтром, блокирующим входящие SYN-пакеты.
В этом методе на сканируемый порт хоста отправляется ACK-пакет (со случайными значениями полей acknowledgement number и sequence number). Если в ответ пришел RST-пакет, порт классифицируется как «нефильтруемый». Если ответа не последовало (или пришло ICMP-сообщение о недоступности порта), порт классифицируется как «фильтруемый». Обращаем ваше внимание, что этот метод никогда не покажет состояние порта «открыт» в результатах сканирования.
1.2.10 TCP Window
Этот метод похож на ACK-сканирование, за исключением того, что иногда с его помощью можно определять открытые порты точно так же, как и фильтруемые/нефильтруемые. Это можно сделать, проверив значение поля Initial Window TCP-пакета, возвращаемого хостом в ответ на посланный ему запрос, ввиду наличия определенных особенностей обработки данного поля у некоторых ОС.
1.2.11 RPC-сканирование
Этот метод используется совместно с другими методами сканирования и позволяет определить программу, которая обслуживает RPC-порт, и номер ее версии. Для этого все открытые TCP/UDP порты хоста затопляются NULL-командами оболочки SunRPC, после чего определяются RPC-порты и закрепленные за ними программы. Таким образом, вы легко получаете информацию, которую могли бы получить с помощью команды 'rpcinfo -p', даже если portmapper сканируемого хоста закрыт межсетевым экраном или TCP-wrapper'ом.
1.2.12 «Прорыв через FTP»
Интересной «возможностью» протокола является поддержка «доверенных» (proxy) ftp-соединений. Другими словами, с доверенного хоста source.com можно соединиться с FTP-сервером target.com и отправить файл, находящийся на нем, на любой адрес Internet. Nmap использует эту возможность для сканирования портов с «доверенного» FTP-сервера. Итак, вы можете подключиться к FTP-серверу «над» межсетевым экраном и затем просканировать заблокированные им порты (например, 139-й). Если ftp-сервер позволяет читать и записывать данные в какой-либо каталог (например, /incoming), вы также можете отправить любые данные на эти порты.
|