sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介

sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。

sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一运行:

默认模式

一条 SIP 消息通过 sip-uri 发送到目标,并显示回复状态。请求可以从文件名中获取,也可以生成一条新的 OPTIONS 消息。

traceroute 模式 (-T)

此模式用于学习请求的路径。其操作类似于 IP 层实用程序 traceroute(8)。

message 模式 (-M)

向给定目标发送一条短消息(类似于手机短信)。使用选项 -B 可以设置消息的内容。在此模式下,选项 -c 和 -O 可能很有用。

usrloc 模式 (-U)

SIP 注册器的压力模式。 sipsak 持续高速向 SIP 服务器注册。此外,可以使用 -I 或 -M 选项对注册服务器进行压力测试。如果省略 -I 和 -M 选项,sipsak 可用于将任何给定联系人注册到注册服务器的账户(使用 -C 选项),并查询注册服务器账户的当前绑定。

randtrash 模式 (-R)

解析器折磨模式。sipsak 持续发送随机损坏的消息来折磨 SIP 服务器的解析器。

flood 模式 (-F)

SIP 服务器的压力模式。sipsak 持续高速向 SIP 服务器发送请求。

安装

源码安装

通过以下命令来进行克隆项目源码,建议请先提前挂好代理进行克隆。

bash 复制代码
git clone https://github.com/nils-ohlmeier/sipsak.git

进入目录并查看。

bash 复制代码
cd sipsak/
ls

生成 configure 脚本

bash 复制代码
autoreconf --install

编译配置参数

bash 复制代码
./configure

编译

bash 复制代码
make

运行以下命令,如果出现这个界面,就说明安装成功了。

bash 复制代码
./sipsak -h

APT包管理器安装

Kali Linux 默认是没有安装好 sipsak 工具了。可以通过以下命令来进行安装。

bash 复制代码
sudo apt install sipsak

使用

1. -h, --help

打印简单的使用帮助信息。如果长选项 --help 可用,则会打印包含可用长选项的帮助信息。

bash 复制代码
sipsak -h
bash 复制代码
sipsak --help

2. 常规使用

bash 复制代码
语法:
shoot  : sipsak [-f FILE] [-L] -s SIPURI
trace  : sipsak -T -s SIPURI
usrloc : sipsak -U [-I|M] [-b NUMBER] [-e NUMBER] [-x NUMBER] [-z NUMBER] -s SIPURI
usrloc : sipsak -I|M [-b NUMBER] [-e NUMBER] -s SIPURI
usrloc : sipsak -U [-C SIPURI] [-x NUMBER] -s SIPURI
message: sipsak -M [-B STRING] [-O STRING] [-c SIPURI] -s SIPURI
flood  : sipsak -F [-e NUMBER] -s SIPURI
random : sipsak -R [-t NUMBER] -s SIPURI

每种模式下的附加参数:
 [-a PASSWORD] [-d] [-i] [-H HOSTNAME] [-l PORT] [-m NUMBER] [-n] [-N] [-r PORT] [-v] [-V] [-w]

shoot

bash 复制代码
sipsak -s sip:46.114.129.109

traceroute 模式

bash 复制代码
sipsak -T -s sip:[email protected]

usrloc 模式

bash 复制代码
sipsak -U -s sip:[email protected]

message 模式

bash 复制代码
sipsak -M -B "Hello, this is a test" -s sip:[email protected]

flood 模式

bash 复制代码
sipsak -F -s sip:[email protected]

randtrash 模式

bash 复制代码
sipsak -R -s sip:[email protected]

3. -a, --password PASSWORD

身份验证密码(如果省略 password="")

如果收到"401 Unauthorized",则使用给定的密码尝试身份验证。授权将在 time 时尝试。如果省略此选项,则将尝试使用空密码 ("") 进行授权。如果密码等于- ,则密码将从标准输入(例如键盘)读取。这将阻止同一主机上的其他用户在进程列表中看到密码。注意:如果其他用户有权访问内存,则密码仍然可以从内存中读取。

bash 复制代码
sipsak -s sip:[email protected] -a password

4. -A, --timing

如果详细程度为零(因为未指定 -v),则仅打印测试运行的时间值。如果指定了一个或多个 -v,则此选项将被忽略。

bash 复制代码
sipsak -s sip:[email protected] --timing 10

5. -b, --appendix-begin NUMBER

在 usrloc 模式下附加到用户名的起始编号。此 NUMBER 会增加,直到达到 -e 参数指定的值。如果省略,则起始数字为 1。

