Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Nmap: основные типы сканирования устройств и сетей

Оригинал: Advanced NMap: Some Scan Types
Автор: Rajesh Deodhar
Дата публикации: 1 Ноября 2010
Перевод: А.Панин
Дата перевода: 28 сентября 2012 г.

Обзор и описание основных функций программы Nmap были приведены в предыдущей статье серии. В данной статье будут подробно описаны некоторые типы исследования различных устройств и сетей с помощью Nmap и приведены практические примеры их использования.

Перед рассмотрением типов исследования устройств и сетей, рассмотрим основные понятия, включая трехэтапное рукопожатие TCP. TCP/IP представляет собой не отдельный протокол, а набор множества протоколов, некоторые из которых представлены в таблице.

1. Прикладной уровень FTP, HTTP, SNMP, BOOTP, DHCP
2. Транспортный уровень TCP, UDP, ICMP, IGMP
3. Сетевой уровень ARP, IP, RARP
4. Канальный уровень SLIP, PPP

UDP и TCP

UDP - протокол, не предусматривающий установление постоянного соединения и не гарантирующий доставку пакетов получателю. Это не значит, что протокол UDP не надежен; контроль доставки данных возлагается на высокоуровневое пользовательское приложение. У UDP есть свои области применения, такие, как трансляция аудио/видео потоков в условиях необходимости минимальных задержек.

TCP - протокол, предусматривающий установление постоянного соединения и гарантирующий доставку пакетов. Пакеты ICMP используются для оповещения об ошибках в случае возникновения. Трехэтапное рукопожатие TCP используется для установления и разрыва соединения, и эта идея является ключевой для понимания различных типов исследования устройств и сетей, предоставляемых программой Nmap. Этот процесс осуществляется следующим образом:

  1. Клиент инициирует соединение отправкой сегмента SYN (Synchronize) со случайным числом в качестве идентификатора X.
  2. Сервер отвечает отправкой сегментов SYN-ACK (Acknowledgment) с идентификаторами X+1 и случайным числом Y.
  3. Клиент отправляет сегмент ACK с идентификатором Y+1, завершая рукопожатие. После этого клиент и сервер могут начать обмен данными.

После завершения обмена данными, клиент отправляет сегмент FIN (Finish) для завершения соединения.

Nmap эффективно использует рукопожатие TCP стандартным и нестандартным образом для различных типов исследования. Перед тем, как продолжить, давайте проясним два простых и важных аспекта работы Nmap:

  1. По умолчанию Nmap сканирует 1000 стандартных портов для каждого протокола. Список этих портов может быть изменен, он находится в файле nmap-services, обычно расположенном в каталоге /etc/services. (Я никогда не пользовался этим; в подавляющем большинстве случаев стандартных портов вполне достаточно!)
  2. Привилегии пользователя root необходимы при любом типе исследования, изменяющем стандартную процедуру трехэтапного рукопожатия TCP.

Теперь давайте попробуем разобраться в подробностях работы различных типов исследования устройств и сетей.

TCP SYN-исследование -sS

Этот тип исследования, используемый в Nmap по умолчанию, позволяет определять открытые TCP порты в заданном диапазоне. В начале процесса Nmap инициирует рукопожатие TCP с портом при помощи стандартного SYN-сегмента. Ответ, полученный от исследуемой системы, говорит о состоянии порта (см. таблицу).

Состояние порта Ответ клиента Заключение
Открыт Стандартный ответ с сегментами SYN-ACK Служба работает
Закрыт Стандартный ответ с сегментом RST Служба не работает
Фильтруется Нет ответа Порт защищен межсетевым экраном

Если устройство отвечает сегментами SYN-ACK, Nmap отправляет сегмент RST вместо ACK, сбрасывая соединение, вместо завершения рукопожатия для обмена данными. Если бы вместо RST отправлялся ACK, соединение оставалось бы открытым вплоть до истечения времени сессии, приводя устройство к ситуации, аналогичной атаке отказа в обслуживании.

