4、信息收集自动化:AI驱动的子域名爆破、智能端口扫描、Web指纹识别、Google Dorking自动化

信息收集,说白了就是渗透测试的「侦察兵」阶段。你想想看,连目标有多少资产、开了哪些门(端口)、用了什么技术栈都不知道,后面怎么打?

我个人习惯,在拿到授权后的第一件事,不是急着扫漏洞,而是先把信息收集做到位。这一步做得越细,后面的攻击面就越清晰。今天我们就聊聊怎么用AI把这套流程自动化起来。

4.1 AI驱动的子域名爆破

子域名爆破,核心思路就是「猜」。传统工具像subfinder、amass,靠的是字典和DNS解析。但问题来了——字典总有遗漏,尤其是那些冷门的、自定义的子域名。

AI能干什么?它能「联想」。我曾在一次项目中,目标是一家金融科技公司。传统工具只扫出了api、admin、mail这些常规子域名。但AI模型通过分析公司官网的文本、招聘信息、甚至GitHub上的代码注释,推测出了internal-risk-engine和settlement-dev这两个子域名。结果呢?后者直接暴露了一个未授权的开发环境。

具体怎么做?我推荐一个组合拳:

  1. 基础爆破:先用subfinder跑一遍常见字典,速度最快。
  2. AI生成候选词:用GPT或本地部署的LLM,输入目标公司的业务描述,让它生成「可能存在的子域名前缀」。比如「支付系统」可能衍生出pay、payment、settle、clearing。
  3. 智能验证:把AI生成的候选词,结合DNS解析和HTTP探活,批量验证。

核心思路:AI不是替代传统工具,而是补充字典的盲区。它擅长的是「语义联想」,而不是暴力枚举。

4.2 智能端口扫描

端口扫描,nmap是永远的神。但问题是,全端口扫描太慢了。扫一个C段,默认65535个端口,跑完得半小时起步。

AI怎么优化?说白了就是「猜重点」。我记得有一次,客户要求三天内完成一个大型内网的渗透测试。如果全端口扫,光扫描就得两天。后来我用了AI辅助的扫描策略:

  • 第一步:先扫Top 1000端口,快速定位常见服务(HTTP、SSH、MySQL等)。
  • 第二步:AI根据目标行业和已知指纹,预测「非常见但高危」的端口。比如金融行业,大概率会有1521(Oracle)、8443(备用Web)、2375(Docker未授权)。
  • 第三步:只对AI预测的端口进行深度扫描,而不是全量扫描。

这样做,扫描时间能缩短70%以上,而且命中率反而更高。为什么?因为AI知道哪些端口「更值得看」。

避坑指南:我曾经遇到过AI预测端口全扫完了,但漏了一个2222端口(SSH改端口)。后来我加了一条规则——AI预测之外,再随机抽500个端口做补充扫描。嗯,这样基本就不会漏了。

4.3 Web指纹识别

Web指纹识别,就是判断目标网站用了什么技术栈。是Nginx还是Apache?是PHP还是Java?是WordPress还是自研CMS?

传统工具像WhatWeb、Wappalyzer,靠的是特征匹配。但有个痛点——特征库更新慢,遇到自定义框架或冷门CMS,基本就抓瞎了。

AI的做法是「多模态识别」。我举个例子:

  • HTML特征:AI分析页面结构、CSS类名、JS变量命名风格。比如某个CMS的JS文件里有个window.APP_VERSION = "2.3.1",传统工具可能漏掉,但AI能识别出这是版本信息。
  • HTTP头特征:X-Powered-By、Set-Cookie的模式。AI能区分出「这是Tomcat的默认Session ID格式」还是「JBoss的」。
  • 错误页面特征:故意访问一个不存在的路径,看404页面的内容。AI能通过文本相似度,匹配到已知的CMS错误模板。

个人经验:我曾在一次红队演练中,目标网站看起来就是个普通的Nginx静态页。但AI通过分析页面里一个隐藏的<!--#include virtual="/header.html"-->注释,判断出这是SSI(Server Side Includes)技术。顺着这个线索,我们找到了一个SSI注入漏洞。传统指纹工具根本不会去解析注释里的SSI指令。

4.4 Google Dorking自动化

Google Dorking,就是用特定的搜索语法,在Google里找敏感信息。比如site:target.com filetype:sql找数据库备份,inurl:admin intitle:index of找目录遍历。

但手动搜太累了,而且Google的反爬机制很严。AI能做什么?

  1. 自动生成Dork:输入目标域名,AI自动组合出几十上百条Dork语法。比如针对example.com,AI会生成:
site:example.com filetype:pdf
site:example.com inurl:wp-admin
site:example.com intitle:"error" | intitle:"warning"
site:example.com ext:log | ext:conf | ext:env
site:example.com "password" | "username" | "secret"
  1. 智能去重与排序:AI根据历史数据,判断哪些Dork的「产出率」更高。比如filetype:sql的命中率通常比filetype:pdf低,但一旦命中就是高危。AI会优先执行高价值Dork。
  2. 绕过反爬:AI控制请求频率、随机User-Agent、使用代理池。我习惯用scrapy + AI调度,让爬虫的行为更像真人。

注意:Google Dorking有法律风险。未经授权扫描目标,可能违反计算机滥用法规。我每次做Dorking之前,都会确认授权范围,并且只搜索公开信息。千万别手贱去搜那些「明显不该公开」的内容,比如数据库备份文件。你看到了,不代表你可以下载。

4.5 自动化工作流整合

上面这些步骤,单独做都很强。但真正的威力在于「整合」。我推荐一个流水线:

步骤 工具/方法 AI介入点
子域名爆破 subfinder + AI生成候选词 语义联想补充字典
端口扫描 nmap + AI预测端口 优先扫描高概率端口
指纹识别 WhatWeb + AI多模态分析 识别自定义框架和冷门CMS
Google Dorking 自定义爬虫 + AI生成Dork 自动组合语法、排序、反爬

你可以用Python写一个调度器,把上面四个模块串起来。输入一个域名,输出一份「资产清单」:有哪些子域名、开放了哪些端口、用了什么技术栈、在Google上泄露了什么信息。

小技巧:我习惯把AI生成的中间结果(比如候选子域名、预测端口)保存到JSON文件里。这样即使某个步骤失败了,也能手动检查AI的「思考过程」,看看它为什么推荐这些资产。有时候,AI的「错误推荐」反而能给你新的思路。

好了,信息收集自动化这块,核心就是「让AI帮你猜、帮你筛、帮你搜」。你想想看,以前一个人手动搞这些,一天能搞定一个中型目标就不错了。现在有了AI辅助,一个小时就能把资产摸个七七八八。剩下的时间,就可以专心去挖漏洞了。