ReconWTF: мой инструмент разведки для bug bounty
Одна команда — и десятки утилит разведки работают по цепочке: поддомены, эндпоинты, JavaScript, порты, технологии и уязвимости. Зачем я написал свой инструмент и как он устроен.
В bug bounty побеждает тот, кто лучше знает цель. Большая часть уязвимостей находится не на главном сайте, а на забытом поддомене, старом API или в JavaScript-файле с захардкоженным ключом. Чтобы всё это найти, нужно прогнать десятки утилит, связать их вывод и не утонуть в результатах. Делать это руками для каждой программы — долго, поэтому я написал ReconWTF.
Идеи и часть сценариев вдохновлены проектом reconftw от six2dez. ReconWTF похож по духу, но работает по-своему и заточен под мой процесс.
Что делает
ReconWTF — Bash-фреймворк, который ставит нужные инструменты и запускает их по цепочке, передавая результаты одного этапа следующему. Разведку можно запускать целиком или по частям.
Сбор информации: IP-адреса поддоменов, определение облачного провайдера, информация о домене, проверка наличия WAF.
Поддомены:
- пассивный поиск — amass, сертификаты (ctfr), открытые датасеты;
- активный — amass, subfinder;
- брутфорс — puredns;
- пермутации имён — DNScewl + puredns.
Эндпоинты: пассивно из архивов и GitHub (gauplus, github-endpoints), активно — краулером gospider.
Веб-пробинг: живые хосты (httpx, httprobe) и скриншоты для быстрого визуального обзора.
JavaScript: сбор ссылок (linkfinder), поиск секретов (SecretFinder), скачивание JS и извлечение переменных.
Сканирование: порты (naabu, nmap), технологии (nuclei, webanalyze), заголовки безопасности.
Поиск уязвимостей: шаблоны nuclei, скрипты nmap NSE, searchsploit, фаззинг (ffuf), проверки CORS и open redirect, обход 403.
OSINT: сбор email и проверка утечек, дорки по GitHub и Google, метаданные.
Установка
git clone https://github.com/solo10010/reconWTF
cd reconWTF
chmod +x *.sh
./reconwtf.sh --install # поставит все утилиты
./reconwtf.sh --check-tools # проверит, что всё на месте
Перед запуском заполните config.conf: API-ключи сервисов, потоки, таймауты, порты, какие инструменты использовать. Через конфиг тонко настраивается весь процесс.
Режимы
| Флаг | Что делает |
|---|---|
-p, --passive | только пассивные методы, не касается цели |
-o, --osint | минимальная разведка через OSINT |
-s, --subdomain-search | только поддомены: поиск, резолв, проверка захвата |
-a, --active | полный анализ с активными проверками |
-r, --recon-full | полная разведка цели |
Примеры
Полная разведка:
./reconwtf.sh -d "target.com" -a
Только OSINT:
./reconwtf.sh -d "target.com" -o
Со всеми важными параметрами — компания, диапазон адресов, cookie для авторизованной зоны, исключения и свой конфиг:
./reconwtf.sh -d "target.com" -m "Target Inc" -cidr "203.0.113.0/24" \
-c "SESSIONID=XXXX" -x out_of_scope.txt \
--config config/config.conf --recon-full
Scope — это важно
Bug bounty — это работа строго в рамках программы. Поэтому в ReconWTF есть файл out of scope: всё, что в нём указано, исключается из результатов и не сканируется.
\.excluded.com # исключить все поддомены excluded.com
\example.com # исключить домен целиком
Активные режимы запускайте только по целям, на которые у вас есть разрешение: в рамках bug bounty программы или по договору на тестирование. Пассивный режим (-p) и OSINT не взаимодействуют с целью напрямую.
Хранение результатов
Результаты разведки можно автоматически пушить в приватный репозиторий GitHub: создайте репозиторий, добавьте SSH-ключ и укажите данные в config.conf. Так история разведки по каждой цели сохраняется и её удобно сравнивать между запусками — новые поддомены и эндпоинты часто и есть самые интересные.
Что дальше
ReconWTF решает задачу «прогнать всё по цепочке», но результаты всё равно приходится разбирать в файлах. Следующим шагом стала собственная платформа с базой данных, интерфейсом, перехватывающим прокси и непрерывным мониторингом — но это уже другая история. Ещё один связанный проект — коллекция шаблонов nuclei и словарей BugBounty-Hub, которую использует ReconWTF.