reconFTW

Reconnaissance v4.1 · 07.03.2026 активный

Инструмент для автоматизированной разведки по целевому домену: запускает набор лучших утилит для сканирования и поиска уязвимостей (энумерация субдоменов, веб-проверки, OSINT, сканирование портов).

v4.1
07.03.2026 current

Установка
# Prerequisites — Ubuntu/Debian
sudo apt update
sudo apt install -y git curl wget python3 python3-pip ruby golang jq

# Prerequisites — macOS (Homebrew)
brew install git curl wget python@3 ruby go jq gnu-getopt coreutils gnu-sed bash

# Local installation
git clone https://github.com/six2dez/reconftw.git
cd reconftw
chmod +x install.sh
./install.sh

# Non-interactive install (option 1 = all dependencies + tools)
echo 1 | ./install.sh

# Update tools only (skip system packages)
./install.sh --tools

# Docker
docker pull six2dez/reconftw:latest
docker run --rm -v "$(pwd)/Recon:/reconftw/Recon" six2dez/reconftw:latest -d example.com -r

# Docker with custom config / API keys
docker run --rm \
  -v "$(pwd)/Recon:/reconftw/Recon" \
  -v "$(pwd)/my_config.cfg:/reconftw/reconftw.cfg" \
  -e SHODAN_API_KEY="your_key" \
  six2dez/reconftw:latest -d example.com -r
показать оригинал переведено ИИ


reconftw
reconFTW

Release License Closed Issues Discord Telegram Twitter

Docs


Bash Script Linux macOS GitHub

GitHub Actions Docker Terraform Ansible


Go Python

Buy Me a Coffee GitHub Sponsors PayPal

reconFTW — мощный автоматизированный инструмент разведки, предназначенный для исследователей безопасности и тестировщиков на проникновение. Он упрощает процесс сбора разведданных о цели, выполняя перечисление поддоменов, сканирование уязвимостей, OSINT и многое другое. Благодаря модульной конструкции, обширным опциям конфигурации и поддержке распределённого сканирования через AX Framework, reconFTW обеспечивает эффективное предоставление комплексных результатов.

reconFTW использует широкий спектр техник, включая пассивное и активное обнаружение поддоменов, проверку веб-уязвимостей (например, XSS, SSRF, SQLi), OSINT, фаззинг директорий, сканирование портов и создание скриншотов. Он интегрируется с современными инструментами и API для максимального охвата и точности, гарантируя, что вы останетесь впереди в своих усилиях по разведке.

Ключевые возможности:

  • Всестороннее перечисление поддоменов (пассивное, brute-force, перестановки, прозрачность сертификатов и т.д.)
  • Сканирование уязвимостей для XSS, SSRF, SQLi, LFI, SSTI и др.
  • OSINT для электронной почты, метаданных, утечек API и неправильных настроек сторонних сервисов
  • Распределённое сканирование с использованием AX Framework для ускорения выполнения
  • Настраиваемые рабочие процессы с подробным файлом конфигурации
  • Интеграция с Faraday для отчётности и визуализации
  • Поддержка Docker, Terraform и Ansible для развёртывания

Отказ от ответственности: Использование reconFTW для атак на цели без предварительного согласия является незаконным. Ответственность за соблюдение всех применимых законов лежит на пользователе. Разработчики не несут ответственности за неправильное использование или ущерб, вызванный этим инструментом. Используйте ответственно.


📔 Содержание


✨ Особенности

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

OSINT

  • Информация о домене: WHOIS-поиск информации о регистрации домена (whois).
  • Поиск утечек электронной почты и паролей: Поиск утечённых адресов электронной почты и учётных данных (emailfinder и LeakSearch).
  • Сопоставление Microsoft 365/Azure: Выявление арендаторов Microsoft 365 и Azure (msftrecon).
  • Извлечение метаданных: Извлечение метаданных из проиндексированных офисных документов (metagoofil).
  • Утечки API: Обнаружение открытых API в общедоступных источниках (porch-pirate, SwaggerSpy и postleaksNg).
  • Google‑доркинг: Автоматизированные запросы Google dork для конфиденциальной информации (dorks_hunter и xnldorker).

  • Анализ GitHub: Сканирует организации GitHub на наличие репозиториев и секретов с выбираемыми движками (enumerepo, trufflehog, gitleaks, titus, noseyparker).
  • Аудит GitHub Actions (Опционально): Аудитирует артефакты рабочих процессов и экспозицию CI/CD с помощью gato.
  • Неправильные конфигурации сторонних сервисов: Выявляет неправильно настроенные сторонние сервисы (misconfig-mapper).
  • Гигиена почты: Проверяет конфигурацию SPF/DMARC для выявления проблем с подделкой или доставляемостью.
  • Перечисление облачного хранилища: Исследует баки у основных провайдеров на наличие экспозиции (cloud_enum).
  • Поддающиеся подделке домены: Проверяет домены, уязвимые к подделке (spoofcheck).

Поддомены

  • Пассивное перечисление: Использует API и публичные источники для обнаружения поддоменов (subfinder и github-subdomains).
  • Прозрачность сертификатов: Выполняет запросы к журналам прозрачности сертификатов (crt).
  • Обнаружение NOERROR: Identifies subdomains with DNS NOERROR responses (dnsx, подробнее здесь).
  • Брутфорс: Выполняет DNS-брутфорс с настраиваемыми словарями (puredns и пользовательские словари).
  • Перестановки: Генерирует перестановки поддоменов с использованием ИИ, регулярных выражений и инструментов (Gotator как единственный движок перестановок, плюс regulator и subwiz).
  • Веб-скрейпинг: Извлекает поддомены из пассивных источников URL и живых веб-метаданных (urlfinder, waymore, httpx, csprecon).
  • DNS-записи: Разрешает DNS-записи для поддоменов (dnsx).
  • Google Analytics: Определяет поддомены по идентификаторам аналитики (AnalyticsRelationships).
  • Транспортный уровень безопасности (TLS) рукопожатие: Обнаруживает поддомены через порты TLS (tlsx).
  • Рекурсивный поиск: Выполняет комбинированное рекурсивное пассивное или bruteforce-перечисление (dsieve).
  • Захват поддоменов: Обнаруживает уязвимые поддомены (nuclei и dnstake).
  • Проверка передачи зоны DNS: Проверяет на наличие неправильно настроенных передач зоны DNS (dig).
  • Облачные баки: Выявляет неправильно настроенные облачные баки и открытые ресурсы хранилища (S3Scanner и cloud_enum).
  • Примечание о покрытии облака: Проверки облачных баков больше не включают покрытие Alibaba OSS после замены CloudHunter на cloud_enum.
  • Миграция вывода облака: Устаревшие артефакты баков cloudhunter_* были удалены; используйте вместо этого subdomains/cloud_enum_buckets_trufflehog.txt.
  • Обратный поиск по IP: Обнаруживает поддомены через диапазоны IP (hakip2host).

Узлы

  • Информация об IP: Получает геолокационные и WHOIS данные (ipinfo).
  • Обнаружение CDN: Выявляет IP-адреса за CDN (cdncheck).
  • Обнаружение WAF: Выявляет веб-приложенческие файрволлы (wafw00f).
  • Сканирование портов: Активное сканирование с использованием nmap (опционально предваряется naabu) и пассивное сканирование с помощью smap.
  • Отпечатки служб: Снимает отпечатки с обнаженных служб на найденных парах хост:порт с помощью nerva.

  • Уязвимости сервисов (Опционально): Глубокий профиль сканирования портов может обогатить результаты совпадением CVE через vulners.
  • Подбор паролей: Попытка выполнить подбор паролей на обнаруженных сервисах с выбором движка (brutespray или brutus).
  • Геолокация: Сопоставляет IP-адреса с географическими положениями (ipinfo).
  • Обнаружение IPv6: По желанию перечисляет и сканирует обнаруженные IPv6-цели, когда включён флаг IPV6_SCAN.

