
Framework de fuzzing escrito em python
| Sulley: Boo? | Boo: Kitty!
Kitty é um framework de fuzzing modular e extensível de código aberto escrito em Python, inspirado no Sulley do OpenRCE e no Peach Fuzzer de Michael Eddington (e agora da Deja Vu Security).
Objetivo
Quando começamos a escrever o Kitty, nosso objetivo era nos ajudar a fuzzear alvos incomuns
— ou seja, protocolos proprietários e esotéricos sobre canais de comunicação não TCP/IP —
sem ter que escrever tudo do zero a cada vez. Um framework genérico e abstrato que incluísse
as funcionalidades comuns de todo processo de fuzzing que pudéssemos imaginar, e que permitisse
ao usuário estendê-lo e usá-lo facilmente para testar seu alvo específico.
Funcionalidades
Com esse objetivo em mente, as seguintes funcionalidades foram muito importantes para nós:
:Modularidade:
Cada parte do fuzzer é independente. Isso significa que você pode usar o mesmo código de monitoramento para diferentes aplicações, ou o mesmo gerador de payload (também conhecido como Data Model) para testar a análise dos mesmos dados recebidos por diferentes canais.
:Extensibilidade:
Se você precisar testar algo "novo", não precisará alterar o código central do Kitty. A maioria, se não todas, as funcionalidades podem ser implementadas no código do usuário. Isso inclui monitorar, controlar e se comunicar com o alvo fuzzeado.
:Modelagem rica de dados:
O núcleo do modelo de dados é rico e permite descrever estruturas de dados avançadas, incluindo strings, hashes, comprimentos, condições e muito mais. E, como a maior parte do framework, ele é projetado para ser estendido ainda mais conforme necessário.
:Stateful:
Suporte para testes de fuzzing multi-estágio. Você não só pode descrever a aparência do payload de uma mensagem individual, como também pode descrever a ordem das mensagens e até realizar fuzzing na ordem da sequência.
:Fuzzing de Cliente e Servidor:
Você pode fuzzear tanto servidores quanto clientes, assumindo que tenha uma pilha compatível. Parece um grande requisito, mas não é: significa apenas que você deve ter os meios para se comunicar com o alvo, o que você já deve ter na maioria dos casos.
:Multiplataforma:
Roda em Linux, OS X e Windows. Não julgamos ;-)
Bem, Kitty não é um fuzzer. Também não contém implementação de protocolo ou canal de comunicação específico. Você pode escrever seu próprio fuzzer com ele e pode usar código baseado em Kitty de outras pessoas, mas não é um fuzzer pronto para uso.
Um bom lugar para obter (e adicionar) implementações de modelos Kitty é o Katnip.
Kitty, como framework, implementa o loop principal do fuzzer e fornece sintaxe para modelagem de dados e classes base para cada um dos elementos usados para criar uma sessão de fuzzing completa. No entanto, implementações específicas de classes não fazem parte do framework Kitty. Isso significa que Kitty define a interface e a classe base para realizar transações de dados com um alvo, mas não fornece implementações para transmissão de dados por HTTP, TCP ou UART.
Implementações de todos os tipos de classes podem ser encontradas no repositório complementar -
Katnip <https://github.com/cisco-sas/katnip>_.
Instale o Kitty:
::
pip install kittyfuzzer
Leia parte da documentação em ReadTheDocs <https://kitty.readthedocs.io>_.
Dê uma olhada nos exemplos
Construa seu próprio fuzzer :-)
#kitty no Freenode <https://webchat.freenode.net/?channels=kitty>_Encontrou um bug?
Abra uma issue <https://github.com/cisco-sas/kitty/issues/new>_
Tem uma correção?
Ótimo! por favor envie um pull request <https://github.com/cisco-sas/kitty/compare>_
Implementou um controlador/monitor/alvo interessante?
Por favor envie um pull request no repositório Katnip <https://github.com/cisco-sas/katnip>_
Encontrou um bug interessante usando um fuzzer baseado em Kitty? Adoraríamos saber! por favor nos mande uma mensagem
|docs| |travis| |coverage| |gitter|
.. |docs| image:: https://readthedocs.org/projects/kitty/badge/?version=latest :alt: Documentation Status :scale: 100% :target: https://kitty.readthedocs.io/en/latest/?badge=latest
.. |travis| image:: https://travis-ci.org/cisco-sas/kitty.svg?branch=master :alt: Build Status :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: Test Coverage Status :scale: 100% :target: https://coveralls.io/github/cisco-sas/kitty?branch=master
.. |gitter| image:: https://badges.gitter.im/cisco-sas/kitty.svg :alt: Chat on Gitter :scale: 100% :target: https://gitter.im/cisco-sas/kitty?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge