3、信息收集与侦察:SIP扫描技术、DNS枚举、拓扑发现、用户枚举

各位同学,咱们今天聊点实在的。攻击链的第一环,说白了就是「踩点」。你连对手长什么样、门朝哪开都不知道,怎么打?

我做了这么多年安全,见过太多人一上来就猛攻,结果撞得头破血流。真正老练的攻击者,会把70%的时间花在信息收集上。为什么?因为信息就是弹药。

这一章,我们就来拆解IMS(IP多媒体子系统)环境下的侦察手段。我会把SIP扫描、DNS枚举、拓扑发现、用户枚举这四块核心内容,结合我踩过的坑,一一讲透。

核心观点:信息收集的质量,直接决定了后续攻击的成功率。你收集到的信息越精准,攻击链就越短,暴露风险也越低。

3.1 SIP扫描技术

SIP(会话发起协议)是IMS的命脉。所有呼叫、消息、注册,都走SIP。所以,扫描SIP服务,就等于在摸对方的脉搏。

我个人习惯,第一步不是扫端口,而是先判断目标是否真的跑着SIP。怎么判断?很简单,发一个OPTIONS请求过去。

# 使用 sipscan 工具发送 OPTIONS 请求
sipscan -t 192.168.1.100 -p 5060 -m OPTIONS

# 或者用 netcat 手动构造
echo -e "OPTIONS sip:192.168.1.100 SIP/2.0\r\nVia: SIP/2.0/UDP 192.168.1.200:5060\r\nFrom: <sip:test@test.com>\r\nTo: <sip:test@test.com>\r\nCall-ID: 12345\r\nCSeq: 1 OPTIONS\r\nContent-Length: 0\r\n\r\n" | nc -u 192.168.1.100 5060

如果对方回复了200 OK,那基本就确认了。这时候,我会进一步扫描支持的SIP方法。不同的设备,支持的方法列表不一样。比如,有的只支持REGISTER和INVITE,有的还支持MESSAGE、SUBSCRIBE等。

我曾经在某个项目中,发现一台SBC(会话边界控制器)居然支持UNREGISTER方法。这意味着什么?攻击者可以强制注销合法用户的注册信息,造成服务中断。嗯,这个坑我替你们踩过了。

实战技巧:扫描SIP时,建议使用随机化的源端口和Call-ID。很多SIP设备有反扫描机制,固定模式的请求会被直接丢弃。

3.2 DNS枚举

DNS枚举,说白了就是翻目标的家底。在IMS环境里,DNS记录藏着大量信息。比如SRV记录,能告诉你SIP服务器在哪;TXT记录,可能泄露策略配置。

我常用的工具是dnsrecon和dig。但说实话,工具只是辅助,关键是你知道要查什么。

# 查询 SIP 服务的 SRV 记录
dig _sip._udp.example.com SRV

# 查询 SIP TLS 服务的 SRV 记录
dig _sips._tcp.example.com SRV

# 枚举子域名(配合字典)
dnsrecon -d example.com -D /usr/share/wordlists/dns/subdomains.txt -t brt

你想想看,如果SRV记录返回了多个目标,那说明对方做了负载均衡。这时候,攻击者就可以针对每个节点进行测试,找到最薄弱的那一环。

我记得有一次,通过DNS枚举发现了一个测试环境的SRV记录。那个环境居然没有做访问控制,直接暴露了内部SIP服务器。嗯,这种低级错误,现实中比比皆是。

注意:DNS枚举时,请求频率不要太高。很多企业部署了DNS防火墙,高频查询会触发告警。我建议每次查询间隔至少2秒,或者使用代理轮换。

3.3 拓扑发现

拓扑发现,就是画地图。你要搞清楚:SIP终端在哪?代理服务器在哪?SBC在哪?媒体服务器在哪?

我个人习惯,先用traceroute摸清网络路径,再用SIP的Via头和Record-Route头来推断拓扑。

举个例子,你发一个INVITE请求,对方回复的200 OK里,Via头会记录经过的所有代理。通过分析这些头域,你就能还原出呼叫路径。

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.0.0.1:5060;branch=z9hG4bK1
Via: SIP/2.0/UDP 192.168.1.1:5060;branch=z9hG4bK2
Record-Route: <sip:10.0.0.1;lr>
Record-Route: <sip:192.168.1.1;lr>

从上面这个响应,我能看出:呼叫经过了两个代理,一个在内网(192.168.1.1),一个在DMZ(10.0.0.1)。这就是典型的双代理架构。

我曾经在渗透测试中,通过分析Record-Route头,发现了一个隐藏的媒体服务器。那个服务器居然没有打补丁,直接被我拿下了。所以说,细节决定成败。

核心方法:拓扑发现的关键,是找到那些「不该出现」的节点。比如,一个本该在DMZ的SBC,却出现在了内网段。这种异常,往往就是突破口。

3.4 用户枚举

用户枚举,是攻击者最喜欢的一步。为什么?因为一旦确认了有效用户,后续的暴力破解、社会工程学攻击就有了明确目标。

在IMS里,用户枚举主要通过SIP的REGISTER和INVITE响应差异来实现。比如,注册一个不存在的用户,服务器会返回404 Not Found;而存在的用户,会返回401 Unauthorized或200 OK。

# 枚举用户列表(使用 sipvicious 的 svmap 模块)
svmap -u 192.168.1.100 -p 5060 -r /usr/share/wordlists/sip/usernames.txt

# 手动测试单个用户
REGISTER sip:192.168.1.100 SIP/2.0
From: <sip:admin@192.168.1.100>
To: <sip:admin@192.168.1.100>
...(省略其他头域)

如果服务器返回401,说明用户存在。如果返回404,说明不存在。就这么简单。

但这里有个坑:有些设备会统一返回401,不管用户存不存在。这时候,你就得靠响应时间来判断了。存在用户的响应,通常比不存在的慢几十毫秒。为什么?因为服务器要去数据库查密码。

我曾经遇到过一个奇葩案例:对方把所有不存在的用户都重定向到了同一个语音信箱。结果我通过分析语音信箱的提示音,反而确认了哪些用户是真实的。嗯,这算是歪打正着吧。

避坑指南:用户枚举时,建议使用真实的User-Agent头。很多SIP设备会检查UA头,非标准UA会被直接丢弃。我一般用「X-Lite」或「Zoiper」的UA字符串。

知识体系总览

下面这张图,是我自己总结的信息收集与侦察的核心逻辑。你可以把它当作一个检查清单,每次做侦察时,对照着来一遍。

IMS信息收集与侦察核心逻辑 目标IMS网络 SIP扫描 端口/方法/版本 DNS枚举 SRV/TXT/子域名 拓扑发现 Via/Record-Route 用户枚举 REGISTER/INVITE SIP服务器信息 IP/端口/版本 支持的方法列表 域名与子域信息 SRV/TXT记录 内部域名泄露 网络拓扑结构 代理/SBC位置 内网/DMZ划分 有效用户列表 用户名/分机号 用户状态信息 攻击入口:暴力破解 / 会话劫持 / 拒绝服务

这张图的核心逻辑很简单:从目标出发,通过四种侦察手段,收集四类关键信息,最终找到攻击入口。每一步都环环相扣,缺一不可。

好了,这一章的内容就到这里。信息收集与侦察,看似简单,但真正做好并不容易。我建议你,下次做测试时,别急着动手,先花点时间把侦察做扎实。你会发现,后面的路会顺很多。


专注资料整理