Веб-анализ

  • Веб-пробинг: Обнаруживает живые веб-серверы на стандартных и нестандартных портах (httpx).
  • Скриншоты: Делает скриншоты веб-страниц (nuclei).
  • Фаззинг виртуальных хостов: Выявляет виртуальные хосты путем фаззинга HTTP-заголовков (VhostFinder).
  • Обнаружение CMS: Выявляет системы управления контентом (CMSeeK).
  • Извлечение URL: Собирает URL пассивно и активно (urlfinder, waymore, katana, github-endpoints и JSA).
  • Анализ шаблонов URL: Классифицирует URL по шаблонам (urless, gf и gf-patterns).
  • Распознавание технологий по фавикону: Определяет технологии по хэшам фавикона (favirecon).
  • Анализ JavaScript: Извлекает секреты и конечные точки из JS-файлов (subjs, JSA, xnLinkFinder, getjswords, mantra, jsluice).
  • Извлечение source maps: Получает конфиденциальные данные из source maps JavaScript (sourcemapper).
  • Обнаружение GraphQL: Находит конечные точки GraphQL с помощью nuclei и опционально выполняет глубокую интроспекцию (GQLSpection).
  • Обнаружение параметров: Перебирает скрытые параметры на конечных точках (arjun).
  • Аудит WebSocket: Проверяет корректность апгрейд-хэндшейка и обработку origin на конечных точках ws:// и wss://.
  • Рефлексия gRPC: Сканирует распространённые порты gRPC на наличие открытой рефлексии сервиса (grpcurl).
  • Отпечаток сервисов LLM (Опционально): Просканировать обнаруженные веб/API конечные точки на наличие открытых сервисов LLM с помощью julius.
  • Фаззинг: Выполняет фаззинг директорий и параметров (ffuf).
  • Сортировка по расширению файла: Организует URL по расширениям файлов.
  • Генерация словаря: Создаёт пользовательские словарные списки для фаззинга.
  • Словарь паролей: Генерирует словарь паролей из активного контента (cewler).
  • Сканирование коротких имён IIS: Обнаруживает уязвимости коротких имён IIS (shortscan).

Проверка уязвимостей

  • CVE: Проверяет наличие CVE и распространённых уязвимостей через nuclei
  • Nuclei DAST: Запускает шаблоны nuclei -dast по собранным URL и кандидатам GF для дополнительного охвата DAST.
  • XSS: Проверяет уязвимости межсайтового скриптинга (dalfox).
  • SSL/TLS: Проверяет неправильные конфигурации SSL/TLS (testssl).
  • SSRF: Проверяет уязвимости межсайтовой подделки запросов (interactsh, значения параметров с помощью ffuf, а также дополнительные payloads альтернативных протоколов по желанию).
  • CRLF: Проверяет уязвимости инъекции CRLF (crlfuzz).
  • LFI: Проверяет локальное включение файлов через фаззинг (ffuf).
  • SSTI: Обнаруживает внедрение шаблонов на стороне сервера (TInjA).

  • SQLi: Тесты на SQL‑инъекции (SQLMap и ghauri).
  • Broken Links: Обнаруживает разбитые ссылки и внешние ссылки, вероятно подверженные захвату (second-order).
  • Command Injection: Тесты на уязвимости внедрения команд (commix).
  • HTTP Request Smuggling: Проверка уязвимостей smuggling запросов (smugglex).
  • Web Cache: Обнаруживает уязвимости веб‑кеша (Web-Cache-Vulnerability-Scanner и toxicache).
  • 4XX Bypassing: Попытки обхода ответов 4XX (nomore403).
  • Parameter Fuzzing: Фаззинг параметров URL на уязвимости (nuclei).

Дополнительно

  • Multithreading: Оптимизирует производительность (Interlace).
  • Custom Resolvers: Генерирует DNS резолверы (dnsvalidator).
  • Docker Support: Официальный образ Docker на DockerHub.
  • AWS Deployment: Развертывание через Terraform и Ansible.
  • IP/CIDR Support: Сканирует диапазоны IP и блоки CIDR.
  • Scan Resumption: Возобновляет сканирование с последнего завершённого шага.
  • Custom Output: Сохраняет результаты в пользовательскую директорию.
  • Diff Mode: Выделяет новые находки в последующих сканированиях.
  • Scope Filtering: Поддерживает списки in‑scope и out‑of‑scope (inscope).
  • Notifications: Отправляет оповещения через Slack, Discord или Telegram (notify).
  • Result Zipping: Сжимает и отправляет результаты.
  • Faraday Integration: Экспортирует результаты в Faraday для отчётов .
  • AI Report Generation: Генерирует отчёты с использованием локальных моделей ИИ (reconftw_ai).
  • Quick Rescan Mode: Автоматически пропускает тяжёлые этапы, если новые активы не обнаружены (--quick-rescan / QUICK_RESCAN).
  • Hotlist Builder: Оценивает и выделяет самые рискованные активы (hotlist.txt) на основе новых находок.
  • Command Tracing: Включение SHOW_COMMANDS для записи каждой выполненной команды в логи цели для отладки.
  • Asset Store: Добавляет находки в assets.jsonl для последующей автоматизации при включённом ASSET_STORE.
  • Consolidated Report: Автоматически генерирует report/report.json и report/index.html в конце сканирования.
  • ARM Support: Совместим с Raspberry Pi и архитектурами ARM (включая MacOS MX).
  • Health Check: Встроенная проверка состояния системы через --health-check (также используется Docker HEALTHCHECK).
  • Incremental Mode: Сканирует только новые находки с момента последнего запуска (--incremental).
  • Adaptive Rate Limiting: Автоматически отступает при ошибках 429/503 (--adaptive-rate).
  • Structured Logging: Опциональный вывод JSON‑лога для глубокого анализа (STRUCTURED_LOGGING).
  • Input Sanitization: Весь ввод пользователя очищается для предотвращения инъекций команд.
  • Dry-Run Mode: Просмотр того, что будет выполнено, без запуска команд (--dry-run).
  • Parallel Mode: Запуск независимых функций параллельно для ускорения сканирования (--parallel, отключить --no-parallel).
  • Modular Architecture: Код разбит на 8 специализированных модулей для удобства поддержки.
  • Secrets Management: Переменные окружения, файл secrets.cfg и секреты времени выполнения Docker (см. SECURITY.md).
  • Circuit Breaker: Автоматически пропускает инструменты после повторных сбоев, чтобы избежать зависания сканирования.
  • Checkpoint System: Возобновляет прерванное сканирование с последней успешной фазы.
  • macOS Native Support: Полная совместимость с macOS (BSD coreutils, Homebrew Bash 4+).

🏗️ Архитектура

reconFTW использует модульную архитектуру. Главная точка входа (reconftw.sh) обрабатывает разбор аргументов и подключает 8 специализированных модуля из каталога modules/.

Структура каталогов

reconftw/
├── reconftw.sh          # Entry point — arg parsing, module loading, dispatch
├── reconftw.cfg         # Default configuration
├── install.sh           # Installer
├── Makefile             # Data management, lint, fmt, test targets
├── modules/
│   ├── core.sh          # Lifecycle, logging, notifications, cleanup (1024 lines)
│   ├── modes.sh         # Scan modes, argument parsing, help (902 lines)
│   ├── subdomains.sh    # Subdomain enumeration (1938 lines)
│   ├── web.sh           # Web analysis, fuzzing, JS checks (1712 lines)
│   ├── vulns.sh         # Vulnerability scanning (926 lines)
│   ├── osint.sh         # OSINT functions (500 lines)
│   ├── axiom.sh         # Ax/Axiom fleet helpers (143 lines)
│   └── utils.sh         # Utilities, sanitization, validation (508 lines)
├── tests/
│   ├── run_tests.sh     # Test runner
│   ├── unit/            # bats-core unit tests
│   ├── integration/     # Integration tests
│   └── fixtures/        # Test data
├── Docker/
│   └── Dockerfile       # Official Docker image
└── Terraform/           # AWS deployment

Справочник модулей

