Сканирование на уязвимости с помощью Nmap

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе вы научитесь сканировать системы на наличие уязвимостей с использованием скрипта vuln в Nmap. Этот скрипт позволяет выявить потенциальные уязвимости безопасности, проверяя на наличие таких общих проблем, как стандартные учетные записи, устаревшие программы и неправильные настройки.

Вы выполните скрипт vuln для целевого IP-адреса (в качестве примера используйте 127.0.0.1 в среде виртуальной машины LabEx), отсканируете определенные порты, добавьте подробность для более детального вывода, сохраните результаты в файл, а затем изучите выявленные уязвимости в терминале Xfce, сравнив их с результатами обнаружения сервисов.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/output_formats -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/save_output -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/scan_types -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/target_specification -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/verbosity -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/os_version_detection -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/service_detection -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/scripting_basics -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} nmap/script_management -.-> lab-547109{{"Сканирование на уязвимости с помощью Nmap"}} end

Запуск скрипта vuln с помощью nmap --script vuln 192.168.1.1

В этом шаге мы будем использовать скрипт vuln в Nmap для сканирования целевого IP-адреса на наличие известных уязвимостей. Скрипт vuln - это мощный инструмент, который может помочь выявить потенциальные уязвимости безопасности в системе.

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

Скрипт vuln - это коллекция скриптов, предназначенных для выявления распространенных уязвимостей. Он проверяет широкий спектр проблем, таких как стандартные учетные записи, устаревшие версии программ и неправильные настройки.

Давайте начнем с сканирования целевого IP-адреса 192.168.1.1 с использованием скрипта vuln. Поскольку 192.168.1.1 - это частный IP-адрес, его不大可能直接从 LabEx VM 环境访问。出于演示目的,我们将使用127.0.0.1(localhost)作为目标。这假设 LabEx VM 上运行着我们可以扫描的服务。

打开你的 Xfce 终端并执行以下命令:

sudo nmap --script vuln 127.0.0.1

你可能需要使用sudo,因为 Nmap 通常需要提升的权限来执行某些扫描。

此命令告诉 Nmap 对 IP 地址127.0.0.1运行vuln脚本。然后 Nmap 将尝试识别目标系统上的任何漏洞。

输出将显示扫描结果。它将列出找到的任何漏洞,以及问题描述和潜在的修复步骤。

示例输出(实际输出将取决于在127.0.0.1上运行的服务):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.

80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

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

在此示例中,Nmap 扫描了127.0.0.1上的端口 22 和 80。作为vuln脚本集一部分的vulners脚本无法找到在这些端口上运行的服务的任何已知漏洞。这不一定意味着系统完全安全,但确实表明没有立即明显的漏洞。

Сканирование конкретного порта с помощью nmap --script vuln -p 80 127.0.0.1

В предыдущем шаге мы сканировали все порты на 127.0.0.1 с использованием скрипта vuln. В этом шаге мы сосредоточим наш скан на конкретном порте: порту 80. Это полезно, когда вы хотите быстро проверить определенный сервис на наличие уязвимостей, не сканируя всю систему. Порт 80 обычно используется для HTTP-трафика (веб-сайтов).

Параметр -p в Nmap позволяет вам указать, какие порты нужно сканировать. Вы можете указать один порт, диапазон портов или список портов, разделенных запятыми.

Для сканирования только порта 80 на 127.0.0.1 с использованием скрипта vuln, выполните следующую команду в терминале Xfce:

sudo nmap --script vuln -p 80 127.0.0.1

Эта команда告诉 Nmap 对 IP 地址127.0.0.1上的端口 80 运行vuln脚本。然后 Nmap 将尝试识别与该端口上运行的服务相关的任何漏洞。

输出将与上一步类似,但只会显示端口 80 的结果。

示例输出(实际输出将取决于在127.0.0.1上运行的服务):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

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

Как вы можете видеть, вывод сосредоточен только на порте 80. Скрипт vulners снова не смог найти никаких известных уязвимостей.

