AM4517UMOR4NG/Automated-Recon-Suite

GitHub: AM4517UMOR4NG/Automated-Recon-Suite

面向漏洞赏金猎人的高性能异步侦察与漏洞扫描套件,涵盖子域名枚举、接管检测、CORS 审计和敏感文件 Fuzz,同时附带对应的防御规则配置。

Stars: 0 | Forks: 0

# 自动化侦察套件 ## 📂 仓库结构 ``` Automated-Recon-Suite/ │ ├── README.md │ ├── scanners/ # All offensive scanning tools │ ├── crt-harvester.js # CT log subdomain enumerator (passive recon) │ ├── ghost-engine.js # Directory & config leak scanner │ ├── specter-cors.js # Multi-vector CORS misconfiguration detector │ ├── echo-takeover.js # Subdomain takeover analyzer (DNS-first) │ └── vanguard-dns.js # DNS brute-forcing & wildcard filter engine │ ├── wordlists/ # Input data files for scanners │ ├── paths.txt # 200+ sensitive file/directory paths │ ├── domains.txt # 500 sample target domains │ └── subdomains.txt # 500+ common subdomain prefixes │ └── detection/ # Defensive configs & middleware ├── fail2ban_scanner_protection.conf ├── modsecurity_waf_rules.conf └── rate_limiter.js ``` ## ⚔️ 进攻性扫描器 所有扫描器共享相同的架构基础: - **零外部依赖** — 仅使用 Node.js 内置模块 - 通过 `Keep-Alive` agent 实现 **TCP 连接池** - **受控并发** — 基于信号量的队列防止 RAM 耗尽 - 在超时/连接错误时**指数退避重试** - **流式 I/O** — 逐行读取字典,绝不加载到内存中 - **双重输出** — 实时控制台 + 可选的 JSON/TXT 文件 (`-o`) ### 0. CRT Harvester v1.0 (被动侦察) **文件:** `scanners/crt-harvester.js` **目的:** 通过 crt.sh 从公开的证书透明度日志中被动枚举子域名。此工具**绝不联系目标** — 所有数据均来自公开记录的 SSL 证书。 **内置预设:** | 预设 | 域名 | 描述 | |---|---|---| | `google` | 37 个根域名 | 包含收购公司(Fitbit, Waze, Mandiant, Kaggle 等)在内的完整 Google/Alphabet 资产组合 | **用法:** ``` node scanners/crt-harvester.js -d target.com -o target_subs.txt node scanners/crt-harvester.js --preset google -o google_all_subs.txt node scanners/crt-harvester.js -d example.com,sub.example.com --delay 5000 ``` **所有参数:** | 参数 | 描述 | 默认值 | |---|---|---| | `-d, --domains` | 逗号分隔的根域名 | *(除非使用预设,否则必填)* | | `--preset` | 使用内置域名集 | *可用: `google`* | | `-o, --output` | 将子域名保存到文本文件 | *仅控制台输出* | | `--delay` | API 调用之间的延迟(毫秒) | `3000` | | `-h, --help` | 显示帮助 | — | ### Ghost Engine v2.0 **文件:** `scanners/ghost-engine.js` **目的:** 使用字典对目标 URL 进行 Fuzz,以发现隐藏文件、暴露的配置和泄露的凭证。 **匹配器(内置 8 种):** | 严重程度 | 检测内容 | |---|---| | CRITICAL | `.env` 机密信息、AWS 密钥、数据库凭证、Git 配置 | | HIGH | 目录列表、堆栈跟踪、Spring Actuator、PHPInfo | | MEDIUM | Swagger/OpenAPI 文档 | | LOW | 登录/管理面板 | **用法:** ``` node scanners/ghost-engine.js -u https://target.com -w wordlists/paths.txt node scanners/ghost-engine.js -u https://target.com -w wordlists/paths.txt -c 100 -o results.json node scanners/ghost-engine.js -u https://target.com -w wordlists/paths.txt -fs 1234 # filter custom 404 by size ``` **所有参数:** | 参数 | 描述 | 默认值 | |---|---|---| | `-u, --url` | 目标基础 URL | *(必填)* | | `-w, --wordlist` | 字典文件路径 | `./wordlists/paths.txt` | | `-c, --concurrency` | 并发请求数 | `50` | | `-t, --timeout` | 单次请求超时时间(毫秒) | `8000` | | `-r, --retries` | 单次请求最大重试次数 | `2` | | `-fs, --filter-size` | 忽略具有此确切字节数的响应 | *禁用* | | `-o, --output` | 将发现结果保存到 JSON 文件 | *禁用* | ### Specter CORS Scanner v2.0 **文件:** `scanners/specter-cors.js` **目的:** 检测允许跨域数据窃取的跨域资源共享 (CORS) 配置错误。 **测试向量(每个域名):** 1. 反射任意 origin (`https://evil-attacker.com`) 2. 子域信任 (`https://evil.target.com`) 3. Null origin 注入 (`null`) 4. 带有 `Access-Control-Request-Method: PUT` 的预检 `OPTIONS` 请求 **严重程度分类:** | 严重程度 | 条件 | |---|---| | CRITICAL | 反射 origin + `Access-Control-Allow-Credentials: true` | | CRITICAL | Null origin + 凭证 | | HIGH | 无凭证的反射 origin | | HIGH | 通配符 `*` + 凭证(配置错误) | **用法:** ``` node scanners/specter-cors.js -l wordlists/domains.txt node scanners/specter-cors.js -l wordlists/domains.txt -c 50 -o cors_results.json ``` **所有参数:** | 参数 | 描述 | 默认值 | |---|---|---| | `-l, --list` | 域名列表文件 | `./wordlists/domains.txt` | | `-c, --concurrency` | 并发请求数 | `30` | | `-t, --timeout` | 单次请求超时时间(毫秒) | `8000` | | `-o, --output` | 将发现结果保存到 JSON 文件 | *禁用* | ### Echo Takeover Scanner v2.0 **文件:** `scanners/echo-takeover.js` **目的:** 识别具有指向已停用云服务的悬挂 CNAME 记录的子域名。 **工作原理:** 1. 解析每个域名的 DNS CNAME 记录 2. 将 CNAME 与已知的云服务提供商模式进行匹配 3. 仅在 CNAME 匹配时才发送 HTTP 请求 — 极大减少噪音 4. 检查响应主体中确认接管的错误消息 **指纹数据库(21 家提供商):** AWS S3, CloudFront, Elastic Beanstalk · Azure Websites, Traffic Manager, Blob · Google Cloud Storage · Heroku · GitHub Pages · GitLab Pages · Shopify · Tumblr · WordPress.com · Pantheon · Surge.sh · Fastly · Fly.io · Netlify · Vercel · Render · Zendesk **用法:** ``` node scanners/echo-takeover.js -l wordlists/domains.txt node scanners/echo-takeover.js -l wordlists/domains.txt -c 50 -o takeover_results.json ``` **所有参数:** | 参数 | 描述 | 默认值 | |---|---|---| | `-l, --list` | 域名列表文件 | `./wordlists/domains.txt` | | `-c, --concurrency` | 并发检查数 | `30` | | `-t, --timeout` | 单次请求超时时间(毫秒) | `8000` | | `-o, --output` | 将发现结果保存到 JSON 文件 | *禁用* | ### Vanguard DNS Resolver v2.0 **文件:** `scanners/vanguard-dns.js` **目的:** 通过高速 DNS 暴力破解枚举活动子域名,并自动过滤误报。 **核心功能 — 泛解析检测:** 在扫描开始之前,该工具会查询 3 个随机的、不存在的子域名。如果它们全都解析到同一个 IP,该 IP 将被标记为泛解析地址,并自动从结果中过滤掉。 **解析的记录类型:** | 记录 | 默认 | 使用 `-a` 参数时 | |---|---|---| | A (IPv4) | ✅ | ✅ | | CNAME | ✅ | ✅ | | AAAA (IPv6) | ❌ | ✅ | | MX | ❌ | ✅ | | TXT | ❌ | ✅ | **用法:** ``` node scanners/vanguard-dns.js -d target.com -w wordlists/subdomains.txt node scanners/vanguard-dns.js -d target.com -w wordlists/subdomains.txt -c 200 -a -o dns_results.json ``` **所有参数:** | 参数 | 描述 | 默认值 | |---|---|---| | `-d, --domain` | 目标域名 | *(必填)* | | `-w, --wordlist` | 子域名字典 | `./wordlists/subdomains.txt` | | `-c, --concurrency` | 并发 DNS 查询数 | `100` | | `-a, --all-records` | 同时解析 AAAA, MX, TXT | *禁用* | | `--dns` | 自定义 DNS 服务器(逗号分隔) | `1.1.1.1,8.8.8.8,9.9.9.9` | | `-o, --output` | 将结果保存到 JSON 文件 | *禁用* | ## 🛡️ 防御工程 用于检测和拦截上述实现的精确扫描技术的配置。 ### Fail2ban (`detection/fail2ban_scanner_protection.conf`) 监控 Nginx/Apache 访问日志,查找对敏感路径(`.env`, `.git`, `.sql`, `.zip`, `actuator/*`, `swagger*`)的重复请求。在 60 秒内命中 3 次后,通过 `iptables` 封禁违规 IP。 ### ModSecurity WAF (`detection/modsecurity_waf_rules.conf`) 三条规则: - **Rule 1000001:** 拦截带有已知扫描器 User-Agent 字符串的请求 (`sqlmap`, `nuclei`, `nikto`, `ffuf`) - **Rule 1000002:** 拦截对敏感文件扩展名的直接访问 (`.env`, `.git`, `.bak`, `.sql`, `.zip`) - **Rule 1000003:** 拦截针对云元数据端点 (`/latest/meta-data/`) 的 SSRF 尝试 ### Rate Limiter (`detection/rate_limiter.js`) 使用令牌桶算法的内存型 Node.js/Express 中间件。 - 每个 IP 20 个令牌,每秒补充 2 个令牌 - 5 分钟后自动清除不活动的 IP(防止内存泄漏) - 返回带有 `Retry-After` 响应头的 `429 Too Many Requests` ``` const rateLimiter = require('./detection/rate_limiter'); app.use(rateLimiter); ``` ## 🔄 推荐工作流 ``` Phase 1 — Discover subdomains: $ node scanners/vanguard-dns.js -d target.com -w wordlists/subdomains.txt -o found.json Phase 2 — Check for subdomain takeover: $ node scanners/echo-takeover.js -l active_domains.txt -o takeover.json Phase 3 — Audit CORS policies: $ node scanners/specter-cors.js -l active_domains.txt -o cors.json Phase 4 — Fuzz for hidden files and leaks: $ node scanners/ghost-engine.js -u https://api.target.com -w wordlists/paths.txt -o leaks.json ``` *免责声明:本仓库仅供教育目的和授权的安全测试使用。未经明确书面许可,请勿将其用于攻击目标。*
标签:Bug Bounty, GitHub, GNU通用公共许可证, MITM代理, Node.js, 可自定义解析器, 子域名枚举, 实时处理, 密码管理, 系统安全, 自定义脚本