Kitty 简介

💡 原文中文,约3100字,阅读约需8分钟。
📝

内容提要

Kitty是一个Python开源模糊测试框架,专用于测试非TCP/IP私有协议。它具有模块化、可扩展、丰富数据模型、支持多阶段测试及客户端服务端测试等特性,可跨平台运行。框架由Fuzzer、Model、Target、Controller、Monitor等组件构成,通过定义数据模型、配置监控器与控制器,启动测试循环发送变异数据并收集报告。

🔎

延伸解读

适用场景与协议范围

Kitty 专为测试非 TCP/IP 通道上的私有和内部协议而设计,例如串行通信或专有硬件接口。如果你的目标使用标准网络协议,Kitty 可能不是最佳选择。其模块化设计允许复用监视代码和数据模型,但需要用户自行实现与目标的通信逻辑。

架构与扩展方式

Kitty 由 Fuzzer、Model、Target、Controller、Monitor 等组件构成,各组件职责独立。扩展时无需修改核心代码,大部分功能在用户代码中实现,包括监视、控制及与目标通信。这种设计降低了耦合,但要求开发者熟悉各组件 API 并遵循自底向上的构造顺序。

测试流程与监控要点

一次模糊测试会话需依次定义数据模型、实例化 Controller、Monitor、Target,并配置 Fuzzer。启动后,Fuzzer 循环获取变异数据、执行传输、收集报告。Monitor 子类需重写 setup、_monitor_func、teardown 等方法,并在每次测试前后清理数据,以确保监控准确。

❓

Q&A

Kitty 是什么?

Kitty 是一个用 Python 编写的开源模糊测试框架,专用于测试非 TCP/IP 通道上的私有和内部协议。

Kitty 有哪些主要特性?

Kitty 具有模块性、扩展性、丰富的数据模型、状态性(支持多阶段模糊测试)、支持客户端和服务端 fuzzing,并且可以跨平台运行(Linux、OS X 和 Windows)。

Kitty 框架由哪些组件构成?

Kitty 框架主要由 Fuzzer、Model、Target、Controller、Monitor 等组件构成。Fuzzer 是最高级控制结构,包含 Interface、Target、Model;Model 定义数据模型;Target 管理受测者;Controller 控制受测者状态;Monitor 监控受测者行为。

如何使用 Kitty 进行一次模糊测试?

使用 Kitty 进行模糊测试的步骤包括:定义数据模型、实例化 Controller 和 Monitor 子类、实例化 Target 子类并设置 controller 和 monitors、实例化 Fuzzer 并设置 model 和 target、调用 Fuzzer.start() 开始测试、调用 Fuzzer.stop() 停止测试。

Kitty 的 Monitor 组件有什么作用?如何自定义 Monitor?

Monitor 用于监控受测者的行为,如网络流量、内存消耗、串行输出等。自定义 Monitor 需要继承 BaseMonitor 类,并建议重写 __init__、setup、_monitor_func、teardown、pre_test、post_test 等方法。

Kitty 支持哪些平台?

Kitty 可以在 Linux、OS X 和 Windows 上运行。

🏷️

标签

➡️

继续阅读