Сканирование конкретных портов может значительно сократить время, затрачиваемое на проведение сканирования на уязвимости, особенно когда вы интересуетесь только определенным сервисом.

Добавление подробности в сканирование с помощью nmap -v --script vuln 192.168.1.1

В этом шаге мы добавим подробность к нашему сканированию с помощью Nmap. Подробность означает, что Nmap будет предоставлять более подробную информацию о процессе сканирования. Это может помочь понять, что делает Nmap, и устранить любые возникающие проблемы.

Параметр -v в Nmap увеличивает уровень подробности. Вы можете использовать -v несколько раз, чтобы увеличить подробность еще больше (например, -vv или -vvv).

Для запуска скрипта vuln на 127.0.0.1 с подробностью выполните следующую команду в терминале Xfce:

sudo nmap -v --script vuln 127.0.0.1

Эта команда告诉 Nmap 对 IP 地址127.0.0.1运行vuln脚本并提供详细输出。

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

Пример вывода (фактический вывод зависит от запущенных на 127.0.0.1 сервисов и будет значительно длиннее, чем не подробный вывод):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 151 scripts for scanning.
Initiating Ping Scan at 10:10
Scanning 127.0.0.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating SYN Stealth Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed SYN Stealth Scan at 10:10, 0.06s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 2 services on localhost (127.0.0.1)
Completed Service scan at 10:10, 6.41s elapsed (2 services total)
NSE: Script scanning 127.0.0.1.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 10:10
Completed NSE at 10:10, 1.13s elapsed.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
|_ vulners: Could not find vulnerability results.
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
Initiating NSE at 10:10
Completed NSE at 10:10, 0.00s elapsed.
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 7.70 seconds

Подробный вывод предоставляет гораздо более подробное представление о процессе сканирования. Вы можете увидеть различные этапы сканирования, выполняемые скрипты и любые ошибки или предупреждения, которые могут возникнуть.

Сохранение результатов сканирования на уязвимости с помощью nmap --script vuln -oN vuln.txt 127.0.0.1

В этом шаге мы узнаем, как сохранить результаты сканирования на уязвимости с помощью Nmap в файл. Это полезно для последующего анализа, составления отчетов или для сравнения результатов в течение времени.

Nmap предоставляет несколько параметров для сохранения результатов сканирования в различных форматах. Параметр -oN сохраняет результаты в "обычном" человекочитаемом формате. Другие параметры включают -oX для формата XML и -oG для формата, удобного для поиска с помощью команды grep.

Для сохранения результатов сканирования с использованием скрипта vuln в файл с именем vuln.txt в обычном формате выполните следующую команду в терминале Xfce:

sudo nmap --script vuln -oN vuln.txt 127.0.0.1

Эта команда告诉 Nmap 对 IP-адрес 127.0.0.1 запустить скрипт vuln и сохранить результаты в файл vuln.txt в обычном формате вывода. Файл vuln.txt будет создан в текущей директории (~/project).

После завершения сканирования вы можете просмотреть содержимое файла vuln.txt с использованием текстового редактора, такого как nano:

nano vuln.txt

Это откроет файл vuln.txt в редакторе nano, позволяя вам просмотреть результаты сканирования. Вывод будет похож на то, что вы видите на экране при запуске Nmap без параметра -oN.

Пример содержимого файла vuln.txt (фактическое содержимое зависит от запущенных на 127.0.0.1 сервисов):

## Nmap 7.80 scan initiated Tue Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

## Nmap done at Tue Oct 27 10:15:07 2023 -- 1 IP address (1 host up) scanned in 7.00 seconds

Вы также можете использовать другие команды Linux для просмотра файла, например, cat:

cat vuln.txt

Сохранение результатов сканирования в файл является важным шагом в оценке уязвимостей и пентестах. Это позволяет документировать ваши находки и отслеживать изменения в течение времени.

Просмотр уязвимостей в терминале Xfce

В этом шаге мы будем просматривать результаты сканирования на уязвимости непосредственно в терминале Xfce. Это включает в себя анализ вывода команды nmap --script vuln для выявления потенциальных уязвимостей в целевой системе.

