Обнаружение сетевых служб с помощью Nmap и его механизма сценариев

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

Введение

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

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

Настройка локального сетевого сервиса для сканирования

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

Сначала откройте терминал. Терминал представляет собой текстовый интерфейс, в котором вы можете вводить команды для взаимодействия с компьютером. После открытия терминала убедитесь, что вы находитесь в директории проекта. Директория проекта — это как папка, где хранятся все файлы, связанные с этим проектом. Чтобы перейти в директорию проекта, введите в терминале следующую команду:

cd /home/labex/project

Далее мы создадим простой HTML - файл. HTML расшифровывается как HyperText Markup Language (язык гипертекстовой разметки) и используется для создания веб - страниц. Этот файл будет размещен на нашем сервере, как и веб - страницы, которые вы видите в интернете. Содержимое этого файла представляет то, что реальный веб - сервер может предоставить пользователям. Чтобы создать файл, используйте следующую команду:

echo "<h1>Welcome to the hidden treasure chamber</h1>" > treasure.html

Эта команда выполняет две задачи. Во - первых, она создает строку с HTML - заголовком. Затем она перенаправляет эту строку в файл с именем treasure.html. Чтобы проверить, был ли файл создан правильно, вы можете использовать команду cat. Команда cat используется для отображения содержимого файла. Введите в терминале следующую команду:

cat treasure.html

Если все прошло успешно, вы должны увидеть HTML - содержимое, которое мы только что добавили:

<h1>Welcome to the hidden treasure chamber</h1>

Теперь мы запустим простой HTTP - сервер. HTTP расшифровывается как HyperText Transfer Protocol (протокол передачи гипертекста) и представляет собой протокол, используемый для передачи веб - страниц по интернету. Мы воспользуемся встроенным модулем Python для запуска этого сервера. Этот сервер будет прослушивать порт 8000. Порт — это как дверь на вашем компьютере, через которую может входить или выходить сетевой трафик. Сервер будет предоставлять файлы из текущей директории, которая является директорией проекта, в которую мы перешли ранее. Чтобы запустить сервер, введите в терминале следующую команду:

python3 -m http.server 8000

После выполнения этой команды вы должны увидеть вывод, похожий на следующий:

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Этот вывод означает, что HTTP - сервер теперь запущен и ожидает подключений на порту 8000. Убедитесь, что окно терминала остается открытым. Если вы закроете его, сервер перестанет работать, и мы не сможем сканировать его с помощью Nmap позже.

Обнаружение сетевых сервисов с помощью Nmap

Теперь, когда мы успешно настроили сетевую службу, пришло время использовать Nmap для ее обнаружения и анализа. Nmap (сокращение от Network Mapper) — это хорошо известный и мощный открытый инструмент. Он широко используется для обнаружения сетей, то есть для определения, какие устройства и службы доступны в сети, а также для аудита безопасности, который помогает выявить потенциальные риски безопасности.

Сначала откройте новое окно терминала. Убедитесь, что предыдущее окно терминала остается открытым, так как в нем запущен HTTP - сервер. После открытия нового терминала вам нужно перейти в директорию проекта. Это важно, так как все команды, связанные с этим проектом, будут выполняться из этой директории. Используйте следующую команду для изменения директории:

cd /home/labex/project

Начнем с базового сканирования портов. Сканирование портов — это метод, используемый для проверки, какие порты на устройстве открыты и работают службы. Порты — это как двери, через которые сетевой трафик входит и выходит из устройства. В этом случае мы будем сканировать порт 8000 на локальном хосте (localhost), который относится к текущему компьютеру, на котором мы работаем. Запустите следующую команду:

nmap -p 8000 localhost

Эта команда instructs Nmap specifically scan port 8000 on the local machine. После выполнения команды вы должны увидеть вывод, похожий на следующий:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000016s latency).

PORT     STATE SERVICE
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

Вывод сообщает нам, что порт 8000 открыт, что означает, что на нем работает служба. "http - alt" — это способ Nmap по умолчанию идентифицировать альтернативные HTTP - службы.

Далее мы хотим собрать более подробную информацию о этой службе. Мы будем использовать флаг -sV с Nmap. Этот флаг сообщает Nmap попытаться определить версию работающей службы. Знание версии службы может быть crucial for security purposes, так как это помогает определить, есть ли какие - то известные уязвимости, связанные с этой конкретной версией. Запустите следующую команду:

sudo nmap -sV -p 8000 localhost > /home/labex/project/nmap_output_service_version.txt

Эта команда выполняет сканирование для определения версии на порту 8000. sudo используется для выполнения команды с административными привилегиями, которые могут быть необходимы для некоторых операций Nmap. Символ > перенаправляет вывод команды в файл с именем nmap_output_service_version.txt. Таким образом, мы можем сохранить результаты для дальнейшего анализа.

Чтобы просмотреть результаты, используйте следующую команду:

cat /home/labex/project/nmap_output_service_version.txt

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000016s latency).

PORT     STATE SERVICE VERSION
8000/tcp open  http    Python http.server 3.10.X (Python 3.10.X)

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

Этот вывод подтверждает, что служба представляет собой HTTP - сервер, работающий на Python, что соответствует тому, что мы настроили на предыдущем этапе.

Использование Nmap Scripting Engine (NSE)

Nmap Scripting Engine (NSE) — это мощный инструмент, который позволяет расширять возможности Nmap с помощью скриптов на языке Lua. Lua — это легковесный язык программирования, и эти скрипты могут выполнять широкий спектр задач. Например, они могут помочь в продвинутом обнаружении служб, то есть более точном определении, какие службы работают на сетевом устройстве. Они также могут использоваться для сканирования на уязвимости, что является важным для выявления уязвимостей безопасности в системе.

Давайте используем NSE для сбора более подробной информации о нашем HTTP - сервере. Скрипты NSE группируются по разным категориям. Эти категории включают "default" (по умолчанию), которая содержит часто используемые и безопасные скрипты; "discovery" (обнаружение), которая предназначена для поиска сетевых служб; "safe" (безопасные), которые не причинят вреда целевой системе; и "vuln" (уязвимости), которая используется для сканирования на уязвимости.

Сначала мы хотим узнать, какие скрипты, связанные с HTTP, доступны. Для этого мы используем следующую команду:

ls /usr/share/nmap/scripts/http*

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

Теперь давайте используем скрипт http-title для извлечения заголовка нашей веб - страницы. Скрипт http-title предназначен для анализа HTTP - службы и нахождения заголовка веб - страницы, которую она предоставляет. Вот команда для запуска этого скрипта:

sudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt

В этой команде sudo используется для выполнения команды с административными привилегиями, так как некоторые операции Nmap могут потребовать их. nmap — это основная команда, а --script=http-title сообщает Nmap использовать скрипт http-title. -p 8000 указывает, что мы целируемся на порт 8000, где работает наш HTTP - сервер. localhost — это цель, то есть мы выполняем сканирование на собственном компьютере. Символ > перенаправляет вывод команды в файл /home/labex/project/nmap_script_output.txt.

Давайте проверим вывод команды. Мы можем сделать это, используя следующую команду:

cat /home/labex/project/nmap_script_output.txt

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).

PORT     STATE SERVICE
8000/tcp open  http-alt
|_http-title: Directory listing for /

Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

Теперь давайте попробуем более комплексное сканирование с использованием нескольких скриптов. Категория "default" включает безопасные скрипты, которые предоставляют полезную информацию о цели. Чтобы запустить все скрипты из категории "default" на нашем HTTP - сервере на порту 8000, мы используем следующую команду:

sudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt

Эта команда похожа на предыдущую, но вместо указания одного скрипта мы сообщаем Nmap запустить все скрипты из категории "default".

Давайте рассмотрим результаты этого сканирования. Мы можем сделать это, снова используя команду cat:

cat /home/labex/project/nmap_default_scripts.txt

Вывод будет содержать более подробную информацию о нашем HTTP - сервере, собранную различными скриптами NSE, которые запускаются по умолчанию.

Наконец, давайте исследуем функцию справки по скриптам, чтобы узнать больше о конкретном скрипте. Если вы хотите узнать больше о скрипте http-title, вы можете использовать следующую команду:

nmap --script-help=http-title

Эта команда отображает документацию для скрипта http-title. Документация включает цель скрипта, способ его использования и формат его вывода. Понимание документации скриптов является важным при использовании NSE для конкретных задач, так как это помогает понять, что делает скрипт и как правильно его использовать.

Резюме

В этом практическом занятии вы научились использовать Nmap Scripting Engine (NSE) для обнаружения и анализа сетевых служб. Сначала вы настроили локальный HTTP - сервер, а затем использовали различные команды Nmap для сканирования и сбора информации о данной службе.

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