簡介
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 為語音通信安全提供了重要的攻防驗證手段。
在此特別強調,本教程僅在合法授權的情況下進行測試和研究,請勿用于其他用途。未經授權使用此類工具可能會侵犯他人隱私,觸犯相關法律,任何因此引發的法律或利益糾紛與本人無關。
歡迎各位大佬,小白來找我交流。