Сначала давайте снова запустим сканирование на уязвимости针对 127.0.0.1. Это обеспечит нас самыми актуальными результатами для просмотра. Выполните следующую команду в терминале Xfce:

sudo nmap --script vuln 127.0.0.1

Внимательно изучите вывод. Скрипт vuln пытается выявить известные уязвимости, проверяя версии и конфигурации сервисов. Ищите любые строки, которые указывают на потенциальные уязвимости.

Вывод покажет открытые порты и запущенные на этих портах сервисы. Скрипт vulners, который является частью набора скриптов vuln, пытается сопоставить версии сервисов с известными уязвимостями.

Пример вывода (фактический вывод зависит от запущенных на 127.0.0.1 сервисов):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

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

В этом примере скрипт vulners не смог найти никаких результатов по уязвимостям для сервисов SSH и HTTP. Однако, если были найдены уязвимости, вывод будет включать детали о конкретных уязвимостях и ссылки на соответствующие ресурсы.

Если вы видите вывод, указывающий на потенциальные уязвимости, изучите эти уязвимости дополнительно, чтобы понять риски и способы их устранения. Вы можете использовать информацию о версии сервиса (например, "Apache/2.4.29 (Ubuntu)") для поиска известных уязвимостей в этой конкретной версии программного обеспечения.

Этот шаг важен для понимания безопасности целевой системы и для выявления потенциальных областей опасения.

Сравнение с обнаружением сервисов в терминале Xfce

В этом шаге мы сравним результаты сканирования на уязвимости с стандартным обнаружением сервисов, предоставляемым Nmap. Это поможет нам понять, предоставляет ли скрипт vuln дополнительную информацию, которая не доступна при стандартном сканировании Nmap.

Сначала запустите стандартное сканирование обнаружения сервисов Nmap 针对 127.0.0.1. Выполните следующую команду в терминале Xfce:

sudo nmap -sV 127.0.0.1

Параметр -sV告诉 Nmap выполнять обнаружение версии сервиса. Это попытается определить конкретные версии сервисов, запускающихся на открытых портах.

Пример вывода (фактический вывод зависит от запущенных на 127.0.0.1 сервисов):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))

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

Теперь сравните этот вывод с выводом команды nmap --script vuln 127.0.0.1, которую вы запускали на предыдущем шаге.

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

  • Версии сервисов: Определяет ли сканирование -sV те же версии сервисов, что и скрипт vuln? Скрипт vuln часто relies на информацию о версии сервиса для выявления потенциальных уязвимостей.
  • Информация о уязвимостях: Предоставляет ли скрипт vuln дополнительную информацию о уязвимостях, которая отсутствует в выводе сканирования -sV? Скрипт vuln использует библиотеку vulners для проверки на наличие известных уязвимостей на основе версии сервиса.

Сравнив два вывода, вы сможете лучше понять ценность, которую предоставляет скрипт vuln. В многих случаях скрипт vuln выявит потенциальные уязвимости, которые не сразу очевидны при стандартном сканировании обнаружения сервисов. Это потому, что скрипт vuln специально предназначен для поиска известных уязвимостей, в то время как сканирование -sV в основном сосредоточено на определении сервиса и его версии.

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

Резюме

В этом лабе мы изучили использование скрипта vuln Nmap для сканирования целевой системы на уязвимости. Мы узнали, как выполнить скрипт针对 определенного IP-адреса (в качестве практического примера использовали 127.0.0.1 из-за лабораторной среды) с помощью команды nmap --script vuln 127.0.0.1, при этом часто требуется sudo для получения необходимых прав.

В лабе также показано, как сканировать определенный порт с использованием nmap --script vuln -p 80 127.0.0.1, увеличить подробность с помощью nmap -v --script vuln 192.168.1.1 и сохранить результаты сканирования в файл с использованием nmap --script vuln -oN vuln.txt 127.0.0.1. Наконец, в лабе мы провели анализ результатов сканирования на уязвимости и сравнили их с информацией о обнаружении сервисов в терминале Xfce.