Для проведения SYN-исследования в операционной системе Linux необходимы права пользователя root. SYN-исследование используется для установления состояния портов TCP для различных устройств в сети. Поскольку этот тип исследования работает на уровне протокола TCP, его можно использовать со всеми операционными системами и устройствами, для которых реализована поддержка протокола TCP, такими как контроллеры, PLC, сетевые принтеры, сетевые маршрутизаторы и мобильные телефоны.

Поскольку полноценного TCP-соединения не создается, данный вид исследования сложно идентифицировать. Тем не менее, при тщательном мониторинге состояния сети, можно обнаружить большое количество сегментов RST, ввиду того, что для каждого порта генерируется по одному сегменту. Пример командной строки для осуществления SYN-исследования, возвращающего список открытых TCP-портов:
nmap -sS 192.168.100.100

Пинг-исследование -sP

Этот тип исследования используется для поиска активных узлов в диапазоне адресов. В отличие от использования портов в SYN-исследовании, данный метод начинает свою работу с отправки эхо-запроса ICMP в диапазоне адресов. Активные устройства сети должны ответить при помощи эхо-ответа ICMP, подтвердив тем самым свой статус.

В случае использования межсетевого экрана с блокировкой ICMP, устройства не смогут ответить на эхо-запрос. Очевидным применением данного метода является поиск всех активных устройств в сети. Две приведенные ниже команды позволяют получить список активных IP-адресов в диапазоне 192.168.100.0/24:
nmap -sP -n -oG hostlist 192.168.100.0/24    ## запись в файл hostlist, совместимый с grep
cut -d " "-f2 hostlist > iplist    ##  iplist - список всех активных IP-адресов в заданном диапазоне

Пинг-исследование использует только один пакет для запроса и ожидает один пакет в ответ, что делает этот тип исследования самым быстрым среди всех типов исследования Nmap с наименьшей нагрузкой на сеть. Этот тип не совместим с другими типами.

UDP-исследование -sU

Этот тип исследования позволяет определить состояние UDP-портов в заданном диапазоне. В начале процесса Nmap отправляет UDP-пакет размером 0 байт на порт. Ответ, полученный от исследуемой системы, говорит о состоянии порта:
1. Порт открыт: в ответ приходит дейтаграмма.
2. Порт закрыт: в ответ приходит пакет ICMP с сообщением об ошибке.
3. Порт открыт или фильтруется: в ответ не приходит пакета ICMP с сообщением об ошибке. Nmap ждет в течение заданного периода времени, но не может определить, открыт ли порт, либо защищен межсетевым экраном.

UDP-исследование может эффективно использоваться для обнаружения вредоносного программного обеспечения (malware/spyware). Пример командной строки для осуществления UDP-исследования, возвращающий список открытых/закрытых/открытых/фильтруемых UDP-портов:
nmap -sU 192.168.100.100

Краткое сравнение SYN-, пинг- и UDP-исследования.

Тип Описание
SYN-исследование (-sS) - работает с TCP-портами - Не оставляет записи в журнале событий
- Требует привилегий пользователя root
- В ходе исследования, трафик RST-сегментов возрастает
- Позволяет получить информацию состоянии портов TCP
Пинг-исследование (-sP) - устанавливает активные узлы - Очень сложно отследить - необходимо всего два стандартных ICMP-пакета, часто встречающихся в сети.
- Не требует привилегий пользователя root
- Позволяет установить активные устройства в сети
UDP-исследование (-sU) - работает с UDP-портами - Использует пакеты UDP размером 0 байт, что мало загружает сеть.
- Требует привилегий пользователя root
- Многие операционные системы накладывают ограничения на трафик по протоколу UDP, что может привести к замедлению процесса на этих ОС.
- Хорошо работает на операционных системах от Microsoft, где нет ограничений на трафик по протоколу UDP
- Хорошо подходит для проверки стандартных UDP-портов, используемых вредоносным программным обеспечением для обмена данными.

Испробуйте данные типы исследования устройств и сетей в работе самостоятельно перед тем, как перейти к рассмотрению других функций программы Nmap. Следите за новыми статьями из данной серии! Продолжение здесь!