首页
社区
课程
招聘
从域名到资产图谱:AI驱动的自动化侦察实战
发表于: 2026-9-26 17:19 98

从域名到资产图谱: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
    )

关键优化点:

  1. 并发控制:用信号量限制并发数,避免被目标WAF封禁
  2. 超时处理:每个工具都有独立超时,避免卡死
  3. 结果缓存:同一目标的侦察结果缓存24小时,避免重复扫描
  4. 增量更新:支持只扫描新增的子域名

四、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 actions

AI会根据侦察结果自动生成下一步测试计划,不需要人工判断。

五、实战效果

对一个中等规模目标(约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许可证






传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

最后于 2026-9-27 20:33 被wx_欧西编辑 ,原因:
收藏
点赞 ・0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回