02 / GUIDE
安装与版本:先让命令可复现
本指南锁定 0.3.8:PyPI 上传日期为 2026-07-10;GitHub 对应提交为 485d16cf47023da050ecd73ccb92637725fdd8da,提交说明为 Release 0.3.8。官方安装元数据要求 Python ≥ 3.6;本次源码命令验证使用 Python 3.9。未把 Python 最低版本视为推荐的长期运行环境。[S1][S2][S3]
推荐安装:独立 Python 环境
mkdir sipvicious-lab
cd sipvicious-lab
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install "sipvicious==0.3.8"
sipvicious_svmap --version
sipvicious_svmap --help
Linux / macOS 使用上述写法;Windows 优先使用你已有的 Linux 测试虚拟机或 WSL 环境,并核对 UDP 和 NAT 路径。激活环境后再运行后面的命令。固定版本方便同事复现。
怎样判断结果版本输出应包含 0.3.8。若找不到命令,先检查是否在同一个虚拟环境里安装和运行。
Kali 安装:辨认短命令
sudo apt update
sudo apt install sipvicious
svmap --version
svmap --help
这是 Kali 官方工具页提供的安装路径;发行版命令通常是 svmap / svwar / svcrack / svreport / svcrash。当前网页仍标示 0.3.3,实际软件源版本以安装后的输出为准。[S9]
怎样判断结果本文后续统一使用 sipvicious_sv*。如果安装包只提供 sv*,替换命令前缀,并逐项核对 --help;不要假定旧包支持 0.3.8 的全部行为。
源码复现:固定到本次核对的提交
git clone https://github.com/EnableSecurity/sipvicious.git
cd sipvicious
git checkout 485d16cf47023da050ecd73ccb92637725fdd8da
python3 -m pip install .
sipvicious_svmap --version
在已激活的专用虚拟环境中执行。源码安装与 PyPI 安装二选一即可。README 已统一为带前缀的命令;python -m sipvicious.svmap 则是模块运行方式。
03 / GUIDE
第一轮:按这四步做内部测试
示例环境:你拥有并已准备好的测试 PBX 为 192.168.56.10,监听 UDP 5060;测试机可路由到它。1001 为需要认证的测试分机,1002 为对照账户,1003 为预先确认不存在的号码。这些地址和账户只是示例,执行前换成内部测试资产。svwar / svcrack 会产生认证请求,测试分机应与真实用户、付费外线隔离。
- 发现服务svmap → 确认目标有 SIP 响应
- 检查枚举svwar → 比较已知与不存在分机
- 验证认证svcrack → 单账户、少量候选
- 导出复核svreport → 对照服务端日志
第 1 步 · 对一个已知 PBX 发 OPTIONS
sipvicious_svmap -p 5060 -m OPTIONS -t 0.1 \
-s lab-map-01 192.168.56.10
-p 指定目标 UDP 端口;-m OPTIONS 请求能力/响应;-t 是 select() 等待参数;-s 保存会话。每次实验使用一个新的会话名。
怎样判断结果出现目标 IP:端口和 SIP 横幅,说明此路径收到了 SIP 响应。401 / 403 等响应也可说明有 SIP 服务;不等于能够注册或呼叫。
第 2 步 · 只检查三条测试分机
sipvicious_svwar -p 5060 -m REGISTER -e 1001-1003 \
-t 0.1 --maximumtime 10 -s lab-war-01 192.168.56.10
-e 是 svwar 的分机范围;REGISTER 是其默认方法。--maximumtime 10 表示持续未收到响应时的发送时限,不是整次任务必定 10 秒结束。工具还会先发送不存在号码的探测,因此发包数不只等于三条分机。
怎样判断结果1001 可能显示 reqauth;对照配置若不要求认证,1002 可能显示 noauth;1003 应与已知号码存在可解释差异。若所有号码都收到同样的认证挑战,工具可能停止,不应把 --force 得到的列表当成真实目录。
第 3 步 · 用两个实验候选验证一个账户
printf '%s\n' 'wrong-demo' 'lab-demo-only' > lab-passwords.txt
sipvicious_svcrack -p 5060 -u 1001 -d lab-passwords.txt \
-t 0.1 --maximumtime 10 -s lab-auth-01 192.168.56.10
仅用于已经配置为演示口令 lab-demo-only 的测试账户。-u 是认证用户名;-d 是候选口令文件。此演示口令不可用于真实业务。工具默认还可能尝试“用户名本身作为口令”,总请求数不能机械等同于文件行数。
怎样判断结果找到演示口令是测试夹具的阳性对照。换成正式口令策略后的受测配置时,两个候选不应成功;“未找到”只证明这组候选在本次条件下没有成功。
第 4 步 · 列出会话并导出服务清单
sipvicious_svreport list -t svmap
sipvicious_svreport export -t svmap -s lab-map-01 \
-f csv -o lab-map-01.csv -n
sipvicious_svreport export -t svwar -s lab-war-01 \
-f txt -o lab-war-01.txt
-t 在 svreport 中是“会话类型”,与扫描器里的等待时间不是同一个含义。-s 必须匹配已保存会话;-n 关闭 svmap 报告的反向 DNS 查询。认证结果可能包含口令,内部留档时按测试凭证处理。
怎样判断结果能看到保存的会话,CSV 中包含目标地址与横幅。CSV 导出可能不带列名,导入表格前检查首行;文中本机验证实际得到的就是无表头 CSV。
04 / GUIDE
命令详解:按任务查用法
下面是常用命令与边界参数。浏览器只展示和复制文本,不向目标发送 SIP 请求。过滤器仅影响本节的命令卡,参数表会继续保留。
没有匹配命令。清空关键词或选择“全部”再试。
几个参数名称相同,含义却不同
svmap · 同一台设备上的几个 SIP 端口
sipvicious_svmap -p 5060,5080-5082 -m OPTIONS \
-t 0.1 -s lab-ports-01 192.168.56.10
仅查看同一台内部设备的四个 UDP 端口,用于确认容器映射、测试实例或迁移后的监听位置。
怎样判断结果结果按 IP:端口区分;不响应的端口不应直接判为关闭。
svmap · 显式资产清单
printf '%s\n' '192.168.56.10' '192.168.56.11' > lab-hosts.txt
sipvicious_svmap -I lab-hosts.txt -p 5060 \
-t 0.1 -s lab-inventory-01
-I(大写 i)读取目标文本,每行一个主机或范围;文件应仅含本次内部资产。小写 -i 读取的是此前 svmap 会话中发现的 IP。
svmap · 复测前一次发现的主机
sipvicious_svmap -i lab-map-01 -p 5060 \
-s lab-recheck-01 -t 0.1
适合补丁、ACL 或网络变更后的回归。输入只来自原发现列表,不代表新上线资产也已经被覆盖。
svmap · 看 SIP 响应与本地端口
sipvicious_svmap -p 5060 -P 15070 -m OPTIONS \
-d -v 192.168.56.10
-P 改本地源端口,避免与本机软电话的 5060 冲突;-d 打印收到的报文,检查 Via、From、To、Call-ID 和状态码。
怎样判断结果服务横幅由对端提供,可能属于前置 SBC / Proxy;要结合路由和服务器日志确认设备身份。
svmap · 指定本地网卡地址
sipvicious_svmap -b 192.168.56.20 -x 192.168.56.20 \
-P 15070 -p 5060 -t 0.1 192.168.56.10
仅当测试机确实拥有 192.168.56.20 时使用。本例是同一测试网的多网卡选择;NAT 场景的 -x 必须换成有真实回程映射的地址。
svmap · IPv6 地址与 zsh 引号
sipvicious_svmap -6 -p 5060 '2001:db8::10'
2001:db8::/32 是文档示例地址,执行前换成内部实验地址。svmap 使用 IPv6 字面量和 -p,不使用 udp:// URI;带方括号时也建议引号,避免 shell 通配展开。
svwar · 从文件读分机、指定 SIP 域
printf '%s\n' '1001' '1002' '1003' > lab-extensions.txt
sipvicious_svwar -d lab-extensions.txt --domain lab.invalid \
-p 5060 -m REGISTER -t 0.1 192.168.56.10
网络目标仍是 IP;--domain 改 SIP 消息使用的域。用于按域区分租户的 PBX / Proxy,替换为产品配置的真实测试域。svmap 没有这一 --domain 参数。
怎样判断结果同一 IP 在不同 SIP 域上可能走不同路由;域不匹配造成的 404 不能证明账户不存在。
svwar · 前导零与请求方法
sipvicious_svwar -e 1-3 -z 4 -m OPTIONS \
-p 5060 -t 0.1 192.168.56.10
-z 4 把号码补到四位:0001、0002、0003。用 OPTIONS 比较是否存在响应差异;若服务器统一应答,这个方法不能判断分机。
svwar · 在不会接通外线的分机上验证 INVITE
sipvicious_svwar -e 1001 -m INVITE -p 5060 \
-t 0.2 --maximumtime 10 192.168.56.10
仅用于专用测试分机,可能响铃、接通或触发 PBX 路由;0.3.6 起有 INVITE 对话清理相关修复。保持默认 CANCEL 行为,操作后在 PBX 上确认对话结束。这不是 RTP 播放或通话质量测试。
怎样判断结果180 Ringing、200 OK 和后续 CANCEL / ACK / BYE 需要结合抓包及服务端会话看;本次未对真实电话验证 INVITE。
svcrack · 认证用户名与分机不同
sipvicious_svcrack -u lab-user-1001 -e 1001 \
-d lab-passwords.txt --domain lab.invalid \
-p 5060 -t 0.2 192.168.56.10
-u 对应 Digest authentication username;-e 对应分机。很多产品将登录名与分机号分开配置,两者不能互换。此处需要沿用第 3 步的实验候选文件。
svcrack · 明确而很小的数字候选范围
sipvicious_svcrack -u 1001 -r 1-3 -z 4 \
-p 5060 -t 0.2 --maximumtime 10 192.168.56.10
-r 1-3 与 -z 4 生成 0001、0002、0003 三个候选,另外仍需考虑工具默认的用户名同密码尝试。适合实验账户的口令策略阳性/阴性对照;不用于大范围账号尝试。
怎样判断结果结合 PBX 日志统计真实认证次数;若触发锁定,后续“未找到”反映的可能是锁定状态。
svcrack · 标准输入与非默认 UDP 端口
printf '%s\n' 'wrong-demo' 'lab-demo-only' | \
sipvicious_svcrack -u 1001 -d - -t 0.2 \
udp://192.168.56.10:5080
-d - 从 stdin 读候选,便于接入受控内部检查;svwar 同样支持 -d -。udp://host:port 适用于 svwar / svcrack,不能照搬给 svmap。
svreport · 检查数量与导出可读文本
sipvicious_svreport list -t svwar -c
sipvicious_svreport export -t svwar -s lab-war-01 \
-f stdout
sipvicious_svreport stats -t svmap -s lab-map-01
sipvicious_svreport search Asterisk -t svmap -s lab-map-01
list -c 在会话列表中显示条目数;export -f stdout 在屏幕查看;stats 统计 svmap 横幅;search 在该会话中检索包含 Asterisk 的横幅字符串。以上操作读取本地会话,不产生新的 SIP 测试。
svreport · 其他导出格式与明确删除
sipvicious_svreport export -t svmap -s lab-map-01 \
-f xml -o lab-map-01.xml -n
# 仅在需要 PDF 且已安装 reportlab 时使用
sipvicious_svreport export -t svmap -s lab-map-01 \
-f pdf -o lab-map-01.pdf -n
# 确认已留存必要结果后,才删除这个本地会话
sipvicious_svreport delete -t svmap -s lab-map-01
删除只针对指定的本地保存会话,不能撤销它曾发送的 SIP 请求,也不会清理 PBX 日志。search 子命令可在 svmap 横幅结果中检索;复杂集成更适合先导出 CSV 后处理。
保存与恢复:区分“继续”与“重测”
sipvicious_svmap --resume lab-map-01
sipvicious_svwar --resume lab-war-01
sipvicious_svcrack --resume lab-auth-01 -u 1001
--resume 用于未完成会话的继续执行。已经完成的结果不要用恢复来代表一次新的整改复测;重测应使用新的 -s 会话名,并记录配置版本。
svcrash · 查看历史工具说明
sipvicious_svcrash --help
它的 -d 是旧版扫描器的 IP,-p 是该扫描器的端口;--auto 与 --astlog 是历史自动响应/日志输入模式,-b 是端口尝试。它针对旧版扫描器自身的已修复问题,不是“把 PBX 测崩”的工具。常规内部产品验收无需运行这类响应。[S7]
更多选项:知道存在,也知道何时不用