Сканирование портов при участии в багбаунти

Сканер портов

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

Багбаунти (Bug Bounty) – это программы, через которые компании привлекают багхантеров для поиска уязвимостей в своих системах, выплачивая вознаграждения за каждую найденную ошибку. Багхантеры (Bug Hunters) – это специалисты по кибербезопасности, участвующие в таких программах, используя свои навыки для обеспечения безопасности программного обеспечения, путем санкционированного взлома.

Многие используют такие сканеры портов, как naabu, rustscan, masscan. В некоторых случаях такой подход правильный, но зачем изобретать колесо? В Nmap уже есть все, что нужно. Некоторые считают, что Nmap  очень медленный, но они просто не знают, что некоторые параметры этого инструмента могут сделать его намного лучше (в плане скорости), чем, например, naabu. Пришло время работать умнее, а не сложнее, и обнаружить те точки, которые другие сканеры портов пропускают.

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

Поиск и выбор цели в Bugcrowd

В данном случае я использовал инструмент bbscope для поиска основных целей популярной программы багбаунти — Bugcrowd. Я собрал только публичные программы с Bugcrowd:

Вручную отфильтровал собранные результаты из bbscope.txt в два разных файла:

  • ips.txt – содержит IP-адреса и диапазоны IP-адресов.
  • hosts.txt – содержит множество сайтов из публичных программ Bug Bounty. Я исключил подстановочные домены и оставил только сайты www или главные страницы.

Поиск целей Bugcrowd

Сканирование хостов

Первая команда nmap, которую я запускаю, предназначена для  сканирования хостов. Передаем hosts.txt в nmap и используем следующую команду:

Краткое описание этой команды:

  • -iL hosts.txt – передает файл, содержащий имена хостов.
  • -Pn – пропускает обнаружение хостов.
  • min-rate 5000 – определяет, сколько пакетов отправлять с каждым запросом. Больше пакетов увеличивает скорость, но слишком большое количество может привести к пропуску портов или блокировке сетевыми брандмауэрами.
  • max-retries 1 – по умолчанию nmap выполняет несколько повторных попыток, но установка значения 1 или даже 0 значительно увеличивает его скорость.
  • max-scan-delay 20ms – время между каждым сканированием.
  • -T4 – параметр скорости nmap. Максимум может быть T5, но при использовании T5 можно пропустить некоторые части, поэтому для баланса между скоростью и охватом лучше выбрать T4.
  • top-ports 1000 – сканирует наиболее часто используемые 1000 портов.
  • exclude-ports 22,80,443,53,5060,8080 – исключает эти порты, так как их обычно обнаруживают с помощью httpx.
  • open – проверяет только те порты, которые не фильтруются и не закрыты.
  • -oX nmap.xml – сохраняет вывод в формате XML.

Сканирование 500 хостов заняло около 6 минут. Не все из них рабочие, но результат хороший с учетом охвата и скорости.

Сканирование хостов
Сканирование хостов

После получения XML-выходных данных следующая задача – это отобрать из XML-файла IP-адреса. Для этого я нашел небольшой скрипт на Gist:

Он берет файл из стандартного ввода и использует библиотеку xmlint для получения IPv4-адресов. Для каждого найденного IP он также сопоставляет открытый порт и выводит результат на экран. Попробуем использовать его напрямую в терминале:

Скрипт запросит данные из gist и выполнит их с помощью bash, передавая файл nmap.xml. Финальный результат будет выглядеть примерно так (я использую случайные IP и порты здесь):

Дополнительно можно передать это в httpx и проверить статус-код:

Сканирование диапазонов IP

Теперь попробуем ту же команду для файла с IP и диапазонами IP. Я использую те же параметры, кроме выходного файла:

Команде потребовалось более 5 часов, чтобы сканировать более 23 000 IP-адресов. Такие сканы лучше заряжать перед сном на всю ночь.

Сканирование диапазонов IP
Сканирование диапазонов IP

Конечно, не переусердствуйте со сканированием nmap, так как чрезмерное сканирование портов может вызвать подозрение вашего провайдера и ограничение скорости интернета.

После этого остается только снова конвертировать XML-выходной файл с помощью того же скрипта:

Советы для лучшего сканирования

Совет №1. Избегайте сканирования портов с использованием серверов. Лучше использовать сканирование портов для нескольких выбранных целей с вашего локального компьютера, таких как основные сайты различных программ.

Совет №2. Идеально сканировать основные цели один-два раза в день, используя cron job на вашем компьютере. Чтобы упростить процесс, рекомендую сайт crontab.guru, который объясняет синтаксис cron простым и понятным образом. Затем откройте crontab в терминале и вставьте скрипт, который вы хотите запускать периодически:

Сканирование портов при багбаунти
Сканирование портов при багбаунти

Вставьте значение с сайта crontab.guru и желаемую команду. Например, этот cron job будет запускать указанную команду nmap каждый день через каждые 12 часов:

Совет №3. Еще один совет: если хотите быстро сканировать много IP-адресов, попробуйте использовать инструмент jfscan. Он объединяет nmap с masscan, что значительно упростит вам жизнь. Но помните, что при этом вы обмениваете охват на скорость.

ПОЛЕЗНЫЕ ССЫЛКИ:

QUASAR

Этичный хакер: компьютерный ниндзя и мастер цифровых тайн.

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