第三章:信息收集与资产识别归纳总结

好,到了第三章,咱们正式开始动手。信息收集和资产识别,说白了就是先搞清楚“我们要守的是什么东西”。你连自己家里有几扇门、几扇窗都不知道,怎么防贼?

我在做红队评估时,见过太多团队上来就拿扫描器乱撞,结果漏掉了最关键的内部后台。今天就把我个人这些年积累的资产识别方法掰开揉碎讲清楚。

3.1 资产到底包含什么?

别以为资产就只是域名+IP。我习惯把资产分成三类:

  • 显性资产:域名、子域名、公网IP、证书、开放端口、Web服务。
  • 半显性资产:GitHub泄漏、网盘文档、Shodan/Fofa上的暴露、第三方托管。
  • 隐性资产:内部DNS记录、内网IP段、云服务、废弃的测试站点。

你想想看,很多攻击者就是从一条GitHub泄露的AccessKey摸进你的云环境的。我遇到过一家公司,他们把生产环境的数据库密码明文写在Gist里……嗯,那个案例我就不细说了,反正加班半个月收拾烂摊子。

核心原则:资产的认定范围要“宁多勿少”。宁可列出100条无用记录,也别漏掉1条关键暴露路径。

3.2 信息收集的五个步骤

我个人习惯按以下顺序来做,不容易乱:

  1. 明确目标范围:拿到客户给的域名列表、IP段,先画一个范围边界。别跑偏。
  2. 被动收集:不主动发任何包,只利用公开情报。比如证书透明度日志、DNS记录、搜索引擎、威胁情报平台。
  3. 主动探测:用扫描器做端口扫描、服务指纹识别、Web目录爆破。但注意分寸,别把对方IDS打报警了。
  4. 梳理关系:把上面两步的数据做关联。比如哪个IP对应哪个域名,哪个服务挂在哪个CDN后面。
  5. 去重与打标签:把重复的子域名、泛解析干掉,给每个资产打上标签(生产/测试/废弃/第三方)。

我曾经有一次在主动探测阶段踩过坑——对着客户的金融系统直接做全端口扫描,结果被SOC直接封了IP,后续测试远程连不回去……后面都是先给SOC报备再动手。

重要提醒:在做主动探测前,务必拿到书面授权,并和对方安全团队确认好扫描时段、频率、排除范围。否则你就算本事再大,也会因为违规而被叫停。

3.3 资产识别常用工具

工具不在多,在于会用。我常用这几样:

工具/平台 用途 个人经验点
Subfinder 子域名被动收集 配合多个API源,效果比单用证书日志好得多
Nmap 端口扫描+服务识别 别用默认参数,加上 -sV -A 再看
httpx 批量探测Web存活状态 处理泛解析很稳,加 -sc -title 能快速筛出重点
Fofa / Shodan 攻击面搜索引擎 我通常会组合使用,Fofa查Web指纹比Shodan准
GitGuardian (CLI) 扫描Git泄漏 记得先git clone再扫,别扫到别人的仓库
小技巧:把上面这些工具串成一条流水线脚本,每天自动跑一遍,对比新增的资产。我在项目里就用这种“日增量”方式,抓到过三个没人知道的测试域名。

3.4 资产归纳与输出格式

光收集不行,还要归纳。我建议用表格+标签体系来管:

# 资产清单示例(Markdown 表格)
| 域名 | IP | 开放端口 | 服务 | 标签 | 备注 |
|------|----|----------|------|------|------|
| admin.example.com | 203.0.113.5 | 443,8080 | Nginx,Tomcat | 生产 | 有管理后台 |
| test-api.example.com | 203.0.113.6 | 3000 | Node.js | 测试 | 已废弃?需要确认 |
| dev.example.com | 203.0.113.10 | 22,80,443 | SSH,Nginx | 开发 | 使用了默认凭证 |

你想想看,如果最后提交的资产清单里没有标签,客户怎么知道哪些是关键的?我个人习惯在导出前做一次“资产排序” —— 按风险高低排,把带有“管理后台”、“默认密码”、“未知服务”的资产放到最前面。

交付物三要素:资产清单表(带标签)、暴露路径图(SVG)、风险初步评级。缺一不可。

3.5 本章知识结构:信息收集与资产识别流程

下面这张SVG图把整个流程串起来了。你看完应该能对整个环节有个全景认知。

信息收集与资产识别流程 1. 明确目标范围 2. 被动收集情报 3. 主动探测扫描 4. 关联梳理 & 去重 5. 打标签 & 输出清单 被动收集:证书日志 DNS历史、搜索引擎 主动探测:端口扫描 Web指纹、目录爆破 输出:资产清单表 暴露路径图、风险评级
关于SVG图的用法:这张图我建议你打印出来贴工位旁边。每次做资产识别前扫一眼,保证不遗漏步骤。我自己就是这样过来的。

3.6 常见踩坑与避坑

  • 泛解析陷阱:很多DNS服务商会把所有未定义的子域名指向同一个IP。我用httpx的时候会加 -probe 参数做真实请求,避免误报。
  • CDN真实IP暴露:你以为用了Cloudflare就安全了?我遇到过真实IP通过历史DNS记录暴露的情况。记得查一下SecurityTrails上的A记录历史。
  • 测试环境遗忘:这是最头疼的。我之前就发现过一个客户在AWS上开了个t2.micro跑着Rails 4.0,而且S3存储桶公开可读。这种往往在主动收集里死活找不到,全靠被动情报里的子域名挖掘。
避坑指南:我曾经在资产去重阶段漏掉了CNAME解析关系,导致一个内部系统被当作“已下线”处理。结果后续渗透测试中对方直接从那个“下线”的系统打穿了内网……后来我强制团队在资产清单里加一列“CNAME解析链”,再也不漏了。

好了,信息收集和资产识别这部分我基本讲透了。你接下来真正动手的时候,记得把流程走一遍,然后对照这张SVG图检查有没有遗漏。有了扎实的资产底子,后面的暴露路径分析才能做到有的放矢。