Выполнение расширенного обнаружения хостов в Nmap

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

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

Введение

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

Во время выполнения лабы вы будете выполнять команды, такие как nmap -PS22,80 192.168.1.1 для выполнения TCP-пинг-сканирования, nmap -PU53 192.168.1.1 для UDP-пинга и nmap -Pn -oN hosts.txt 192.168.1.1 для сохранения результатов. Эти практические упражнения повысят ваше понимание возможностей поиска хостов в Nmap.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/tcp_connect_scan("Basic TCP Connect Scan") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/udp_scanning("UDP Scanning Techniques") subgraph Lab Skills nmap/tcp_connect_scan -.-> lab-547102{{"Выполнение расширенного обнаружения хостов в Nmap"}} nmap/save_output -.-> lab-547102{{"Выполнение расширенного обнаружения хостов в Nmap"}} nmap/port_scanning -.-> lab-547102{{"Выполнение расширенного обнаружения хостов в Nmap"}} nmap/host_discovery -.-> lab-547102{{"Выполнение расширенного обнаружения хостов в Nmap"}} nmap/target_specification -.-> lab-547102{{"Выполнение расширенного обнаружения хостов в Nmap"}} nmap/udp_scanning -.-> lab-547102{{"Выполнение расширенного обнаружения хостов в Nmap"}} end

Использование TCP-пинга на портах с помощью nmap -PS22,80 192.168.1.1

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

Прежде чем мы начнем, разясним, что такое TCP-пинг. В отличие от традиционного ICMP-пинга, TCP-пинг отправляет TCP SYN-пакет на указанный порт целевого хоста. Если порт открыт, целевой хост ответит SYN/ACK-пакетом. Если порт закрыт, целевой хост ответит RST-пакетом. Nmap использует это поведение для определения, онлайн ли хост, и открыт или закрыт ли порт.

В Nmap опция -PS используется для выполнения TCP SYN-пинг-сканирования. Вы можете указать один или несколько портов для сканирования, используя список, разделенный запятыми.

Попробуем пример. Мы будем использовать Nmap для выполнения TCP-пинг-сканирования на портах 22 и 80 хоста 192.168.1.1.

Откройте терминал в виртуальной машине LabEx. Помните, что ваша домашняя директория — ~/project. Выполните следующую команду:

nmap -PS22,80 192.168.1.1

Эта команда сообщает Nmap отправить TCP SYN-пакеты на порты 22 и 80 хоста 192.168.1.1.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0013s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.05s

В этом примере Nmap сообщает, что хост 192.168.1.1 онлайн и что порты 22 (SSH) и 80 (HTTP) открыты. Если порт был бы закрыт, вывод показал бы "closed" вместо "open". Если хост был бы отключен, Nmap сообщил бы "Host is down".

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

nmap -PS22,80 192.168.1.2

Если 192.168.1.2 недоступен, вы можете увидеть:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.2
Host is down (no responses received).

Nmap done: 1 IP address (0 hosts up) scanned in 5.03s

Это означает, что Nmap не получил никакого ответа от целевого хоста, что может означать, что он отключен или недоступен из-за сетевых проблем или правил防火 walls.

Выполнение UDP-пинга с помощью nmap -PU53 192.168.1.1

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

Прежде чем мы начнем, давайте разберем, что такое UDP-пинг. В отличие от TCP-пинга, который отправляет TCP SYN-пакет, UDP-пинг отправляет UDP-пакет на указанный порт целевого хоста. Если порт открыт, целевой хост может вовсе не ответить (так как многие UDP-службы не отправляют ответы, если не поступает конкретный запрос). Если порт закрыт, целевой хост обычно ответит ICMP-ошибкой "порт недоступен". Nmap использует наличие или отсутствие ответа (или тип ответа) для определения, онлайн ли хост.

В Nmap опция -PU используется для выполнения UDP-пинг-сканирования. Вы должны указать порт для сканирования. Часто используемым портом для UDP-пинга является порт 53 (DNS), так как DNS-серверы часто доступны.

Попробуем пример. Мы будем использовать Nmap для выполнения UDP-пинг-сканирования на порту 53 хоста 192.168.1.1.

Откройте терминал в виртуальной машине LabEx. Помните, что ваша домашняя директория — ~/project. Выполните следующую команду:

