rtpinsertsound:语音注入攻击!全参数详细教程!Kali Linux教程!
简介
2006年8月至9月期间,我们创建了一个用于将音频插入指定音频(即RTP)流的工具。该工具名为rtpinsertsound。
该工具已在Linux Red Hat Fedora Core 4平台(奔腾IV,2.5 GHz)上进行了测试,但预计该工具能够在各种Linux发行版上成功构建和执行。该工具的第一个发行版是:v1.1。
v3.0是2007年1月发布的升级版本,旨在支持通过libfindrtp自动检测RTP会话端点地址和端口。
v2.0 是 2006 年 10 月发布的升级版本,除了 v1.1 中支持的 tcpdump 格式文件(即 G.711 RTP/UDP/IP/ETHERNET 捕获)的音频输入外,还支持直接将某些波形(即 .wav)文件输入到工具中作为要插入的音频源。
本工具的开发初衷是:
- 帮助 VoIP 基础设施所有者测试、审计和发现其部署中的安全漏洞。
- 帮助第三方测试、审计和发现其 VoIP 基础设施所有者(与其签订合同或以其他方式明确授权第三方评估该 VoIP 基础设施)的安全漏洞。
- 帮助 VoIP 基础设施生产商测试、审计和发现其生产的 VoIP 硬件/软件/系统中的安全漏洞。
- 用于集体教育活动或个人出于自身求知欲、娱乐或炫耀目的目的使用(除非存在恶意)。
严禁非法使用此工具。
构建 rtpinsertsound 时,需要特别注意以下开源库:
1) libnet v1.1.2.1(该工具至少需要此版本)
2) libpcap v0.9.4(该工具可能兼容某些早期版本)
3) libfindrtp [例如,用于嗅探 RTP 会话的实用程序 - libfindrtp_find_rtp()]
4) hack_library [例如,用于嗅探 RTP 会话的实用程序 - Str2IP()]
注意:rtpinsertsound 的 Makefile 假定 hack_library.o 和 hack_library.h 位于 rtpinsertsound 目录下 Makefile 对应的 ../hack_library 文件夹中。
5) 基于 SUN 公司于 20 世纪 90 年代初发布的开源代码的 G.711 编解码器转换库,由 Borge Lindberg 于 1994 年 12 月 30 日更新。
注意:rtpinsertsound 工具的 Makefile 假定原始 g711.c 文件已重命名为 g711conversions.c,并且已添加 g711conversions.h 文件。rtpinsertsound 工具的 Makefile 假定此库的头文件和对象位于 ../g711conversions 文件夹中,该文件夹与 rtpinsertsound 的构建文件夹相对。
安装
源码安装
通过以下命令来进行克隆项目源码,建议请先提前挂好代理进行克隆项目。
git clone https://github.com/foreni-packages/rtpinsertsound.git
进入目录并查看。
cd rtpinsertsound/
ls
进入 g711conversions 目录并查看。
cd g711conversions
ls
编译一下
make
回到上一级目录,并进入 hack_library 目标查看。
cd ..
cd hack_library
ls
编译一下
make
回到上一级目录并进入 rtpinsertsound_v3.0 目录并查看。
cd ..
cd rtpinsertsound_v3.0/
ls
编译
make
运行以下命令,如果出现这个界面,就说明安装成功了。
./rtpinsertsound -h
APT包管理器安装
Kali Linux 默认已经安装好 rtpinsertsound 工具了,如果还未安装的话,也可以通过以下命令来进行安装。
sudo apt install rtpinsertsound
使用
1. -h
帮助 - 打印此用法
rtpinsertsound -h
2. 常规使用
注意:要使用 root 权限才能运行。
sudo rtpinsertsound test2.wav -v
要将音频混入目标实时音频流的文件路径名。如果文件扩展名是 .wav,则该文件必须是符合以下约束的标准 Microsoft RIFF 格式的 WAVE 文件:
1) 标头“块”必须是以下两种序列之一:
RIFF, fmt, fact, data 或 RIFF, fmt, data
2) 压缩码 = 1(PCM/未压缩)
3) 声道数 = 1(单声道)
4) 采样率 (Hz) = 8000
5) 有效位/采样 =
有符号,线性 16 位或
无符号,线性 8 位
如果文件名未指定 .wav 扩展名,则该文件被假定为 tcpdump 格式的文件,包含一系列仅包含 G.711 u-law RTP/UDP/IP/ETHERNET 消息的序列
注意:是的,即使此文件必须包含,该格式也被称为“tcpdump” UDP 消息
注意:如果您在具有多个已启动以太网接口的主机上运行此工具,请注意,这些接口在路由表中的显示顺序以及可从这些接口访问的网络可能会迫使 Linux 将欺骗的音频数据包输出到与您在命令行中指定的接口不同的接口。这应该不会影响该工具,除非这些欺骗的数据包通过您在命令行中指定的接口返回主机(例如,这些接口通过集线器连接)。
3. -a
源 RTP IPv4 地址
4. -A
源 RTP 端口
5. -b
目标 RTP IPv4 地址
6. -B
目标 RTP 端口
sudo rtpinsertsound test2.wav -a 192.168.174.134 -A 5060 -b 192.168.174.132 -B 5060
7. -f spoof factor
用于以下操作的数值:
a) 递增从第 i 个合法数据包获得的 RTP hdr 序列号,以生成第 i 个欺骗数据包的 RTP hdr 序列号
b) 将 RTP 有效载荷长度相乘,并将该乘积与从第 i 个合法数据包获得的 RTP hdr 时间戳相加,以生成第 i 个欺骗数据包的 RTP hdr 时间戳
c) 递增从第 i 个合法数据包获得的 IP hdr ID 号,以生成第 i 个欺骗数据包的 IP hdr ID 号
[范围:+/- 1000,默认值:2]
sudo rtpinsertsound test2.wav -v -f 2
8. -i
接口(例如 eth0)
sudo rtpinsertsound test2.wav -v -i eth0
9. -j jitter factor
在目标音频流中接收到合法 RTP 数据包后,将启用下一个音频流的输出欺骗数据包。此因子决定了该欺骗数据包的实际传输时间。该因子与您希望启用的欺骗数据包与下一个合法数据包的传输间隔有多近有关。例如,-j 10 表示编解码器传输间隔的 10%。如果传输间隔 = 20,000 微秒(即 G.711),则延迟欺骗 RTP 数据包的输出,直到时间位于下一个合法 RTP 数据包预期时间的 2000 微秒(即 10%)以内。换句话说,延迟 100% 减去抖动因子,即本例中的 18,000 微秒。抖动因子越小,在收到下一个合法 RTP 数据包之前无法输出当前欺骗数据包的风险就越大。因此,建议使用大于 10 的因子。
[范围:0 - 80,默认值:80 = 尽快输出欺骗数据包]
sudo rtpinsertsound test2.wav -v -j 80
10. -p
设置和注入之间的暂停秒数
sudo rtpinsertsound test2.wav -v -p 10
11. -v
详细输出模式
sudo rtpinsertsound test2.wav -v
综合使用
通过网络插入音频文件(/usr/share/rtpinsertsound/stapler.wav)并使用详细输出(-v)
sudo rtpinsertsound /usr/share/rtpinsertsound/stapler.wav -v
总结
rtpinsertsound 是一款针对 RTP 协议的语音注入工具,可用于向未加密或未认证的 VoIP 通话中插入音频数据。在合法授权的测试环境中,rtpinsertsound 有助于安全人员验证 RTP 流是否存在内容篡改或劫持风险。通过该工具,用户可以深入理解语音传输链路中的安全薄弱点,尤其是在未启用 SRTP 等加密机制的场景中。作为一款典型的“主动干扰”类测试工具,rtpinsertsound 为语音通信安全提供了重要的攻防验证手段。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。