| Sulley: 布? | Boo: 猫咪!
Kitty 是一个开源的、模块化且可扩展的模糊测试框架,使用 Python 编写,灵感来源于 OpenRCE 的 Sulley <https://github.com/OpenRCE/sulley>_ 以及 Michael Eddington(现 Deja Vu Security)的 Peach Fuzzer <http://community.peachfuzzer.com/>_。
目标
我们最初编写 Kitty 时,目标是帮助我们模糊测试不常见的目标——即通过非 TCP/IP 通信渠道传输的专有和专有协议——而无需每次都从头开始编写。一个通用且抽象的框架,包含我们认为每个模糊测试流程中常见的功能,并允许用户轻松扩展和使用它来测试其特定目标。
特性
基于这一目标,以下特性对我们至关重要:
:模块化:
模糊器的每个部分都独立存在。这意味着你可以在不同的应用程序中使用相同的监控代码,或者使用相同的负载生成器(即 数据模型)来测试通过不同渠道接收的相同数据的解析。
:可扩展性:
如果你需要测试“新”事物,无需更改 Kitty 的核心代码。大多数(如果不是全部)特性都可以在用户代码中实现,包括监控、控制以及与模糊测试目标的通信。
:丰富的数据建模:
数据模型核心功能强大,允许描述高级数据结构,包括字符串、哈希、长度、条件以及更多。并且,像框架中的大多数组件一样,它设计为可根据需要进一步扩展。
:有状态:
支持多阶段模糊测试。你不仅可以描述单个消息的负载内容,还可以描述消息的顺序,甚至可以对序列顺序进行模糊测试。
:客户端与服务器模糊测试:
你可以模糊测试服务器和客户端,前提是你拥有匹配的协议栈。听起来是一个大要求,但并非如此:它仅仅意味着你应该具备与目标通信的手段,这在大多数情况下是必须的。
:跨平台:
可在 Linux、OS X 和 Windows 上运行。我们不会评判 ;-)
嗯,Kitty 本身不是一个模糊器。它也不包含任何特定协议或通信渠道的实现。你可以用它编写自己的模糊器,也可以使用他人基于 Kitty 的代码,但它不是一个开箱即用的模糊器。
获取(以及添加)Kitty 模型实现的一个好地方是 Katnip。
Kitty 作为一个框架,实现了模糊器的主循环,并为数据建模提供了语法,以及用于创建完整模糊测试会话的每个元素的基类。然而,类的具体实现 不 是 Kitty 框架的一部分。这意味着 Kitty 定义了与目标进行数据传输的接口和基类,但并不提供通过 HTTP、TCP 或 UART 进行数据传输的实现。
各种类的实现可以在配套的仓库中找到——Katnip <https://github.com/cisco-sas/katnip>_。
安装 Kitty:
::
pip install kittyfuzzer
在 ReadTheDocs <https://kitty.readthedocs.io>_ 上阅读部分文档。
查看示例。
构建你自己的模糊器 :-)
Freenode 上的 #kitty <https://webchat.freenode.net/?channels=kitty>_发现了一个 bug?
请提交一个 问题 <https://github.com/cisco-sas/kitty/issues/new>_
有修复方案?
太好了!请提交一个 拉取请求 <https://github.com/cisco-sas/kitty/compare>_
实现了一个有趣的控制器/监控器/目标?
请在 Katnip 仓库 <https://github.com/cisco-sas/katnip>_ 中提交拉取请求
使用基于 Kitty 的模糊器发现了一个有趣的 bug? 我们很乐意听到!请发送一条消息给我们
|docs| |travis| |coverage| |gitter|
.. |docs| image:: https://readthedocs.org/projects/kitty/badge/?version=latest :alt: 文档状态 :scale: 100% :target: https://kitty.readthedocs.io/en/latest/?badge=latest
.. |travis| image:: https://travis-ci.org/cisco-sas/kitty.svg?branch=master :alt: 构建状态 :scale: 100% :target: https://travis-ci.org/cisco-sas/kitty
.. |coverage| image:: https://coveralls.io/repos/github/cisco-sas/kitty/badge.svg?branch=master :alt: 测试覆盖率状态 :scale: 100% :target: https://coveralls.io/github/cisco-sas/kitty?branch=master
.. |gitter| image:: https://badges.gitter.im/cisco-sas/kitty.svg :alt: 在 Gitter 上聊天 :scale: 100% :target: https://gitter.im/cisco-sas/kitty?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge