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-запросы и поиск поддоменов.
Интерфейсы
Вывод результатов
Nmap поддерживает четыре основных формата вывода. Все, кроме интерактивного режима, могут быть сохранены в файл. Обработка выходных данных может быть осуществлена с помощью стороннего ПО, что позволяет формировать пользовательские отчёты[33].
- Интерактивный: отображается в режиме реального времени при запуске из командной строки. В процессе сканирования можно вводить дополнительные опции для мониторинга.
- XML: формат, пригодный для дальнейшей обработки средствами XML. Может быть преобразован в отчёты HTML с помощью XSLT.
- Grep-подобный: выходные данные, оптимизированные для работы с инструментами постобработки строк (grep, sed, awk).
- Обычный: стандартный вывод как при запуске в командной строке, сохраняемый в файл.
- Script kiddie: шуточный формат вывода, в котором буквы заменяются на похожие по написанию цифры (например,
Interesting ports→Int3rest1ng 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 -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
Примечания
Литература
- Fyodor Lyon, Gordon. Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Security Scanning. — Insecure.com LLC, 1 января 2009. — P. 468. — ISBN 978-0-9799587-1-7.