Модуль Строк Назначение
core.sh 1024 Управление жизненным циклом, логирование, уведомления, обработка очистки
modes.sh 902 Определения режимов сканирования, разбор аргументов, вывод справки
subdomains.sh 1938 Все функции перечисления поддоменов
web.sh 1712 Веб‑анализ, фаззинг, анализ JS, обнаружение CMS
vulns.sh 926 Сканирование уязвимостей (XSS, SQLi, SSRF и т.д.)
osint.sh 500 Функции OSINT (WHOIS, email, dorks, метаданные)
utils.sh 508 Общие утилиты, очистка ввода, валидация
axiom.sh 143 Управление распределённым flotтом Ax/Axiom

Флаг --source-only позволяет подключать reconftw.sh без выполнения основной логики, что позволяет выполнять unit-тестирование отдельных функций.


💿 Установка

reconFTW поддерживает несколько методов установки, подходящих для разных сред. Убедитесь, что у вас достаточно места на диске (рекомендуется минимум 10 ГБ) и стабильное интернет-соединение.

Быстрый старт

1) Клонировать и установить

git clone https://github.com/six2dez/reconftw
cd reconftw
./install.sh --verbose

2) Запустить сканирование (полное + возобновление)

./reconftw.sh -d example.com -r

3) Минимальный запуск (только пассивный след)

./reconftw.sh -d example.com -p

Совет: перезапустите ./install.sh --tools позже, чтобы обновить toolchain без повторной установки системных пакетов.

Локальная установка (PC/VPS/VM)

  1. Предварительные требования:

    • Golang: Последняя версия (install_golang включён по умолчанию в reconftw.cfg).
    • Системные разрешения: Если вы не запускаете от root, настройте sudo, чтобы избежать запросов: bash sudo echo "${USERNAME} ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/reconFTW
  2. Шаги:

    bash git clone https://github.com/six2dez/reconftw cd reconftw ./install.sh ./reconftw.sh -d target.com -r

  3. Примечания: - Скрипт install.sh устанавливает зависимости, инструменты и настраивает пути (GOROOT, GOPATH, PATH). - Установите install_golang=false в reconftw.cfg, если Golang уже настроен. - Для существующих настроек запустите ./install.sh --tools, чтобы обновить бинарники Go, пакеты pipx и репозитории, не затрагивая системные пакеты. - Ознакомьтесь с Руководством по установке для получения подробных инструкций.

Docker

  1. Получить образ:

    bash docker pull six2dez/reconftw:main

  2. Запустить контейнер:

    bash docker run -it --rm \ -v "${PWD}/OutputFolder/:/reconftw/Recon/" \ six2dez/reconftw:main -d example.com -r

    Для списка целей привяжите файл списка в контейнер и укажите путь внутри контейнера:

    bash docker run -it --rm \ -v "${PWD}/domains.txt:/reconftw/domains.txt:ro" \ -v "${PWD}/OutputFolder/:/reconftw/Recon/" \ six2dez/reconftw:main -l /reconftw/domains.txt -r

  3. Просмотр результатов:

    • Результаты сохраняются в каталоге OutputFolder на хосте (не внутри контейнера).
  4. Настройка:

    • Измените образ Docker или соберите свой; см. Руководство по Docker.
    • Чтобы пропустить инструментарий Ax в пользовательских сборках, передайте --build-arg INSTALL_AXIOM=false.
    • Примонтируйте конфиг уведомлений по пути ~/.config/notify/provider-config.yaml внутри контейнера, если вы используете уведомления.
  5. Секреты во время выполнения:

    Передавайте API-ключи и секреты через переменные окружения — никогда не встраивайте их в образ:

    bash docker run -it --rm \ -e SHODAN_API_KEY="your-key" \ -e PDCP_API_KEY="your-projectdiscovery-key" \ -e COLLAB_SERVER="your-server" \ -e XSS_SERVER="your-server" \ -v "${PWD}/OutputFolder/:/reconftw/Recon/" \ six2dez/reconftw:main -d example.com -r

    См. SECURITY.md для полных рекомендаций по управлению секретами.

  6. Проверка состояния:

    Образ Docker включает встроенный HEALTHCHECK, который запускает ./reconftw.sh --health-check каждые 60 секунд. Вы также можете запустить его вручную:

    bash docker exec <container-id> ./reconftw.sh --health-check

Terraform + Ansible

  • Развёртывание reconFTW в AWS с использованием Terraform и Ansible.
  • Следуйте руководству в Terraform/README.md для инструкций по настройке.

🛠️ Устранение неполадок

  • Bash 4+ на macOS: Скрипты автоматически перезапускаются под Homebrew Bash. Если вы видите сообщение о Bash < 4, выполните brew install bash, откройте новый терминал и повторно запустите ./install.sh.
  • Таймаут на macOS: macOS предоставляет gtimeout через brew install coreutils. Скрипты теперь автоматически обнаруживают и используют его.
  • Сетевые сбои: Установщики скрывают большинство вывода команд. Если что-то не работает, перезапустите с upgrade_tools=true в reconftw.cfg, выполните ./install.sh --tools или установите отсутствующий инструмент вручную (ошибка укажет его).
  • Бинарники GOPATH: бинарники копируются в /usr/local/bin. Если вы предпочитаете иначе, убедитесь, что ~/go/bin находится в вашем PATH.
  • Шаблоны Nuclei: Если шаблоны не были склонированы, удалите ~/nuclei-templates и повторно запустите ./install.sh.

🔑 Чеклист API (опционально)

  • subfinder: ~/.config/subfinder/provider-config.yaml
  • GitHub токены: ~/Tools/.github_tokens (по одной на строку)
  • GitLab токены: ~/Tools/.gitlab_tokens (по одной на строку)
  • WHOISXML: установить WHOISXML_API в reconftw.cfg или переменную окружения
  • Перечисление ASN (asnmap): установить PDCP_API_KEY в переменные окружения/конфиг (ASN_ENUM пропускается, если не установлен)
  • Slack/Discord/Telegram: настроить notify в ~/.config/notify/provider-config.yaml
  • SSRF сервер: установить COLLAB_SERVER в env/cfg, если используется
  • Сервер Blind XSS: установить XSS_SERVER в env/cfg, если используется

💾 Requirements

  • Диск: рекомендуется 10–20 ГБ свободного места (набор инструментов + данные)
  • Сеть: стабильное соединение во время установки и обновлений
  • ОС: Linux/macOS с Bash ≥ 4
  • Дополнительно: shellcheck и shfmt (опционально) для make lint/make fmt

⚙️ Configuration

Файл reconftw.cfg управляет всем выполнением reconFTW. Он позволяет тонко настроить:

  • Пути к инструментам: Задайте пути для инструментов, резолверов и словарных списков (tools, resolvers, fuzz_wordlist).
  • Ключи API: Настройте ключи для Shodan, WHOISXML и др. через переменные окружения или secrets.cfg (см. SECURITY.md).
  • Режимы сканирования: Включайте/выключайте модули (например, OSINT, SUBDOMAINS_GENERAL, VULNS_GENERAL).
  • Производительность: Настройте количество потоков, лимиты скорости и таймауты (например, FFUF_THREADS, HTTPX_RATELIMIT).
  • Адаптивное ограничение скорости: Автоматически снижайте скорость при ошибках 429/503 (ADAPTIVE_RATE_LIMIT, MIN_RATE_LIMIT, MAX_RATE_LIMIT).
  • Инкрементальное сканирование: Сканируйте только новые результаты с последнего запуска (INCREMENTAL_MODE).
  • Уведомления: Настройте уведомления в Slack, Discord или Telegram (NOTIFY_CONFIG).
  • Ax (ранее Axiom): Настройте распределённое сканирование и пути к резолверам (AXIOM_FLEET_NAME, AXIOM_FLEET_COUNT, AXIOM_RESOLVERS_PATH).
  • Отчёты ИИ: Настройте модель/профиль/формат и управление контекстом (AI_MODEL, AI_REPORT_PROFILE, AI_REPORT_TYPE, AI_MAX_CHARS_PER_FILE).
  • Расширенные проверки веба: Включайте/выключайте интроспекцию GraphQL, обнаружение параметров, тест WebSocket, проверку gRPC и сканирование IPv6.
  • Автоматизация и данные: Управляйте эвристиками быстрого повторного сканирования, журналом активов, размером чанков, горячими списками и трассировкой отладки (QUICK_RESCAN, ASSET_STORE, CHUNK_LIMIT, HOTLIST_TOP, SHOW_COMMANDS).
  • Диск и журналирование: Предварительная проверка диска (MIN_DISK_SPACE_GB), ротация логов (MAX_LOG_FILES, MAX_LOG_AGE_DAYS), структурированное журналирование JSON (STRUCTURED_LOGGING).
  • Кеширование: Настройте срок жизни кеша для словарей и резолверов (CACHE_MAX_AGE_DAYS).
  • Безопасность DNS-резолвера: Отсутствующие файлы резолверов вызывают быстрый сбой, загрузка резолверов использует настраиваемые параметры повторных попыток/таймаутов (RESOLVER_DOWNLOAD_*), а таймаут DNS brute/resolve по умолчанию отключён (DNS_*_TIMEOUT=0) с индикатором heartbeats.
  • Секреты: Используйте secrets.cfg для локальных переопределений или переменные окружения для CI/Docker (см. SECURITY.md).