nmap -PU53 192.168.1.1

Эта команда сообщает Nmap отправить UDP-пакет на порт 53 хоста 192.168.1.1.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0020s latency).
PORT   STATE         SERVICE
53/udp open|filtered domain

Nmap done: 1 IP address (1 host up) scanned in 2.03s

В этом примере Nmap сообщает, что хост 192.168.1.1 онлайн. Состояние порта 53 показано как open|filtered. Это означает, что Nmap либо получил ответ от порта (что указывает на то, что он открыт), либо не получил ответ, но не мог определить с уверенностью, закрыт ли порт (что указывает на то, что он фильтруется, возможно,防火 wallом).

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

nmap -PU53 192.168.1.2

Если 192.168.1.2 недоступен, вы можете увидеть:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.2
Host is down (no responses received).

Nmap done: 1 IP address (0 hosts up) scanned in 5.03s

Это означает, что Nmap не получил никакого ответа от целевого хоста, что может означать, что он отключен или недоступен.

Пропуск пинга с помощью nmap -Pn 127.0.0.1

В этом шаге вы научитесь использовать опцию -Pn в Nmap для пропуска пинга обнаружения хоста. Это полезно, когда вы хотите сканировать хост, не предварительно проверяя, онлайн ли он. Это может быть полезно в ситуациях, когда пинг блокируется防火 wallом, или когда вы хотите节省时间,предполагая, что хост онлайн.

обычно Nmap выполняет фазу обнаружения хоста перед сканированием портов. Это включает отправку различных типов зондов (ICMP, TCP SYN и т.д.) для определения, онлайн ли целевой хост. Если Nmap определяет, что хост отключен, он пропустит фазу сканирования портов.

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

Попробуем пример. Мы будем использовать Nmap с опцией -Pn для сканирования адреса локального хоста 127.0.0.1.

Откройте терминал в виртуальной машине LabEx. Помните, что ваша домашняя директория — ~/project. Выполните следующую команду:

nmap -Pn 127.0.0.1

Эта команда сообщает 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).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
3306/tcp open  mysql

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

В этом примере Nmap сообщает, что хост 127.0.0.1 онлайн и показывает открытые порты. Даже если ICMP-пинг был заблокирован на системе, Nmap по-прежнему будет сканировать порты из-за опции -Pn.

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

Объединение техник с помощью nmap -PS22 -PU53 192.168.1.0/24

В этом шаге вы научитесь объединять TCP- и UDP-пинг-техники в Nmap для обнаружения активных хостов в сети. Объединение техник может повысить надежность обнаружения хостов, особенно при работе с防火 wallами или другими сетевыми мерами безопасности.

Как вы узнали в предыдущих шагах, -PS используется для TCP SYN-пинга, а -PU используется для UDP-пинга. Объединяя эти техники, вы можете отправлять как TCP SYN-пакеты на определенный порт, так и UDP-пакеты на другой порт. Если какой-либо из этих зондов получает ответ, Nmap будет считать, что хост онлайн.

В этом примере мы будем использовать Nmap для отправки TCP SYN-пакета на порт 22 (SSH) и UDP-пакета на порт 53 (DNS) по всей сети 192.168.1.0/24.

Откройте терминал в виртуальной машине LabEx. Помните, что ваша домашняя директория — ~/project. Выполните следующую команду:

nmap -PS22 -PU53 192.168.1.0/24

Эта команда сообщает Nmap выполнить следующие действия:

  • -PS22: Отправить TCP SYN-пакет на порт 22 каждого хоста в целевой сети.
  • -PU53: Отправить UDP-пакет на порт 53 каждого хоста в целевой сети.
  • 192.168.1.0/24: Сканировать всю сеть 192.168.1.0/24. Это запись в формате CIDR, которая задает диапазон IP-адресов от 192.168.1.0 до 192.168.1.255.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0016s latency).
Nmap scan report for 192.168.1.10
Host is up (0.0020s latency).
Nmap scan report for 192.168.1.20
Host is up (0.0025s latency).
...
Nmap done: 256 IP addresses (3 hosts up) scanned in 5.03 seconds

В этом примере Nmap сообщает, что хосты 192.168.1.1, 192.168.1.10 и 192.168.1.20 онлайн. Nmap определил это, получив ответ на либо TCP SYN-пакет, отправленный на порт 22, либо UDP-пакет, отправленный на порт 53.

Объединение таких техник может быть более эффективным, чем использование только одной техники, так как увеличивает шансы обойти防火 walls или другие меры безопасности, которые могут блокировать один тип зондов, но не другой.

Сохранение результатов обнаружения с помощью nmap -Pn -oN hosts.txt 192.168.1.1

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

Опция -oN сообщает Nmap сохранить результаты сканирования в "обычном" формате в указанный файл. Обычный формат - это человекочитаемый формат, который легко разбирается.

В этом примере мы будем использовать Nmap для сканирования хоста 192.168.1.1, пропустить пинг обнаружения хоста (-Pn) и сохранить результаты в файл с именем hosts.txt в вашей директории ~/project.

Откройте терминал в виртуальной машине LabEx. Помните, что ваша домашняя директория - ~/project. Выполните следующую команду:

nmap -Pn -oN hosts.txt 192.168.1.1

Эта команда сообщает Nmap выполнить следующие действия:

  • -Pn: Пропустить пинг обнаружения хоста.
  • -oN hosts.txt: Сохранить результаты сканирования в обычном формате в файл hosts.txt.
  • 192.168.1.1: Сканировать хост 192.168.1.1.

После завершения сканирования вы можете просмотреть содержимое файла hosts.txt с помощью команды cat:

cat hosts.txt

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

## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023 as: nmap -Pn -oN hosts.txt 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.000073s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https

## Nmap done at Tue Oct 27 10:00:05 2023 -- 1 IP address (1 host up) scanned in 5.03 seconds

Теперь файл hosts.txt содержит результаты сканирования Nmap в человекочитаемом формате. Вы можете использовать этот файл для документирования, отчетов или дальнейшего анализа.

Анализ активных хостов в терминале Xfce

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

Сначала давайте рассмотрим содержимое файла hosts.txt. Откройте терминал в виртуальной машине LabEx. Помните, что ваша домашняя директория — ~/project. Выполните следующую команду:

cat hosts.txt

Вы должны увидеть результаты сканирования Nmap, включая статус хоста (в сети или нет) и открытые порты.

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

grep "Host is up" hosts.txt

Эта команда отфильтрует файл hosts.txt и выведет только те строки, которые содержат строку "Host is up". Вывод будет похож на этот:

Nmap scan report for 192.168.1.1
Host is up (0.000073s latency).

Это говорит вам, что хост 192.168.1.1 в сети.

Для извлечения IP-адреса активного хоста вы можете комбинировать grep с awk. awk — это мощный инструмент обработки текста, который можно использовать для извлечения конкретных полей из строки текста.

grep "Host is up" hosts.txt | awk '{print $5}'

Эта команда сначала фильтрует файл hosts.txt, чтобы найти строки, содержащие "Host is up", а затем использует awk для вывода пятого поля ($5) каждой соответствующей строки, которое является IP-адресом. Вывод будет таким:

192.168.1.1

Для поиска открытых портов для определенного хоста вы можете использовать grep для фильтрации файла hosts.txt по строкам, содержащим номер порта. Например, чтобы найти открытые порты для 192.168.1.1, вы можете использовать следующую команду:

grep "192.168.1.1" hosts.txt

Это покажет все строки в файле hosts.txt, которые содержат 192.168.1.1, включая строки, в которых перечислены открытые порты.

Комбинируя эти базовые команды Linux, вы можете быстро анализировать результаты сканирования Nmap непосредственно в терминале Xfce и извлечь необходимую информацию.

Резюме

В этом лабаратории участники учатся выполнять продвинутое обнаружение хостов с использованием Nmap. Они начинают с использования TCP-пинга на конкретных портах с помощью опции -PS, например, nmap -PS22,80 192.168.1.1, чтобы проверить, онлайн ли хост и запущены ли конкретные службы. Они также выполняют UDP-пинг с -PU, пропускают пинг с -Pn и комбинируют техники для более широких сканирований. Кроме того, они учатся сохранять результаты обнаружения в файл и анализировать активные хосты в терминале Xfce.