3、信息收集与侦察:SIP扫描技术

信息收集,说白了就是渗透测试的「踩点」阶段。你想想看,连目标网络里跑了什么服务都不知道,怎么动手?在IMS网络里,SIP协议就是我们的主战场。我个人习惯,第一步永远是先摸清SIP服务的家底。

这一章,我会带你走一遍我常用的侦察流程。从DNS SRV记录查询,到SIP扫描,再到用户枚举。每一步都有坑,我也会把当年踩过的坑讲给你听。

3.1 DNS SRV记录查询:找到SIP服务器

IMS网络里的SIP服务器,通常不会直接暴露IP。它们靠DNS SRV记录来定位。为什么要查这个?因为SIP客户端(比如你的手机)就是通过SRV记录找到注册服务器和代理服务器的。

我常用的工具有两个:dignslookup。说实话,我个人更偏爱 dig,输出格式清晰,调试起来方便。

3.1.1 用dig查询SRV记录

命令格式很简单:

dig _sip._udp.example.com SRV
dig _sip._tcp.example.com SRV
dig _sips._tcp.example.com SRV

举个例子,假设目标域是 ims.operator.com

$ dig _sip._udp.ims.operator.com SRV

; <<>> DiG 9.16.1 <<>> _sip._udp.ims.operator.com SRV
;; ANSWER SECTION:
_sip._udp.ims.operator.com. 3600 IN SRV 10 100 5060 sip1.ims.operator.com.
_sip._udp.ims.operator.com. 3600 IN SRV 20 50  5060 sip2.ims.operator.com.

看到没?这里暴露了两个SIP服务器:sip1sip2,端口都是5060。优先级10的服务器权重100,优先级20的权重50。嗯,这里要注意:优先级数字越小,优先级越高。

我的小技巧: 如果目标域没有返回SRV记录,别急着放弃。试试直接查A记录或AAAA记录。有些运营商偷懒,直接把SIP服务器配成固定IP。

3.1.2 用nslookup查询

如果你在Windows环境,或者习惯交互式查询,nslookup 也够用:

nslookup
> set type=srv
> _sip._udp.ims.operator.com

输出结果和 dig 类似,但格式没那么漂亮。我个人还是推荐 dig,尤其是在做批量脚本的时候。

3.2 SIP扫描技术:sipscan与svmap

拿到SIP服务器的IP和端口后,下一步就是扫描。这里有两款神器:sipscansvmap。它们都是专门为SIP协议设计的扫描器,比Nmap的SIP脚本更专业。

3.2.1 sipscan:轻量级SIP扫描器

sipscan 是SiVuS工具包里的一个组件。它支持多种SIP方法扫描,比如OPTIONS、REGISTER、INVITE。我最常用的是OPTIONS扫描,因为它不会在目标服务器上留下注册记录,相对隐蔽。

基本用法:

sipscan -i 192.168.1.100 -p 5060 -m OPTIONS

参数说明:

  • -i:目标IP地址
  • -p:目标端口(默认5060)
  • -m:SIP方法(OPTIONS、REGISTER、INVITE等)

输出示例:

[+] Sending OPTIONS to 192.168.1.100:5060
[+] Response: SIP/2.0 200 OK
[+] Server: Asterisk PBX 16.8.0
[+] Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
[+] Supported: replaces, timer

看到 Server: Asterisk PBX 16.8.0 了吗?这就是指纹信息。版本号都暴露了,接下来查CVE就方便了。

注意: 有些SIP服务器会屏蔽频繁的OPTIONS请求。我曾经遇到过,扫描到一半服务器直接返回403 Forbidden。这时候可以加个延迟参数,比如 --delay 1,每秒发一个包。

3.2.2 svmap:大规模SIP扫描

svmap 是SIPVicious工具包里的扫描器。它擅长扫描整个IP段,适合做资产发现。我个人习惯用它来快速定位目标网络里所有SIP服务。

基本用法:

svmap 192.168.1.0/24 -p 5060

输出示例:

[+] 192.168.1.100:5060 - SIP service (Asterisk PBX 16.8.0)
[+] 192.168.1.105:5060 - SIP service (FreeSWITCH 1.10.5)
[+] 192.168.1.110:5060 - SIP service (Cisco CallManager 12.5)

你看,一个C段扫下来,三个SIP服务全暴露了。而且版本信息一目了然。这就是信息收集的价值。