Пример конфигурации:

#############################################
#           reconFTW config file            #
#############################################

# General values
tools=$HOME/Tools   # Path installed tools
if [[ -z "${SCRIPTPATH:-}" ]]; then
    if [[ -n "${BASH_SOURCE[0]:-}" ]]; then
        SCRIPTPATH="$( cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 ; pwd -P )" # Get current script's path
    else
        SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" # Get current script's path
    fi
fi
_detected_shell="${SHELL:-/bin/bash}"
profile_shell=".$(basename "${_detected_shell}")rc" # Get current shell profile
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
    reconftw_version="$(git rev-parse --abbrev-ref HEAD)-$(git describe --tags 2>/dev/null || git rev-parse --short HEAD)"
else
    reconftw_version="standalone"
fi # Fetch current reconftw version
DATA_DIR="${SCRIPTPATH}/data"
WORDLISTS_DIR="${DATA_DIR}/wordlists"
PATTERNS_DIR="${DATA_DIR}/patterns"
generate_resolvers=false # Generate custom resolvers with dnsvalidator
update_resolvers=true # Fetch and rewrite resolvers from trickest/resolvers before DNS resolution
resolvers_url="https://raw.githubusercontent.com/trickest/resolvers/main/resolvers.txt"
resolvers_trusted_url="https://gist.githubusercontent.com/six2dez/ae9ed7e5c786461868abd3f2344401b6/raw/trusted_resolvers.txt"
RESOLVER_DOWNLOAD_CONNECT_TIMEOUT=10 # Seconds to wait for resolver download TCP connection
RESOLVER_DOWNLOAD_MAX_TIME=120 # Hard cap in seconds for resolver downloads
RESOLVER_DOWNLOAD_RETRY=2 # Retry count for resolver downloads
RESOLVER_DOWNLOAD_RETRY_DELAY=2 # Delay in seconds between resolver download retries
fuzzing_remote_list="https://raw.githubusercontent.com/six2dez/OneListForAll/main/onelistforallmicro.txt" # Used to send to Ax (if used) on fuzzing
proxy_url="http://127.0.0.1:8080/" # Proxy url
install_golang=true # Set it to false if you already have Golang configured and ready
upgrade_tools=true
upgrade_before_running=false # Upgrade tools before running
#dir_output=/custom/output/path
SHOW_COMMANDS=false # Set true to log every executed command to the per-target log (verbose; may include sensitive data)
MIN_DISK_SPACE_GB=0 # Minimum required disk space in GB before starting reconnaissance (0 to disable check)

# Incremental mode configuration
INCREMENTAL_MODE=false # Only scan new findings since last run (use --incremental flag to enable)
MONITOR_MODE=false # Continuous monitor mode (enabled by --monitor)
MONITOR_INTERVAL_MIN=60 # Minutes between monitoring cycles
MONITOR_MAX_CYCLES=0 # 0 = run forever until interrupted
ALERT_SUPPRESSION=true # Suppress repeated monitor alerts by fingerprint history
ALERT_SEEN_FILE=".incremental/alerts_seen.hashes" # Store of seen alert fingerprints

# Adaptive rate limiting configuration
ADAPTIVE_RATE_LIMIT=false # Automatically adjust rate limits when encountering 429/503 errors (use --adaptive-rate flag to enable)
MIN_RATE_LIMIT=10 # Minimum rate limit (requests per second)
MAX_RATE_LIMIT=500 # Maximum rate limit (requests per second)
RATE_LIMIT_BACKOFF_FACTOR=0.5 # Multiply rate by this when errors occur (0.5 = half speed)
RATE_LIMIT_INCREASE_FACTOR=1.2 # Multiply rate by this on success (1.2 = 20% faster)

# Cache configuration
CACHE_MAX_AGE_DAYS=30 # Maximum age in days for cached wordlists/resolvers (30 = 1 month)
CACHE_MAX_AGE_DAYS_RESOLVERS=7 # Resolver cache TTL
CACHE_MAX_AGE_DAYS_WORDLISTS=30 # Wordlist cache TTL
CACHE_MAX_AGE_DAYS_TOOLS=14 # Tool cache TTL
CACHE_REFRESH=false # Force-refresh cache (or use --refresh-cache)

# Log rotation
MAX_LOG_FILES=10       # Maximum number of log files to keep per target
MAX_LOG_AGE_DAYS=30    # Delete log files older than this many days

# Structured logging configuration (JSON format)
STRUCTURED_LOGGING=false # Enable JSON structured logging for advanced log analysis

# Golang Vars (Comment or change on your own)
export GOROOT="${GOROOT:-/usr/local/go}"
export GOPATH="${GOPATH:-$HOME/go}"
case ":${PATH}:" in
    *":$GOPATH/bin:"*) ;;
    *) PATH="$GOPATH/bin:$PATH" ;;
esac
case ":${PATH}:" in
    *":$GOROOT/bin:"*) ;;
    *) PATH="$GOROOT/bin:$PATH" ;;
esac
case ":${PATH}:" in
    *":$HOME/.local/bin:"*) ;;
    *) PATH="$HOME/.local/bin:$PATH" ;;
esac
export PATH

# Rust Vars (Comment or change on your own)
export PATH="$HOME/.cargo/bin:$PATH"

# Tools config files
#NOTIFY_CONFIG=~/.config/notify/provider-config.yaml # No need to define
GITHUB_TOKENS=${tools}/.github_tokens
GITLAB_TOKENS=${tools}/.gitlab_tokens
#CUSTOM_CONFIG=custom_config_path.txt # In case you use a custom config file, uncomment this line and set your files path

# APIs/TOKENS - Set via environment variables (preferred) or uncomment and edit below.
# Environment variables take precedence if set.
SHODAN_API_KEY="${SHODAN_API_KEY:-}"
WHOISXML_API="${WHOISXML_API:-}"
PDCP_API_KEY="${PDCP_API_KEY:-}"
XSS_SERVER="${XSS_SERVER:-}"
COLLAB_SERVER="${COLLAB_SERVER:-}"
slack_channel="${slack_channel:-}"
slack_auth="${slack_auth:-}"
# For additional secrets, create a secrets.cfg file (gitignored) and it will be auto-sourced

# File descriptors
DEBUG_STD="&>/dev/null" # Skips STD output on installer
DEBUG_ERROR="2>/dev/null" # Skips ERR output on installer

