4、信息收集自动化:AI驱动的子域名爆破、智能端口扫描、Web指纹识别、Google Dorking自动化
信息收集,说白了就是渗透测试的「侦察兵」阶段。你想想看,连目标有多少资产、开了哪些门(端口)、用了什么技术栈都不知道,后面怎么打?
我个人习惯,在拿到授权后的第一件事,不是急着扫漏洞,而是先把信息收集做到位。这一步做得越细,后面的攻击面就越清晰。今天我们就聊聊怎么用AI把这套流程自动化起来。
4.1 AI驱动的子域名爆破
子域名爆破,核心思路就是「猜」。传统工具像subfinder、amass,靠的是字典和DNS解析。但问题来了——字典总有遗漏,尤其是那些冷门的、自定义的子域名。
AI能干什么?它能「联想」。我曾在一次项目中,目标是一家金融科技公司。传统工具只扫出了api、admin、mail这些常规子域名。但AI模型通过分析公司官网的文本、招聘信息、甚至GitHub上的代码注释,推测出了internal-risk-engine和settlement-dev这两个子域名。结果呢?后者直接暴露了一个未授权的开发环境。
具体怎么做?我推荐一个组合拳:
- 基础爆破:先用
subfinder跑一遍常见字典,速度最快。 - AI生成候选词:用GPT或本地部署的LLM,输入目标公司的业务描述,让它生成「可能存在的子域名前缀」。比如「支付系统」可能衍生出
pay、payment、settle、clearing。 - 智能验证:把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能做什么?
- 自动生成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"
- 智能去重与排序:AI根据历史数据,判断哪些Dork的「产出率」更高。比如
filetype:sql的命中率通常比filetype:pdf低,但一旦命中就是高危。AI会优先执行高价值Dork。 - 绕过反爬: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辅助,一个小时就能把资产摸个七七八八。剩下的时间,就可以专心去挖漏洞了。