Введение
Добро пожаловать в лабораторную работу по сканированию уязвимостей с помощью NSE.
Nmap (Network Mapper) — это мощный инструмент с открытым исходным кодом, используемый для обнаружения сетей и аудита безопасности. Одной из самых гибких и мощных его функций является Nmap Scripting Engine (NSE). NSE позволяет пользователям писать и использовать готовые скрипты для автоматизации широкого спектра сетевых задач.
Использование NSE для сканирования уязвимостей — это эффективный метод, однако он меняет характер самого сканирования. Вы больше не просто наблюдаете за состоянием сети, а активно ищете известные слабые места. Это делает контроль области сканирования и тщательную интерпретацию результатов критически важными задачами.
В этой лабораторной работе вы узнаете, как превратить Nmap из простого сканера портов в активный сканер уязвимостей. Вы будете использовать специфические категории скриптов, такие как vuln, для активного зондирования целевых служб. Этот процесс помогает выявить известные уязвимости (CVE) и опасные ошибки конфигурации серверов. К концу работы вы научитесь обновлять базу данных скриптов, запускать сканирование по категориям, проводить аудит конкретных служб, таких как HTTP и SMB, а также анализировать полученные результаты.
Обновление базы данных скриптов NSE
В этом шаге вы узнаете, как обновить базу данных Nmap Scripting Engine (NSE).
Nmap поставляется с сотнями предустановленных скриптов, расположенных в каталоге /usr/share/nmap/scripts/. Эти скрипты классифицируются по своему назначению, например: default, discovery, safe, intrusive, vuln и exploit.
Перед запуском любого сканирования уязвимостей рекомендуется убедиться, что внутренняя база данных скриптов Nmap актуальна. Эта база данных служит индексом, позволяющим Nmap быстро находить и классифицировать скрипты. Когда в систему добавляются новые скрипты или изменяются существующие, базу данных необходимо обновлять, чтобы Nmap «знал», как их использовать.
Это отражает более широкий принцип безопасности: информация об угрозах и методах оценки быстро устаревает. Инструменты эффективны лишь настолько, насколько актуальны правила, сигнатуры или шаблоны, на которые они опираются.
Для обновления базы данных скриптов NSE необходимо использовать аргумент --script-updatedb. Поскольку эта команда изменяет системные файлы в каталоге установки Nmap, требуются права администратора.
Выполните следующую команду в терминале:
sudo nmap --script-updatedb
Вы должны увидеть вывод, похожий на этот, подтверждающий успешное обновление базы данных:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.09 seconds
Это подтверждает, что Nmap успешно обновил индекс доступных скриптов и категорий. Теперь вы готовы к началу сканирования.
Запуск сканирования уязвимостей (категория vuln)
В этом шаге вы будете использовать категорию скриптов NSE vuln для поиска известных уязвимостей на локальной машине.
Категория vuln содержит скрипты, специально разработанные для проверки на наличие известных уязвимостей и формирования отчетов о них. Когда вы указываете категорию вместо имени конкретного скрипта, Nmap автоматически запускает все скрипты, относящиеся к этой категории, для всех обнаруженных открытых портов.
Результаты работы этих скриптов — это лишь зацепки, а не окончательное доказательство взлома. Положительный результат часто означает: «эта служба ведет себя так, как описано в известной проблеме», что требует дальнейшей проверки аналитиком.
Для получения наиболее точных результатов настоятельно рекомендуется сочетать скрипты NSE с определением версий. Определение версий (-sV) позволяет точно установить программное обеспечение и его версию, работающую на открытом порту. Многие скрипты для поиска уязвимостей опираются на эту информацию, чтобы определить, может ли цель быть уязвимой, прежде чем отправлять интрузивные запросы.
Вы просканируете свою локальную машину (localhost), используя определение версий и категорию скриптов vuln.
Выполните следующую команду:
nmap -sV --script vuln -p 80,139,445 localhost
Сканирование может занять минуту или две, так как скрипты для поиска уязвимостей выполняют сложные проверки. Ваш вывод будет выглядеть примерно так:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0014s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum:
|_ /server-status/: Potentially interesting folder
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| vulners:
| cpe:/a:apache:http_server:2.4.52:
| PACKETSTORM:176334 9.8 https://vulners.com/packetstorm/PACKETSTORM:176334 *EXPLOIT*
| HTTPD:C072933AA965A86DA3E2C9172FFC1569 9.8 https://vulners.com/httpd/HTTPD:C072933AA965A86DA3E2C9172FFC1569
| ... (truncated for brevity)
139/tcp open netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners:
| cpe:/a:samba:samba:4.6.2:
| SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
| SAMBA_IS_KNOWN_PIPENAME 10.0 https://vulners.com/canvas/SAMBA_IS_KNOWN_PIPENAME *EXPLOIT*
| ... (truncated for brevity)
445/tcp open netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners:
| cpe:/a:samba:samba:4.6.2:
| SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
| ... (truncated for brevity)
Host script results:
|_samba-vuln-cve-2012-1182: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 66.86 seconds
В этом выводе Nmap обнаружил веб-сервер Apache на порту 80 и службу Samba на портах 139 и 445. Скрипты категории vuln автоматически проверили эти службы на наличие распространенных проблем, таких как интересные HTTP-директории и известные уязвимости SMB.
Аудит конкретных служб (например, SMB/HTTP)
В этом шаге вы узнаете, как нацеливаться на конкретные службы с помощью отдельных скриптов NSE, вместо запуска всей категории целиком.
Запуск целой категории, такой как vuln, может быть шумным и занимать много времени. Часто во время оценки безопасности вы идентифицируете конкретную службу (например, веб-сервер или общую папку) и хотите запустить целевые скрипты только для нее.
Например, скрипт http-enum перебирает директории, используемые популярными веб-приложениями и серверами. Это отличный способ найти скрытые панели администратора или папки с резервными копиями. Чтобы ускорить сканирование, можно использовать флаг -p, чтобы указать Nmap сканировать только конкретный порт, на котором работает служба (например, порт 80 для HTTP).
Выполните следующую команду для аудита локального веб-сервера Apache:
nmap -p 80 --script http-enum localhost
Вы увидите вывод, сфокусированный только на порту 80:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000096s latency).
PORT STATE SERVICE
80/tcp open http
| http-enum:
|_ /server-status/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds
Аналогичным образом можно проверить службу Samba (SMB). SMB — это протокол сетевого обмена файлами, который исторически часто становился целью атак. Вы можете использовать скрипт smb-os-discovery для сбора подробной информации об операционной системе и конфигурации SMB. SMB обычно работает на портах 139 и 445.
Выполните следующую команду для аудита локальной службы SMB:
nmap -p 139,445 --script smb-os-discovery localhost
Вывод предоставит подробную информацию о службе SMB:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds
Нацеливаясь на конкретные порты и скрипты, вы значительно сокращаете время сканирования и получаете максимально сфокусированные и применимые на практике результаты.
Анализ вывода NSE
В этом заключительном шаге вы узнаете, как сохранять результаты сканирования Nmap в файл и анализировать вывод на наличие конкретных ключевых слов.
При проведении сканирования уязвимостей объем вывода может быть очень большим. Крайне важно сохранять результаты в файл, чтобы вы могли просмотреть их позже, поделиться с командой или обработать с помощью других инструментов командной строки. Nmap предоставляет несколько форматов вывода. Флаг -oN сохраняет вывод в обычном текстовом формате, удобном для чтения человеком.
Вы запустите сканирование уязвимостей локальной машины и сохраните результаты в файл vuln_scan.txt в каталоге вашего проекта.
Выполните следующую команду:
nmap -sV --script vuln -p 80,139,445 localhost -oN ~/project/vuln_scan.txt
Дождитесь завершения сканирования. После этого результаты будут надежно сохранены в файле ~/project/vuln_scan.txt.
Теперь вы можете проанализировать этот файл. В реальных условиях вы можете искать конкретные индикаторы компрометации или критические уязвимости. Вы можете использовать команду grep для поиска по текстовому файлу. Например, можно выполнить поиск слова "VULNERABLE" (без учета регистра с помощью флага -i), чтобы быстро обнаружить любые подтвержденные проблемы.
Выполните следующую команду для поиска в файле результатов:
grep -i "VULNERABLE" ~/project/vuln_scan.txt
|_ Hosts are all up (not vulnerable).
Чтобы убедиться, что файл был создан и содержит данные сканирования, вы можете просмотреть первые несколько строк файла с помощью команды head:
head -n 10 ~/project/vuln_scan.txt
Вы должны увидеть стандартный заголовок Nmap и начало отчета о сканировании:
## Nmap 7.80 scan initiated Mon Mar 9 15:27:21 2026 as: nmap -sV --script vuln -p 80,139,445 -oN /home/labex/project/vuln_scan.txt localhost
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).
Сохранение и парсинг вывода — это фундаментальный навык для любого специалиста по безопасности, позволяющий эффективно управлять большими объемами данных.
Резюме
Поздравляем! Вы успешно завершили лабораторную работу по сканированию уязвимостей с помощью NSE.
В этой работе вы научились превращать Nmap из стандартного сканера портов в инструмент активной оценки уязвимостей. Вы начали с обновления базы данных Nmap Scripting Engine, чтобы убедиться в наличии самых актуальных скриптов. Затем вы использовали категорию vuln для автоматического зондирования обнаруженных служб на наличие известных уязвимостей. Кроме того, вы попрактиковались в нацеливании на конкретные службы, такие как HTTP и SMB, с помощью отдельных скриптов для проведения сфокусированного аудита. Наконец, вы узнали, как сохранять результаты сканирования в файл и анализировать их с помощью инструментов командной строки для эффективной работы.
Эти навыки формируют прочный фундамент для аудита сетевой безопасности и управления уязвимостями.



