Обнаружение служб и версий в Nmap

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

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

Введение

В этом лабе вы научитесь определять сервисы и их версии с использованием Nmap. В лабе рассматриваются базовая детекция сервисов на локальном компьютере, настройка интенсивности сканирования, детекция сервисов на конкретных портах, полная детекция, анализ вывода в терминале Xfce и сохранение результатов в текстовый файл. Вы выполните команды, такие как nmap -sV 127.0.0.1 и nmap -sV -oN services.txt 192.168.1.1, чтобы получить практический опыт в определении версий сервисов с помощью Nmap.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/timing_performance("Timing and Performance") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/output_formats -.-> lab-530177{{"Обнаружение служб и версий в Nmap"}} nmap/save_output -.-> lab-530177{{"Обнаружение служб и версий в Nmap"}} nmap/target_specification -.-> lab-530177{{"Обнаружение служб и версий в Nmap"}} nmap/timing_performance -.-> lab-530177{{"Обнаружение служб и версий в Nmap"}} nmap/os_version_detection -.-> lab-530177{{"Обнаружение служб и версий в Nmap"}} nmap/service_detection -.-> lab-530177{{"Обнаружение служб и версий в Nmap"}} end

Запуск обнаружения сервисов с помощью nmap -sV 127.0.0.1

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

Команда nmap -sV 127.0.0.1 instructs Nmap to perform service version detection (-sV) on the localhost (127.0.0.1). The localhost is your own machine.

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

  1. Откройте терминал Xfce.

  2. Введите следующую команду и нажмите Enter:

nmap -sV 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 VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
111/tcp  open  rpcbind 2-4 (RPC #100000)
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 5.28 seconds

Пояснение:

  • Starting Nmap...: Показывает версию Nmap, которая используется.
  • Nmap scan report for localhost (127.0.0.1): Показывает цель сканирования.
  • Host is up: Подтверждает, что цель доступна.
  • Not shown: 997 closed ports: Показывает, что 997 портов были закрыты и не отображены. Nmap по умолчанию показывает только открытые, отфильтрованные или неотфильтрованные порты.
  • PORT STATE SERVICE VERSION: Эта секция отображает открытые порты, их состояние (open), сервис, работающий на порту, и версию сервиса. Например, порт 22 открыт и работает OpenSSH версии 8.9p1. Порт 80 открыт и работает Apache httpd версии 2.4.52.
  • Service Info: Предоставляет дополнительную информацию о операционной системе.
  • Nmap done: Показывает, что сканирование завершено, и показывает время, затраченное на это.

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

Настройка интенсивности с помощью nmap -sV --version-intensity 7 192.168.1.1

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

Параметр --version-intensity принимает значения от 0 до 9, где 0 - это самый слабый уровень, а 9 - самый агрессивный. По умолчанию интенсивность составляет 7.

Важно: Перед началом请注意,что сканирование 192.168.1.1 может не работать напрямую в среде виртуальной машины LabEx, так как это, скорее всего, внутренний адрес сети. Для демонстрационных целей мы будем использовать 127.0.0.1 (локальный хост) вместо этого. В реальных условиях вы должны заменить это фактическим адресом целевого узла.

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

  1. Откройте терминал Xfce.

  2. Введите следующую команду и нажмите Enter:

nmap -sV --version-intensity 7 127.0.0.1

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
111/tcp  open  rpcbind 2-4 (RPC #100000)
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 5.28 seconds

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

nmap -sV --version-intensity 2 127.0.0.1

Обратите внимание на вывод. Возможно, вы заметите, что сканирование завершается быстрее, но информация о версиях может быть менее детальной или точной.

Пояснение:

  • nmap -sV --version-intensity 7 127.0.0.1: Выполняет определение версий сервисов с уровнем интенсивности 7 на локальном хосте.
  • nmap -sV --version-intensity 2 127.0.0.1: Выполняет определение версий сервисов с уровнем интенсивности 2 на локальном хосте.

通过调整--version-intensity参数,您可以在扫描速度和准确性之间进行微调。在时间紧迫的情况下,较低的强度级别可能更合适。对于更全面的评估,建议使用较高的强度级别。

Определение сервисов на конкретных портах с помощью nmap -sV -p 80 192.168.1.1

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

Параметр -p в Nmap позволяет вам указать порт(ы), который(ые) вы хотите сканировать. В данном случае мы будем сканировать порт 80, который обычно используется для HTTP (веб-)сервисов.

Важно: Как и в предыдущем шаге, сканирование 192.168.1.1 может не работать напрямую в среде виртуальной машины LabEx. Мы будем использовать 127.0.0.1 (локальный хост) вместо этого. Не забудьте заменить это фактическим адресом целевого узла в реальных условиях.

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

  1. Откройте терминал Xfce.

  2. Введите следующую команду и нажмите Enter:

nmap -sV -p 80 127.0.0.1

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))

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

