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

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

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

Введение

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

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


Skills Graph

Установка Nmap

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

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

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

    sudo apt update
  2. Теперь установите Nmap с помощью этой команды. Флаг -y автоматически подтверждает установку, экономя наше время:

    sudo apt install -y nmap
  3. После установки убедимся, что Nmap правильно установлен, проверив его версию. Это подтверждает, что у нас есть готовый к использованию инструмент:

    nmap --version

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

    Nmap version 7.92 ( https://nmap.org )
  4. Для более практической проверки мы выполним простое сканирование локального хоста (вашего собственного компьютера). Это поможет вам понять, как работает Nmap, прежде чем сканировать другие системы:

    nmap localhost

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

Загрузка Nmap Scripting Engine

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

Перед началом важно понимать, что эти скрипты уже установлены вместе с Nmap на вашей системе. Давайте начнем с того, чтобы узнать, какие скрипты доступны:

  1. Сначала мы выведем список всех установленных скриптов NSE. Эта команда покажет вам полный набор скриптов в вашей установке Nmap:

    ls /usr/share/nmap/scripts/
  2. Каждый скрипт имеет документацию, объясняющую, что он делает. Рассмотрим скрипт http-title в качестве примера — этот скрипт извлекает заголовок веб - страниц. Следующая команда показывает его назначение и использование:

    nmap --script-help http-title
  3. Теперь выполним наше первое реальное сканирование с использованием NSE. Эта команда сканирует ваш локальный компьютер (localhost) с двумя важными параметрами:

    • -sC: Запускает набор стандартных скриптов NSE (безопасных и полезных для большинства сканирований)
    • -sV: Пытается определить версии сервисов (что является важным для выявления устаревшего программного обеспечения)
    nmap -sC -sV localhost
  4. Чтобы использовать определенный скрипт, мы выполним сканирование scanme.nmap.org (тестового сайта, предоставленного Nmap) только с использованием скрипта http-title. Это демонстрирует, как сосредоточиться на определенной информации:

    nmap --script http-title scanme.nmap.org
  5. Наконец, вы можете комбинировать несколько скриптов для более комплексного сканирования. В этом примере запускаются скрипты http-title и http-headers для сканирования scanme.nmap.org:

    nmap --script "http-title and http-headers" scanme.nmap.org

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

Выполнение сканирования на уязвимости

На этом этапе вы узнаете, как использовать скриптовый движок Nmap для обнаружения уязвимостей безопасности. Сканирование на уязвимости помогает выявить слабые места в системах до того, как злоумышленники смогут их использовать. Мы будем использовать scanme.nmap.org в качестве цели — это безопасный сервер с преднамеренно созданными уязвимостями, поддерживаемый разработчиками Nmap для целей тестирования.

  1. Сначала исследуем доступные скрипты для обнаружения уязвимостей. В Nmap уже предустановлено сотни скриптов, которые находятся в директории /usr/share/nmap/scripts/. Команда grep помогает отфильтровать только те скрипты, которые связаны с уязвимостями:

    ls /usr/share/nmap/scripts/ | grep vuln
  2. Теперь выполним базовое сканирование на уязвимости. Флаг -sV включает определение версий сервисов, а флаг --script vuln загружает все скрипты для обнаружения уязвимостей. Это дает нам широкое представление о потенциальных проблемах:

    nmap -sV --script vuln scanme.nmap.org
  3. Для более нацеленного сканирования мы можем сосредоточиться на конкретных категориях уязвимостей. В этом примере проверяются только уязвимости, связанные с HTTP (часто встречающиеся в веб - серверах). Звездочка (*) действует как символ подстановки и включает все скрипты http - vuln:

    nmap -sV --script http-vuln-* scanme.nmap.org
  4. Комплексное сканирование проверяет все уязвимости, избегая инвазивных тестов (отмеченных как "безопасные"). Это занимает больше времени, но обеспечивает полные результаты без риска для стабильности системы:

    nmap -sV --script "vuln and safe" scanme.nmap.org
  5. Хорошей практикой является сохранение результатов сканирования для документации и дальнейшего анализа. Флаг -oN сохраняет вывод в обычном формате в текстовый файл. Мы будем использовать эти результаты на последующих этапах:

    nmap -sV --script vuln -oN vuln_scan_results.txt scanme.nmap.org

Результаты сканирования будут отображать важную информацию о безопасности, в том числе:

  • Открытые порты и запущенные сервисы (потенциальные точки входа)
  • Определенные уязвимости (слабые места безопасности)
  • Ссылки на CVE (стандартные идентификаторы уязвимостей)
  • Уровни риска (помогающие определить приоритеты по исправлению)

Анализ вывода скрипта

На этом этапе мы тщательно рассмотрим результаты сканирования на уязвимости, полученные с помощью Nmap на предыдущем этапе. Для начинающих важно понимать, что сканирование - это только первая часть, а настоящая анализ безопасности начинается с правильной интерпретации результатов. Файл vuln_scan_results.txt содержит все исходные данные, необходимые для выявления потенциальных уязвимостей безопасности.

  1. Сначала посмотрим на полные результаты сканирования. Это даст нам полное представление о том, что обнаружил Nmap:

    cat vuln_scan_results.txt
  2. Поскольку вручную прочитать весь файл может быть сложно, мы будем искать конкретные индикаторы уязвимостей. Слово "VULNERABLE" в выводе Nmap обычно отмечает подтвержденные проблемы безопасности:

    grep -i "vulnerable" vuln_scan_results.txt
  3. Далее мы будем искать стандартизованные ссылки на уязвимости. CVE (Common Vulnerabilities and Exposures, Общие уязвимости и уязвимые места) - это уникальные идентификаторы известных уязвимостей безопасности:

    grep -i "CVE-" vuln_scan_results.txt
  4. Статус портов является важным фактором при оценке уязвимостей. Открытые порты часто представляют собой потенциальные точки входа для атакующих:

    grep -E "open|filtered|closed" vuln_scan_results.txt
  5. Чтобы получить быстрый обзор наших результатов, мы подсчитаем, сколько уязвимостей обнаружил Nmap. Это поможет определить приоритеты анализа:

    echo "Total vulnerabilities found: $(grep -c -i "vulnerable" vuln_scan_results.txt)"
  6. Когда вы найдете интересный CVE, обязательно проведите его исследование. В этом примере показано, как получить подробности о конкретной уязвимости (замените идентификатор CVE по необходимости):

    curl -s https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228 | grep -A10 "Description"

При анализе вывода Nmap уделите особое внимание следующим важным элементам:

  • Порты, помеченные как "open" - они представляют активные сервисы
  • Версии сервисов - устаревшее программное обеспечение часто содержит известные уязвимости
  • Индикаторы "VULNERABLE" - подтвержденные проблемы безопасности
  • Ссылки на CVE - стандартизованные идентификаторы уязвимостей
  • Рейтинги риска (если они доступны) - помогают определить приоритеты по устранению уязвимостей

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

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

  1. Сначала создадим специальную директорию для хранения всех отчетов о сканировании. Это поможет сохранить чистоту рабочего пространства и облегчит поиск результатов в будущем:

    mkdir -p ~/project/reports
  2. Теперь запустим сканирование на уязвимости еще раз, сохраняя результаты в двух стандартных форматах. Флаг -oN сохраняет вывод в обычном текстовом формате, а флаг -oX создает XML - файл, который может быть обработан другими инструментами:

    nmap -sV --script vuln -oN ~/project/reports/scan_results.txt scanme.nmap.org
    nmap -sV --script vuln -oX ~/project/reports/scan_results.xml scanme.nmap.org
  3. XML - файлы неудобно читать напрямую, поэтому преобразуем его в более наглядный HTML - отчет с помощью xsltproc. Это создаст красиво отформатированную веб - страницу с результатами сканирования:

    xsltproc ~/project/reports/scan_results.xml -o ~/project/reports/scan_results.html
  4. Для быстрого доступа извлечем только критические уязвимости с помощью grep. Это создаст сжатый обзор, показывающий только строки, содержащие индикаторы уязвимостей:

    grep -iE "vulnerable|CVE-" ~/project/reports/scan_results.txt > ~/project/reports/summary.txt
  5. Убедимся, что все наши отчетные файлы были успешно созданы. Флаги -lh показывают размеры файлов в удобочитаемом формате:

    ls -lh ~/project/reports/
  6. (По желанию) Если вам нужно поделиться этими отчетами с другими, вы можете сжать их в один архивный файл:

    tar -czvf ~/project/reports.tar.gz ~/project/reports/

Объяснение основных форматов вывода:

  • .txt: Простой текстовый формат, который легко читать в любом текстовом редакторе
  • .xml: Структурированный формат данных, который может быть обработан другими инструментами безопасности
  • .html: Визуальный отчет, идеально подходящий для презентаций и документации
  • Файл обзора: Быстрый справочник, содержащий только самые важные результаты сканирования на уязвимости

Резюме

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

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