# Osint
OSINT=true # Enable or disable the whole OSINT module
GOOGLE_DORKS=true
GITHUB_DORKS=true
GITHUB_REPOS=true
METADATA=true # Fetch metadata from indexed office documents
EMAILS=true # Fetch emails from differents sites
DOMAIN_INFO=true # whois info
IP_INFO=true    # Reverse IP search, geolocation and whois
API_LEAKS=true # Check for API leaks
API_LEAKS_POSTLEAKS=true # Enhance API leaks with postleaksNg
THIRD_PARTIES=true # Check for 3rd parties misconfigs
SPOOF=true # Check spoofable domains
MAIL_HYGIENE=true # Check DMARC/SPF records
CLOUD_ENUM=true # Enumerate cloud storage across providers with cloud_enum
GITHUB_LEAKS=true # Search for leaked secrets across GitHub with ghleaks
GHLEAKS_THREADS=5 # Concurrent download threads for ghleaks
SECRETS_ENGINE="gitleaks" # gitleaks|titus|noseyparker|hybrid
SECRETS_SCAN_GIT_HISTORY=false # Include git history scans when supported
SECRETS_VALIDATE=false # Validate detected secrets when supported (titus)
GITHUB_ACTIONS_AUDIT=false # Audit GitHub Actions artifacts/workflows with gato
GATO_INCLUDE_ALL_ARTIFACT_SECRETS=false # Include noisy artifact secret matches in gato output


# Subdomains
SUBDOMAINS_GENERAL=true # Enable or disable the whole Subdomains module
SUBPASSIVE=true # Passive subdomains search
SUBCRT=true # crtsh search
CTR_LIMIT=999999 # Limit the number of results
SUBNOERROR=false # Check DNS NOERROR response and BF on them
SUBANALYTICS=true # Google Analytics search
SUBBRUTE=true # DNS bruteforcing
SUBSCRAPING=true # Subdomains extraction from passive URLs and live web metadata
SUBPERMUTE=true # DNS permutations
SUBIAPERMUTE=true # Permutations by AI analysis
SUBREGEXPERMUTE=true # Permutations by regex analysis
GOTATOR_FLAGS=" -depth 1 -numbers 3 -mindup -adv -md" # Flags for gotator
PERMUTATIONS_WORDLIST_MODE=auto # auto|full|short (auto: short if subs > threshold, full if DEEP)
PERMUTATIONS_SHORT_THRESHOLD=100 # Use short wordlist when subdomain count exceeds this
SUBTAKEOVER=true # Check subdomain takeovers, false by default cuz nuclei already check this
SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries
DEEP_RECURSIVE_PASSIVE=10 # Number of top subdomains for recursion
SUB_RECURSIVE_BRUTE=false # Needs big disk space and time to resolve
ZONETRANSFER=true # Check zone transfer
S3BUCKETS=true # Check S3 buckets misconfigs
REVERSE_IP=false # Check reverse IP subdomain search (set True if your target is CIDR/IP)
TLS_PORTS="21,22,25,80,110,135,143,261,271,324,443,448,465,563,614,631,636,664,684,695,832,853,854,990,993,989,992,994,995,1129,1131,1184,2083,2087,2089,2096,2221,2252,2376,2381,2478,2479,2482,2484,2679,2762,3077,3078,3183,3191,3220,3269,3306,3410,3424,3471,3496,3509,3529,3539,3535,3660,36611,3713,3747,3766,3864,3885,3995,3896,4031,4036,4062,4064,4081,4083,4116,4335,4336,4536,4590,4740,4843,4849,5443,5007,5061,5321,5349,5671,5783,5868,5986,5989,5990,6209,6251,6443,6513,6514,6619,6697,6771,7202,7443,7673,7674,7677,7775,8243,8443,8991,8989,9089,9295,9318,9443,9444,9614,9802,10161,10162,11751,12013,12109,14143,15002,16995,41230,16993,20003"
INSCOPE=false # Uses inscope tool to filter the scope, requires .scope file in reconftw folder

# Web detection
WEBPROBEFULL=true # Unified web probing over configured ports
WEBSCREENSHOT=true # Webs screenshooting
VIRTUALHOSTS=false # Check virtualhosts by fuzzing HOST header
UNCOMMON_PORTS_WEB="81,300,591,593,832,981,1010,1311,1099,2082,2095,2096,2480,3000,3001,3002,3003,3128,3333,4243,4567,4711,4712,4993,5000,5104,5108,5280,5281,5601,5800,6543,7000,7001,7396,7474,8000,8001,8008,8014,8042,8060,8069,8080,8081,8083,8088,8090,8091,8095,8118,8123,8172,8181,8222,8243,8280,8281,8333,8337,8443,8500,8834,8880,8888,8983,9000,9001,9043,9060,9080,9090,9091,9092,9200,9443,9502,9800,9981,10000,10250,11371,12443,15672,16080,17778,18091,18092,20720,32000,55440,55672"
WEBPROBE_PORTS="80,443,${UNCOMMON_PORTS_WEB}" # Ports used by webprobe_full

# Host
FAVIRECON=true # Favicon-based technology recon for discovered web targets
PORTSCANNER=true # Enable or disable the whole Port scanner module
GEO_INFO=true # Fetch Geolocalization info
PORTSCAN_PASSIVE=true # Port scanner with Shodan
PORTSCAN_ACTIVE=true # Port scanner with nmap
PORTSCAN_ACTIVE_OPTIONS="--top-ports 200 -sV -n -Pn --open --max-retries 2"
PORTSCAN_DEEP_OPTIONS="--top-ports 1000 -sV -n -Pn --open --max-retries 2 --script vulners"
PORTSCAN_STRATEGY=legacy # legacy|naabu_nmap
NAABU_ENABLE=true
NAABU_RATE=1000
NAABU_PORTS="--top-ports 1000"
SERVICE_FINGERPRINT=true # Fingerprint exposed services with nerva
SERVICE_FINGERPRINT_ENGINE="nerva" # nerva
SERVICE_FINGERPRINT_TIMEOUT_MS=2000 # nerva timeout per target (ms)
PORTSCAN_UDP=false
PORTSCAN_UDP_OPTIONS="--top-ports 20 -sU -sV -n -Pn --open"
CDN_IP=true # Check which IPs belongs to CDN
CDN_BYPASS=true # Try origin IP discovery on CDN-fronted hosts with hakoriginfinder

# Web analysis
WAF_DETECTION=true # Detect WAFs
NUCLEICHECK=true # Enable or disable nuclei
NUCLEI_TEMPLATES_PATH="$HOME/nuclei-templates" # Set nuclei templates path
NUCLEI_SEVERITY="info,low,medium,high,critical" # Set templates criticity
NUCLEI_EXTRA_ARGS="" # Additional nuclei extra flags, don't set the severity here but the exclusions like " -etags openssh"
#NUCLEI_EXTRA_ARGS="-etags openssh,ssl -eid node-express-dev-env,keycloak-xss,CVE-2023-24044,CVE-2021-20323,header-sql,header-reflection" # Additional nuclei extra flags, don't set the severity here but the exclusions like " -etags openssh"
NUCLEI_DAST=true # Run additional nuclei -dast module over webs/urls/gf candidates (forced on when VULNS_GENERAL=true, e.g. -a)
URL_CHECK=true # Enable or disable URL collection
URL_CHECK_PASSIVE=true # Search for urls, passive methods from Archive, OTX, CommonCrawl, etc
URL_CHECK_ACTIVE=true # Search for urls by crawling the websites
WAYMORE_TIMEOUT=30m # Timeout for waymore passive URL collection
WAYMORE_LIMIT=5000 # Optional URL collection limit for waymore
URL_GF=true # Url patterns classification
URL_EXT=true # Returns a list of files divided by extension
JSCHECKS=true # JS analysis
FUZZ=true # Web fuzzing
FUZZ_RECURSION_DEPTH=2 # ffuf recursion depth used in DEEP mode
IIS_SHORTNAME=true
CMS_SCANNER=true # CMS scanner
WORDLIST=true # Wordlist generation
ROBOTSWORDLIST=true # Check historic disallow entries on waybackMachine (DEEP mode only)
PASSWORD_DICT=true # Generate password dictionary
PASSWORD_DICT_ENGINE=cewler # cewler|pydictor
PASSWORD_MIN_LENGTH=5 # Min password length
PASSWORD_MAX_LENGTH=14 # Max password length
KATANA_HEADLESS_PROFILE=off # off|smart|full
CLOUD_ENUM_S3_PROFILE=optimized # optimized: quickscan (-qs + safe -m/-b paths) | exhaustive: -m/-b ${tools}/cloud_enum/enum_tools/fuzz.txt (missing fuzz => optimized)
CLOUD_ENUM_S3_THREADS=20 # Threads used by cloud_enum in s3buckets/cloud enumeration