bash 复制代码
sipsak -U -b 10 -e 20 -s sip:[email protected]

6. -B, --message-body STRING

指定的字符串将用作发送消息请求的正文。

bash 复制代码
sipsak -M -B "Test message" -s sip:[email protected] --from sip:[email protected]

7. -c, --from SIPURI

如果 sipsak 运行在消息模式(使用 -M 选项启动),则指定的 SIPURI 将用于 From 头域。这

有助于向消息接收者提供一个有意义且可用的地址,甚至可以将响应发送到该地址。

bash 复制代码
sipsak -M -c sip:[email protected] -s sip:[email protected]

8. -C, --contact SIPURI

这是 usrloc 模式下 Contact 头域的内容。

这允许像邮件一样插入转发。例如,您可以将第一个 SIP 帐户的 URI 插入到第二个帐户,这样所有对第二个帐户的呼叫都将被转发到第一个帐户。由于此选项的参数不会括在括号中,因此您还可以以原始格式以逗号分隔的列表形式提供多个联系人。特殊字词 empty 或 none 将导致 REGISTER 请求中没有联系人标头,因此服务器应使用注册商处帐户的当前绑定进行应答。特殊字词 * 或 star 将导致联系人标头仅包含一个星号,例如,使用 expires 值 0 和此联系人一起删除所有绑定。

bash 复制代码
sipsak -U -C sip:[email protected] -s sip:[email protected]

9. -d, --ignore-redirects

如果设置了此选项,所有重定向都将被忽略。默认情况下,如果没有此选项,则会接受收到的重定向。此选项在随机垃圾模式和泛洪模式下自动启用。

bash 复制代码
sipsak -d -s sip:[email protected]

10. -D, --timeout-factor NUMBER

SIP_T1 计时器将乘以指定的 NUMBER。在收到 INVITE 请求的临时响应后,或者当使用 TCP 或 TLS 等可靠传输时,sipsak 将等待最终响应所需的时间,直到放弃。

bash 复制代码
sipsak -D 10 -s sip:[email protected]

11. -e, --appendix-end NUMBER

在 usrloc 模式下附加到用户名的结束编号。此编号会不断增加,直到达到此结束编号。在泛洪模式下,这是将发送的最大消息数量。如果省略,则默认值为 2^31 (2147483647)。

bash 复制代码
sipsak -e 2147483647 10 -s sip:[email protected]

12. -E, --transport STRING

STRING 的值将用作发送和接收请求及响应的 IP 传输协议。此选项会覆盖 URI 评估和 SRV 查找的任何结果。目前,STRING 的值仅接受"udp"和"tcp"。

bash 复制代码
sipsak -E udp -s sip:[email protected]
sipsak -E tcp -s sip:[email protected]

13. -f, --filename FILE

FILE 的内容将以二进制模式读取,并用于替换已创建的 SIP 消息。在默认模式下,此选项可用于发出除 OPTIONS 请求之外的其他请求(例如 INVITE)。默认情况下,将在换行符前插入缺失的回车符(使用 -L 可停用此功能)。如果文件名等于 - 则表示文件从标准输入读取,例如键盘或管道。请注意,操作函数(例如插入 Via 标头)仅针对符合 RFC 规范的请求进行了测试。此外,文件中的特殊字符串可以用一些本地或给定值替换(详情请参阅 -g 和 -G)。

bash 复制代码
sipsak -f test -s sip:[email protected]

14. -F, --flood-mode

此选项激活泛洪模式。在此模式下,OPTIONS CSeq 值递增的请求将被发送到服务器。回复将被忽略------localhost 的源端口 9(丢弃)将在最顶层 Via 中发布。

bash 复制代码
sipsak -F -s sip:[email protected]

15. -g, --replace-string STRING

启用将请求中的 replace 替换为 STRING 字符串(通常从文件读取)。或者,您也可以指定一个属性和值的列表。此列表必须以非字母数字字符开头和结尾。属性和值之间以及新的属性值对之间的分隔符也必须使用相同的字符。字符串"attribute"将被替换为消息中的值字符串。

bash 复制代码
sipsak -g sip:[email protected] -s sip:[email protected]

16. -G, --replace

启用自动替换请求中的以下变量(通常从文件读取):dsthost 将被替换为 -s 参数指定的主机名或域名。srchost 将被替换为本地计算机的主机名。port 将被替换为 sipsak 的本地监听端口。user 将被替换为 -s 参数指定的用户名。

bash 复制代码
sipsak -G -s sip:[email protected]

17. -H, --hostname HOSTNAME

