Nmap

Nmap (сокращение от Network Mapper) — сканер сетей, разработанный Гордоном Лайоном (также известным под псевдонимом Fyodor Vaskovich)[3]. Nmap используется для обнаружения хостов и сервисов в компьютерной сети путём отправки пакетов и анализа ответов[4].

Что важно знать
Nmap
Тип сканер сетей
Автор Гордон Лайон (Fyodor)
Написана на C, C++, Python, Lua
Операционная система кроссплатформенное
Языки интерфейса английский
Первый выпуск сентябрь 1997
Последняя версия см. раздел о релизах
Репозиторий github.com/nmap/nmap.git
Лицензия NPSL[1] или изменённая GPLv2[2] или проприетарная
Сайт nmap.org (англ.)

История

Первый релиз Nmap состоялся в сентябре 1997 года как статья в Phrack Magazine с исходным кодом[5]. В дальнейшей разработке активно участвовало сообщество специалистов по безопасности. Были реализованы такие улучшения, как определение операционных систем, определение версий сервисов[6], переписывание кода (C→C++), поддержка новых видов сканирования, протоколов (например, IPv6, SCTP[7]) и появление дополнительных программ.

Основные этапы развития

История версий
Дата Версия Значимые изменения Примечания
12 декабря 1998 Nmap 2.00 Добавлено определение ОС [8]
11 апреля 1999 NmapFE Первое включение фронтенда на GTK+ [8]
7 декабря 2000 Портирование на Windows [9]
28 августа 2002 Переписывание кода с C на C++ [9]
16 сентября 2003 Первое публичное внедрение определения версий сервисов [9]
31 августа 2004 Nmap 3.70 Новый движок сканирования ultra_scan [10]
лето 2005 Участие в Google Summer of Code; внедрение Zenmap, NSE, Ncat, улучшенное определение ОС [11]
13 декабря 2007 Nmap 4.50 Юбилейный выпуск; поддержка Zenmap, улучшенный движок ОС, NSE [12]
30 марта 2009 Nmap 4.85BETA5 Поиск заражения Conficker с помощью NSE [13]
16 июля 2009 Nmap 5.00 Добавлены Ncat и Ndiff [14]
28 января 2011 Nmap 5.50 Введён Nping для анализа отклика и измерения времени, поддержка TCP, UDP, ICMP [15][16]
21 мая 2012 Nmap 6.00 Полная поддержка IPv6
9 ноября 2015 Nmap 7.00 [17]
20 декабря 2016 Nmap 7.40
20 марта 2018 Nmap 7.70 [18]
10 августа 2019 Nmap 7.80 [19]
3 октября 2020 Nmap 7.90 Улучшено определение ОС и сервисов, добавлены новые скрипты NSE, новый драйвер Npcap 1.0.0 для Windows [20]

Функционал

Программа предоставляет множество возможностей для сканирования компьютерных сетей, включая определение доступных устройств и обнаружение сервисов и операционных систем. Эти функции расширяются за счёт скриптов, которые позволяют реализовать продвинутое обнаружение сервисов[21], поиск уязвимостей[21] и другие задачи. Nmap может адаптироваться к условиям сети, таким как задержка сети и загруженность сети, во время сканирования.

Изначально Nmap был создан как утилита для Linux[22], но впоследствии был перенесён на другие платформы, включая Windows, macOS и BSD[23]. Наибольшую популярность Nmap получил в среде Linux, после чего появился в Windows[24].

Наиболее быстрой альтернативой Nmap является ZMap.

