| Типы сканирования
Прежде чем перейти к описанию конкретных средств, используемых для сканирования
портов, необходимо уделить немного времени обзору методов сканирования, известных
в настоящее время. Одним из пионеров реализации различных методов сканирования
является ранее упоминавшийся Федор (Fyodor). Многочисленные приемы сканирования
были реализованы им в утилите nmар. Многие из описанных в данной книге методов
сканирования были предложены самим Федором. - TCP-сканирование
подключением (TCP connect scan). При таком типе сканирования осуществляется
попытка подключения по протоколу TCP к интересующему нас порту с прохождением
полной процедуры согласования параметров (handshake), состоящей в обмене сообщениями
SYN, SYN/ACK и АСК. Попытки такого сканирования очень легко выявляются. На рис.
2.2 показана диаграмма обмена сообщениями в процессе согласования параметров.
- TCP-сканирование
с помощью сообщений SYN (TCP SYN scan). Этот метод называется также сканированием
с незавершенным открытием сеанса (half-open scanning), так как при его использовании
полное TCP-соединение не устанавливается. Вместо этого на исследуемый порт отправляется
сообщение SYN. Если в ответ поступает сообщение SYN/ACK, это означает, что данный
порт находится в состоянии LISTENING. Если же ответ приходит в виде сообщения
RST/ACK, то, как правило, это говорит о том, что исследуемый порт отключен. Получив
ответ, компьютер, выполняющий сканирование, отправляет исследуемому узлу сообщение
RST/ACK, поэтому полное соединение не устанавливается. Этот метод обеспечивает
более высокую скрытность по сравнению с полным подключением. Многие системы не
регистрируют такие попытки, поэтому они довольно часто могут оставаться незамеченными.

Рис. 2.2. При установке TCP-соединения происходит обмен тремя сообщениями:
(1) клиент отправляет серверу пакет SYN, (2) получает от сервера пакет SYN/ACK
и (3) отправляет серверу пакет АСК
- TCP-сканирование с помощью сообщений FIN (TCP
FIN scan). В этом случае исследуемой системе отправляется пакет FIN. Согласно
документу RFC 793 (http://www.ieff.org/rfc/rfc0793.txt), в ответ узел должен отправить
пакет RST для всех закрытых портов. Данный метод срабатывает только для стека
протоколов TCP/IP, реализованного в системе UNIX.
- TCP-сканирование
по методу "рождественской елки" (TCP Xmax Tree scan). При использовании
данного метода на исследуемый порт отправляются пакеты FIN, URG и PUSH. Согласно
документу RFC 793, исследуемый узел в ответ должен отправить сообщения RST для
всех закрытых портов.
- TCP нуль-сканирование
(TCP Null scan). Этот метод состоит в отправке пакетов с отключенными флагами.
Согласно RFC 793, исследуемый узел должен ответить отправкой сообщения RST для
всех закрытых портов.
- TCP-сканирование с помощью
сообщений АСК (TCP ACK scan). Этот метод позволяет получить набор правил,
используемых брандмауэром. Такое сканирование поможет определить, выполняет ли
брандмауэр простую фильтрацию пакетов лишь определенных соединений (пакетов с
установленным флагом АСК) или обеспечивает расширенную фильтрацию поступающих
пакетов.
- TCP-сканирование размера окна (TCP
Windows scan). Такой метод позволяет выявить открытые, а также фильтруемые/нефильтруемые
порты некоторых систем (например, AIX и FreeBSD), в зависимости от полученного
размера окна протокола TCP.
- TCP-сканирование
портов RFC (TCP RFC scan). Этот метод применим только для систем UNIX и
используется для выявления портов RFC (Remote Procedure Call — удаленный вызов
процедур), связанных с ними программ и их версий.
А UDP-сканирование
(UDP scan). Данный метод заключается в отправке на исследуемый узел пакетов по
протоколу UDP. Если в ответ поступает сообщение о том, что порт ICMP недоступен
(ICMP port unreachabie), это означает, что соответствующий порт закрыт. С другой
стороны, если такого сообщения нет, можно предположить, что данный порт открыт.
В связи с тем, что протокол UDP не гарантирует доставки, точность данного метода
очень сильно зависит от множества факторов, влияющих на использование системных
и сетевых ресурсов. Кроме того, UDP-сканирование — очень медленный процесс, что
особенно сказывается при попытках сканирования устройств, в которых реализован
мощный алгоритм фильтрации пакетов. Поэтому, планируя использовать UDP-сканирование,
приготовьтесь к тому, что результаты могут оказаться ненадежными. Некоторые
реализации IP-протокола обладают одним неприятным свойством: пакеты RST отправляются
обратно для всех сканируемых портов независимо от того, находятся ли соответствующие
порты в режиме ожидания запросов. Учитывайте этот факт при использовании описанных
методов. Однако в то же время сканирование подключением и сканирование с использованием
сообщений SYN могут применяться для всех узлов. |