3.3 OPTIONS探测:摸清服务器底细

OPTIONS请求是SIP协议里最无害的方法。它不会改变服务器状态,只是询问服务器支持哪些功能。但对我们来说,它暴露的信息太多了。

一个标准的OPTIONS请求长这样:

OPTIONS sip:192.168.1.100 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.1:5060;branch=z9hG4bK123456
From: <sip:test@10.0.0.1>;tag=12345
To: <sip:192.168.1.100>
Call-ID: 1234567890@10.0.0.1
CSeq: 1 OPTIONS
Contact: <sip:test@10.0.0.1>
Max-Forwards: 70
Content-Length: 0

服务器返回的200 OK响应里,通常会包含:

  • Server头:服务器类型和版本
  • Allow头:支持哪些SIP方法
  • Supported头:支持哪些扩展
  • Accept头:支持哪些内容类型

举个例子,我曾经在某个项目中,通过OPTIONS响应发现目标服务器支持 SUBSCRIBENOTIFY 方法。这意味着我可以尝试订阅事件,比如监听用户状态变化。嗯,这为后续攻击打开了新思路。

核心要点: OPTIONS探测是SIP信息收集的「敲门砖」。它安全、高效、信息量大。我建议每次渗透测试都从这一步开始。

3.4 用户枚举:REGISTER/INVITE响应分析

用户枚举,说白了就是猜出目标网络里有哪些合法的SIP账号。为什么重要?因为有了用户名,下一步就是暴力破解密码。你想想看,如果连用户名都不知道,怎么登录?

常用的枚举方法有两种:REGISTER请求和INVITE请求。

3.4.1 基于REGISTER的枚举

REGISTER请求用于用户注册。当我们发送一个REGISTER请求时,服务器会返回不同的状态码,取决于用户是否存在:

响应码 含义 用户是否存在
200 OK 注册成功(但需要认证) 存在
401 Unauthorized 需要认证(用户存在) 存在
403 Forbidden 禁止注册(用户存在) 存在
404 Not Found 用户不存在 不存在

举个例子,我发送REGISTER请求给 sip:1000@ims.operator.com

REGISTER sip:ims.operator.com SIP/2.0
From: <sip:1000@ims.operator.com>;tag=12345
To: <sip:1000@ims.operator.com>
Call-ID: 1234567890@10.0.0.1
CSeq: 1 REGISTER
Contact: <sip:1000@10.0.0.1>
Max-Forwards: 70
Content-Length: 0

如果返回401 Unauthorized,说明用户 1000 存在。如果返回404 Not Found,说明不存在。就这么简单。

避坑指南: 我曾经遇到过一种情况,服务器对所有不存在的用户都返回401 Unauthorized,而不是404。这是运营商故意做的反枚举措施。这时候可以换个思路,试试INVITE请求。

3.4.2 基于INVITE的枚举

INVITE请求用于发起呼叫。它的响应码也能暴露用户是否存在:

响应码 含义 用户是否存在
180 Ringing 用户振铃(存在且在线) 存在
200 OK 用户接听(存在且在线) 存在
486 Busy Here 用户忙(存在) 存在
404 Not Found 用户不存在 不存在
603 Decline 用户拒绝(存在) 存在

INVITE枚举的优点是,即使服务器对REGISTER做了反枚举,INVITE的响应通常不会做特殊处理。但缺点也很明显:如果用户在线,INVITE请求会真的让用户手机响铃。嗯,这就不太隐蔽了。

警告: 在生产环境中使用INVITE枚举要格外小心。我曾经在一次测试中,不小心让目标用户的手机响了三次,差点被当成骚扰电话报警。建议先用REGISTER枚举,不行再用INVITE,而且每次请求间隔至少5秒。

3.5 知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张流程图:

SIP信息收集与侦察流程 DNS SRV记录查询 SIP扫描(sipscan/svmap) OPTIONS探测 用户枚举 REGISTER响应分析 INVITE响应分析 图:SIP信息收集与侦察流程

这张图展示了完整的侦察链路。从DNS查询开始,到SIP扫描,再到OPTIONS探测,最后是用户枚举。每一步都环环相扣,缺一不可。

好了,这一章的内容就到这里。信息收集是渗透测试的基石,地基打不牢,后面全是白费功夫。下一章我们会深入SIP认证机制,看看怎么绕过那些看似安全的认证方案。


专注资料整理