Скрипты Nmap: в нужное время в нужном месте.

nmap в матрице

Король сканеров, или за что уважают скрипты Nmap?

Nmap, о которой вы могли слышать как о короле сканеров, как и многое из скриптовых языков, имеет почти неограниченные возможности. По крайней мере, документация к нему может бесконечно пополняться теми, кто владеет скриптами профессионально. Однако многие справедливо задаются вопросом: под какие вопросы “заточен” Nmap? С чем он справляется лучше всего, или какими программами можно пренебречь, зная, что с этой здесь мало кто конкурент? Я предлагаю вам ряд задач, в решении которых тестеры могут спокойно полагаться именно на Nmap, не утруждаясь поиском похожих функций у других сканеров. Что же выгодно отличает этот скриптонабор от него подобных? Объять необъятное я не смогу, однако, опять же, пища для размышлений.

Спойлер

Обнаружение серверов с помощью Nmap

Как все вы знаете, поддомены всегда используются главными хостами для обслуживания какой-то конкретной, выделенной категории клиентов. Чаще всего это почтовики, мобильные пользователи, товарные поддомены, страницы для разработчиков и т.п. Зачем же хакеры постоянно ищут поддомены, и почему эта задача всегда ставится во главу угла при тестировании удалённых хостов? Дело в том, что главный домен и его поддомены могут, например, располагаться на разных виртуальных серверах и даже разных странах. И, на что более всего рассчитывают хакеры, находится на разных уровнях защищённости. Нет, речь не идёт о том, что поддомены админами совершенно разбрасываются хозяевами. Однако практика показывает, что иногда ресурсы на субдоменах не своевременно обслуживаются, давая повод применять последние эксплойты и инъекции против них.

Nmap против поддоменов

И опять же не секрет, что внутри Nmap сидит мощный брут-форс-скрипт, позволяющий перечислять поддомены и сочленяющиеся с ними IP-адреса.

nmap -p80,443 --script dns-brute yandex.ru

nmap ищет поддомены яндекса

С помощью этой команды скрипт dns-brute попытается пробить указанный адрес (хост) по портам (p) 80 и 443 с целью обнаружить созданные для него поддомены. В данном случае в команде предпочтительнее указывать на номера целевых портов (nmap –script dns-brute сайт.com) , иначе на среднестатистическом компьютере проверка затянется. Конечно же, далеко не все хосты “блещут” разнообразием поддоменов, как крупные поисковики или сайты серьёзных контор. Однако познакомившись с картой поддоменов, взломщик может продолжит работу со списком вновь обнаруженных серверов под управлением хоста в поиске “дыр”. Так, Nmap снабжается файлом dns-brute, который может содержать дополнительные указующие аргументы –script-args. Их можно указывать в команде по поиску поддоменов, и с их помощью можно контролировать количество потоков поиска, имя файла с SRV-записями и предпочтительный поиск по ним, а также кое-что ещё.

Далее. Следующая команда ищет запущенные прямо сейчас службы хоста, используя протокол DNS Service Discovery, сканируя все порты хоста:

nmap --script=broadcast-dns-service-discovery mail.ru

Эти команды – не единственная возможность перечисления DNS по интересующему тестера хосту. Кроме того, в Кали Линукс существуют и другие инструменты дополнительно к Nmap, которые помогут составить отчётливую картину по дереву поддоменов сканируемого хоста. Но о таких программах позже.

Фаерволл

Фаерволл (он же брандмауэр) на всех компьютерах занимается одним и тем же: его задача обнаруживать и предотвращать/блокировать вредоносный трафик в сторону сервера/хоста и от него. Касаемо серверных фаерволлов по международной классификации вы будете чаще встречаться с аббревиатурой WAF (Web Application Firewall). Раз уж WAF заточен под работу с “веб-данными”, он чаще всего воюет с традиционными инструментами интернет-взломщика:

  • XSS-атаками
  • SQL-инъекциями
  • Импликациями (включениями кода в файлы приложений)

