Это утилита с открытым исходным кодом для исследования сети и проверки безопасности. Многие системные администраторы и администраторы сетей также находят её полезной для таких задач как инвентаризация сети, управления расписанием служб обновлений и мониторинга аптайма хостов или служб. Nmap использует сырые IP пакеты новаторским способом, чтобы определить, какие хосты доступны в сети, какие службы (имя и версия приложений) эти хосты предлагают, какие операционные системы (и версии ОС) там запущены, какие типы фильтров пакетов/файерволов используются и дюжины других характеристик. Она была создана для быстрого сканирования больших сетей, но работает и прекрасно работает в отношении единичных хостов. Nmap запускается на всех популярных операционных системах, а официальные исполнимые пакеты доступны для Linux, Windows и Mac OS X. В дополнении к классической версии Nmap комоандной строки, набор Nmap включает продвинутый графический интерфейс и просмотрщик результатов (Zenmap), гибкий инструмент передачи, перенаправления и отладки данных (Ncat), утилиту для сравнения результатов сканирования (Ndiff), и инструмент генерации пакетов и анализа ответов (Nping).
Nmap обладает следующими свойствами:
Гибкость: Поддерживает дюжины продвинутых техник для составления карты сети, заполненной IP фильтрами, файерволами, роутерами и другими преградами. Сюда относятся множество механизмов сканирования портов (как TCP, так и UDP), определение ОС, определение версий, пинг зачисток и другое. Подробности смотрите в документации.
Мощность: Nmap использовалась для сканирования громадных сетей, буквально сотни тысяч машин.
Портативность: Поддерживаются большинство операционных систем, включая Linux, Microsoft Windows, FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, HP-UX, NetBSD, Sun OS, Amiga и другие.
Простота: При том, что Nmap предлагает богатый набор продвинутых функций для уверенных пользователей, вы можете начать с простых вещей вроде "nmap -v -A целевой хост". Чтобы полностью удовлетворить вашим потребностям, доступны как традиционная версия командной строки, так и графическая версия (GUI). Для тех, кто не хочет компилировать Nmap из исходников, доступны исполнимые файлы.
Бесплатно: Главные цели проекта Nmap — это помочь сделать Интернет чуть более безопасным и предоставить администраторам/аудиторам/хакерам продвинутый инструмент для исследования их сетей. Nmap доступна для свободной загрузки и также поставляется с полным исходным кодом, который вы можете изменить и распространять его на основе лицензии.
Хорошая документация: Значительные усилия были вложены для создания полных и актуальных страниц мануалов, белые бумаги, уроки и даже целую книгу!
Поддержка: Хотя Nmap поставляется без гарантий, он хорошо поддерживается динамичным сообществом разработчиков и пользователей.
Признание: Nmap выиграла ряд призов, включая "Information Security Product of the Year" от Linux Journal, Info World and Codetalker Digest. Она была отмечена в сотнях журнальных статей, нескольких фильмах, множестве книг и одной серии комиксов.
Популярность: Тысячи людей загружают Nmap каждый день и она включена во множество операционных систем (Redhat Linux, Debian Linux, Gentoo, FreeBSD, OpenBSD и т.д.). Она в десятке (из 30,000) программ в репозитории Freshmeat.Net. Это важно, поскольку это придаёт Nmap динамичную разработку и сообщество поддержки пользователей.
Использование:
nmap [тип сканировния] [опции] {определение цели}
ОПРЕДЕЛЕНИЕ ЦЕЛИ СКАНИРОВАНИЯ:
Можно использовать сетевые имена, IP адреса, сети и т.д.
Пример: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <имя_входного_файла>: Использовать список хостов/сетей из файла
-iR <количество_хостов>: Выбрать произвольные цели
--exclude <хост1[,хост2][,хост3],...>: Исключить хосты/сети
--excludefile <имя_файла>: Исключить список из файла
ОБНАРУЖЕНИЕ ХОСТОВ:
-sL: Сканирование с целью составления списка - просто составить список целей для сканирования
-sn: Пинг сканирование - отключить сканирование портов
-Pn: Рассматривать все хосты будто бы они онлайн -- пропустить обнаружение хостов
-PS/PA/PU/PY[список_портов]: TCP SYN/ACK, UDP или SCTP обнаружение данных портов пингование заданных портов
-PE/PP/PM: Пингование с использованием ICMP эхо запросов, запросов временной метки и сетевой маски
-PO[список_протоколов]: Пингование с использованием IP протокола
-n/-R: Никогда не производить DNS разрешение/Всегда производить разрешение [по умолчанию: иногда]
--dns-servers <сервер1[,сервер2],...>: Задать собственные DNS сервера
--system-dns: Использовать системный DNS преобразователь
--traceroute: Отслеживать путь к хосту
РАЗЛИЧНЫЕ ПРИЕМЫ СКАНИРОВАНИЯ:
-sS/sT/sA/sW/sM: TCP SYN/с использованием системного вызова Connect()/ACK/Window/Maimon сканирования
-sU: UDP сканирование
-sN/sF/sX: TCP Null, FIN и Xmas сканирования
--scanflags <флаги>: Задать собственные TCP флаги
-sI <зомби_хост[:порт]>: "Ленивое" (Idle) сканирование
-sY/sZ: SCTP INIT/COOKIE-ECHO сканирования
-sO: Сканирование IP протокола
-b <FTP ретранслирующий хост>: FTP bounce сканирование
ОПРЕДЕЛЕНИЕ ПОРТОВ И ПОРЯДКА СКАНИРОВАНИЯ:
-p <диапазон_портов>: Сканирование только определенных портов
Пример: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges>: Exclude the specified ports from scanning
-F: Быстрый режим - Сканировать меньше портов чем при сканировании по умолчанию
-r: Сканировать порты последовательно - не использовать случайный порядок портов
--top-ports <количество_портов>: Сканировать <количество_портов> наиболее распространенных портов
--port-ratio <рейтинг>: Сканировать порты с рейтингом большим чем <рейтинг>
ОПРЕДЕЛЕНИЕ СЛУЖБ И ИХ ВЕРСИЙ:
-sV: Исследовать открытые порты для определения информации о службе/версии
--version-intensity <уровень>: Устанавливать от 0 (легкое) до 9 (пробовать все запросы)
--version-light: Ограничиться наиболее легкими запросами (интенсивность 2)
--version-all: Использовать каждый единичный запрос (интенсивность 9)
--version-trace: Выводить подробную информацию о процессе сканирования (для отладки)
СКАНИРОВАНИЕ С ИПОЛЬЗОВАНИЕМ СКРИПТОВ:
-sC: эквивалентно опции --script=default
--script=<Lua скрипты>: <Lua скрипты> это разделенный запятыми список директорий, файлов скриптов или
категорий скриптов
--script-args=<имя1=значение1,[имя2=значение2,...]>: Передача аргументов скриптам
--script-args-file=имя_файла: передать скрипту NSE аргументы в файле
--script-trace: Выводить все полученные и отправленные данные
--script-updatedb: Обновить базу данных скриптов.
--script-help=<Lua скрипты>: Показать помощь о скриптах.
<Lua скрипты> разделённый запятой список файлов скриптов или
категорий скриптов.
ОПРЕДЕЛЕНИЕ ОС:
-O: Активировать функцию определения ОС
--osscan-limit: Использовать функцию определения ОС только для "перспективных" хостов
--osscan-guess: Угадать результаты определения ОС
ОПЦИИ УПРАВЛЕНИЯ ВРЕМЕНЕМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ:
Опции, принимающие аргумент <время>, задаются в миллисекундах, пока вы не добавите 's' (секунды), 'm' (минуты),
или 'h' (часы) к значению (напр. 30m).
-T[0-5]: Установить шаблон настроек управления временем (больше - быстрее)
--min-hostgroup/max-hostgroup <кол_хостов>: Установить размер групп для параллельного сканирования
--min-parallelism/max-parallelism <кол_хостов>: Регулирует распараллеливание запросов
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <время>: Регулирует время ожидания ответа на запрос
--max-retries <количество_попыток>: Задает максимальное количество повторных передач запроса
--host-timeout <время>: Прекращает сканирование медленных целей
--scan-delay/--max-scan-delay <время>: Регулирует задержку между запросами
--min-rate <число>: Посылать запросы с интенсивностью не меньше чем <число> в секунду
--max-rate <число>: Посылать запросы с интенсивностью не больше чем <число> в секунду
ОБХОД ФАЙЕРВОЛОВ/IDS И СПУФИНГ:
-f; --mtu <значение>: Фрагментировать пакеты (опционально с заданным значениме MTU)
-D <фикт_хост1,фикт_хост2[,ME],...>: Маскировка сканирования с помощью фиктивных хостов
-S <IP_адрес>: Изменить исходный адрес
-e <интерфейс>: Использовать конкретный интерфейс
-g/--source-port <номер_порта>: Использовать заданный номер порта
--proxies <url1,[url2],...>: Переправлять подключения через прокси HTTP/SOCKS4
--data <hex string>: Append a custom payload to sent packets
--data-string <string>: Дописать пользовательскую ASCII строку к отправляемым пакетам
--data-length <число>: Добавить произвольные данные к посылаемым пакетам
--ip-options <опции>: Посылать пакет с заданным ip опциями
--ttl <значение>: Установить IP поле time-to-live (время жизни)
--spoof-mac <MAC_адрес/префикс/название производителя>: Задать собственный MAC адрес
--badsum: Посылать пакеты с фиктивными TCP/UDP контрольными суммами
ВЫВОД РЕЗУЛЬТАТОВ:
-oN/-oX/-oS/-oG <файл>: Выводить результаты нормального, XML, s|<rIpt kIddi3,
и Grepable формата вывода, соответственно, в заданный файл
-oA <базовове_имя_файла>: Использовать сразу три основных формата вывода
-v: Увеличить уровень вербальности (используйте -vv или более для усиления эффекта)
-d: Увеличить уровень отладки (используйте -dd или более для усиления эффекта)
--reason: Отобразить причину, по которой порт в конкретном состоянии
--open: Показывать только открытые (или возможно открытые) порты
--packet-trace: Отслеживание принятых и переданных пакетов
--iflist: Вывести список интерфейсов и роутеров (для отладки)
--append-output: Добавлять в конец, а не перезаписывать выходные файлы
--resume <имя_файла>: Продолжить прерванное сканирование
--stylesheet <путь/URL>: Устанавливает XSL таблицу стилей для преобразования XML вывода в HTML
--webxml: Загружает таблицу стилей с Nmap.Org
--no-stylesheet: Убрать объявление XSL таблицы стилей из XML
РАЗЛИЧНЫЕ ОПЦИИ:
-6: Включить IPv6 сканирование
-A: Активировать функции определения ОС и версии, сканирование с использованием скриптов и трассировку
--datadir <имя_директории>: Определяет место расположения файлов Nmap
--send-eth/--send-ip: Использовать сырой уровень ethernet/IP
--privileged: Подразумевать, что у пользователя есть все привилегии
--unprivileged: Подразумевать, что у пользователя нет привилегий для использования сырых сокетов
-V: Вывести номер версии
-h: Вывести страницу помощи.
ПРИМЕРЫ:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
Пример:
sudo nmap -v -A -T4 suip.biz
Starting Nmap 7.12 ( https://nmap.org ) at 2016-05-21 15:22 MSK
NSE: Loaded 138 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 15:22
Completed NSE at 15:22, 0.00s elapsed
Initiating NSE at 15:22
Completed NSE at 15:22, 0.00s elapsed
Initiating Parallel DNS resolution of 1 host. at 15:22
Completed Parallel DNS resolution of 1 host. at 15:22, 0.02s elapsed
Initiating SYN Stealth Scan at 15:22
Scanning suip.biz (185.117.153.79) [1000 ports]
Discovered open port 993/tcp on 185.117.153.79
Discovered open port 3306/tcp on 185.117.153.79
Discovered open port 143/tcp on 185.117.153.79
Discovered open port 25/tcp on 185.117.153.79
Discovered open port 443/tcp on 185.117.153.79
Discovered open port 80/tcp on 185.117.153.79
Discovered open port 995/tcp on 185.117.153.79
Discovered open port 110/tcp on 185.117.153.79
Discovered open port 465/tcp on 185.117.153.79
Completed SYN Stealth Scan at 15:22, 0.04s elapsed (1000 total ports)
Initiating Service scan at 15:22
Scanning 9 services on suip.biz (185.117.153.79)
Completed Service scan at 15:22, 12.05s elapsed (9 services on 1 host)
Initiating OS detection (try #1) against suip.biz (185.117.153.79)
NSE: Script scanning 185.117.153.79.
Initiating NSE at 15:22
Completed NSE at 15:23, 43.55s elapsed
Initiating NSE at 15:23
Completed NSE at 15:23, 0.01s elapsed
Nmap scan report for suip.biz (185.117.153.79)
Host is up (0.000038s latency).
Not shown: 991 closed ports
PORT STATE SERVICE VERSION
25/tcp open smtp Postfix smtpd
|_smtp-commands: suip.biz, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8,
| ssl-cert: Subject: commonName=suip.biz
| Issuer: commonName=Let's Encrypt Authority X3/organizationName=Let's Encrypt/countryName=US
| Public Key type: rsa
| Public Key bits: 4096
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2016-05-17T12:14:00
| Not valid after: 2016-08-15T12:14:00
| MD5: c5ea 594b d185 e811 6381 c82f 352d 9489
|_SHA-1: 5ead 1a9c 0858 23a2 59bb 98b4 70c3 c8dc a72d 9b92
|_ssl-date: TLS randomness does not represent time
80/tcp open http Apache httpd 2.4.20 ((Unix) PHP/7.0.6 OpenSSL/1.0.2h)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.20 (Unix) PHP/7.0.6 OpenSSL/1.0.2h
|_http-title: Did not follow redirect to https://suip.biz/
110/tcp open pop3 Dovecot pop3d
|_pop3-capabilities: RESP-CODES USER STLS TOP UIDL PIPELINING AUTH-RESP-CODE SASL(PLAIN CRAM-MD5) CAPA
| ssl-cert: Subject: commonName=suip.biz
| Issuer: commonName=Let's Encrypt Authority X3/organizationName=Let's Encrypt/countryName=US
| Public Key type: rsa
| Public Key bits: 4096
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2016-05-17T12:14:00
| Not valid after: 2016-08-15T12:14:00
| MD5: c5ea 594b d185 e811 6381 c82f 352d 9489
|_SHA-1: 5ead 1a9c 0858 23a2 59bb 98b4 70c3 c8dc a72d 9b92
|_ssl-date: TLS randomness does not represent time
143/tcp open imap Dovecot imapd
|_imap-capabilities: ID listed STARTTLS LITERAL+ AUTH=CRAM-MD5A0001 SASL-IR LOGIN-REFERRALS IDLE Pre-login post-login have more capabilities ENABLE IMAP4rev1 OK AUTH=PLAIN
| ssl-cert: Subject: commonName=suip.biz
| Issuer: commonName=Let's Encrypt Authority X3/organizationName=Let's Encrypt/countryName=US
| Public Key type: rsa
| Public Key bits: 4096
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2016-05-17T12:14:00
| Not valid after: 2016-08-15T12:14:00
| MD5: c5ea 594b d185 e811 6381 c82f 352d 9489
|_SHA-1: 5ead 1a9c 0858 23a2 59bb 98b4 70c3 c8dc a72d 9b92
|_ssl-date: TLS randomness does not represent time
443/tcp open ssl/http Apache httpd 2.4.20 ((Unix) PHP/7.0.6 OpenSSL/1.0.2h)
|_http-favicon: Unknown favicon MD5: 913CC96448A5F71C239098652CB10104
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.20 (Unix) PHP/7.0.6 OpenSSL/1.0.2h
|_http-title: 400 Bad Request
| ssl-cert: Subject: commonName=suip.biz
| Issuer: commonName=Let's Encrypt Authority X3/organizationName=Let's Encrypt/countryName=US
| Public Key type: rsa
| Public Key bits: 4096
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2016-05-17T12:14:00
| Not valid after: 2016-08-15T12:14:00
| MD5: c5ea 594b d185 e811 6381 c82f 352d 9489
|_SHA-1: 5ead 1a9c 0858 23a2 59bb 98b4 70c3 c8dc a72d 9b92
|_ssl-date: TLS randomness does not represent time
465/tcp open ssl/smtp Postfix smtpd
|_smtp-commands: suip.biz, PIPELINING, SIZE 10240000, VRFY, ETRN, AUTH PLAIN CRAM-MD5, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8,
|_ssl-date: TLS randomness does not represent time
993/tcp open ssl/imap Dovecot imapd 2.0.11
|_imap-capabilities: ID more listed ENABLE OK LITERAL+ AUTH=CRAM-MD5A0001 IMAP4rev1 post-login have Pre-login capabilities AUTH=PLAIN SASL-IR LOGIN-REFERRALS IDLE
|_ssl-date: TLS randomness does not represent time
995/tcp open ssl/pop3 Dovecot pop3d
|_pop3-capabilities: SASL(PLAIN CRAM-MD5) RESP-CODES UIDL PIPELINING AUTH-RESP-CODE USER TOP CAPA
|_ssl-date: TLS randomness does not represent time
3306/tcp open mysql MariaDB (unauthorized)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.8 - 4.4
Uptime guess: 4.002 days (since Tue May 17 15:21:07 2016)
Network Distance: 0 hops
TCP Sequence Prediction: Difficulty=252 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: Host: suip.biz
NSE: Script Post-scanning.
Initiating NSE at 15:23
Completed NSE at 15:23, 0.00s elapsed
Initiating NSE at 15:23
Completed NSE at 15:23, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
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 58.73 seconds
Raw packets sent: 1022 (45.778KB) | Rcvd: 2051 (87.376KB)