Как использовать флаги сканирования Nmap

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

Введение

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

Установка Nmap и базовое сканирование

Установка Nmap

Nmap не предустановлен в большинстве систем, поэтому первым шагом будет его установка. Откройте терминал в вашей среде LabEx и выполните следующие команды:

sudo apt update
sudo apt install nmap -y

После завершения установки убедитесь, что Nmap установлен правильно, проверив его версию:

nmap --version

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

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Основы работы с Nmap

Nmap работает путем отправки специально сформированных пакетов целевым хостам и анализа ответов. Это помогает определить:

  • Какие хосты доступны в сети
  • Какие службы (порты) они предлагают
  • Какие операционные системы они используют
  • Какие типы фильтров пакетов/firewall (брандмауэров) используются

Базовый синтаксис команды Nmap:

nmap [тип сканирования] [опции] target

Где:

  • [тип сканирования] указывает тип сканирования для выполнения
  • [опции] – дополнительные параметры для настройки сканирования
  • target – IP-адрес, имя хоста или диапазон IP-адресов для сканирования

Ваше первое сканирование: сканирование localhost

Давайте начнем с простого сканирования вашей собственной машины (localhost). Выполните:

nmap localhost

Эта команда сканирует наиболее распространенные 1000 TCP-портов на вашей локальной машине. Вывод будет выглядеть примерно так:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Вывод показывает:

  • Время начала сканирования
  • Сканируемый хост (localhost/127.0.0.1)
  • Открытые порты и связанные с ними службы
  • Время завершения сканирования и статистику

Анализ результатов сканирования

Давайте проанализируем вывод:

  • PORT: показывает номер порта и протокол (например, 22/tcp)
  • STATE: указывает, открыт, закрыт или отфильтрован порт
  • SERVICE: показывает службу, обычно связанную с этим портом

Наиболее распространенные состояния портов:

  • open: порт принимает соединения
  • closed: порт доступен, но на нем не прослушивается приложение
  • filtered: Nmap не может определить, открыт ли порт, потому что фильтрация пакетов блокирует его зонды

Сканирование определенного порта

Чтобы отсканировать определенный порт, используйте флаг -p, за которым следует номер порта:

nmap -p 22 localhost

Вывод будет сосредоточен только на порте 22:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh

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

Сканирование диапазона портов

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

nmap -p 20-25 localhost

Это сканирует порты с 20 по 25:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE  SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open   ssh
23/tcp closed telnet
24/tcp closed priv-mail
25/tcp closed smtp

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

Теперь вы узнали, как установить Nmap и выполнить базовое сканирование портов. На следующем шаге мы рассмотрим более продвинутые методы сканирования, используя различные флаги Nmap.

Изучение основных флагов сканирования Nmap

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

TCP SYN Scan (-sS)

TCP SYN scan – это тип сканирования по умолчанию при запуске от имени root. Его часто называют «полуоткрытым» сканированием, потому что оно никогда не завершает TCP-соединения. Он относительно скрытный и быстрый.

Давайте запустим SYN scan на localhost:

sudo nmap -sS localhost

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

TCP Connect Scan (-sT)

TCP Connect scan – это сканирование по умолчанию, когда Nmap не запускается с правами root. Он завершает полное TCP-рукопожатие, что делает его более обнаруживаемым, но в некоторых случаях и более надежным.

nmap -sT localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Обнаружение версии службы (-sV)

Флаг обнаружения версии сообщает Nmap попытаться определить версию служб, работающих на открытых портах:

nmap -sV localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

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

Обнаружение ОС (-O)

Флаг обнаружения ОС пытается определить операционную систему цели:

sudo nmap -O localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

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

Обратите внимание, что Nmap обнаружил, что система работает под управлением ядра Linux версии 4.X или 5.X.

Объединение флагов для комплексного сканирования

Вы можете объединить несколько флагов, чтобы получить более полные результаты. Например, давайте объединим обнаружение версии службы и обнаружение ОС:

sudo nmap -sV -O localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Агрессивное сканирование (-A)

Флаг агрессивного сканирования объединяет несколько параметров сканирования, включая обнаружение ОС, обнаружение версии, сканирование скриптов и трассировку маршрута:

sudo nmap -A localhost

Вывод (усечен для краткости):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp      CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 11
|   Capabilities flags: 65535
|   Some Capabilities: SupportsLoadDataLocal, Support41Auth, Speaks41ProtocolOld, IgnoreSigpipes, DontAllowDatabaseTableColumn, FoundRows, SupportsCompression, ConnectWithDatabase, LongPassword, InteractiveClient, SwitchToSSLAfterHandshake, ODBCClient, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, LongColumnFlag, SupportsTransactions, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: \x14\x12\x1Fjw\x182\x15\x0D\x12\x13C\x1F\x14\x0D\x07
|_  Auth Plugin Name: caching_sha2_password
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

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

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

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

Стратегии сканирования сети и управление временем

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

Сканирование нескольких хостов

Nmap может сканировать несколько хостов различными способами:

Сканирование списка IP-адресов

Вы можете указать несколько IP-адресов, разделенных пробелами:

nmap 127.0.0.1 127.0.0.2

Сканирование диапазона IP-адресов

Вы можете сканировать диапазон IP-адресов, используя нотацию CIDR:

nmap 127.0.0.1/30

Эта команда сканирует с 127.0.0.0 по 127.0.0.3. Вывод покажет:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

Nmap scan report for 127.0.0.2
Host is up (0.00015s latency).
All 1000 scanned ports on 127.0.0.2 are closed

Nmap scan report for 127.0.0.3
Host is up (0.00013s latency).
All 1000 scanned ports on 127.0.0.3 are closed

Nmap done: 4 IP addresses (3 hosts up) scanned in 0.92 seconds

Параметры обнаружения хостов

Ping Scan (-sn)

Иногда вам просто нужно знать, какие хосты находятся в сети, не сканируя порты. Ping scan идеально подходит для этого:

nmap -sn 127.0.0.1/24

Эта команда отсканирует всю подсеть 127.0.0.1/24, но выполнит только обнаружение хостов без сканирования портов. Из-за длины вывода мы покажем только фрагмент:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Nmap scan report for 127.0.0.2
Host is up (0.00013s latency).
Nmap scan report for 127.0.0.3
Host is up (0.00014s latency).
...
Nmap done: 256 IP addresses (256 hosts up) scanned in 2.34 seconds

Пропуск обнаружения хостов (-Pn)

Иногда брандмауэры блокируют ping-запросы. Чтобы обойти это и сканировать все хосты независимо от ответов на ping, используйте флаг -Pn:

nmap -Pn localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:45 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Управление временем и производительностью

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

  • -T0: Paranoid (Параноидальный) - Очень медленный, используется для уклонения от IDS (систем обнаружения вторжений)
  • -T1: Sneaky (Скрытный) - Медленный, используется для уклонения от IDS
  • -T2: Polite (Вежливый) - Замедляется, чтобы потреблять меньше полосы пропускания
  • -T3: Normal (Нормальный) - По умолчанию, балансирует скорость и надежность
  • -T4: Aggressive (Агрессивный) - Быстрее, предполагает достаточно быструю и надежную сеть
  • -T5: Insane (Безумный) - Очень быстрый, предполагает чрезвычайно быструю сеть

Давайте попробуем агрессивное сканирование:

nmap -T4 localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Обратите внимание, что сканирование завершилось немного быстрее, чем сканирование по умолчанию.

Форматы вывода

Nmap может сохранять результаты сканирования в различных форматах для последующего анализа или отчетности:

Нормальный вывод (-oN)

Сохраните результаты сканирования в обычном формате в файл:

nmap -oN scan_results.txt localhost

Эта команда сохраняет вывод сканирования в scan_results.txt в текущем каталоге.

XML вывод (-oX)

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

nmap -oX scan_results.xml localhost

Все форматы (-oA)

Сохраните результаты сканирования во всех форматах (обычный, XML и grepable):

nmap -oA scan_results localhost

Это создает три файла: scan_results.nmap, scan_results.xml и scan_results.gnmap.

Давайте рассмотрим содержимое файла нормального вывода:

cat scan_results.txt

Вывод:

## Nmap 7.80 scan initiated Thu Sep 14 16:55:23 2023 as: nmap -oN scan_results.txt localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

## Nmap done at Thu Sep 14 16:55:23 2023 -- 1 IP address (1 host up) scanned in 0.12 seconds

Практическая стратегия сканирования

Давайте объединим то, что мы узнали, чтобы создать практическую стратегию сканирования для комплексного сканирования:

