SIPVicious工具实战:从SIP协议弱点到VoIP渗透测试全流程 开局先从一件事说起。前阵子帮一家做呼叫中心平台的朋友做例行安全巡检对方反馈系统最近经常出现“通话被挂断”和“账号被盗打”的投诉。远程上去看了半天业务日志没找到头绪最后我把问题定位到了SIP网关的弱口令分机上——有人用默认密码把分机注册到了他们的服务器上借道拨打高额声讯号码。处理完这件事之后我顺手把整套排查流程整理成了今天这篇文章。用到的核心工具就是标题里提到的SIPVicious。VoIP渗透测试这个方向在Kali Linux的官方工具集里一直都有位置但真正能把SIPVicious用明白的人并不多。它是目前开源社区里最经典的SIP协议安全评估工具包整套工具用Python写成功能覆盖SIP服务发现、分机枚举、弱口令识别、畸形报文压力测试和报告生成。适合谁用安全服务团队做系统评估的、企业运维排查SIP网关安全隐患的、以及刚入门想理解VoIP攻击面的同学。这篇文章会从SIP协议的基础弱点讲起一步步拆解五个核心工具的用法、参数、输出解读然后带你把一次完整的SIP渗透测试流程走通最后把我踩过的坑和排查思路全部交代清楚。1. 先搞明白VoIP系统到底哪里容易出事1.1 SIP协议的设计短板Session Initiation ProtocolSIP是VoIP世界的信令协议负责会话的建立、修改和拆除。但坦白说这个协议设计之初主要考虑的是“让通话能通”并没有把安全作为一个核心设计目标。最典型的几个问题SIP基于文本协议报文格式类似HTTP直接裸奔在网络上。REGISTER请求的认证机制虽然有摘要认证但很多设备为了兼容老终端出厂默认关闭认证或者使用空密码、默认密码。INVITE请求可以被任意伪造攻击者可以冒充任意主叫号码发起呼叫。还有SIP消息中的Via、Contact、Route头域都可以被篡改导致呼叫劫持或者账号盗用。这些设计上的短板放在今天的网络环境里就是实实在在的攻击面。现实中很多中小企业的SIP网关、IP话机、软交换平台要么是默认配置上线要么是管理员为了方便调试开着弱口令扫描器一打一个准。1.2 常见的VoIP攻击路径从攻击者的视角来看VoIP系统通常有这几条被打穿的路分机枚举通过遍历分机号判断哪些分机存在、哪些在线、哪些支持认证为下一步暴力破解做准备。弱口令/默认密码很多IP话机出厂默认密码是admin/admin或者分机密码是1234、4321这类。枚举到在线分机之后直接用字典撞。账户盗打拿到分机账号后攻击者可以注册到SIP服务器以企业内部身份拨打外部电话。轻则话费损失重则利用企业外呼通道做电话诈骗。信令欺骗与呼叫劫持构造恶意INVITE或者302响应把呼叫转移到攻击者控制的号码上实现通话窃听或者钓鱼。拒绝服务发送畸形报文、大量INVITE洪泛打崩SIP代理服务器的处理能力导致整个语音业务瘫痪。如果你对这些攻击路径没有清晰认知后面用工具扫出来一堆结果也不知道怎么解读。SIPVicious这个工具包里的每一个组件基本就是针对上面这些路径设计的。1.3 授权边界是红线动SIP测试之前必须先跟你把话挑明所有扫描、枚举、口令测试的行为必须在你有明确授权的网络范围里做。什么叫明确授权你自己搭的实验环境公司给你签了渗透测试授权书的业务系统或者SRC平台明确允许测试的目标。未经授权对公网SIP服务器做扫描和枚举轻则违反网络安全法重则构成非法侵入计算机信息系统。这不是吓唬你圈子里因为扫描被请去喝茶的案例不在少数。SIPVicious这类工具本身是合法工具用在哪里、怎么用你心里得有杆秤。2. Kali环境下的工具部署与核心组件拆解2.1 安装与依赖处理Kali Linux自带了一部分SIPVicious工具但有些版本需要手动安装。我当前的Kali是基于2024.x滚动更新的版本用apt安装的方式对老手来说最快sudo apt update sudo apt install sipvicious -y如果你的源里没有或者想用最新开发版可以直接从代码仓库拉git clone https://github.com/EnableSecurity/sipvicious.git cd sipvicious python3 -m pip install -r requirements.txt装完之后检查一下可执行文件是否齐全which svmap svwar svcrash svreport svscanSIPVicious的Python依赖比较简单核心就用到scapy、pcapy这些做报文构造和抓包的库。坑主要在编译pcapy时如果缺libpcap-dev会报错解决办法是sudo apt install libpcap-dev -y如果遇到scapy版本兼容问题建议建一个独立的Python虚拟环境别直接往系统Python里塞。我一开始图省事直接用系统环境装完发现跟Kali自带的某些网络工具冲突后来老老实实用了virtualenv才消停。2.2 五件套工具功能对照SIPVicious严格来说是一个工具集的统称核心包含五个独立的命令行工具。很多人把它们混为一谈实际各自职责完全不同。先给你一张总览表后面逐个拆。工具名功能定位主要用途输出特点svmapSIP服务发现扫描IP段发现开放SIP端口的主机IP:PORT列表支持指纹信息svwar分机枚举与口令检测遍历分机号识别在线分机并测试弱口令分机状态、认证类型、测试结果svcrash畸形报文测试发送异常SIP消息测试服务器健壮性崩溃情况、响应情况svreport报告生成将扫描结果转换为XML格式XML格式结构化数据svscan批量扫描调度对多个网段执行标准化扫描任务文件输出便于集中处理这里要提醒一个容易搞错的点svwar和svmap长得像亲兄弟但svmap只做“发现”——它探测的是目标主机有没有开放SIP服务svwar才做“深入”——它针对已发现的SIP服务去枚举分机和测试口令。很多人一上来就用svwar扫全网段既慢又容易被安全设备封IP正确姿势是先svmap做快速发现再对命中的主机用svwar。2.3 工具的运行机制SIPVicious这类工具的工作原理底层就是构造并发送SIP消息。比如svmap向目标主机的UDP 5060端口发送一个OPTIONS请求如果对方回复了SIP/2.0 200 OK或者带有特定响应码的报文就说明这个端口有SIP服务在监听。svwar的机制更复杂一些它会对目标主机的REGISTER接口构造认证请求用一个不存在的分机号和一个存在的分机号做对比。服务器对不存在分机的响应通常是404 Not Found对存在分机的响应则可能要求认证401 Unauthorized或者直接200 OK。通过这种差异性响应就能识别出哪些分机号是真实有效的。了解这个底层机制很重要。你在解读扫描结果的时候看到401不代表分机有问题恰恰说明分机存在并且开启了认证而直接返回200可能意味着两种极端情况——分机完全没开认证可以秒注册进去或者服务器配置了“对所有REGISTER请求都返回200”的宽松策略。这两种情况对应的后续测试思路完全不同。3. 核心工具逐个上手从发现到枚举3.1 svmapSIP服务发现与指纹识别svmap是整套工具的起点。它的用法非常直接svmap 192.168.1.0/24这条命令会扫描整个网段的默认SIP端口包括UDP和TCP的5060、5061TLS等。扫描完你会看到类似这样的输出| SIP Device | User Agent | Host | | 192.168.1.10:5060 | Asterisk PBX | 192.168.1.10 | | 192.168.1.23:5060 | Cisco SPA502G | 192.168.1.23 |User Agent字符串是SIP服务器或终端在响应头里暴露的标识信息对后续测试很有价值。比如看到Asterisk PBX可以据此推断默认配置路径和可能的账号规则看到某品牌IP话机则可以快速查对应型号的默认密码。实际使用中有几个参数值得记住指定端口svmap -p 5080 192.168.1.0/24很多SIP服务为了防止被扫描器盯上会改默认端口。并发级别svmap -c 32 192.168.1.0/24加快扫描速度但要注意别把目标打挂了也别把自己的出口带宽打满。输出到文件svmap -o targets.txt 192.168.1.0/24结果保存下来供svwar后续读取。svmap的输出比较朴素没有进度条跑着跑着就结束了。如果目标网段较大可以先分几批跑避免被安全设备封禁IP。3.2 svwar分机枚举与弱口令探测svwar是整个工具包里含金量最高的一个。它做的事情有两件枚举有效分机号以及测试弱口令。基本用法svwar -e 100-200 192.168.1.10这个命令对192.168.1.10这个SIP服务器上的100到200号分机做枚举。-e参数指定分机号范围也支持-e user100,user101这样的列表形式。输出信息大概长这样| Extension | Authentication | Device | | 100 | regsip | Asterisk PBX | | 101 | noauth | Cisco SPA502G | | 105 | regsip | Asterisk PBX |Authentication列有两个枚举值regsip分机存在且服务器要求认证。这是最常见的情况。noauth分机存在但服务器不要求认证可以直接注册。这种情况属于严重配置漏洞等于大门敞开着。svwar还自带弱口令检测功能通过在同一个流程中对已发现的分机尝试常见密码。它内置了一个小字典包含admin、1234、4321、password、test等常见弱口令。使用方式是在枚举的参数后加--password选项或者使用字典文件svmap -e 100-200 -w passwords.txt 192.168.1.10这里要特别强调一个细节svwar对noauth状态的分机测试是直接尝试REGISTER如果服务器返回200 OK说明你可以直接以该分机身份注册进去。想要验证的话可以用sip.conf里的账号信息配合软电话客户端手动注册但千万注意这种测试行为一定要在授权范围内做别把验证操作做成真正的“盗用”。svwar的枚举速度调节也值得讲讲。-r参数可以设置每秒发送的报文数量默认值比较保守。内网测试可以调到-r 20公网环境建议控制在5以内防止目标服务器响应不过来导致误报也降低被IDS拦截的概率。3.3 svcrash畸形报文与健壮性测试svcrash是SIPVicious里最“暴力”的工具主要用来测试目标SIP服务对异常报文的容忍度。原理是向目标服务器发送一批结构畸形、字段异常或带有非法字符的SIP报文观察服务器是否会出现崩溃、重启、无响应等情况。基础用法svcrash 192.168.1.10发送的报文通常包含超长URL或URI非法方法名如随机字符串错误的Content-Length字段重复或冲突的Via头如果目标服务器在收到这批报文后不再响应正常的SIP OPTIONS请求基本可以判断它的SIP协议栈存在健壮性问题。实测中某些国产低端IP话机和软交换平台在这个测试下会直接死机需要断电重启才能恢复。用svcrash要极其谨慎。这个测试本质上是拒绝服务攻击的雏形可能造成业务中断测试前必须跟业务方确认窗口期。我的习惯是周一凌晨做、周五深夜做避开业务高峰。团队里曾经有人在白天上班时间对生产SIP网关跑svcrash结果半个公司的电话系统瘫了40分钟后续善后相当麻烦。记住svcrash的定位是验证边界健壮性不是搞破坏。3.4 svreport与svscan报告与批量任务svreport负责把svmap、svwar、svcrash的输出转换成XML格式方便接入自动化平台、生成报告或者做后续统计分析。用法非常简单svmap -o scan.txt 192.168.1.0/24 svreport scan.txt输出的XML文件结构清晰包含了扫描目标、发现的服务、分机枚举结果、检测到的弱口令等结构化信息。如果对接漏洞管理平台这个XML格式通常能直接解析入库。svscan则是一个批量扫描调度工具。当你手里有一堆目标需要定期做安全巡检时不可能每次都手动敲命令。svscan支持把多个目标网段、多组参数写到配置文件里然后统一执行。典型用法是把要扫描的IP段列表、要用的工具参数、输出目录全部配置好然后用svscan一键跑完整套流程。这个工具特别适合“定期循环扫描”的场景比如每个月对全公司的SIP网关做一次基线巡检输出结果自动归档。4. 实操流程一次完整的SIP渗透测试是怎么跑通的4.1 信息收集与授权确认正式动手之前先把三件事办齐确认授权范围、搞清楚目标网络拓扑、明确测试时间窗口。我一般在前期收集阶段会做这么几步从客户提供的授权书里明确被测试的IP地址段和域名。通过DNS枚举、证书透明度日志查一下目标域名是否绑定了SIP服务常见的SRV记录是_sip._udp、_sips._tcp。用nmap对目标网段做一次快速的UDP端口扫描重点看5060、5061、5080、5090这几个端口是否开放。授权这件事不能含糊。我之前在一次项目中客户说“全段随便扫”结果他们的安全团队并没有在IPS白名单里放行我的扫描流量导致测试还没开始我的出口IP就被封了。后面协调了很久才恢复。经验是授权确认不仅是“能不能测”的问题还得跟对方的安全运营团队同步确保扫描流量不会被误拦截。4.2 逐步推进的扫描策略一次完整的SIP渗透测试我通常会分成四个阶段每个阶段使用不同的工具组合。第一阶段用svmap做全段SIP服务发现。先跑一个宽松的扫描默认端口把命中的主机和端口记录下来。如果没有发现再用svmap-p 5080,5090,8080扫描常见非标准端口。第二阶段对每台命中的主机用svwar做分机枚举。优先枚举常用的短号段如100-199、200-299、8000-8099因为这些号段在实际配置中使用频率最高。这一步通常能发现60%以上的有效分机。第三阶段对发现的分机做弱口令检测。用自己的字典文件替换默认字典字典里包含企业名称缩写、年份、admin、test、1234这类常见口令。注意控制探测速率我一般限制在每秒2-3次尝试既能保证效率又不容易触发账户锁定策略。第四阶段对SIP服务器做健壮性抽查。选业务低峰期用svcrash对一到两台目标做畸形报文测试。如果测试导致服务异常立即停止并恢复。把整个过程串起来命令大概长这样# 第一阶段服务发现 svmap -o phase1_scan.txt 10.10.10.0/24 # 第二阶段基于发现结果做分机枚举 svmap -e 100-200 10.10.10.10 phase2_extensions.txt svmap -e 8000-8100 -o phase2_extensions_part2.txt 10.10.10.10 # 第三阶段弱口令检测 svwar -e 100-200 -w weak_pass.txt 10.10.10.10 # 第四阶段畸形报文测试严格窗口期执行 svcrash 10.10.10.10这四条命令串起来就是一次标准的、可以交付的SIP安全评估流程。跑完后把结果汇总整理输出问题清单和修复建议。4.3 结果分析与加固建议拿到扫描结果之后最重要的工作是分析而不是堆报告。我看结果的时候一般会做三层过滤第一层看“存在严重风险”的如noauth分机、可以直接注册的账号。这类问题必须第一时间上报并安排整改。第二层看“需要业务确认”的如某些分机虽然存在但是不是当前在用、要不要纳入账号管理范围。这部分需要跟系统管理员核对。第三层看“配置基线不合理”的如所有分机都开启了强认证但密码策略太弱或者SIP服务暴露在公网但未加访问控制。加固建议方面优先级从高到低大致是禁用所有noauth分机的免认证注册、强制弱口令分机更换强密码、修改默认端口和非标准端口、在防火墙上限制SIP信令来源IP、启用TLS加密信令、开启SIP会话级防火墙功能。有一个细节很多运维会忽视SIP服务器除了信令端口还有RTP媒体端口通常是10000-20000的UDP端口。如果这些媒体端口直接暴露在外部即使信令做了TLS加密媒体流仍然可能被窃听。我在实际项目中见过部署得挺正规的SIP网关信令走TLS、账号强密码但RTP端口全开放结果被人在网络上抓包还原了通话语音。这个问题的修复方式是把RTP端口限制在私有网段或者部署支持SRTP的终端和网关。5. 常见问题与排查技巧实录5.1 扫描结果全空一个SIP设备都没发现这种情况在真实项目里非常常见。原因大概有三个方向目标网络的SIP服务使用了非标准端口。5060虽然是SIP默认端口但很多企业为了安全会把SIP服务改到5080、8080、8443等端口。解决办法是对目标网段做全端口或TOP端口UDP扫描把扫描范围扩大。SIP服务只监听内网IP不监听公网或特定网卡。很多时候SIP网关会有多张网卡SIP服务只绑定在内网网卡或者管理网段上。这时候需要换扫描源——比如在目标网络内部找一台跳板机执行测试。防火墙拦截了扫描流量。很多安全设备对SIP扫描有专门的检测规则。遇到这种情况调整svmap的发送速率降低到每秒几个包伪装成正常流量。另外优先用TCP方式测试很多防火墙对TCP 5060端口的过滤比UDP要宽松。5.2 分机枚举结果不准误报特别多svwar识别分机靠的是不同分机号之间的响应差异。如果目标服务器配置了“所有REGISTER请求都返回401”或者“统一返回200”那么枚举结果就会失真。前者可能漏掉所有有效的分机后者则会把不存在的分机也算成存在。排查思路是这样的先用两个确定存在的分机号和两个确定不存在的分机号做对照测试看服务器的响应是否存在差异性。如果差异规律不明显说明这台服务器的响应策略不适合直接枚举需要换一种方式比如去抓取和分析SIP注册流程中服务器返回的Realm、Nonce字段特征来做判断。这种情况下经验判断比工具参数更管用需要多跟目标系统的管理员沟通确认分机号段的大致规则。5.3 弱口令测试导致账户被锁很多SIP服务器和PBX系统自带账户锁定策略连续多次认证失败会临时封禁账号。弱口令测试跑得太猛很容易把目标分机号给锁了。有一次我测试一个客户的时候字典里有几十个候选人结果跑完发现其中几个真实存在的分机账号被锁定了用户的IP话机全部无法注册话务直接中断。这类问题的解法有三个测试前问清楚账号锁定策略的阈值严格把单账号的尝试次数控制在阈值以下分时段、分批次测试不同分机别在同一个窗口内对同一账号做密集尝试确认好锁定策略一旦发现锁定迹象就立刻停手等待锁定时间窗口结束后恢复。另外弱口令字典不要贪多求全。我在实战中总结的规律是SIP设备的弱口令矩阵跟企业IT资产弱口令矩阵高度重合但更偏向于“简单数字”和“设备默认值”。生产环境的SIP分机密码admin、1234、4321、123456、888888这五个常见值的命中率比复杂字典高得多。测试跑太复杂的字典低速、低效、易触发锁定的三重风险都往上走。5.4 被目标安全设备反制有些SIP服务器的安全防护做得比较到位会在检测到扫描流量后主动阻断攻击者IP甚至模拟SIP服务来诱捕扫描者。玩过几次就会被“钓鱼”SIPVicious报告显示目标是真实的结果后面发现目标根本是蜜罐白白浪费探测机会而且暴露了扫描源IP。反制这个问题的办法有两个层面一是控制扫描节奏把速率降到人类手工测试的水平降低被安全设备判性的概率二是做好测试源IP的隐藏和隔离使用独立的测试VPS或者跳板机避免因为扫描行为影响到办公出口IP。5.5 svcrash把服务器跑挂了怎么办svcrash最尴尬的场景就是跑到一半目标服务器没反应了。首先确认是不是真挂了——用svmap再次对目标IP做一次OPTIONS探测如果不响应且ping也通但SIP端口无响应大概率服务已经崩溃或者进入假死状态。这时候的应急动作按顺序来第一时间记录当前命令的输出、目标状态、测试时间点别因为慌张把现场破坏掉立即联系目标系统的运维负责人告知可能出现了服务异常请他们协助检查如果服务恢复需要手工重启协调运维配合在后续报告中如实记录本次测试的影响和恢复过程。我反复跟团队成员强调的是svcrash这类测试必须严格限定在授权范围和测试窗口内执行。必要的时候建议先找一台测试环境跑通整个流程再进生产环境做同样的操作。这台测试环境的配置最好跟生产环境保持一致否则测试结果参考价值有限。防护到位的大型平台生产环境往往做了集群部署和故障自动迁移单点崩溃影响不大但中小型客户经常是单机跑所有业务一条畸形报文就可能把全公司的电话系统打瘫。对待svcrash的态度一定要像对待爆破定向雷一样——知道往哪个方向、什么时候引爆、引爆之后怎么处理。6. 后续还能怎么扩展这个方向SIPVicious本身的能力边界是“SIP协议层和信令层的安全测试”但VoIP的安全测试远不止这些。如果你已经熟练掌握了这套工具下一个值得投入的方向有三个一是RTP语音流的安全评估。信令层做的再好媒体层裸奔也是白搭。这一块的测试工具可以关注RTP Scan、UFAUser Agent Field Analyzer等对媒体流前导码和SRTP支持情况的验证工具。语音流的抓包分析和协议解析能力也需要跟上Wireshark的高级过滤和RTP流重组功能是基本功。二是SIP暴力破解的防护研究。SIPVicious可以用来“打”也可以用来“防”。我之前做过一个项目帮客户在SIP网关上实现基于Fail2ban框架的SIP扫描告警与阻断策略。核心思路是通过分析SIP日志中出现401/403的频率、来源IP的分布特征实现对扫描源的自动封禁。这个思路用SIPVicious做验证工具可以持续优化防护规则的有效性。三是VoIP体系的整体安全测评。把SIPVicious纳入到一个更完整的VoIP安全测试方案里结合VLAN隔离检查、DHCP starvation测试、ARP欺骗检测、PBX配置审计甚至配合社会工程学做Vishing演练。VoIP安全不是单一工具能覆盖的领域SIPVicious解决的是其中最关键、最容易被利用的SIP信令层面的问题。我的个人经验是这个方向最大的乐趣在于“攻防一体”的感觉。用的是同一套协议知识体系做渗透测试的时候能发现别人配置里的漏洞做防御的时候能看懂攻击者用了什么工具、试探了哪几个分机号段、尝试了哪些弱口令。SIPVicious是绝佳的起点但不要止步于跑通工具深入理解SIP协议栈、事务状态机、认证流程才是真正能让你在这个领域拉开差距的地方。