Nmap как первый взгляд на реальный периметр
Продолжаем разбирать инструменты для пентеста.
Ранее я рассказывал про theHarvester, который помогает на начальных этапах сформировать скоуп по объекту. Более подробно можно ознакомиться по ссылке ниже: ➥ https://setka.ru/posts/019d18d1-cdd9-7e33-87d0-8cc3c8dc3941
Теперь хочу рассказать про инструмент, который помогает уже не просто собрать внешний контекст, а посмотреть на сетевую инфраструктуру компании немного ближе. Речь про nmap.
На мой взгляд, это один из обязательных инструментов для изучения, если вы хотите погрузиться в пентест.
nmap часто ошибочно воспринимают слишком упрощённо, как “программа, которая показывает открытые порты”. На практике он даёт куда больше.
Через него можно узнать • какие сервисы вообще доступны • какие из них реально торчат наружу • какие версии используются
а дальше уже переходить к анализу поверхности атаки • поиску неправильной конфигурации • поиску CVE • возможных готовых эксплоитов и всё это в одном инструменте.
Nmap отвечает на очень важный вопрос: что у цели доступно по сети на самом деле, а не по документации и не по ощущениям.
━━━━━━━━ Базовые команды nmap ━━━━━━━━
Самый базовый вариант — просто просканировать хост: ➢ nmap target.com
По умолчанию это не скан всех 65535 портов, а наиболее популярных. Для быстрого первичного взгляда этого достаточно, лично я использую данный метод для скриптов.
Если нужно указать конкретные порты, то используется -p:
➢ nmap -p 80,443,22 target.com
Если нужен диапазон:
➢ nmap -p 1-1000 target.com
Отдельно стоит понимать разницу между TCP и UDP. Чаще всего начинают именно с TCP, потому что это быстрее, понятнее и даёт хорошую базу. Но UDP игнорировать тоже не стоит, так как там могут быть интересные сервисы вроде DNS, SNMP, NTP и не только.
Для UDP уже используется: ➢ nmap -sU -p 53,161 target.com
Если необходимо определение сервисов и версий, то одна из самых полезных опций: ➢ nmap -sV target.com
Она пытается определить, что именно висит за открытым портом и по возможности показать версию сервиса. А это уже очень практичная история, потому что версия Apache, nginx, OpenSSH, PostgreSQL или какого-либо VPN/панели — это уже не просто факт наличия порта, а входная точка для дальнейшего анализа. Дальше можно искать известные уязвимости, смотреть эксплойты, проверять конфигурацию.
Если нужно не только понять сервис, но и попробовать проверить его на известные слабые места, используют NSE-скрипты, в том числе: nmap --script vuln target.com
Но здесь важно не скатываться в магическое мышление, будто nmap сам “найдёт все уязвимости”. Нет. Он помогает быстро подсветить потенциально слабые места, но это не замена ручному анализу и не полноценный vuln assessment.
━━━━━━━━ Как я использую nmap ━━━━━━━━
Мой личный подход, то я редко начинаю сразу со сложного и тяжёлого скана с определением сервисов на всё подряд.
Обычно логика у меня такая: сначала быстро посмотреть, какие порты вообще открыты, без лишней детализации. То есть сначала понять форму периметра. Уже после этого точечно идти в интересующие порты и запускать на них определение сервисов и версий.
Опции -sV и -sC я использую особенно часто. Первая помогает понять, с чем имеем дело, вторая — быстро получить дополнительный контекст.
━━━━━━━━ Какие существуют сложности ━━━━━━━━
В мире облаков и проксирования у nmap уже появляются ограничения. Если сервис стоит за CDN, WAF, облачным балансировщиком или каким-нибудь edge-прокси, то nmap по сути будет видеть только то, что ему показывает внешний слой. За ним может быть гораздо более сложная инфраструктура, но напрямую её вы уже не пощупаете.
Именно поэтому нет особого смысла ждать от nmap чудес в ситуации, когда перед вами типичный облачный фасад. Он честно покажет доступные снаружи точки, но не даст вам внутреннюю картину только потому, что вы этого захотели. В таких кейсах уже приходится смещать фокус в сторону других методов: • анализа поведения приложения, • работы с HTTP-слоем, • ошибок конфигурации, • утечек заголовков, • CDN-bypass сценариев, • DNS-анализа и общей корреляции данных
━━━━━━━━ Мини итог ━━━━━━━━
nmap — это превосходный инструмент для своих задач. Он не заменяет опыт, не заменяет логику аналитика и не заменяет полноценный пентест, но он отлично помогает увидеть периметр, выделить интересные точки входа и понять, куда вообще стоит копать дальше.
На старте многим хочется сразу искать “критичные уязвимости”, RCE и громкие истории. Но на практике хороший пентест очень часто начинается с гораздо более приземлённых вещей: что открыто, что отвечает, что за сервис, какая версия, и почему это вообще доступно снаружи.