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

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

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

Введение

В этом лабе вы научитесь использовать Nmap Scripting Engine. В лабе рассматривается запуск стандартных сценариев, использование конкретных сценариев, добавление аргументов к сценариям, обновление сценариев, тестирование нескольких сценариев и просмотр вывода сценариев в терминале Xfce. Вы выполните команды, такие как nmap -sC, nmap --script и nmap --script-updatedb, по целевым IP-адресам для выполнения различных сканирований и сбора информации.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") 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-530187{{"Использование Nmap Scripting Engine"}} nmap/port_scanning -.-> lab-530187{{"Использование Nmap Scripting Engine"}} nmap/service_detection -.-> lab-530187{{"Использование Nmap Scripting Engine"}} nmap/scripting_basics -.-> lab-530187{{"Использование Nmap Scripting Engine"}} nmap/script_management -.-> lab-530187{{"Использование Nmap Scripting Engine"}} end

Запуск стандартных сценариев с помощью nmap -sC 192.168.1.1

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

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

cd ~/project

Теперь запустим Nmap с параметром -sC по целевому IP-адресу 192.168.1.1. Этот IP-адрес является заменителем. В реальном сценарии вы замените его фактическим IP-адресом целевого объекта, который вы хотите просканировать. Для данной лабораторной среды мы предположим, что 192.168.1.1 является действительным целевым объектом.

sudo nmap -sC 192.168.1.1

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

Вывод будет выглядеть примерно так (точный вывод может отличаться в зависимости от целевой системы):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu)
| ssh-hostkey:
|   2048 ... (RSA)
| ssh-rsa ...
|_ssh-algorithm: ...
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
|_nbstat: NetBIOS name: ..., NetBIOS user: ..., NetBIOS MAC: ... (unknown)
| smb-os-discovery:
|   OS: Unix
|   ...
|_  System time: ...

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

В этом примере вывод показывает, что порт 22 открыт и работает SSH. Сценарий ssh-hostkey идентифицировал SSH-ключ сервера, а сценарий ssh-algorithm идентифицировал поддерживаемые алгоритмы. Сценарий clock-skew обнаружил небольшую разницу времени на целевой системе. Сценарии nbstat и smb-os-discovery собрали информацию о службах NetBIOS и SMB соответственно.

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

Во - первых, убедитесь, что вы находитесь в директории ~/project:

cd ~/project

Теперь давайте используем команду nmap с параметром --script, чтобы указать сценарий banner и задать в качестве цели IP - адрес локального хоста 127.0.0.1.

sudo nmap --script banner 127.0.0.1

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

Вывод может выглядеть примерно так (точный вывод зависит от запущенных на вашем локальном хосте служб):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
631/tcp  open  ipp
5900/tcp open  vnc
8000/tcp open  http
8080/tcp open  http

Host script results:
|_banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_banner: 111/tcp:  rpcbind version 2-4
|_banner: 631/tcp: CUPS v2.4.1
|_banner: 5900/tcp: RFB 003.008
|_banner: 8000/tcp: Werkzeug/2.0.1 Python/3.9.7
|_banner: 8080/tcp: Jetty(9.4.44.v20210927)

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

В этом примере сценарий banner успешно получил баннеры от нескольких служб, запускающихся на 127.0.0.1, включая SSH, rpcbind, CUPS, VNC и HTTP - сервера. Баннеры предоставляют информацию о используемых версиях программного обеспечения.

Добавление аргументов с помощью nmap --script http-title --script-args http.useragent=Test 192.168.1.1

В этом шаге мы научимся передавать аргументы в сценарии Nmap. Некоторые сценарии требуют или допускают настройку аргументов. Мы будем использовать сценарий http-title и изменить его аргумент http.useragent. Сценарий http-title извлекает заголовок из HTTP-сервера. Аргумент http.useragent задает строку User-Agent, которую сценарий будет использовать при отправке HTTP-запросов.

Во - первых, перейдем в нашу рабочую директорию:

cd ~/project

Теперь запустим Nmap с параметром --script, чтобы указать сценарий http-title, и параметром --script-args, чтобы установить аргумент http.useragent равным Test. Мы будем использовать целевой IP - адрес 192.168.1.1. Помните, что в реальном сценарии вы замените его фактическим IP - адресом целевого объекта, запускающего HTTP - сервер.

sudo nmap --script http-title --script-args http.useragent=Test 192.168.1.1

Эта команда сообщает Nmap запустить сценарий http-title по любым открытым HTTP - портам на 192.168.1.1, используя "Test" в качестве строки User-Agent.

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

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.18.0
|_http-title: Test

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

