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

UnixForum





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

Nmap: обзор и базовые понятия

Оригинал: Learning Nmap: The Basics
Автор: Rajesh Deodhar
Дата публикации: 1 Августа 2010 г.
Перевод: А.Панин
Дата перевода: 27 сентября 2012 г.

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

Страница руководства Nmap описывает данную программу как инструмент исследования и аудита безопасности сети, а также сканер портов. Nmap (Network Mapper) - это универсальная программа с открытым исходным кодом, без которой просто не могут обойтись системные администраторы. Некоторые возможности программы:
- Она быстрая!
- Использует "сырые" IP-пакеты наряду с различными инновационными методами исследования.
- Может определять название и версию операционной системы (в случае невозможности определения, пользователю предлагается выслать данные разработчикам для включения в новые версии Nmap).
- Предлагает различные варианты исследования сети.

Предупреждение: во время использования Nmap не забывайте о следующем!
По строгим правилам индийского законодательства в сфере информационных технологий (Indian Cyber Law 2000, включая последние поправки), даже сканирование портов некоторых серверов может повлечь ответственность в виде тюремного заключения. Не исследуйте системы и сети, к которым вы не имеете отношения без письменного согласия владельца.
Вы можете исследовать ресурс с адресом scanme.nmap.org с целью тестирования программы. При этом разрешено использование исключительно программы Nmap и запрещено тестирование эксплоитов и проведение атак отказа в обслуживании (DDOS - атак). Не забывайте следовать правилам, изложенным на странице руководства Nmap. В случае нарушения правил использования данного сервиса, от владельцев сайта последует обращение в государственные структуры.
Используйте Nmap очень аккуратно, и только для исследования и аудита безопасности ваших сетей. Как будет описано в данной статье, это очень мощный инструмент, который может нарушить работу или нанести ущерб исследуемой системе или сети.
Полностью разберитесь в том, что вы будете делать перед тем, как приступить к работе, даже при исследовании по сценарию. Неосведомленность не освобождает от ответственности.
Также помните, что если у вас есть сайт, на сервере хостинг-провайдера или на арендованном вами сервере, вам принадлежит только контент сайта, но не сервер и сеть. В идеальном случае, вам необходимо получить разрешение от хостинг-провайдера или владельца сервера даже для тестирования собственного сайта.

Стандартный формат командной строки Nmap выглядит следующим образом:

nmap [тип(ы) исследования] [параметры] {описание целей исследования}
У Nmap обширный список параметров командной строки, разделяемый на описание целей исследования, список узлов, параметры портов, идентификацию служб, технику исследования, сценарии исследования и параметры вывода данных. Некоторые параметры работают только при запуске Nmap пользователем root (суперпользователем). Рассмотрим ряд стандартных команд Nmap:
  • nmap -sL 192.168.10.0/24 - выводит список обнаруженных узлов (IP адреса всех активных узлов в подсети с адресами от 192.168.10.1 до 192.168.10.254).
  • nmap -p80,443 192.168.10.10-20 - исследует диапазон IP адресов в поисках открытых портов 80 и 443.
  • nmap -p T:80,8080,6588,800 172.16.0.1/22 - исследует все узлы с адресами от 172.16.0.1 до 172.16.3.254 в поисках открытых TCP портов 80,8080,6588 и 800 (стандартные порты, по которым принимают соединения различные прокси - сервера).
  • nmap -sP 192.168.10.10,20 - проводит пинг-исследование двух узлов (самый быстрый тип исследования).
  • nmap -PN 192.168.10.0/29 - исследует все узлы в диапазоне адресов от 192.168.10.1 до 192.168.10.6. Иногда межсетевые экраны на серверах не пропускают пинг-запросы, что усложняет процесс. В этих случаях полезен параметр -PN, позволяющий исследовать узлы, считая, что они активны.
  • nmap -A -F 192.168.10.1 - определяет операционную систему и службы, выполняющиеся на устройстве.

Эти стандартные команды полезны для исследования любой сети и преследуют такие цели, как: проверка на наличие открытых портов; определение нежелательных служб (таких как SSH, VNC, FTP и других), выполняющихся на важных узлах; получение списка активных IP-адресов в сети, и.т.д.

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

Хотя Nmap и предоставляет ряд способов сокрытия вашего IP-адреса (вы также можете скрыть свой MAC адрес при помощи спуфинга), нужно быть осторожным при использовании данных команд. Они требуют глубоких знаний протоколов TCP/IP и могут нарушить работу или нанести ущерб исследуемой системе или сети в случае некорректного использования. Давайте рассмотрим несколько техник для затруднения идентификации сканера целевой системой.

Техника "Idlescan"

nmap -v -sI 192.168.10.100 192.168.10.105

В данном случае исследуется система с IP адресом 192.168.10.105 с имитацией того, что источником пакетов является другой узел; в логах исследуемой системы будет зафиксирован адрес 192.168.10.100. Данный узел называется зомби-узлом (zombie host).

В контексте сетей, зомби-узлами называются узлы, контролируемые другими узлами в сети. Не все узлы могут быть использованы как зомби, так как для этого необходимо выполнить ряд условий. (Найти зомби-узел в сети можно при помощи таких пакетов, как hping.) Параметр -v позволяет выводить более подробные сообщения в процессе работы программы.