# Vulns
VULNS_GENERAL=false # Enable or disable the vulnerability module (very intrusive and slow)
XSS=true # Check for xss with dalfox
TEST_SSL=true # SSL misconfigs
SSRF_CHECKS=true # SSRF checks
CRLF_CHECKS=true # CRLF checks
LFI=true # LFI by fuzzing
LFI_MAX_URLS=150 # Max single-parameter LFI candidates to test per target (0 = unlimited)
SSTI=true # SSTI by fuzzing
SSTI_ENGINE="TInjA" # SSTI engine
SQLI=true # Check SQLI
SQLMAP=true # Check SQLI with sqlmap
GHAURI=false # Check SQLI with ghauri
BROKENLINKS=true # Check for brokenlinks
BROKENLINKS_ENGINE="second-order" # Broken links engine
SPRAY=true # Performs password spraying
SPRAY_ENGINE="brutespray" # brutespray|brutus
SPRAY_BRUTUS_ONLY_DEEP=true # Run brutus only in DEEP mode unless disabled
BRUTUS_USERNAMES="" # Optional comma-separated usernames for brutus
BRUTUS_PASSWORDS="" # Optional comma-separated passwords for brutus
BRUTUS_KEY_FILE="" # Optional SSH private key path for brutus
COMM_INJ=true # Check for command injections with commix
SMUGGLING=true # Check for HTTP request smuggling flaws
WEBCACHE=true # Check for Web Cache issues
WEBCACHE_TOXICACHE=true # Complement web cache checks with toxicache
BYPASSER4XX=true # Check for 4XX bypasses
FUZZPARAMS=true # Fuzz parameters values

# Extra features
NOTIFICATION=false # Notification for every function
SOFT_NOTIFICATION=false # Only for start/end
DEEP=false # DEEP mode, really slow and don't care about the number of results
DEEP_LIMIT=500 # First limit to not run unless you run DEEP
DEEP_LIMIT2=1500 # Second limit to not run unless you run DEEP
DIFF=false # Diff function, run every module over an already scanned target, printing only new findings (but save everything)
REMOVETMP=false # Delete temporary files after execution (to free up space)
REMOVELOG=false # Delete logs after execution
PROXY=false # Send to proxy the websites found
SENDZIPNOTIFY=false # Send to zip the results (over notify)
PRESERVE=true      # set to true to avoid deleting the .called_fn files on really large scans
FFUF_FLAGS=" -mc all -fc 404 -sf -noninteractive -of json" # Ffuf flags

# HTTP options
HEADER="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0" # Default header

# Threads (auto-scaled based on CPU cores, override to set fixed values)
AVAILABLE_CORES=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
FFUF_THREADS=$((AVAILABLE_CORES * 10))
HTTPX_THREADS=$((AVAILABLE_CORES * 12))
HTTPX_UNCOMMONPORTS_THREADS=$((AVAILABLE_CORES * 25))
KATANA_THREADS=$((AVAILABLE_CORES * 5))
BRUTESPRAY_CONCURRENCE=$((AVAILABLE_CORES * 2))
DNSTAKE_THREADS=$((AVAILABLE_CORES * 25))
DALFOX_THREADS=$((AVAILABLE_CORES * 50))
DNS_RESOLVER=auto # auto|puredns|dnsx (auto: detects NAT/CGNAT → dnsx for home, puredns for VPS)
PUREDNS_PUBLIC_LIMIT=0 # Set between 2000 - 10000 if your router blows up, 0 means unlimited
PUREDNS_TRUSTED_LIMIT=400
PUREDNS_WILDCARDTEST_LIMIT=30
PUREDNS_WILDCARDBATCH_LIMIT=1500000
DNSX_THREADS=25 # Threads for dnsx when behind NAT (safe for home routers)
DNSX_RATE_LIMIT=100 # QPS for dnsx
DNSVALIDATOR_THREADS=200
INTERLACE_THREADS=10
LFI_INTERLACE_THREADS=4 # Dedicated interlace concurrency for LFI
TLSX_THREADS=1000
XNLINKFINDER_DEPTH=3


# Rate limits
HTTPX_RATELIMIT=150
NUCLEI_RATELIMIT=150
FFUF_RATELIMIT=0
LFI_FFUF_THREADS=20 # Dedicated ffuf threads for LFI
LFI_FFUF_RATELIMIT=50 # Dedicated ffuf rate limit for LFI

# Timeouts
SUBFINDER_ENUM_TIMEOUT=180          # Minutes
CMSSCAN_TIMEOUT=3600            # Seconds
FFUF_MAXTIME=900                # Seconds
LFI_INTERLACE_TIMEOUT=180       # Seconds per LFI interlace worker
LFI_FFUF_TIMEOUT=10             # Seconds per LFI HTTP request
LFI_FFUF_MAXTIME=90             # Seconds per single LFI ffuf job
LFI_FOLLOW_REDIRECTS=false      # Follow redirects during LFI fuzzing
HTTPX_TIMEOUT=10                # Seconds
HTTPX_UNCOMMONPORTS_TIMEOUT=10  # Seconds
PERMUTATIONS_LIMIT=21474836480  # Bytes, default is 20 GB
DNS_BRUTE_TIMEOUT=0             # timeout/gtimeout duration for DNS bruteforce (0 disables hard-timeout, e.g. 4h)
DNS_RESOLVE_TIMEOUT=0           # timeout/gtimeout duration for DNS resolve (0 disables hard-timeout, e.g. 6h)
DNS_HEARTBEAT_INTERVAL_SECONDS=20 # Progress heartbeat interval for long DNS jobs

# lists
fuzz_wordlist=${WORDLISTS_DIR}/fuzz_wordlist.txt
lfi_wordlist=${WORDLISTS_DIR}/lfi_wordlist.txt
ssti_wordlist=${WORDLISTS_DIR}/ssti_wordlist.txt
subs_wordlist=${WORDLISTS_DIR}/subdomains.txt
subs_wordlist_big=${tools}/subdomains_n0kovo_big.txt
headers_inject=${WORDLISTS_DIR}/headers_inject.txt
resolvers=${tools}/resolvers.txt
resolvers_trusted=${tools}/resolvers_trusted.txt

# Ax Fleet (formerly Axiom — uses attacksurge/ax)
# Resolver paths on Ax instances (change if your fleet uses a different home dir)
AXIOM_RESOLVERS_PATH="/home/op/lists/resolvers.txt"
AXIOM_RESOLVERS_TRUSTED_PATH="/home/op/lists/resolvers_trusted.txt"
# Will not start a new fleet if one exist w/ same name and size (or larger)
# AXIOM=false Uncomment only to overwrite command line flags
AXIOM_FLEET_LAUNCH=true # Enable or disable spin up a new fleet, if false it will use the current fleet with the AXIOM_FLEET_NAME prefix
AXIOM_FLEET_NAME="reconFTW" # Fleet's prefix name
AXIOM_FLEET_COUNT=10 # Fleet's number
AXIOM_FLEET_REGIONS="eu-central" # Fleet's region
AXIOM_FLEET_SHUTDOWN=true # # Enable or disable delete the fleet after the execution
AXIOM_AUTO_FIX_HOSTKEY=true # Auto-repair known_hosts entries on SSH host-key mismatch before fallback to local mode
# This is a script on your reconftw host that might prep things your way...
#AXIOM_POST_START="~/Tools/axiom_config.sh" # Useful  to send your config files to the fleet
AXIOM_EXTRA_ARGS="" # Leave empty if you don't want to add extra arguments
#AXIOM_EXTRA_ARGS=" --rm-logs" # Example

# Faraday-Server
FARADAY=false # Enable or disable Faraday integration
FARADAY_WORKSPACE="reconftw" # Faraday workspace