Логика здесь проста: запущенный на стороне сервера WAF свидетельствует о том, что можно и не пытаться пробить его в лоб с помощью уязвимостей полугодичной давности. И наоборот – “пустой” в этом смысле поддомен хоста откроет все свои секреты, часть которых может привести и к падению самого хоста. И работа по определению типа брандмауэра становится нередко во главу угла. А значит, в Nmap найдётся очередной скрипт http-waf-detect, который позволит обнаружить присутствие защитника на стороне сервера. Суть работы скрипта заключается в генерации нескольких запросов к хосту определённого содержания. Сначала это обычный веб запрос, ответ на который запоминается. Сразу после этого отсылается следующий “вопрос” с нарочитой ошибкой, имитирующей попытку подсунуть серверу “кривой” запрос с претензией на “вскрыть неверный ответ”с его стороны. Проще говоря – вторым запросом идёт маленькая (и относительно безобидная) попытка взлома, на которую фаерволл обязан отреагировать. Оба ответа сравниваются. По итогам сравнения скрипт делает выводы. Сразу скажу – такой вариант далёк от совершенства и выводы скрипта можно интерпретировать по всякому. Ровно потому, что WAF WAF-у рознь. Не говоря уж о типе и версии серверного ПО. Смотрим:

nmap -p80 --script http-waf-detect --script-args="http-waf-detect.aggro,http-waf-detect.uri=/testphp.vulnweb.com/artists.php" сайт.com

В таком варианте написания команды используется попытка найти хоть какой-то след фаерволла на стороне сервера. Для этого и предназначен аргумент http-waf-detect.aggro. Аналогичным образом можно добавить и аргумент http-waf-detect.detectBodyChanges, который усилит вероятность обнаружения типа WAF. В ситуации ниже мне этого не понадобилось:

тип брандмауэра на удалённом сервере

Развивая тему, можно попробовать вычислить “ограничения” и методы обнаружения брандмаура. Для этой цели подойдёт http-waf-fingerprint. В простейшем своём виде аргументы типа –script-args нам не понадобятся, однако к сайту лучше сразу присмотреться по-внимательнее:

nmap -p80,443 --script http-waf-fingerprint --script-args http-waf-fingerprint.intensive=1 сайт.сом

характеристики брандмауэра

Как видно из рисунка, все входящие запросы фильтруются сервисом CloudFlare, так что отложим пока взлом сайта на потом. Однако не спешите радоваться, если скрипт не обнаружил явных признаков присутствия WAF. Пустое поле ответа не означает, что хост не защищён: он просто настроен так, чтобы не отвечать “кому попало”.

Ошибки протокола

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

  • 1xx (инфо-код): Запрос принят, идём дальше
  • 2xx (успех): запрос успешно получен, понят сервером и принят к обработке
  • 3xx (перенаправление): чтобы завершить запрос нужны какие-то дальнейшие действия
  • 4xx (ошибка со стороны клиента): запрос содержит неверный синтаксис и не может быть выполнен
  • 5xx (ошибка со стороны сервера): сервер “упал”, но запрос к нему был корректен

На фоне таких возможностей со стороны Nmap первым о таком скрипте должен узнать администратор ресурсов, прогоняя своё детище:

nmap -p80,443 --script http-errors сайт.com

На сайтах-одностраничниках искать, конечно, по таким запросам нечего. Однако ресурсы с болим количеством записей могут раскрыть страницы, запрещённые к просмотру. А значит по этим адресам может скрываться нечто “вкусненькое”. Подобными характеристиками обладает и вариант с изучением файлов robots.txt, в котором некоторые администраторы ошибочно скрывают запрещающими директивами некоторые записи. А сам файл, конечно же, остаётся доступным для открытого просмотра… Спрашивается: “Ты скрыл, или наоборот, указал на них?”

Метаданные

Пресловутые EXIF – то, что скрыто от глаз пользователя, но неизменно сопровождает файл (фотографию или документ), как только он появляется в системе. Там всегда есть программа, в которой документ создан, время появления на свет, марка камеры, её технические характеристики и другое. Если пользователь – любитель “пощёлкаться” на новенький смартфон и прошляпил настройки геоданных, где он живёт, можно узнать в два счёта. На это работает скрипт http-exif-spider. Его очень хорошо применять против социальных сетей с обилием фотографий, куда снимки подгружаются безо всякой оглядки. Конечно, политика безопасности таких ресурсов подразумевает определённые фильтры очистки, однако информация будет тянуться за медиафайлами всегда. А многие сайты-середнячки, занимающиеся бизнесом тоже редко или вообще не следят за информацией в мета-области. Ну, и, конечно, команда:

nmap -p80,443 --script http-exif-spider сайт.com

метаданные фотографий на сайте

Появились страницы со слайдами? Можете полистать на досуге, они могут рассказать кое-что о хозяине.

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

Их всем и желаю.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

3 × 4 =

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.