Техника узлов-ловушек "Decoy host"

nmap -sS -P0 -D 192.168.10.201,192.168.10.202,192.168.10.203 192.168.10.50

Данная команда особенно полезна во время тестирования IDS/IPS (системы обнаружения и предотвращения вторжений). При помощи параметра -sS производится SYN-исследование устройства. В процессе происходит подмена содержимого пакетов для того, чтобы устройство считало источниками пакетов узлы, заданные параметром -D. Параметры -s1 и -D не могут быть использованы одновременно по понятным причинам.

Теперь небольшое предупреждение: будьте осторожны, чтобы не допустить непреднамеренной атаки отказа в обслуживании при использовании параметра -D. Для понимания того, как это может произойти, необходимо знать принцип действия трехэтапного рукопожатия TCP (TCP handshake). TCP - протокол, обеспечивающий постоянное соединение с гарантированной доставкой пакетов, использует трехэтапное рукопожатие:
- Клиент инициирует соединение, отправляя серверу сегмент SYN
- Сервер отвечает сегментами SYN-ACK
- Клиент отвечает сегментом ACK, после чего соединение считается установленным и может производиться обмен данными

Если параметр -D используется и присутствует работающее устройство по адресу узла-ловушки, то сегменты SYN-ACK достигают устройства с IP-адресом узла-ловушки, а не устройства с запущенной программой Nmap. Поскольку устройство с адресом узла-ловушки не инициировало соединение, оно закрывает его, отправляя сегмент RST. Здесь нет никаких проблем.

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

Другие параметры командной строки

Разработчики Nmap продумали ряд возможностей программы во время ее проектирования. Одним из примеров служит параметр -ttl. Чтобы понять, как его использовать, давайте снова подробно рассмотрим протокол IP. Заголовки пакетов содержат поле, называемое TTL (Time To Live - время жизни). Значение TTL устанавливается устройством, отправившим пакет. Каждое устройство, принимающее или передающее пакет по маршруту его назначения, уменьшает значение TTL на некоторую величину.

Если значение TTL уменьшается до нуля до того, как пакет достиг узла назначения, он отбрасывается, а ошибка ICMP отправляется источнику пакета. Данный механизм призван предотвратить затраты ресурсов сети на постоянную пересылку между узлами пакетов, которые не могут быть доставлены по адресу назначения.

Несмотря на то, что параметр TTL изначально задумывался как величина времени, на что указывает название, на самом деле, его значение уменьшается на один, а не на некое количество секунд при каждой пересылке пакета между узлами. Таким образом, значение поля TTL отражает максимальное количество передач пакета между узлами, при котором пакет не будет отброшен.

Стандартное значение TTL во многих операционных системах системах равно 128. Однако, параметр -ttl позволяет вам задать нужное значение TTL для пакетов Nmap, что является очень полезной особенностью. Это позволяет, к примеру, быть уверенным, что пакет не попадет из вашей локальной сети в Интернет. Здорово, не правда ли?

Некоторые другие важные параметры командной строки Nmap, требующие понимания протоколов TCP/IP:
- Фрагментация пакетов (параметры -f и -ff)
- Использование техники "FTP bounce" для исследования посредством FTP - серверов (-b)
- Изменяемое время задержки исследования (-scan_delay особенно полезно если на сервере используются системы IDS/IPS, блокирующие запросы Nmap)
- Временные политики (-T)
- Исследование по сценарию

Список активных узлов в сети

Стандартная последовательность действий при тестировании сети начинается с составления списка активных узлов. Список может использоваться как исходные данные для других программ, в которых не предусмотрено возможности поиска активных узлов, но требуется один или несколько IP-адресов. Короткая последовательность команд для этих целей:

nmap -sP -n -oG hostlist 192.168.10.0/24
cut -d " " -f2 hostlist > iplist

Первая команда выполняет пинг-исследование (-sP) и генерирует список активных узлов в заданной сети или диапазоне адресов. Этот список будет сохранен в файле hostlist в формате, совместимом с утилитой grep (-oG). Вторая команда читает данные из файла, делит каждую строку на несколько полей, используя пробел в качестве разделителя, и записывает содержимое второго поля (IP-адрес) в файл iplist, который и является списком активных IP-адресов в заданном диапазоне.

Графическая оболочка Zenmap

У Nmap обширный список параметров командной строки, которые трудно запомнить и использовать даже опытным системным администраторам. Zenmap, графическая оболочка для программы Nmap, значительно ее упрощает. Она предлагает даже готовые профили исследования, из которых можно выбрать подходящий. Команды, генерируемые графической оболочкой, могут быть выполнены также и из командной строки в случае необходимости. Графическая оболочка имеет к тому же очень важную дополнительную функцию - графическое отображение обнаруженных узлов и количество пересылок пакетов, необходимое для достижения каждого из них! Примерный вид графического отображения представлен ниже.

Обнаруженные узлы в Zenmap

Надеемся, что важные понятия протоколов TCP/IP, мощь Nmap и другие идеи заинтересовали вас! В таком случае читайте следующую статью!