4. 网络拓扑分析与攻击面理解
说实话,做渗透测试或者安全评估,很多人一上来就拿着扫描器乱扫。我觉得这样效率很低。
为什么?因为你连网络长什么样都不知道。你连资产在哪、数据往哪流都不清楚,扫出来的漏洞再多,也拼不成一条真正的攻击路径。
我个人习惯,第一步永远是先搞定拓扑。说白了,就是画地图。你得知道敌人在哪,才能决定从哪打。
4.1 什么是暴露路径?
暴露路径,就是攻击者能从外部接触到你内部资产的一条完整链路。它不只是一个IP,一个端口,而是一连串的“跳板”。
我举个例子。你在公网上开了一个VPN网关。攻击者通过暴力破解进去了,然后他顺着VPN隧道,访问了内网的一台文件服务器。文件服务器上有个 Web 应用,存在文件上传漏洞。他利用这个漏洞,拿到了服务器的Shell。最后,他在这个服务器上找到了运维的密码本,直接登录了核心数据库。
你看,这就是一条完整的暴露路径。
每个环节,都是一个暴露面。我们的工作,就是把这些面全部找出来。
4.2 攻击面:到底有多少种?
攻击面,我一般把它分成三类。你记住这三类,评估的时候才不会漏。
| 攻击面类型 | 具体内容 | 我碰到过的坑 |
|---|---|---|
| 网络攻击面 | 开放端口、暴露服务、边界设备、VPN、Web服务 | 曾经有一个客户,防火墙策略做得很严,但邮件服务器有个接口没关,被用来做代理 |
| 软件攻击面 | 应用漏洞、API接口、中间件、插件、第三方SDK | 最常见的是第三方库。有一次,一个老旧的前端组件里藏了个XSS,所有人都没注意 |
| 人员/物理攻击面 | 社工、钓鱼、U盘、机房访问、Wi-Fi劫持 | 物理攻击最容易被忽略。我记得有个项目,攻击者直接混进机房插了个小盒子 |
你想想看,如果只盯着网络攻击面,软件和数据层的风险就会漏掉。反之亦然。我觉得,做风险分析,必须把这三种面放到一张图上一起看。
4.3 拓扑分析:我常用的三步法
拿到一个网络拓扑图,怎么着手分析?我一般会做三件事。
第一步:绘制“信任流”
别只看物理连接,要看数据流向。是谁允许访问谁的?
- 源:谁发起的请求?用户端、外部应用、还是内部自动化脚本?
- 目标:请求落到哪个服务器、哪个数据库?
- 协议与端口:这是关键。HTTP (80/443) 和 SSH (22) 的风险等级完全不同。
我在项目中遇到过,拓扑图上画的是“办公室-核心交换机-服务器”。但真实的流量是“办公室-互联网-云WAF - 阿里云-内网”。画错了,防守就全错了。
第二步:标记“暴露点”
在信任流上,把所有“从外部能直接接触到的点”圈出来。这些就是暴露点。比如:
- 公网IP和域名
- 对外开放的端口(尤其是非标准端口)
- VPN、远程桌面、堡垒机
- 面向公网的API网关
第三步:推导“攻击路径”
有了暴露点和信任流,你就可以串联路径了。我会问自己:
- 从暴露点A进去,我能看到什么?
- 我看到的东西,能让我接触到什么敏感数据?
- 接触数据之前,我需要绕过几层认证、几段网络隔离?
这三步走下来,你基本就能把一张静态的拓扑图,变成一张动态的攻击面地图。
4.4 工具与自动化分析
纯手工搞,太慢了。尤其是涉及几十上百个网段的大项目。我一般会这样组合工具:
- Nmap + Masscan:快速探测存活主机和开放端口。Masscan 扫大网,Nmap 扫细节。
- BloodHound:分析AD域内的信任关系和攻击路径。这个工具我强烈建议你学一下,它能让你看到“能走多远”。
- Shodan / FOFA:用来检查公网暴露面。把你公司的IP段丢进去,看看有多少“惊喜”。
- 自定义脚本:我个人会用 Python 写个简单的分析脚本,把 Nmap 的结果导入,自动画出信任流。
工具是辅助,思路才是核心。你拿 BloodHound 扫了一圈,但分不清哪个账户是管理员,其实信息量还是不够。你得理解它的输出,理解业务逻辑。
4.5 把手绘的拓扑变成攻击面地图
这就是本章最核心的东西。我把它总结成一个流程,你可以照着做。
4.6 一个真实案例
我之前帮一个金融客户做评估。他们拓扑图看着挺标准:办公网、生产网、测试网,三层隔离。
但我的自动分析脚本发现了一个奇怪的流量:生产网的一台服务器,在凌晨3点,不断向测试网的一台机器发连接。端口是 4444。
这个端口不在任何白名单里。我手动连了一下,那边居然跑着一个反向Shell。
我们顺藤摸瓜,发现测试网那台机器早就被攻陷了。攻击者通过测试网,跳到生产网,把数据库的余额表改了个乱七八糟。
4.7 给你一个小提示
做暴露路径分析,别只盯着技术。我建议你把这个结果展示给老板看。
怎么展示?别丢一堆IP和漏洞列表。画一张图,标出“攻击者从公网出发,经过A到B再到C,最后拿到核心数据需要几步”。每一步可能被哪条防线拦住?哪些防线是空的?
这样一来,老板能看懂,也知道该往哪投钱。这才是风险分析的价值所在。
好了,这一章就讲到这。拓扑分析这块,动手比动脑更重要。我建议你找个自己的环境,或者找个靶场,按我上面的三步法走一遍。你会发现,原来那些不起眼的角落,藏着那么多“惊喜”。