信息收集与资产发现:子域名枚举、端口扫描、指纹识别、Google Hacking
各位同学,咱们直接进入正题。信息收集这一步,说白了就是搞清楚「对手到底有多少家底」。你连对方有多少个子域名、开了哪些端口、跑了什么服务都不知道,后面的渗透测试就是瞎猫碰死耗子。我做了这么多年安全,见过太多人上来就扫漏洞,结果扫了半天发现目标根本不是同一个网段——这种低级错误,咱们今天必须避免。
1. 子域名枚举:别只盯着主站
很多人觉得主站防护做得好就万事大吉了。我告诉你,真正的问题往往藏在子域名里。为什么呢?因为子域名经常被遗忘,补丁没打、配置裸奔、甚至还有测试环境直接挂在公网上。
我个人习惯用 Sublist3r 和 Amass 配合使用。Sublist3r 快,适合快速摸家底;Amass 慢但全,适合深度挖掘。
# 快速枚举
sublist3r -d example.com -o subdomains.txt
# 深度枚举(建议跑个十几分钟)
amass enum -d example.com -o amass_output.txt
还有一个容易被忽略的点:证书透明度日志。你可以用 crt.sh 直接查某个域名的所有证书,里面经常暴露一堆子域名。我曾在一次项目中,通过 crt.sh 找到了一个被遗忘的 Jenkins 测试环境,默认密码都没改——嗯,后面的事你们懂的。
2. 端口扫描:Nmap 的正确打开方式
Nmap 是端口扫描的标配,但很多人只会用 nmap -sV 192.168.1.1。说实话,这样扫出来的结果,漏掉的东西比扫到的多。
我建议你按这个流程来:
- 先快速发现存活主机:
nmap -sn 192.168.1.0/24,别上来就全端口扫,浪费时间。 - 再扫常用端口:
nmap -sT -sV -p 1-10000 target,覆盖大部分服务。 - 最后针对性扫全端口:
nmap -sT -sV -p- target,这个很慢,但值得。
-sS(半开扫描)去扫生产环境。很多 IDS/IPS 会报警,甚至直接封你 IP。我一般用 -sT(TCP 全连接),虽然慢一点,但隐蔽性更好。
扫到端口后,别急着走。看看版本号,去漏洞库查一下。比如 OpenSSH 7.2p2 之前有个著名的漏洞,我当年就是靠这个拿了一台服务器。
3. 指纹识别:知道对手穿什么铠甲
指纹识别就是搞清楚目标用了什么 Web 服务器、什么框架、什么中间件。你知道了这些,才能对症下药。
我常用的工具有:
- WhatWeb:命令行工具,识别速度快,结果详细。
- Wappalyzer:浏览器插件,适合快速查看。
- BuiltWith:在线工具,能查到技术栈的版本号。
# WhatWeb 使用示例
whatweb example.com
# 输出示例(简化)
http://example.com [200 OK] Apache[2.4.41], PHP[7.4.3], jQuery[3.5.1]
这里有个坑:指纹识别不是百分百准确的。有些网站会故意隐藏版本号,或者用 WAF 混淆。我遇到过好几次,WhatWeb 报的是 Nginx,结果实际上是 Apache 套了层反向代理。所以,多工具交叉验证是必须的。
4. Google Hacking:搜索引擎也是你的武器
Google Hacking 不是让你去黑 Google,而是利用 Google 的搜索语法找到目标泄露的信息。说白了,就是帮别人找他们自己都不知道的「秘密」。
常用的语法有:
| 语法 | 作用 | 示例 |
|---|---|---|
site: |
限定搜索域名 | site:example.com |
intitle: |
搜索标题中的关键词 | intitle:"index of" |
inurl: |
搜索 URL 中的关键词 | inurl:admin |
filetype: |
搜索特定文件类型 | filetype:sql |
intext: |
搜索页面正文内容 | intext:"password" |
举个例子,你想找某个网站的配置文件泄露,可以搜:site:example.com filetype:env。我曾经用这个语法,在一个政府网站上找到了数据库连接信息——嗯,那个项目最后变成了应急响应演练。
site:example.com intitle:"login" inurl:admin,能直接定位到后台登录页面。
知识体系总览
下面这张图,是我自己总结的信息收集流程。你照着这个走,基本不会漏东西。
避坑指南
最后,分享几个我踩过的坑:
- 别信单一工具的结果:子域名枚举用三个工具交叉验证,端口扫描用两种方式确认,指纹识别至少两个工具对比。
- 注意扫描频率:别用默认并发去扫,尤其是 Nmap。我建议加
--min-rate 100 --max-rate 500控制速度,不然很容易被 WAF 封掉。 - Google Hacking 别用个人账号:搜敏感信息时,Google 可能会要求验证码。我一般用临时邮箱注册的账号,或者直接用 DuckDuckGo 替代。
- 记录所有发现:我习惯用 Markdown 记笔记,每个子域名、每个端口、每个指纹都记下来。你永远不知道哪个细节会在后面派上用场。
好了,信息收集这块就讲这么多。记住一句话:你收集的信息越全,后面的漏洞排查就越轻松。别偷懒,每一步都做到位,你会发现渗透测试其实没那么难。