Возможности

  • Быстрое сканирование (nmap -F [цель]) — базовое сканирование портов для получения быстрых результатов.
  • Обнаружение хостов — определение подключённых устройств в сети, например, выявление хостов, реагирующих на TCP или ICMP-запросы, либо имеющих открытый определённый порт.
  • Сканирование портов — определение открытых портов на целевых устройствах.
  • Определение версий — получение информации о версиях и названиях сервисов на удалённых устройствах[6].
  • Ping Scan — проверка хоста с помощью отправки ping-запросов.
  • Определение операционной системы (фингерпринтинг) — определение ОС и аппаратных характеристик сетевых устройств на основе анализа их сетевой активности.
  • Скриптовое взаимодействие с целью — посредством Nmap Scripting Engine[25] (NSE) и языка Lua.

Nmap также может показывать дополнительные сведения о целях — обратные DNS, типы устройств, MAC-адреса[26].

Обычные сценарии использования Nmap:

  • Аудит безопасности устройства или межсетевого экрана (firewall) путём выявления разрешённых сетевых соединений[27].
  • Перечисление открытых портов на целевом устройстве для последующего аудита[28].
  • Учёт сетевых ресурсов, картирование сети, поддержание и управление IT-активами[29].
  • Аудит безопасности сети с целью выявления новых серверов[30].
  • Генерация сетевого трафика, анализ отклика и измерение времени отклика[31].
  • Поиск и эксплуатация уязвимостей в сетях[32].
  • DNS-запросы и поиск поддоменов.

Интерфейсы

NmapFE, изначально написанный Канчаном, был официальным GUI-интерфейсом для Nmap в версиях с 2.2 по 4.22[9]. В версии 4.50 (на базе серии 4.22SOC) NmapFE был заменён на Zenmap — новую официальную графическую оболочку, основанную на UMIT и разработанную Адриано Монтеиро Маркесом.

Вывод результатов

Nmap поддерживает четыре основных формата вывода. Все, кроме интерактивного режима, могут быть сохранены в файл. Обработка выходных данных может быть осуществлена с помощью стороннего ПО, что позволяет формировать пользовательские отчёты[33].

  • Интерактивный: отображается в режиме реального времени при запуске из командной строки. В процессе сканирования можно вводить дополнительные опции для мониторинга.
  • XML: формат, пригодный для дальнейшей обработки средствами XML. Может быть преобразован в отчёты HTML с помощью XSLT.
  • Grep-подобный: выходные данные, оптимизированные для работы с инструментами постобработки строк (grep, sed, awk).
  • Обычный: стандартный вывод как при запуске в командной строке, сохраняемый в файл.
  • Script kiddie: шуточный формат вывода, в котором буквы заменяются на похожие по написанию цифры (например, Interesting portsInt3rest1ng p0rtz). Такой стиль известен как лиит-стиль.

Юридические аспекты

Nmap позволяет обнаруживать сервисы на устройствах, подключённых к интернету. Как и любое программное обеспечение, инструмент может использоваться для нелегальных действий[34], включая подготовку к несанкционированному доступу. Тем не менее, Nmap широко используется администраторами и специалистами по безопасности для проверки своих сетей на уязвимости (этический хакинг).

Администраторы могут, например, с помощью Nmap выявлять несанкционированные серверы или компьютеры, не соответствующие политике безопасности[35].

В 2003 году Верховный суд Финляндии признал, что сканирование портов по финскому законодательству того времени приравнивается к попытке несанкционированного доступа:[36]

В решении суда указано, что обвиняемый систематически производил сканирование портов с целью сбора информации для несанкционированного проникновения в банковскую сеть. Это квалифицируется как покушение на компьютерный взлом[36].

Лицензия

Поначалу Nmap распространялся под лицензией GPL[5]. В более поздних версиях была добавлена авторская интерпретация, вносящая уточнения и ограничения к базовой GPL[37]. Например, начиная с версии 3.50 была отозвана лицензия у SCO Group за их позицию по вопросам спора SCO против Linux[38].

Начиная с версии 7.90, проект переходит на новую лицензию NPSL с двойным лицензированием для версий 7.90, 7.91 и 7.92[39]. При этом ряд дистрибутивов Linux считает новую лицензию несвободной[40].[41]

