
Apprentissage de protocole et fuzzing avec état
Pulsar est un fuzzer réseau doté de capacités d'apprentissage automatique et de simulation de protocole. L'outil permet de modéliser un protocole via des techniques d'apprentissage automatique, telles que le clustering et les modèles de Markov. Ces modèles peuvent être utilisés pour simuler la communication entre Pulsar et un client ou serveur réel grâce à des messages sémantiquement corrects qui, combinés à une série de primitives de fuzzing, permettent de tester l'implémentation d'un protocole inconnu pour détecter des erreurs dans les états plus profonds de sa machine à états protocolaires.
Pour des informations détaillées sur la méthode implémentée par Pulsar, vous pouvez lire les publications suivantes :
Pulsar: Stateful Black-Box Fuzzing of Proprietary Network Protocols
Hugo Gascon, Christian Wressnegger, Fabian Yamaguchi, Daniel Arp et Konrad Rieck
Proc. de 11e Conférence internationale EAI sur la sécurité et la confidentialité dans les réseaux de communication (SECURECOMM) octobre 2015
Learning Stateful Models for Network Honeypots
Tammo Krueger, Hugo Gascon, Nicole Krämer et Konrad Rieck
Atelier ACM sur la sécurité et l'intelligence artificielle (AISEC) octobre 2012
_
_ __ _ _| |___ __ _ _ __
| '_ \| | | | / __|/ _` | '__|
| |_) | |_| | \__ \ (_| | |
| .__/ \__,_|_|___/\__,_|_| v0.1-dev
|_|
usage: pulsar.py [-h] [-c CONF] [-l] [-p PCAP] [-b BINARIES] [-a] [-x]
[-o OUT] [-d DIMENSION] [-s] [-z] [-m MODEL]
Protocol Learning and Stateful Fuzzing
optional arguments:
-h, --help show this help message and exit
-c CONF, --conf CONF Change default directory for configuration files. If
no directory is given, the files from 'pulsar/conf'
will be read.
MODEL LEARNING:
-l, --learner Learn a model from a set of network traces.
-p PCAP, --pcap PCAP tcpdump output file (pcap) or list of files separated
by commas to use as input data for a new model.
-b BINARIES, --binaries BINARIES
Name of binaries to process from the cuckoo storage
dir separated with commas.
-a, --all-binaries Generate models for all binaries from the cuckoo
storage dir (cuckoo/storage/binaries).
-x, --process Process derrick files through the functions defined in
utils/preprocessing/derrick.py.
-o OUT, --out OUT Change output directory for generated models. If no
directory is given, the model will be written to the
'models' directory.
-d DIMENSION, --dimension DIMENSION
Number of components to be used for NMF clustering.
SIMULATION & FUZZING:
-s, --simulate Simulate communication based on a given model.
-z, --fuzzer Start a fuzzing session based on a given model.
-m MODEL, --model MODEL
Path of the dir containing the model files to be
loaded for simulation or fuzzing.
Le répertoire pulsar/conf contient une série de fichiers de configuration qui définissent les paramètres requis pour certaines opérations dans chacune des méthodes de Pulsar pour l'apprentissage automatique, la simulation et le fuzzing.
Générer le modèle d'un canal de communication à partir de fichiers PCAP individuels ou des traces enregistrées d'un ou plusieurs binaires exécutés par cuckoo sandbox :
$> pulsar.py -l -p file.pcap (1 pcap file)
$> pulsar.py -b 016169EBEBF1CEC2AAD6C7F0D0EE9026 (1 or more binaries from cuckoo storage)
$> pulsar.py -a (all binaries from cuckoo storage)
Simuler un canal de communication basé sur un modèle appris :
$> pulsar.py -s -m model_file
Démarrer une session de fuzzing contre une cible en utilisant le modèle de son canal de communication :
$> pulsar.py -z -m model_file