sudo nmap -sS -sV -O -T4 -oA comprehensive_scan localhost

Эта команда:

  • Использует SYN stealth scan (-sS)
  • Обнаруживает версии служб (-sV)
  • Пытается обнаружить ОС (-O)
  • Использует агрессивное время (-T4)
  • Сохраняет результаты во всех форматах (-oA)

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Теперь вы можете просмотреть результаты комплексного сканирования в любом из выходных файлов:

ls comprehensive_scan.*

Вывод:

comprehensive_scan.gnmap  comprehensive_scan.nmap  comprehensive_scan.xml

Этические соображения

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

  1. Незаконным во многих юрисдикциях
  2. Рассматриваться как враждебное действие сетевыми администраторами
  3. Потенциально разрушительным для сетевых служб

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

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

Сканирование скриптами и анализ целевых служб

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

Введение в Nmap Scripting Engine (NSE)

Nmap Scripting Engine позволяет пользователям писать и обмениваться скриптами для автоматизации различных сетевых задач. Nmap поставляется с сотнями предварительно написанных скриптов, сгруппированных в различные категории:

  • auth: Скрипты, связанные с аутентификацией
  • default: Скрипты, запускаемые по умолчанию с -sC
  • discovery: Обнаружение хостов и служб
  • exploit: Попытка использовать уязвимости
  • malware: Обнаружение вредоносных программ и бэкдоров
  • safe: Безопасные, неинтрузивные скрипты
  • vuln: Скрипты обнаружения уязвимостей

Запуск скриптов по умолчанию (-sC)

Флаг -sC запускает набор скриптов по умолчанию, которые, как правило, безопасны и предоставляют полезную информацию:

nmap -sC localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)

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

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

Запуск конкретных скриптов

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

nmap --script=http-title localhost

Это запускает только скрипт http-title, который извлекает заголовок страниц HTTP:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql

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

Запуск скриптов по категориям

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

nmap --script=discovery localhost

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
| cups-info:
|   CUPS Server:
|     Server: CUPS/2.3 IPP/2.1
|_    Authentication-Method: Basic
| http-methods:
|_  Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 15
|   Capabilities flags: 65535
|   Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_  Auth Plugin Name: caching_sha2_password

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

Объединение сканирования скриптами с обнаружением служб

Для получения наиболее полных результатов объедините сканирование скриптами с обнаружением служб:

nmap -sV -sC localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp     CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql   MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Целевой анализ служб

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

Анализ служб HTTP

Чтобы подробно проанализировать службы HTTP, мы можем использовать скрипты http-*:

nmap --script="http-*" -p 80 localhost

Это запускает все скрипты, связанные с HTTP, для порта 80:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
|   Apache/2.4.41
|_  Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.

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

Анализ служб SSH

Аналогичным образом мы можем анализировать службы SSH:

nmap --script="ssh-*" -p 22 localhost

Вывод:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)

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

Сканирование уязвимостей

Nmap включает скрипты, которые могут обнаруживать потенциальные уязвимости. Использование категории vuln может помочь выявить проблемы безопасности:

nmap --script=vuln localhost

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp  open  ipp
3306/tcp open  mysql

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

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

Создание комплексного отчета о сканировании

Теперь давайте объединим все, что мы узнали, чтобы создать комплексный отчет о безопасности:

sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost

Эта команда:

  • Использует SYN stealth scan (-sS)
  • Обнаруживает версии служб (-sV)
  • Пытается обнаружить ОС (-O)
  • Запускает скрипты по умолчанию (-sC)
  • Запускает скрипты обнаружения уязвимостей (--script=vuln)
  • Использует агрессивное время (-T4)
  • Сохраняет результаты во всех форматах (-oA)

Вывод будет исчерпывающим и может занять некоторое время. После завершения у вас будет подробный отчет о безопасности в различных форматах (обычный, XML и grepable), к которому вы можете обращаться для анализа безопасности.

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

Резюме

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

  1. Как установить Nmap и выполнять базовое сканирование хостов и портов
  2. Как использовать основные флаги сканирования Nmap для различных типов сканирования
  3. Как реализовать эффективные стратегии сканирования и управлять параметрами времени
  4. Как использовать Nmap Scripting Engine для детального анализа служб и обнаружения уязвимостей

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

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