Введение
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
Этические соображения
Помните, что сканирование сети следует выполнять только в сетях, которыми вы владеете или на которые у вас есть явное разрешение на сканирование. Несанкционированное сканирование может быть:
- Незаконным во многих юрисдикциях
- Рассматриваться как враждебное действие сетевыми администраторами
- Потенциально разрушительным для сетевых служб
В этой лабораторной среде мы отсканировали только localhost, что всегда допустимо, поскольку это ваша собственная система.
Теперь вы узнали о различных стратегиях сканирования сети, элементах управления временем и форматах вывода. У вас есть все базовые знания, необходимые для эффективного сетевого анализа с использованием Nmap.
Сканирование скриптами и анализ целевых служб
На этом шаге мы рассмотрим мощный механизм скриптов Nmap (NSE) и узнаем, как выполнять целевой анализ служб. Скрипты NSE расширяют функциональность Nmap, обеспечивая более детальное сканирование конкретных служб и уязвимостей.
Введение в Nmap Scripting Engine (NSE)
Nmap Scripting Engine позволяет пользователям писать и обмениваться скриптами для автоматизации различных сетевых задач. Nmap поставляется с сотнями предварительно написанных скриптов, сгруппированных в различные категории:
auth: Скрипты, связанные с аутентификациейdefault: Скрипты, запускаемые по умолчанию с-sCdiscovery: Обнаружение хостов и служб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 для сетевой разведки и оценки безопасности. Теперь вы понимаете:
- Как установить Nmap и выполнять базовое сканирование хостов и портов
- Как использовать основные флаги сканирования Nmap для различных типов сканирования
- Как реализовать эффективные стратегии сканирования и управлять параметрами времени
- Как использовать Nmap Scripting Engine для детального анализа служб и обнаружения уязвимостей
Эти навыки формируют основу для оценки безопасности сети и необходимы для специалистов по кибербезопасности. Помните, что всегда следует использовать эти методы ответственно и только в сетях, на сканирование которых у вас есть разрешение.
Продолжая свой путь в кибербезопасности, рассмотрите возможность изучения более продвинутых функций Nmap, таких как разработка пользовательских скриптов NSE, методы обхода брандмауэров и интеграция с другими инструментами безопасности. Регулярная практика с Nmap поможет вам стать более опытным в выявлении потенциальных проблем безопасности в сетевых средах.