# AI
AI_EXECUTABLE="python3" # Python executable fallback if reconftw_ai venv python is not available
AI_MODEL="llama3:8b" # Model to use
AI_REPORT_TYPE="md" # Report type to use (md, txt)
AI_REPORT_PROFILE="bughunter" # Report profile to use (executive, brief, or bughunter)
AI_PROMPTS_FILE="" # Optional custom prompts file (empty uses reconftw_ai default)
AI_MAX_CHARS_PER_FILE=50000 # Max chars loaded per file before truncation
AI_MAX_FILES_PER_CATEGORY=200 # Max files loaded per category for AI context
AI_REDACT=true # Redact sensitive indicators before AI analysis
AI_ALLOW_MODEL_PULL=false # Allow reconftw_ai to auto-pull missing model
AI_STRICT=false # Fail AI analysis if one or more categories have no data

# API & Advanced Web Checks
GRAPHQL_CHECK=true # Detect GraphQL endpoints and introspection
GQLSPECTION=false # Run GQLSpection deep introspection on detected GraphQL endpoints (heavier)
PARAM_DISCOVERY=true # Parameter discovery with arjun
GRPC_SCAN=false # Attempt basic gRPC reflection on common ports
LLM_PROBE=false # Probe discovered web/API endpoints for LLM services with julius
LLM_PROBE_AUGUSTUS=false # Include augustus generator config in julius output

# IPv6
IPV6_SCAN=true # Attempt IPv6 discovery/portscan where addresses exist

# Wordlists / threads for new modules
ARJUN_THREADS=10

# Data & Automation
ASSET_STORE=true # Append assets/findings to assets.jsonl
EXPORT_FORMAT="" # Optional exporter at end of scan: json|html|csv|all
REPORT_ONLY=false # Rebuild report artifacts from existing results (or use --report-only)
QUICK_RESCAN=false # Skip heavy steps if no new subdomains/webs
CHUNK_LIMIT=2000 # Split very large lists into chunks (urls, webs)
HOTLIST_TOP=50 # Number of top risky assets to highlight

# Performance
RESOLVER_IQ=false # Prefer fast/healthy resolvers (experimental)
PERF_PROFILE="balanced" # low|balanced|max

# Estimated durations for skipped heavy modules (seconds)
TIME_EST_NUCLEI=600
TIME_EST_FUZZ=900
TIME_EST_URLCHECKS=300
TIME_EST_JSCHECKS=300
TIME_EST_API=300
TIME_EST_GQL=180
TIME_EST_PARAM=240
TIME_EST_GRPC=120
TIME_EST_IIS=60

# TERM COLORS
bred='\033[1;31m'
bblue='\033[1;34m'
bgreen='\033[1;32m'
byellow='\033[1;33m'
red='\033[0;31m'
blue='\033[0;34m'
green='\033[0;32m'
cyan='\033[0;36m'
yellow='\033[0;33m'
reset='\033[0m'

Защита DNS-резолвера:

  • Отсутствующие/пустые файлы резолверов теперь вызывают быстрый сбой перед началом DNS brute/resolve.
  • Загрузка резолверов настраивается параметрами RESOLVER_DOWNLOAD_CONNECT_TIMEOUT, RESOLVER_DOWNLOAD_MAX_TIME, RESOLVER_DOWNLOAD_RETRY и RESOLVER_DOWNLOAD_RETRY_DELAY.
  • DNS_BRUTE_TIMEOUT=0 и DNS_RESOLVE_TIMEOUT=0 отключают жёсткий таймаут по умолчанию (рекомендуется для очень больших наборов целей). Индикатор heartbeats всё ещё выводится каждыми DNS_HEARTBEAT_INTERVAL_SECONDS.
DNS_BRUTE_TIMEOUT=4h
DNS_RESOLVE_TIMEOUT=6h
DNS_HEARTBEAT_INTERVAL_SECONDS=20

Полные сведения: См. руководство по конфигурации.


🚀 Usage

reconFTW поддерживает несколько режимов и опций для гибкой разведки. Используйте флаг -h для просмотра меню помощи.

Параметры цели

Флаг Описание
-d Одна целевая доменная зона (например, example.com)
-l Файл со списком целевых доменов (по одной на строку)
-m Многодоменная цель (например, название компании для связанных доменов)
-x Исключить поддомены (список вне области)
-i Включить поддомены (список внутри области)

Режимы работы

Флаг Описание
-r Разведка: Полная разведка без активных атак
-s Поддомены: Перечисление поддоменов, веб-пробинг и захват
-p Пассивный: Только пассивная разведка
-a Все: Полная разведка плюс активные проверки на уязвимости
-w Веб: Проверки уязвимостей для конкретных веб-целей
-n OSINT: Сканирование OSINT без перечисления поддоменов или атак
-z Zen: Лёгкая разведка с базовыми проверками и некоторыми уязвимостями
-c Пользовательский: Запуск конкретной функции (требуются дополнительные аргументы)
-h Показать меню помощи

Общие параметры

Flag Description
--deep Включить глубокое сканирование (медленнее, рекомендуется VPS)
-f Путь к пользовательскому файлу конфигурации
-o Директория вывода для результатов
-v Включить распределённое сканирование Ax
--vps-count Переопределить количество экземпляров флота Ax для этого запуска
-q Установить лимит скорости (запросов в секунду)
-y Включает анализ результатов ИИ
--check-tools Выход, если отсутствуют необходимые инструменты
--quick-rescan Пропускать тяжёлые модули, если не найдено новых поддоменов/сайтов
--health-check Запустить проверку состояния системы и выйти
--incremental Сканировать только новые находки с момента последнего запуска
--adaptive-rate Автоматически корректировать лимиты скорости при ошибках (429/503)
--dry-run Показать, что будет выполнено, не запуская команды
--parallel Запускать независимые функции параллельно (быстрее, требуется больше ОЗУ)
--no-parallel Принудительно выполнять последовательно, даже если параллельный режим включён
--monitor Режим непрерывного мониторинга (одна цель; параметр -w поддерживает -l)
--monitor-interval Минут между циклами мониторинга
--monitor-cycles Остановить после N циклов (0 = бесконечно)
--report-only Пересобрать артефакты отчёта без сканирования
--refresh-cache Принудительно обновить кэш резолверов/словарей
--export Экспортировать артефакты: json, html, csv или all

Пример использования

  1. Полная разведка на одной цели:

    bash ./reconftw.sh -d target.com -r

  2. Разведка по нескольким целям:

    bash ./reconftw.sh -l targets.txt -r -o /path/to/output/

  3. Глубокая разведка (рекомендуется VPS):

    bash ./reconftw.sh -d target.com -r --deep

  4. Параллельный режим (быстрее, требуется больше ОЗУ):

    bash ./reconftw.sh -d target.com -r --parallel

  5. Принудительный последовательный режим:

    bash ./reconftw.sh -d target.com -r --no-parallel 6. Многодоменная разведка:

    bash ./reconftw.sh -m company -l domains.txt -r

  6. Интеграция с Ax:

    bash ./reconftw.sh -d target.com -r -v

  7. Интеграция с Ax с переопределением флота:

    bash ./reconftw.sh -d target.com -r -v 30

  8. Полная разведка с атаками (режим YOLO):

    bash ./reconftw.sh -d target.com -a

  9. Показать справку: bash ./reconftw.sh -h

  10. Принудительно обновить кэш: bash ./reconftw.sh -d target.com -r --refresh-cache

  11. Экспортировать все артефакты отчёта: bash ./reconftw.sh -d target.com -r --export all

  12. Непрерывный мониторинг (каждые 30 мин, 48 циклов): bash ./reconftw.sh -d target.com -r --monitor --monitor-interval 30 --monitor-cycles 48

  13. Пересобрать только отчёты (без сканирования): bash ./reconftw.sh -d target.com --report-only --export all

Полное руководство: См. Руководство по использованию.


☁️ Поддержка фреймворка Ax (ранее Axiom)