Пояснение:

  • nmap -sV -p 80 127.0.0.1: Выполняет определение версий сервисов (-sV) на порту 80 (-p 80) локального хоста (127.0.0.1).
  • Вывод показывает, что порт 80 открыт и работает Apache httpd версии 2.4.52.
  • Обратите внимание, что время сканирования значительно короче, чем в предыдущих сканированиях, так как мы сканируем только один порт.

Вы также можете указать диапазон портов с использованием параметра -p. Например, чтобы сканировать порты 80, 443 и 8080, вы бы использовали следующую команду:

nmap -sV -p 80,443,8080 127.0.0.1

Это позволяет вам сосредоточиться на нескольких конкретных портах в одном сканировании.

Использование полного обнаружения с помощью nmap -sV --version-all 127.0.0.1

В этом шаге мы будем использовать параметр --version-all в Nmap для выполнения наиболее полного обнаружения версий сервисов. Этот параметр instructs Nmap to try every single version detection probe against each open port. It's the most aggressive setting and can provide the most accurate results, but it also takes the longest time to complete.

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

  1. Откройте терминал Xfce.

  2. Введите следующую команду и нажмите Enter:

nmap -sV --version-all 127.0.0.1

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
111/tcp  open  rpcbind 2-4 (RPC #100000)
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 10.52 seconds

Пояснение:

  • nmap -sV --version-all 127.0.0.1: Выполняет обнаружение версий сервисов (-sV) с параметром --version-all на локальном хосте (127.0.0.1).
  • Вывод показывает открытые порты и определенные версии сервисов.
  • Обратите внимание, что время сканирования длиннее, чем в предыдущих сканированиях, так как Nmap пытается использовать каждый возможный метод исследования.

Важные аспекты:

  • Использование --version-all может значительно увеличить время сканирования.
  • В некоторых случаях он может не дать значительно более точных результатов, чем стандартный уровень интенсивности.
  • Будьте осторожны с потенциальным воздействием на целевую систему, так как такое агрессивное сканирование может сгенерировать больше трафика.

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

Анализ вывода в терминале Xfce

В этом шаге мы узнаем, как анализировать вывод сканирования Nmap непосредственно в терминале Xfce. Разумение вывода является至关重要 для идентификации потенциальных уязвимостей и получения представления о целевой системе.

Предположим, что вы уже выполнили одну из предыдущих команд Nmap, например:

nmap -sV 127.0.0.1

Вывод будет отображаться непосредственно в терминале. Рассмотрим основные элементы вывода:

  • Starting Nmap...: Эта строка указывает версию Nmap и время начала сканирования.
  • Nmap scan report for...: Эта строка показывает целевой IP-адрес или имя хоста.
  • Host is up...: Это указывает, доступен ли целевой хост.
  • PORT STATE SERVICE VERSION: Это основная таблица, содержащая результаты сканирования.
    • PORT: Номер порта.
    • STATE: Состояние порта (например, open, closed, filtered).
    • SERVICE: Обнаруженный на порту запущенный сервис (например, http, ssh, smtp).
    • VERSION: Версия обнаруженного сервиса (например, Apache httpd 2.4.52, OpenSSH 8.9p1).
  • Service detection performed...: Эта строка указывает, что было выполнено обнаружение версии сервиса.
  • Nmap done...: Эта строка показывает длительность сканирования и количество сканированных хостов.

Анализ вывода:

  1. Открытые порты: Идентифицируйте открытые порты. Это те порты, которые активно слушают подключения и являются потенциальными точками входа для атакующих.
  2. Сервисы: Определите сервисы, запущенные на открытых портах. Знание сервисов позволяет вам исследовать потенциальные уязвимости, связанные с этими сервисами.
  3. Версии: Идентифицируйте версии сервисов. Старее версии программного обеспечения часто имеют известные уязвимости, которые могут быть эксплуатированы.

Пример:

Если вывод показывает, что порт 22 открыт и работает OpenSSH 7.6p1, вы можете исследовать известные уязвимости для этой конкретной версии OpenSSH.

Использование grep для фильтрации вывода:

Вы можете использовать команду grep для фильтрации вывода Nmap и сосредоточения на конкретной информации. Например, чтобы найти все строки, содержащие слово "open", вы можете перенаправить вывод Nmap в grep:

Во - первых, запустите команду nmap снова:

nmap -sV 127.0.0.1

Затем перенаправьте вывод в grep. Поскольку вывод предыдущей команды уже находится в терминале, мы не можем напрямую перенаправить его. Однако мы можем использовать grep для поиска вывода команды в истории терминала.

history | grep "nmap -sV 127.0.0.1" | tail -n 1 | xargs -L 1 bash -c 'eval $(echo $1 | sed "s/^[ ]*[0-9]*[ ]*//")'

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

Теперь давайте используем grep для фильтрации вывода. Поскольку мы не можем напрямую перенаправить вывод из предыдущей команды, нам нужно снова запустить команду nmap и перенаправить ее вывод в grep.

nmap -sV 127.0.0.1 | grep "open"

Это будет отображать только строки, содержащие слово "open", что делает更容易 идентифицировать открытые порты.

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

Сохранение результатов с помощью nmap -sV -oN services.txt 192.168.1.1

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

  1. Откройте терминал Xfce.

  2. Введите следующую команду и нажмите Enter:

nmap -sV -oN services.txt 192.168.1.1

Эта команда выполняет сканирование обнаружения версии сервиса (-sV) на целевом IP-адресе 192.168.1.1 и сохраняет вывод в "обычном" формате (-oN) в файл с именем services.txt в вашей текущей директории (~/project).

Пояснение:

  • nmap -sV: Выполняет обнаружение версии сервиса.
  • -oN services.txt: Указывает, что вывод должен быть сохранен в "обычном" формате в файл с именем services.txt.
  • 192.168.1.1: Целевой IP-адрес. Примечание: Если у вас нет хоста по адресу 192.168.1.1, вы можете использовать 127.0.0.1 вместо него.

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

cat services.txt

Это отобразит результаты сканирования Nmap в терминале.

Альтернативно вы можете открыть файл services.txt с помощью текстового редактора, такого как nano:

nano services.txt

Это позволяет вам просматривать результаты более структурированным способом.

Разумение формата вывода:

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

Другие форматы вывода:

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

  • -oX: Формат вывода XML, подходит для разбора другими инструментами.
  • -oS: Формат вывода для Script Kiddie (для развлечения).
  • -oG: Формат вывода, подходящий для grep и других командной строковых инструментов.

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

Резюме

В этом практическом занятии участники получают знания о использовании Nmap для обнаружения сервисов и версий. Они начинают с базового сканирования обнаружения сервисов на локальном компьютере с использованием команды nmap -sV 127.0.0.1. Также они узнают, как настраивать интенсивность сканирования, определять сервисы на конкретных портах и выполнять полное обнаружение. Кроме того, они анализируют вывод в терминале Xfce и сохраняют результаты в текстовый файл с использованием параметра -oN.