Kitty:Python语言编写的Fuzzing框架

  Kitty是一款用Python语言编写的开源的模块化、可扩展的模糊测试框架,灵感来源于OpenRCE’s Sulley 和 Michael Eddington的 (现在为Deja Vu Security的) Peach Fuzzer 。

  目标

  我们开始写Kitty的时候,目的是帮助我们fuzz特殊的目标。也就就是运行于非TCP/IP通道上的私有和内部协议。一个通用、抽象的框架应该包含所有我们能想到的模糊测试过程中用到的所有通用功能,并且能方便用户扩展,以便用来攻击特定目标。

  

  特性

  心中有了这样的目标,以下的特性就非常重要:

  1、模块性:fuzzer的每一个部分都是独立的,这意味着你能够用相同的监视代码监控不同的程序,用相同的载荷生成工具(aka Data Model)生成的数据可以在不同的信道中传递;

  2、扩展性:如过你想测试新的东西,不需要修改Kitty的核心代码。即便不是所有,大部分功能应该在用户代码中实现。这包括监视,控制以及和被fuzz的目标的通信;

  3、丰富的数据模型:数据模型的核心要丰富,能够描述高级的数据结构,包括字符串,哈希,长度,条件及其它。而且和其它框架一样,还要设计好,将来需要的时候可以扩展;

  4、状态性:支持多阶段的模糊测试。不仅要能描述单独消息的载荷应该是什么样,还要能描述消息的顺序,甚至按照顺序进行fuzzing;

  5、客户端和服务端fuzzing:假设你有一个配对的程序栈,你可以对服务端和客户端进行fuzz。这听起来是一个很高的要求,但实际上不是:只需要你像通常一样能够和目标通信即可;

  6、跨平台:可以在Linux,OS X和Windows上运行。

  它不是XX

  好吧,Kitty不是一个模糊测试器。它包含了还未实现的特定的协议或者通信通道。你可以用它写一个自己的模糊测试器,你同样可以用其它的基于Kitty的代码,但是它不是一个开箱即用的模糊测试器。获取Kitty模型实现的一个好去处是Katnip。

  Katnip

  Kitty,作为一个框架,实现了模糊测试器的主循环,并且提供了用于创建一个完整的fuzzing会话所需要的数据模型和基类的语法。然而,特定类的实现并不是Kitty框架的一部分。这意味着,Kitty定义了与目标进行数据传递的接口和基类,但是没有提供HTTP,TCP或者UART之上的数据传输实现。各种类的实现可以在附赠的软件仓库Katnip Github中找到。

  接下来是什么?

  安装Kitty:

  pip install git+https://github.com/cisco-sas/kitty.git#egg=kitty

  阅读这里的文档。

  构建自己的fuzzer。

照片相框 http://www.biyinjishi.com/products/a65-b6535/d100137/
创意家居 http://www.biyinjishi.com/products/a65-b6550/d100137
杯子 http://www.biyinjishi.com/products/a65-b6550/d100139/
T恤衫 http://www.biyinjishi.com/products/a65-b6550/d100140/
卫衣 http://www.biyinjishi.com/products/a65-b6550/d100140/
记事本 http://www.biyinjishi.com/products/a65-b6550/d100141/
手机周边 http://www.biyinjishi.com/products/a65-b6550/d100142/
抱枕 http://www.biyinjishi.com/products/a65-b6550/d100143/
请柬 http://www.biyinjishi.com/products/a65-b6550/d100144/
贺卡 http://www.biyinjishi.com/products/a65-b6550/d100144/
文集 http://www.biyinjishi.com/products/a65-b6550/d100148/
诗集 http://www.biyinjishi.com/products/a65-b6550/d100148/
自传 http://www.biyinjishi.com/products/a65-b6550/d100148/
个人出书 http://www.biyinjishi.com/products/a65-b6580/d100144
微信书 http://www.biyinjishi.com/products/a65-b6580/d100146/

时间: 2024-10-10 02:32:45

Kitty:Python语言编写的Fuzzing框架的相关文章

Web2py是一个用Python语言编写的免费的开源Web框架

Zope 2是一款基于Python的Web应用框架,是所有Python Web应用程序.工具的鼻祖,是Python家族一个强有力的分支.Zope 2的"对象发布"系统非常适合面向对象开发方法,并且可以减轻开发者的学习曲线,还可以帮助你发现应用程序里一些不好的功能. Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速.可扩展.安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议. Web2py提供一站式的解决方案,整个开发过程都可

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取 一.实验环境: Python2.7.10.pycharm.VM虚拟机.CentOS6.3.mysql 二.MySQLdb模块: MySQLdb模式是Python中专门连接MySQL数据库的模块,另外Python开发环境的搭

运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间

申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过两天自己回顾这部分内容的时候发现就又忘了,于是自己就想到自己边学边写一些小程序,以便能更好的让自己记住语法. 一.开发环境以及测试环境 Python2.7.10.pycharm.VM虚拟机.CentOS6.3 二.代码实现 代码结构: commands.py —> os_info_in.py —>

选择使用c语言编写的phalcon框架

使用这个框架,我总结了如下几点考虑 1.这个框架速度快.纯c语言编写的框架,速度都比php框架快,省去了中间环节.当然,使用它不仅仅是性能考虑.因为如果为了解决php性能问题,完全可以有很多种方式,不仅仅是这种.比如做代码优化(加php代码加速器),像facebook加速php性能有开源的工具可以使用等等. 2.升级方便.市面上的tp.ci等框架,大家看着不爽,就自己把源码给修改了,造成升级版本困难.因为这些框架不是公司内部在维护.升级.是外面官方团队维护.所以一旦他们升级版本了,你修改过源码就

搞几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码!

为提高大家对"Python"编程语言的学习兴趣,今天给大家分享几款有趣的Python程序代码,感兴趣的小伙伴可以跟着学习借鉴哦!进群:839383 765可以获取Python学习资料哦! 分享一:"啥是佩奇?"让Python语言告诉你用Python代码创作一副佩奇: <pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Co

用python语言编写网络爬虫

本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re=urllib.request.urlopen('网址‘) 打开的也可以是个urllib.request.Request对象,后边也可以跟数据参数,当有传入数据时会自动变为POST请求: 2.urllib.request.Request(url,data=None,headers={})对象 属性:

乐搏讲自动化测试 - Python语言编写规则(10)

(1)编码:默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码:例如 # -- coding: cp-1252 --,这个定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语.白罗斯语.马其顿语.俄语.塞尔维亚语. (2)标识符:1..第一个字符必须是字母表中字母或下划线 _ .2.标识符的其他的部分由字母.数字和下划线组成.3.标识符对大小写敏感.在 Python

Python语言编写脚本时,对日期控件的处理方式

对日期控件,日期控件的输入控一般是不能手动输入的:把readonly属性去掉就好 其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了! 但是,很多此类型input框都是禁止手动输入的,怎么办? 很简单,用js把禁止输入的readonly属性去掉就好了.如下四种方法都可 # -*- coding: utf-8 -*- from selenium import webdriver from time import sleep driver = webdriver.Fir

使用python语言编写脚本控制freeswitch总结

1.  在Linux环境下已经安装了freeswitch,(没安装freeswitch,请安装说明文档) 2.  进入源代码目录 cd  libs/esl 目录下 首先安装 yum install python-devel l  首先安装 python-devel,执行yum install python-devel l  make pymod l  make pymod-install 3.安装pip工具参照前面的一篇博客 4.安装swig工具,yum install swig 5.安装完成p