Основы Nmap Scripting Engine (NSE)

NmapBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы превратите Nmap из простого сканера портов в универсальный инструмент аудита. Вы познакомитесь с Nmap Scripting Engine (NSE) — одной из самых мощных и гибких функций Nmap.

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

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

Поиск сценариев NSE

В этом шаге вы узнаете, где Nmap хранит свои сценарии и как искать нужные.

Nmap Scripting Engine (NSE) использует сценарии, написанные на языке программирования Lua. При установке Nmap в системе Linux по умолчанию доступно несколько сотен таких скриптов, охватывающих всё: от базового обнаружения сети до сложного поиска уязвимостей.

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

По умолчанию Nmap хранит все свои NSE-скрипты в директории /usr/share/nmap/scripts/. Вы можете просмотреть содержимое этой папки, чтобы увидеть доступные инструменты.

Выполните следующую команду, чтобы вывести первые несколько скриптов в директории:

ls /usr/share/nmap/scripts/ | head -n 10

Вы увидите вывод, похожий на этот:

acarsd-info.nse
address-info.nse
afp-brute.nse
afp-ls.nse
afp-path-vuln.nse
afp-serverinfo.nse
afp-showmount.nse
ajp-auth.nse
ajp-brute.nse
ajp-headers.nse

Обратите внимание, что все файлы имеют расширение .nse, что означает Nmap Scripting Engine.

Поскольку существует более 600 скриптов, часто бывает полезно искать сценарии, относящиеся к конкретной службе. Например, если вы хотите найти скрипты для HTTP (веб-серверов), вы можете использовать команду grep для фильтрации результатов.

Выполните следующую команду для поиска HTTP-скриптов:

ls /usr/share/nmap/scripts/ | grep http | head -n 10

Это отобразит список скриптов, предназначенных для взаимодействия с веб-серверами, таких как http-title.nse (получает заголовок веб-страницы) или http-auth.nse (проверяет механизмы аутентификации).

Запуск стандартных сценариев (-sC)

В этом шаге вы научитесь запускать стандартный набор сценариев Nmap.

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

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

Для запуска стандартного набора скриптов используйте флаг -sC. Это эквивалентно команде --script=default.

Для этой лабораторной работы в фоновом режиме запущен легкий веб-сервер на порту 8080, а стандартная служба SSH работает на порту 22. Давайте просканируем локальную машину (localhost) на этих портах с использованием стандартных скриптов.

Выполните следующую команду:

nmap -sC -p 22,8080 localhost

Вы увидите вывод, похожий на этот:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy
|_http-title: LabEx Nmap NSE Target

Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds

Внимательно посмотрите на вывод. Для порта 8080 Nmap автоматически запустил скрипт http-title и успешно извлек заголовок веб-страницы: "LabEx Nmap NSE Target". Nmap использует эти стандартные скрипты для бесшовного сбора дополнительной информации об открытых портах.

Это демонстрирует, как флаг -sC мгновенно превращает Nmap из простого сканера портов в инструмент сбора данных.

Запуск сценариев определенных категорий

В этом шаге вы узнаете, как выполнять конкретные сценарии или целые категории скриптов с помощью аргумента --script.

Хотя стандартные скрипты (-sC) отлично подходят для общей разведки, иногда требуется запустить специфический скрипт для конкретной задачи. Это можно сделать, передав имя скрипта аргументу --script.

Например, если вы хотите получить только заголовок HTTP веб-сервера на порту 8080, не запуская другие стандартные скрипты, вы можете указать скрипт http-title напрямую.

Выполните следующую команду:

nmap --script=http-title -p 8080 localhost

Вывод будет сфокусированным и покажет только состояние порта и результат работы скрипта http-title:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8080/tcp open  http-proxy
|_http-title: LabEx Nmap NSE Target

Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds

Помимо имен отдельных скриптов, вы можете указывать категории. Nmap группирует скрипты по категориям, таким как safe (безопасные), intrusive (интрузивные), vuln (поиск уязвимостей), discovery (обнаружение) и exploit (эксплуатация).

Выполните следующую команду, чтобы запустить все скрипты категории safe для порта 8080:

nmap --script=safe -p 8080 localhost

Примечание: Запуск целой категории скриптов может занять значительное время (иногда более 9 минут!), в зависимости от сетевого окружения и количества скриптов в категории. Некоторые скрипты могут ожидать завершения таймаутов. Если вы не хотите ждать, вы можете нажать Ctrl+C, чтобы отменить сканирование и пропустить этот шаг.

Вывод будет включать заголовок HTTP, а также другие безопасные проверки, в зависимости от версии Nmap и окружения:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Pre-scan script results:
| targets-asn: 
|_  targets-asn.asn is a mandatory parameter
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8080/tcp open  http-proxy
|_http-date: Mon, 09 Mar 2026 06:57:04 GMT; 0s from local time.
|_http-fetch: Please enter the complete path of the directory to save data in.
| http-headers: 
|   Server: SimpleHTTP/0.6 Python/3.10.12
|   Date: Mon, 09 Mar 2026 06:57:03 GMT
|   Content-type: text/html
|   Content-Length: 103
|   Last-Modified: Mon, 09 Mar 2026 06:55:32 GMT
|   
|_  (Request type: HEAD)
|_http-title: LabEx Nmap NSE Target

Host script results:
| dns-blacklist: 
|   SPAM
|     list.quorum.to - SPAM
|     l2.apews.org - FAIL
|_    bl.nszones.com - SPAM
|_fcrdns: FAIL (No PTR record)
| resolveall: 
|   Host 'localhost' also resolves to:
|   Use the 'newtargets' script-arg to add the results as targets
|_  Use the --resolve-all option to scan all resolved addresses without using this script.
| unusual-port: 
|_  WARNING: this script depends on Nmap's service/version detection (-sV)

Post-scan script results:
| reverse-index: 
|_  8080/tcp: 127.0.0.1
Nmap done: 1 IP address (1 host up) scanned in 551.51 seconds

Использование аргумента --script дает вам детальный контроль над процессом аудита, позволяя адаптировать сканирование под конкретные задачи тестирования безопасности.

Резюме

Поздравляем! Вы успешно завершили лабораторную работу по основам Nmap Scripting Engine (NSE).

В этой работе вы научились:

  • Находить директорию по умолчанию для скриптов NSE (/usr/share/nmap/scripts/) и искать конкретные сценарии с помощью стандартных команд Linux.
  • Использовать флаг -sC для запуска набора стандартных безопасных скриптов для автоматического сбора информации, такой как ключи хоста SSH и заголовки веб-страниц.
  • Использовать аргумент --script для выполнения отдельных скриптов по имени или запуска целых категорий, что дает точный контроль над задачами сетевого аудита.

Эти фундаментальные навыки позволят вам использовать Nmap как мощный автоматизированный инструмент аудита безопасности в ваших будущих исследованиях сетей и тестах на проникновение.