reconFTW интегрируется с Ax для распределённого сканирования, снижая время выполнения за счёт распределения задач между несколькими облачными экземплярами.

  • Настройка: Выберите reconftw как подготовщик во время конфигурации Ax (axiom-configure).
  • Управление флотом: Автоматически создавать и уничтожать флоты (AXIOM_FLEET_LAUNCH, AXIOM_FLEET_SHUTDOWN) или использовать существующий флот.
  • Конфигурация: Установите размер флота, регион и имя в reconftw.cfg (AXIOM_FLEET_COUNT, AXIOM_FLEET_REGIONS, AXIOM_FLEET_NAME).

Пример:

./reconftw.sh -d target.com -r -v

Детали: См. официальную документацию Ax и репозиторий attacksurge/ax.


💻 Поддержка Faraday

reconFTW интегрируется с Faraday для веб-отчётов и управления уязвимостями.

  • Настройка: Установите Faraday, выполните аутентификацию через faraday-cli и настройте рабочее пространство в reconftw.cfg (FARADAY_WORKSPACE).
  • Использование: Включите с помощью FARADAY=true в reconftw.cfg.

🧠 Интеграция ИИ

reconFTW использует ИИ для создания подробных отчетов из результатов сканирования с помощью инструмента reconftw_ai.

  • Модель: Настраиваемая модель ИИ (например, llama3:8b через AI_MODEL).
  • Типы отчетов: Markdown или обычный текст (AI_REPORT_TYPE).
  • Профили: Исполнительный, краткий или охотник за багами (AI_REPORT_PROFILE).
  • Структурированный вывод: reconftw сохраняет машиночитаемый отчет в ai_result/reconftw_analysis.json.
  • Управление контекстом: Ограничьте размер входных данных с помощью AI_MAX_CHARS_PER_FILE и AI_MAX_FILES_PER_CATEGORY.
  • Элементы безопасности: Переключите режим редактирования и строгий режим с помощью AI_REDACT и AI_STRICT.

Пример:

AI_EXECUTABLE="python3"
AI_MODEL="llama3:8b"
AI_REPORT_TYPE="md"
AI_REPORT_PROFILE="bughunter"
AI_MAX_CHARS_PER_FILE=50000
AI_MAX_FILES_PER_CATEGORY=200
AI_REDACT=true
AI_ALLOW_MODEL_PULL=false
AI_STRICT=false

🗂️ Управление данными

Безопасно управляйте данными сканирования и API-ключами с помощью частного репозитория.

Когда ASSET_STORE=true, reconFTW собирает ключевые находки в assets.jsonl во время каждого запуска, что упрощает синхронизацию только полезных дельт с вашим приватным репозиторием.

Makefile

Используйте предоставленный Makefile для удобного управления репозиторием (требуется GitHub CLI).

  1. Инициализация:

    bash export PRIV_REPO="$HOME/reconftw-data" make bootstrap

  2. Синхронизация с upstream:

    bash make sync

  3. Загрузка данных: bash make upload

  4. Линтинг / Форматирование скриптов:

    bash make lint # shellcheck for reconftw.sh, modules/*.sh & install.sh make fmt # shfmt с настройками проекта по умолчанию

  5. Запуск тестов:

    bash make test # unit тесты (bats-core) make test-all # unit + интеграционные тесты

Вручную

  1. Создайте приватный репозиторий на GitHub/GitLab.
  2. Склонируйте и настройте:

    bash git clone https://github.com/yourusername/reconftw-data cd reconftw-data git commit --allow-empty -m "Initial commit" git remote add upstream https://github.com/six2dez/reconftw git fetch upstream git rebase upstream/main master

  3. Загрузка изменений:

    bash git add . git commit -m "Data upload" git push origin master

  4. Обновление инструмента: bash git fetch upstream git rebase upstream/main master


🧪 Тестирование

reconFTW использует bats-core для автоматизированного тестирования.

Установка bats-core

# macOS
brew install bats-core

# Debian/Ubuntu
apt install bats

# From source
git clone https://github.com/bats-core/bats-core.git /tmp/bats
sudo /tmp/bats/install.sh /usr/local

Запуск тестов

# Unit tests only
make test

# Unit + integration tests
make test-all

# Via the runner script
./tests/run_tests.sh         # unit only
./tests/run_tests.sh --all   # unit + integration

Структура каталога тестов

tests/
├── run_tests.sh        # Test runner script
├── unit/               # Unit tests (fast, no network)
│   ├── test_sanitize.bats
│   ├── test_utils.bats
│   └── test_validation.bats
├── integration/        # Integration tests (require installed tools)
│   └── test_smoke.bats
├── security/           # Security tests (injection, etc.)
│   └── test_injection.bats
├── mocks/              # Mock tools for offline testing
└── fixtures/           # Shared test data files

Запуск тестов безопасности

# Test command injection prevention
make test-security

# Or directly
bats tests/security/

Написание тестов

Тесты используют шаблон --source-only для загрузки функций без выполнения основного скрипта:

#!/usr/bin/env bats

setup() {
    source ./reconftw.sh --source-only
}

@test "sanitize_domain strips invalid chars" {
    result="$(sanitize_domain 'exam;ple.com')"
    [ "$result" = "example.com" ]
}

CI-пайплайн

Рабочий процесс GitHub Actions (.github/workflows/tests.yml) выполняется при каждом push и pull request:

  1. ShellCheck — линтит reconftw.sh, modules/*.sh и install.sh
  2. Unit Tests — запускает все файлы tests/unit/*.bats
  3. Интеграционные тесты — устанавливает reconFTW и проверяет доступность инструмента

Карта мышления/Рабочий процесс

Mindmap


Пример видео

Video


🤝 Как внести вклад

Смотрите CONTRIBUTING.md для полного руководства по внесению вклада, включая настройку разработки, стиль кода, тестирование и процесс PR.

Быстрые ссылки:


🔒 Безопасность

Для политики безопасности, управления секретами и сообщения об уязвимостях см. SECURITY.md.


❓ Нужна помощь?


💖 Поддержка этого проекта

Поддержите развитие reconFTW через:

DigitalOcean Referral Badge


🙏 Благодарности

Особая благодарность следующим сервисам за поддержку reconFTW:


📝 Журнал изменений

См. CHANGELOG.md для подробного списка изменений в каждом релизе.


🛠️ Разработка

Структура проекта

reconftw/
├── reconftw.sh          # Main entry point (~500 lines)
├── reconftw.cfg         # Configuration file
├── modules/             # Phase modules
│   ├── utils.sh         # Utilities, sanitization, caching, circuit breaker
│   ├── core.sh          # Framework core, logging, lifecycle, health check
│   ├── modes.sh         # Scan modes, argument parsing
│   ├── subdomains.sh    # Subdomain enumeration
│   ├── web.sh           # Web analysis, nuclei scans
│   ├── vulns.sh         # Vulnerability scanning
│   ├── osint.sh         # OSINT functions
│   └── axiom.sh         # Ax/Axiom fleet helpers
├── lib/                 # Pure utility libraries
│   └── validation.sh    # Input validation functions
├── tests/               # Test suite (100+ tests)
│   ├── unit/            # Unit tests (bats)
│   ├── integration/     # Integration/smoke tests
│   └── security/        # Injection prevention tests
├── docs/                # Documentation
│   └── ARCHITECTURE.md  # Detailed architecture guide
└── secrets.cfg.example  # Template for API keys

Запуск тестов

make test          # Unit tests
make test-security # Security tests
make test-all      # All tests
make lint          # Shellcheck
make lint-fix      # Auto-fix with shfmt

Рабочий процесс разработки

# 1. Source without executing (for testing)
source ./reconftw.sh --source-only

# 2. Test individual functions
sanitize_domain "test;domain.com"

# 3. Run health check
./reconftw.sh --health-check

# 4. Dry run to preview
./reconftw.sh -d example.com -r --dry-run

Вклад

См. CONTRIBUTING.md для рекомендаций по разработке и docs/ARCHITECTURE.md для технических деталей.


📜 Лицензия

reconFTW лицензируется согласно MIT License.


⭐ История звёзд

[Star History Chart(https://www.star-history.com/#six2dez/reconftw&Date)

Войдите, чтобы оставить комментарий