使用给定参数覆盖主机名的自动检测。警告:请谨慎使用此选项(仅在自动检测失败时使用)。

bash 复制代码
sipsak -H 127.0.0.1 -s sip:[email protected]

18. -i, --no-via

禁用本地主机 Via 行的插入。

警告:这可能会导致服务器无法接收响应。

bash 复制代码
sipsak -i -s sip:[email protected]

19. -I, --invite-mode

在 usrloc 模式下激活 Invites 循环。它应该与 -U 选项结合使用。在此组合中,sipsak 首先注册一个用户,然后模拟向该用户发出邀请。首先发送 Invite 消息,然后以 200 OK 响应,最后发送 ACK 消息。此选项也可以在不使用 -U 选项的情况下使用,但请确保不要使用此选项邀请真实的用户代理 (UA)。如果缺少 -U 选项,则 -l PORT 是必需的,因为只有当您之前使用固定本地端口运行了 -U 选项时,使用 -I 选项和相同的固定本地端口运行才会成功。

警告:sipsak 不是真实的用户代理 (UA),因此向真实用户代理发出邀请可能会导致意外行为。

bash 复制代码
sipsak -I 5060 -s sip:[email protected]

20. -j, --headers STRING

该字符串将作为一个或多个附加标头添加到请求中。字符串"\n"(注意:两个字符)将被替换为 CRLF,从而生成两个独立的标头。这样就可以添加多个标头。

bash 复制代码
sipsak -j "X-Test-Header: 12345" -s sip:[email protected]

21. -J, --autohash STRING

该字符串将用作摘要身份验证响应计算的 H(A1) 输入。因此,如果提供了此选项,则无需使用 -a 选项中的密码。给定的字符串应为十六进制字符串,其长度与所用哈希函数的长度相同。

bash 复制代码
sipsak -M -B "Auth test" -J 3d212ffb7d0d5b5dff5faebfbc9f134d -s sip:[email protected] --from sip:[email protected]

22. -k, --local-ip STRING

要使用的本地 IP 地址

bash 复制代码
sipsak -k 192.168.174.11 -s sip:[email protected]

23. -l, --local-port PORT

接收 UDP 套接字将使用本地网络端口。如果 -f 选项指定的文件包含正确的 Via 行,则此选项很有用。有关 sipsak 如何发送和接收消息的详细信息,请查看 -S 选项。

bash 复制代码
sipsak -l 5060 -s sip:[email protected]

24. -L, --no-crlf

如果输入来自文件 ( -f ),则禁用在所有换行符 ( \n )(未以回车符结尾)之前插入回车符 ( \r )。

如果没有此选项,则还会在请求后附加一个空行(如果需要)。

bash 复制代码
sipsak -L -s sip:[email protected]

25. -m, --max-forwards NUMBER

设置 Max-Forward 头字段的值。如果省略,则不会插入 Max-Forward 字段。如果在 traceroute 模式中省略,则数值为 255。

bash 复制代码
sipsak -m 25 -s sip:[email protected]

26. -M, --message-mode

这将激活 usrloc 模式下的消息循环(从 0.8.0 之前的 sipsak 版本开始,在常规 usrloc 测试中已启用)。此选项应与 -U 结合使用,以便向用户发送测试消息,并回复 200 OK,以测试注册是否成功。但此选项也可以在不使用 -U 选项的情况下使用。警告:不使用 -U 选项可能会导致意外行为。

bash 复制代码
sipsak -U -M -s sip:[email protected] 

27. -n, --numeric

将使用本地主机的 IP 地址,而不是 Via 行中的完全限定域名。此选项现在默认启用。

bash 复制代码
sipsak -n --hostname=192.168.174.11 -s sip:[email protected]

28. -N, --nagios-code

使用 Nagios 兼容的返回代码,而不是常规的 sipsak 代码。这意味着如果一切正常,sipsak 将返回 0;如果发生任何错误(本地或远程),则返回 2。

bash 复制代码
sipsak -N -s sip:[email protected]

29. -o, --sleep NUMBER

s​​ipsak 将在 usrloc 模式下休眠 NUMBER 毫秒,然后开始下一个周期。这将减慢整个测试过程,使其更贴近实际。每个周期仍将尽快完成,但整个测试速度会降低。

bash 复制代码
sipsak -o 100 -s sip:[email protected]

30. -O, --disposition STRING

指定的 STRING 将用作 Content-Disposition 标头的内容。如果没有此选项,请求中将没有 Content-Disposition 标头。

