
Aprendizado de Protocolo e Fuzzing Stateful
Pulsar é um fuzzer de rede com capacidades de aprendizado e simulação automática de protocolos. A ferramenta permite modelar um protocolo através de técnicas de aprendizado de máquina, como clustering e modelos de Markov. Esses modelos podem ser usados para simular a comunicação entre o Pulsar e um cliente ou servidor real, graças a mensagens semanticamente corretas que, em combinação com uma série de primitivas de fuzzing, permitem testar a implementação de um protocolo desconhecido em busca de erros em estados mais profundos de sua máquina de estados de protocolo.
Para informações detalhadas sobre o método implementado pelo Pulsar, você pode ler as seguintes publicações:
Pulsar: Stateful Black-Box Fuzzing of Proprietary Network Protocols
Hugo Gascon, Christian Wressnegger, Fabian Yamaguchi, Daniel Arp and Konrad Rieck
Proc. of 11th EAI International Conference on Security and Privacy in Communication Networks (SECURECOMM) October 2015
Learning Stateful Models for Network Honeypots
Tammo Krueger, Hugo Gascon, Nicole Krämer and Konrad Rieck
ACM Workshop on Security and Artificial Intelligence (AISEC) October 2012
_
_ __ _ _| |___ __ _ _ __
| '_ \| | | | / __|/ _` | '__|
| |_) | |_| | \__ \ (_| | |
| .__/ \__,_|_|___/\__,_|_| v0.1-dev
|_|
uso: pulsar.py [-h] [-c CONF] [-l] [-p PCAP] [-b BINARIES] [-a] [-x]
[-o OUT] [-d DIMENSION] [-s] [-z] [-m MODEL]
Aprendizado de Protocolo e Fuzzing Stateful
argumentos opcionais:
-h, --help mostra esta mensagem de ajuda e sai
-c CONF, --conf CONF Altera o diretório padrão para arquivos de configuração. Se
nenhum diretório for fornecido, os arquivos de 'pulsar/conf'
serão lidos.
APRENDIZADO DO MODELO:
-l, --learner Aprende um modelo a partir de um conjunto de rastros de rede.
-p PCAP, --pcap PCAP Arquivo de saída do tcpdump (pcap) ou lista de arquivos separados
por vírgulas para usar como dados de entrada para um novo modelo.
-b BINARIES, --binaries BINARIES
Nome dos binários a processar do diretório de armazenamento do cuckoo
separados por vírgulas.
-a, --all-binaries Gera modelos para todos os binários do diretório de armazenamento
do cuckoo (cuckoo/storage/binaries).
-x, --process Processa arquivos derrick através das funções definidas em
utils/preprocessing/derrick.py.
-o OUT, --out OUT Altera o diretório de saída para os modelos gerados. Se
nenhum diretório for fornecido, o modelo será escrito no
diretório 'models'.
-d DIMENSION, --dimension DIMENSION
Número de componentes a serem usados para a clusterização NMF.
SIMULAÇÃO & FUZZING:
-s, --simulate Simula a comunicação com base em um modelo fornecido.
-z, --fuzzer Inicia uma sessão de fuzzing com base em um modelo fornecido.
-m MODEL, --model MODEL
Caminho do diretório contendo os arquivos do modelo a serem
carregados para simulação ou fuzzing.
O diretório pulsar/conf contém uma série de arquivos de configuração que definem os parâmetros necessários para certas operações em cada um dos métodos do Pulsar para aprendizado automático, simulação e fuzzing.
Gere o modelo de um canal de comunicação a partir de arquivos PCAP individuais ou dos rastros gravados de um ou mais binários executados pelo cuckoo sandbox:
$> pulsar.py -l -p file.pcap (1 arquivo pcap)
$> pulsar.py -b 016169EBEBF1CEC2AAD6C7F0D0EE9026 (1 ou mais binários do armazenamento cuckoo)
$> pulsar.py -a (todos os binários do armazenamento cuckoo)
Simule um canal de comunicação com base em um modelo aprendido:
$> pulsar.py -s -m model_file
Inicie uma sessão de fuzzing contra um alvo dado o modelo de seu canal de comunicação:
$> pulsar.py -z -m model_file