В массовой культуре

Nmap появляется в фильме «Матрица: Перезагрузка», где персонаж Тринити использует его для получения доступа к системе электростанции[42], позволив персонажу Нео «физически» проникнуть в здание. Факт появления реального инструмента в голливудском фильме был обсуждаем на форумах и получил положительную оценку специалистов как редкий пример реалистичного хакерства[43].

Nmap и его интерфейс NmapFE также появляются в фильме «Прослушка» 2006 года, а исходный код Nmap и командная строка видны во многих сценах таких фильмов, как «Королевская битва», «Крепкий орешек 4.0», «Ультиматум Борна»[42] и других. В 2013 году Nmap появляется в фантастическом фильме «Элизиум — рай не на Земле».

В фильме «Дредд» также заметны сцены с использованием Nmap для разведки и эксплуатации сетевой инфраструктуры башни-«муравейника», что отмечено даже в трейлере картины[42]. Команда Nmap встречается в игре Hacknet, а также в начале фильма «Сноуден».

В академических исследованиях

Nmap широко используется в академической среде; его применяют в исследованиях стека TCP/IP и сетевых коммуникаций[44]. Кроме того, исходные базы Nmap и его алгоритмы становились темой научных публикаций[45].

Пример использования

$ nmap -f -v -A scanme.nmap.org
Starting Nmap 6.47 ( https://nmap.org ) at 2014-12-29 20:02 CET
Nmap scan report for scanme.nmap.org (74.207.244.221)
Host is up (0.16s latency).
Not shown: 997 filtered ports
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 5.3p1 Debian 3ubuntu7.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)
|_  2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)
80/tcp   open  http       Apache httpd 2.2.14 ((Ubuntu))
|_http-title: Go ahead and ScanMe!
9929/tcp open  nping-echo Nping echo
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|phone|storage-misc|WAP
Running (JUST GUESSING): Linux 2.6.X|3.X|2.4.X (94%), Netgear RAIDiator 4.X (86%)
OS CPE: cpe:/o:linux:linux_kernel:2.6.38 cpe:/o:linux:linux_kernel:3 cpe:/o:netgear:raidiator:4 cpe:/o:linux:linux_kernel:2.4
Aggressive OS guesses: Linux 2.6.38 (94%), Linux 3.0 (92%), Linux 2.6.32 - 3.0 (91%), Linux 2.6.18 (91%), Linux 2.6.39 (90%), Linux 2.6.32 - 2.6.39 (90%), Linux 2.6.38 - 3.0 (90%), Linux 2.6.38 - 2.6.39 (89%), Linux 2.6.35 (88%), Linux 2.6.37 (88%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 13 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 80/tcp)
HOP RTT       ADDRESS
1   14.21 ms  151.217.192.1
2   5.27 ms   ae10-0.mx240-iphh.shitty.network (94.45.224.129)
3   13.16 ms  hmb-s2-rou-1102.DE.eurorings.net (134.222.120.121)
4   6.83 ms   blnb-s1-rou-1041.DE.eurorings.net (134.222.229.78)
5   8.30 ms   blnb-s3-rou-1041.DE.eurorings.net (134.222.229.82)
6   9.42 ms   as6939.bcix.de (193.178.185.34)
7   24.56 ms  10ge10-6.core1.ams1.he.net (184.105.213.229)
8   30.60 ms  100ge9-1.core1.lon2.he.net (72.52.92.213)
9   93.54 ms  100ge1-1.core1.nyc4.he.net (72.52.92.166)
10  181.14 ms 10ge9-6.core1.sjc2.he.net (184.105.213.173)
11  169.54 ms 10ge3-2.core3.fmt2.he.net (184.105.222.13)
12  164.58 ms router4-fmt.linode.com (64.71.132.138)
13  164.32 ms scanme.nmap.org (74.207.244.221)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 28.98 seconds

Примечания

Литература