В этом примере сценарий http-title успешно извлек заголовок из HTTP - сервера, работающего на порту 80 192.168.1.1. Аргумент http.useragent был использован для установки строки User-Agent в "Test" в HTTP - запросе. Сервер может записать эту строку User-Agent, что может быть полезно для идентификации сканирования. Если у целевого объекта не открыт порт 80, вы увидите другой вывод.

Обновление сценариев с помощью nmap --script-updatedb

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

Во - первых, убедитесь, что вы находитесь в директории ~/project:

cd ~/project

Теперь давайте используем команду nmap с параметром --script-updatedb, чтобы обновить базу данных сценариев.

sudo nmap --script-updatedb

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

Вывод может выглядеть примерно так:

Starting Nmap 7.80 ( https://nmap.org ) at ...
NSE: Updating rule database.
NSE: Using nmap.org/svn/nse_svn to download the latest scripts.
Downloaded nmap-mac-prefixes.lua
Downloaded nselib/data/nmap-services.
Downloaded nselib/data/service-ports.
Downloaded scripts/script.db
NSE: Script database updated.
Nmap done: 0 IP addresses (0 hosts up) scanned in ... seconds

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

Тестирование нескольких сценариев с помощью nmap --script banner,http-title 127.0.0.1

В этом шаге мы будем запускать несколько сценариев Nmap одновременно. Это позволяет собрать больше информации о цели за один скан. Мы будем использовать сценарии banner и http-title для цели 127.0.0.1.

Во - первых, перейдем в нашу рабочую директорию:

cd ~/project

Теперь запустим Nmap с параметром --script, указав оба сценария banner и http-title, разделенных запятой. Мы будем использовать целевой IP - адрес 127.0.0.1, который ссылается на локальную машину.

sudo nmap --script banner,http-title 127.0.0.1

Эта команда сообщает Nmap запустить оба сценария banner и http-title по любым открытым портам на 127.0.0.1. Сценарий banner пытается извлечь баннеры сервисов, в то время как сценарий http-title извлекает заголовок из любых HTTP - серверов.

Вывод может выглядеть примерно так (точный вывод зависит от запущенных на 127.0.0.1 служб):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000018s latency).
Loopback interface ignored
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu)
| banner: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
|_ssh-hostkey:
80/tcp open  http    nginx 1.18.0
|_http-title: Welcome to nginx!

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

В этом примере сценарий banner извлек баннер SSH с порта 22, а сценарий http-title извлек заголовок из HTTP - сервера, работающего на порту 80. Если у цели не открытые эти порты, вы увидите другой вывод.

Просмотр вывода сценария в терминале Xfce

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

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

Давайте вспомним команду из предыдущего шага:

sudo nmap --script banner,http-title 127.0.0.1

Когда вы выполняете эту команду, вывод выводится непосредственно в терминал Xfce. Вы можете прокручивать вывод терминала, чтобы просмотреть результаты сценариев banner и http-title.

Например, вывод может включать:

  • Информацию о баннерах: Сценарий banner пытается извлечь баннеры сервисов с открытых портов. Это может показать версию программного обеспечения, работающего на определенном порту.
  • Заголовок HTTP: Сценарий http-title извлекает заголовок веб - страницы, предоставляемой HTTP - сервером.

Основное - тщательно изучить вывод на предмет полезной информации. Терминал Xfce предоставляет простой и прямой способ просмотра этой информации. Также вы можете использовать стандартные инструменты Linux, такие как grep, для фильтрации вывода, если необходимо. Например, чтобы найти только строки, содержащие "http-title", вы можете перенаправить вывод команды nmap в grep:

sudo nmap --script banner,http-title 127.0.0.1 | grep "http-title"

Эта команда выполнит тот же скан Nmap, что и раньше, но будет отображать только строки в выводе, содержащие строку "http-title". Это может быть полезно для сосредоточения на конкретных частях вывода.

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

Резюме

В этом лабаратории участники научились использовать Nmap Scripting Engine с помощью различных команд. Они начали с запуска стандартных сценариев с использованием nmap -sC для целевого IP - адреса, что включает в себя безопасные и полезные сценарии для общего сканирования. Они также научились использовать конкретный сценарий с помощью nmap --script, добавлять аргументы к сценариям с помощью --script-args, обновлять сценарии с помощью --script-updatedb и тестировать несколько сценариев сразу. Наконец, они просматривали вывод сценариев в терминале Xfce.