bash 复制代码
sipsak -M -B "Test message with disposition" -O "render" -s sip:[email protected]

31. -p, --outbound-proxy HOSTNAME[:PORT]

主机名的地址是请求将被发送到的目标(传出代理)。如果目标主机与请求 URI 的主机部分不同,请使用此选项。如果支持 DNS SRV(请参阅 SRV 解析说明)并且未指定端口,则主机名将通过 DNS SRV 进行解析。

bash 复制代码
sipsak -p 127.0.0.1:5060 -s sip:[email protected]

32. -P, --processes NUMBER

并行启动 NUMBER 个进程进行发送和回复检查。仅在 usrloc、message 或 inform 模式下为 -e 指定更大数值时才有意义。

bash 复制代码
sipsak -P 10 -e 20 -s sip:[email protected]

match 匹配 REGEXP 字符串,若未匹配则返回 false。例如,可用于检测 Server 头字段中的服务器名称。

bash 复制代码
sipsak -q 'Server:.*Asterisk' -s sip:[email protected]

34. -r, --remote-port PORT

将使用 PORT 端口,而非默认的 SIP 端口 5060。或者,也可以在 -s 参数的 SIP URI 中指定远程端口。

bash 复制代码
sipsak -r 5060 -s sip:[email protected]

35. -R, --random-mode

这将激活 randtrash 模式。在此模式下,OPTIONS请求将发送到服务器,请求中随机崩溃字符的数量将不断增加。请求中的位置和替换字符是随机选择的。除 Bad request (4xx) 之外的任何其他响应都将停止此模式。三次未响应的发送也将停止此模式。

使用 -t 参数可以指定最大崩溃字符数。

bash 复制代码
sipsak -R -s sip:[email protected]

36. -s, --sip-uri SIPURI

此强制选项用于设置请求的目的地。根据模式,sipsak 仅需要服务器名称或用户名。完整的 SIPURI 示例:sip:[email protected]:123。有关如何将此 URI 的主机名转换为 IP 和端口的详细信息,请参阅描述部分中关于 SRV 查找的说明。

bash 复制代码
sipsak -s sip:[email protected]:5060

37. -S, --symmetric

使用此选项,sipsak 将仅使用一个端口发送和接收消息。使用此选项,用于发送的本地端口将为 -l 选项中的值。在默认模式下,sipsak 从随机端口发送消息,并监听 -l 选项中指定的端口。注意 :使用此选项,sipsak 将无法接收来自非对称信令(以及 rport 实现损坏)服务器的回复,例如 Cisco 代理。如果您以 root 身份运行 sipsak ,并且启用了原始套接字支持(检查 -V 选项的输出),则此选项不是必需的,因为在这种情况下 sipsak 已经只使用一个端口来发送和接收消息。

bash 复制代码
sipsak -S -s sip:[email protected]:5060

38. -t, --trash-chars NUMBER

此参数指定 randtrash 模式下丢弃字符的最大数量。如果省略,NUMBER 将设置为请求的长度。

bash 复制代码
sipsak -R -t 10 -s sip:[email protected]:5060

39. -T, --traceroute-mode

这将激活 traceroute 模式。此模式的工作方式类似于众所周知的 traceroute(8) 命令,不同之处在于它计算的不是网络跳数,而是到达目标用户途中经过的服务器数量。此外,还会打印每个请求的往返时间,但由于 SIP 协议的限制,只有当服务器的响应包含警告标头字段时,才能确定并打印身份(IP 或名称)。在此模式下,每个传出请求的 Max-Forwards 标头字段的值都会从 1 开始递增。如果 -m 参数未指定其他值,则 Max-Forwards 标头的最大值将为 255。除 483 或 1xx 之外的任何其他响应都将被视为最终响应,并将终止此模式。

bash 复制代码
sipsak -T -s sip:[email protected]:5060 

40. -u, --auth-username STRING

使用给定的 STRING 作为身份验证的用户名值(不同的帐户和身份验证用户名)。

bash 复制代码
sipsak -u admin -s sip:[email protected]:5060

41. -U, --usrloc-mode

这将激活 usrloc 模式。如果没有 -I 或 -M 选项,则只会在注册器上注册用户。使用上述任一选项,先前注册的用户也将被探测,无论是通过模拟呼叫流程(invite, 200, ack)还是通过即时消息(message, 200)。可以使用 -a 选项为 usrloc 测试中的所有用户帐户指定一个密码。此模式下,-s 参数中的用户名是必需的。从 -b 参数到 -e 参数的数字会附加在用户名后。如果省略 -b 和 -e 参数,则仅使用给定的用户名运行一次,但不会在用户名后附加数字。

