spike:一款协议模糊测试器工具包!全参数详细教程!Kali Linux教程!
简介
当您需要分析新的网络协议是否存在缓冲区溢出或类似的漏洞时,SPIKE 是专业人士的首选工具。虽然使用它需要扎实的 C 语言知识,但它能提供业内首屈一指的结果。
这是 SPIKE,一个模糊测试器创建工具包。它拥有一个相当有趣的通用数据编组 API。示例可以在 src 目录中找到。该 API 旨在使逆向工程师或安全研究人员更容易地复制未知协议。
其中包含可运行(但尚未完全完成)的模糊测试器和支持代码。这些代码包括:
1. webfuzz:webfuzz 是由许多小工具组合而成,旨在提供一个灵活且全面的 Web 应用程序模糊测试工具。具体来说,它提供了一个 Dug Song 的 webmitm 工具的修改版本。当用作透明代理(通过修改“攻击”计算机上的 /etc/hosts 文件)时,它会将所有客户端请求记录在单独的文件中。它能够可靠地处理 SSL,并且除了 OpenSSL 之外,不需要任何其他库进行编译。这些记录的客户端请求(或由网络嗅探器(例如 Ethereal)记录的请求)将使用 SPIKE API 转换为 C 源文件。编译后,这些 C 文件 (webfuzz.c) 将自动对特定的 CGI 进行模糊测试。webfuzz.c 文件作为源文件,可以轻松修改或扩展以锁定特定的漏洞。由于 SPIKE 完全开源,因此您可以获得专有且昂贵的替代方案无法比拟的灵活性和有效性。如果您使用 emacs 和一个美观的窗口管理器主题,SPIKE还包含一个非常漂亮且高效的模糊测试 GUI,就像专有替代方案一样。此外,由于 webfuzz 完全依赖于
浏览器来生成请求,因此它始终能够正确解析Java 和脚本语言。
2. msrpcfuzz:当与 dcetest 结合使用时,msrpcfuzz 会尝试测试任意 ncan_tcp 程序。它基本上会发送随机参数。如果端口突然关闭,则表明您发现了一个潜在的严重漏洞。
安装
源码安装
通过以下命令来进行克隆项目源码。建议请先提前挂好代理进行克隆。
git clone https://github.com/guilhermeferreira/spikepp.git
进入目录并查看
cd spikepp/
ls
进入 src 目录并查看一下。
cd SPIKE/src/
ls
添加缺失的辅助文件
automake --add-missing
生成 configure 脚本
autoconf
生成 Makefile 文件。
./configure
编译
make
由于这个工具有很多,我们运行其中一个工具,输入以下命令,如果出现这个界面就说明安装成功了。
./citrix -h
APT包管理器安装
Kali Linux 默认安装好 spike 工具了。如果还未安装的话,也可以通过以下命令来进行安装。
sudo apt install spike
使用
citrix
citrix -h
citrix 192.168.174.132 22
closed_source_web_server_fuzz
closed_source_web_server_fuzz 是 SPIKE 工具集中用于模糊测试(fuzzing)闭源 Web 服务器的模块。
它通过向目标服务器发送构造恶意请求(路径、方法、扩展名、文件名等),来测试目标是否会崩溃、出错、返回异常,进而发现潜在的安全漏洞(例如 buffer overflow)。
不要忘记扩展名前的句点。
常见的扩展名有:.asa .asp .cdx .cer .htw .htr .ida .idc .idq .shtm .shtml .stm .printer .jsp .jhtml .bat .exe .com .gif .jpg .mpg .rma .wma .cfm .pl .py .pike 等。
常用方法有 OPTIONS、TRACE、GET、HEAD、DELETE、PUT、POST、COPY、MOVE、MKCOL、PROPFIND、PROPPATCH、LOCK、UNLOCK、SEARCH、BROWSE。
请尝试使用现有文件和不存在的文件。也可以尝试将 .dll 与 .exe 一起使用,反之亦然。
尝试所有扩展名,并进入服务器设置窗口,尝试所有方法和所有目录。如果崩溃,请申请退款。
任何显示“500 服务器错误”的异常也表明 Web 服务器存在错误,甚至可能被利用。
处理查询时捕获的错误(不是 0x80040e14,MS 出于某种原因将其用作“非溢出”的标志)也同样如此。这些都是 Web 服务器存在严重问题的迹象。
closed_source_web_server_fuzz -h
closed_source_web_server_fuzz 192.168.174.132 80 GET /admin/ admin .asp 0 0
dceoversmb
dceoversmb -h
dceoversmb 192.168.174.132 \\pipe\\srvsvc e1af8308-5d1f-11c9-91a4-08002b14a0fa 3 0 2 10 3
dltest
dltest 是 SPIKE 的一个测试工具,专门用来加载 .spk 文件(SPIKE 脚本)并运行模糊测试。
dltest -h
dltest test.spk
do_post
do_post 是 SPIKE 工具集中用于发送 HTTP POST 请求 的模糊测试工具。这个工具会对 POST 请求的数据部分进行 fuzz,寻找目标 Web 服务器是否会因为处理异常 POST 数据而崩溃或抛出异常。
do_post -h
do_post 192.168.174.132 80 /login
generic_chunked
SPIKE 工具集中的 generic_chunked,用于对 Web 服务器进行带有 chunked 编码的 HTTP 请求模糊测试。
generic_chunked -h
generic_chunked exchange1 80 owa1.spk 0 0
generic_listen_tcp
它的作用是启动一个 TCP 监听服务端,并使用指定的 .spk SPIKE 脚本来响应客户端的请求。
generic_listen_tcp -h
generic_listen_tcp 70 gopherd.spk
generic_send_tcp
用于向目标 TCP 服务发送基于 .spk 脚本的测试数据。
generic_send_tcp -h
generic_send_tcp 192.168.174.132 701 something.spk 0 0
generic_send_udp
对目标的 UDP 服务发送构造好的 fuzz 数据。
generic_send_udp -h
generic_send_udp 192.168.174.132 80 file.spk 0 0 5000
generic_web_server_fuzz
用于对 Web 服务器 进行模糊测试,尝试发现如缓冲区溢出或其他潜在漏洞。
generic_web_server_fuzz -h
generic_web_server_fuzz 192.168.174.132 80 owa1.spk 0 0
generic_web_server_fuzz2
用于检测 Web 服务器在接收特定请求时是否存在崩溃或漏洞,特别是缓冲区溢出。
generic_web_server_fuzz2 -h
generic_web_server_fuzz2 192.168.174.132 80 owa1.spk 0 0
gopherd
gopherd 是 SPIKE 工具包中的一个模拟 Gopher 协议服务端 的工具,通常用于测试客户端程序(或漏洞利用)是否能处理 Gopher 协议中的异常或恶意数据。
gopherd
gopherd 70
halflife
用于测试 Half-Life 游戏服务器(HLDS)漏洞 的 fuzz 工具。
halflife -h
halflife 192.168.174.132 27010
line_send_tcp
向 TCP 服务发送逐行数据进行模糊测试(Line-based Fuzzing)
line_send_tcp -h
line_send_tcp 192.168.174.132 701 something.spk 0 0
msrpcfuzz
这是由 Dave Aitel 编写的一个早期的 MSRPC(Microsoft Remote Procedure Call)模糊测试工具,用于测试 MSRPC 接口中的漏洞。
这个工具属于 SPIKE Fuzzer 系列的一部分,适用于 Windows 系统的 RPC 服务漏洞挖掘。
msrpcfuzz -h
msrpcfuzz 192.168.174.132 135 e1af8308-5d1f-11c9-91a4-08002b14a0fa 3 0 2 10 3
msrpcfuzz_udp
用于通过 UDP 协议模糊测试 MSRPC 接口,目标通常是运行在 Windows 上的 RPC 服务。
msrpcfuzz_udp -h
msrpcfuzz_udp 192.168.174.132 135 e1af8308-5d1f-11c9-91a4-08002b14a0fa 3 0 2 10 3
ntlm2
用来针对 NTLM认证(Windows 网络身份验证协议) 进行密码爆破的工具。
ntlm2 -h
ntlm2 192.168.174.132 80 msfadmin password /secure_area/
ntlm_brute
具用来针对目标服务器的 NTLM 认证机制进行密码爆破。
ntlm_brute -h
ntlm_brute 192.168.174.132 80 msfadmin password /secure_area/
pmspike
这是一个针对 Print Manager(打印服务) 的 fuzz 工具或者漏洞测试工具
pmspike
pmspike 192.168.174.132
post_fuzz
用于模糊测试 Web 服务器对 POST 请求处理能力的工具,目的是帮助发现服务端解析 POST 数据时的漏洞,例如缓冲区溢出、未处理的输入异常等。
post_fuzz -h
post_fuzz 192.168.174.132 80 /bob2.php
post_spike
专用于向目标 Web 服务器发送模糊测试的 POST 请求,用于测试 Web 应用处理 POST 数据时是否存在缓冲区溢出或输入验证不足等漏洞。
post_spike -h
post_spike 192.168.174.132 80
quake
针对 Quake 游戏服务器的模糊测试工具。它可以向指定的 Quake 服务端口发送构造数据包,以检测是否存在缓冲区溢出或其他安全漏洞。
quake -h
quake 192.168.174.132 27960
quakeserver
用于配合 quake 工具进行漏洞测试。这个程序可以模拟一个基本的 Quake 游戏服务器环境,接收客户端(比如 fuzz 工具)发送的数据包,分析它们的行为。
quakeserver -h
quakeserver 192.168.174.132 27960
sendmsrpc
用于测试 MSRPC(Microsoft Remote Procedure Call) 接口的小工具。它可用于直接向指定主机的指定端口发送某个函数编号对应的 MSRPC 请求,以测试是否存在漏洞或是否响应异常。
sendmsrpc -h
sendmsrpc 192.168.174.132 135 1
ss_spike
用于模糊测试某种协议(可能是 SOCKS 或简单服务)的服务器端口。
ss_spike
ss_spike 192.168.174.132
statd_spike
专门针对 rpc.statd 服务的 fuzz 工具。rpc.statd 是 Linux 系统上 NFS(网络文件系统)的一部分,历史上曾有多次漏洞。
statd_spike
statd_spike 192.168.174.132
sunrpcfuzz
1. 帮助文档
sunrpcfuzz
2. 常规使用
用法:sunrpcfuzz -h <target host> <-s and/or -a> [optional args]sunrpcfuzz -h 192.168.174.132 -a
3. -s <n>
测试特定的 RCP 程序 'n' [需要 -v 和 -p]
sunrpcfuzz -h 192.168.174.132 -s 100000 -v 2 -p 6
4. -a
测试所有已注册的 RPC 程序
sunrpcfuzz -h 192.168.174.132 -a
5. -v <program version>
程序版本
6. -p <protocol number>
协议号,UDP 为 17,TCP 为 6
sunrpcfuzz -h 192.168.174.132 -s 100000 -v 3 -p 17
7. -i <n>
每个程序执行 n 条模糊测试消息
sunrpcfuzz -h 192.168.174.132 -s 100 -v 2 -p 6 -i 10
8. -l <n>
n 为最后一个要测试的程序
sunrpcfuzz -h 192.168.174.132 -s 100 -v 2 -p 6 -l 10
9. -f <n>
n 为第一个要测试的程序
sunrpcfuzz -h 192.168.174.132 -s 100 -v 2 -p 6 -f 5
10. -r <n>
将 n 个随机 xdr 项目推送到 SPIKE
sunrpcfuzz -h 192.168.174.132 -s 100 -v 2 -p 6 -r 10
webfuzz
webfuzz
x11_spike
x11_spike
x11_spike 192.168.174.132
总结
Spike 是一款功能强大的模糊测试工具,广泛应用于漏洞挖掘和安全测试中。通过构造各种边界值和异常输入,Spike 能有效帮助研究人员发现协议实现中的潜在缺陷。虽然使用门槛相对较高,但其高度自定义与强大的协议支持能力,使其在漏洞研究领域仍具不可替代的地位。对于想深入了解协议安全的测试人员来说,Spike 是值得掌握的一项重要工具。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。