-
-
从域名到资产图谱:AI驱动的自动化侦察实战
-
发表于: 2026-9-26 17:19 98
-
一、为什么侦察是渗透测试的第一步
渗透测试的经典流程是:侦察 → 扫描 → 漏洞验证 → 利用 → 报告。其中侦察是最基础也是最关键的一步——你看不到的资产,就不可能发现它的漏洞。
传统侦察方式需要手动敲一堆命令:subfinder找子域名、httpx探活、nmap扫端口、whatweb识别指纹。一个中等规模的目标,光侦察就要花半天时间。
这篇文章分享我在开发AI安全渗透测试平台时,如何把整个侦察流程自动化,并且让AI根据侦察结果自动决定下一步动作。
二、侦察自动化的架构设计
我的侦察模块分为四层:
第一层:子域名枚举
- 集成subfinder、assetfinder、amass
- 多源并发,结果去重
- 支持字典爆破(puredns)
第二层:存活探测
- httpx批量探活,支持自定义端口
- 提取标题、状态码、技术栈
- 自动识别CDN(Cloudflare/Akamai等)
第三层:端口扫描
- nmap快速扫描(top 1000端口)
- 服务版本识别
- 常见高危端口标记(22/3389/6379/27017等)
第四层:指纹识别
- WAF识别(wafw00f)
- CMS识别(WordPress/Drupal/Joomla等)
- 框架识别(Spring/ThinkPHP/Laravel等)
- 中间件识别(Nginx/Apache/Tomcat等)
三、核心代码实现
侦察模块的核心是一个异步任务调度器,把四层任务串联起来:
async def recon_pipeline(target: str) -> ReconResult: # 第一层:子域名枚举 subdomains = await subfinder_scan(target) # 第二层:存活探测 alive_urls = await httpx_probe(subdomains) # 第三层:端口扫描(对根域名和关键子域) ports = await nmap_scan(target) # 第四层:指纹识别 fingerprints = await fingerprint_detect(alive_urls) return ReconResult( target=target, subdomains=subdomains, alive_urls=alive_urls, ports=ports, fingerprints=fingerprints )
关键优化点:
- 并发控制:用信号量限制并发数,避免被目标WAF封禁
- 超时处理:每个工具都有独立超时,避免卡死
- 结果缓存:同一目标的侦察结果缓存24小时,避免重复扫描
- 增量更新:支持只扫描新增的子域名
四、AI如何利用侦察结果
侦察完成后,AI决策引擎会分析结果并决定下一步:
def ai_decide_next_step(recon_result: ReconResult) -> list[Action]:
actions = []
# 如果发现开放3389端口,标记为RDP爆破目标
if any(p.port == 3389 for p in recon_result.ports):
actions.append(Action(type="rdp_bruteforce", priority="high"))
# 如果发现WordPress,启动WPScan
if any("WordPress" in f.cms for f in recon_result.fingerprints):
actions.append(Action(type="wpscan", priority="medium"))
# 如果发现Spring框架,检查Spring漏洞
if any("Spring" in f.framework for f in recon_result.fingerprints):
actions.append(Action(type="spring_vuln_check", priority="high"))
# 如果发现6379端口未授权,直接验证
if any(p.port == 6379 and "redis" in p.service.lower() for p in recon_result.ports):
actions.append(Action(type="redis_unauth", priority="critical"))
return actionsAI会根据侦察结果自动生成下一步测试计划,不需要人工判断。
五、实战效果
对一个中等规模目标(约50个子域名):
| 指标 | 传统手动 | 自动化侦察 |
|---|---|---|
| 耗时 | 4-6小时 | 15-20分钟 |
| 子域名覆盖率 | 约60% | 约95% |
| 端口扫描 | 只扫关键IP | 全部IP |
| 指纹识别 | 手动记录 | 自动提取 |
| 下一步决策 | 人工判断 | AI自动规划 |
六、小结
侦察自动化是整个AI渗透测试平台的基础。把这一层做好,后面的漏洞扫描、AI决策、报告生成都有了数据支撑。
下一篇我会分享漏洞扫描引擎的开发:如何集成Nuclei、SQLMap、Nikto,并且实现漏洞去重和误报过滤。
本文是「AI安全渗透测试实战」系列的第2篇。完整课程包含12章40节,从环境搭建到完整平台开发,学完直接能用。项目开源地址:18aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5I4L8%4g2^5K9h3I4A6M7$3W2Q4x3V1k6S2K9g2)9J5k6s2y4W2j5%4g2J5K9i4c8&6i4K6u0V1j5h3N6W2L8Y4c8Q4x3X3c8H3L8r3q4@1k6X3!0J5L8i4j5@1y4g2)9J5k6e0l9`. · 12领域59个安全代理 · MIT许可证