bash 复制代码
sipsak -U -s sip:[email protected]:5060

42. -v, --verbose

此参数会增加输出的详细程度。不使用 -v 表示除了路由跟踪和错误消息外,几乎没有输出。最多三个 v 会打印出所有接收和发送的数据包的内容。

bash 复制代码
sipsak -v -s sip:[email protected]:5060
sipsak -vv -s sip:[email protected]:5060
sipsak -vvv -s sip:[email protected]:5060

43. -V, --version

打印出 sipsak 的名称和版本号,以及编译到二进制文件中的选项。

bash 复制代码
sipsak -V

44. -w, --extract-ip

启用从警告标头字段中提取 IP 或主机名的功能。

bash 复制代码
sipsak -w -s sip:[email protected]:5060

45. -W, --nagios-warn NUMBER

如果成功前的重传次数超过指定次数,则返回 Nagios 警告退出代码 (1)。

bash 复制代码
sipsak -W 2 -s sip:[email protected]:5060

46. -x, --expires NUMBER

将 Expires 标头的值设置为指定次数。

bash 复制代码
sipsak -x 5 -s sip:[email protected]:5060

47. -z, --remove-bindings

启用在 usrloc 模式下随机删除旧绑定的功能。删除的绑定百分比由代码中的 USRLOC_REMOVE_PERCENT 定义决定(编译前设置)。绑定可以多次删除,并且无法阻止。

bash 复制代码
sipsak -U -z -s sip:[email protected]:5060

48. -Z, --timer-t1

设置 SIP 计时器 T1 的毫秒数。它决定了在不可靠传输上请求两次重传之间的间隔长度。如果未通过配置选项 --enable-timeout 进行更改,则默认值为 500。

bash 复制代码
sipsak -Z 500 -s sip:[email protected]:5060

综合使用

显示收到的回复

bash 复制代码
sipsak -vv -s sip:[email protected]

追踪到 nobody 的 SIP 路径

bash 复制代码
sipsak -T -s sip:[email protected]

插入从工作地点到家中的转接,持续一小时

bash 复制代码
sipsak -U -C sip:me@home -x 3600 -a password -s sip:myself@company

读取文件 bye.sip,将 FTAG 替换为 345.af23,并将 TTAG 替换为 1208.12,最后将此消息发送到 myproxy

bash 复制代码
sipsak -f bye.sip -g '!FTAG!345.af23!TTAG!1208.12!' -s sip:myproxy

总结

sipsak 是一款轻量级且功能全面的 SIP 协议测试工具,广泛应用于对 SIP 服务的健康检查、注册验证、消息发送及漏洞探测等任务中。其命令行结构清晰,支持批量脚本执行,适合自动化测试场景。在实际应用中,sipsak 能帮助开发者和安全工程师快速定位通信问题、验证服务响应,并在某些场景下模拟简单的 SIP 攻击行为。作为一款兼顾实用性与灵活性的工具,sipsak 是 VoIP 安全测试与日常维护中不可或缺的重要组件。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。

相关推荐
00后程序员张8 分钟前
实战解析:如何用克魔(KeyMob)等工具构建iOS应用稳定性与数据可观测体系
websocket·网络协议·tcp/ip·http·网络安全·https·udp
嵌入式@秋刀鱼27 分钟前
《 第三章-招式初成》 C++修炼生涯笔记(基础篇)程序流程结构
linux·开发语言·数据结构·c++·笔记·visual studio code
q5673152339 分钟前
Linux搭建爬虫ip与私有IP池教程
linux·爬虫·tcp/ip
Arrtoria1 小时前
Kernel2.X的内存世界
linux
程序员岳焱1 小时前
Java 与 MySQL 性能优化:Linux服务器上MySQL性能指标解读与监控方法
linux·后端·mysql
Jooolin1 小时前
【编程史】Ubuntu到底是啥?它和Linux又是什么关系?
linux·ubuntu·操作系统
打不了嗝 ᥬ᭄3 小时前
进程控制
linux·运维·服务器·c++
2501_915921433 小时前
iOS性能调试完整流程实录:工具组合下的问题定位与修复实践(含keymob)
websocket·网络协议·tcp/ip·http·网络安全·https·udp
苏州向日葵3 小时前
virtualBox安装ubuntu,常用知识点
linux·运维·ubuntu
Le_ee4 小时前
pikachu——php反序列化
网络安全·靶场·php·pikachu·php反序列