
Apprendimento dei protocolli e Fuzzing Stateful
Pulsar è un fuzzer di rete con capacità automatiche di apprendimento e simulazione di protocolli. Lo strumento consente di modellare un protocollo attraverso tecniche di apprendimento automatico, come clustering e modelli di Markov. Questi modelli possono essere utilizzati per simulare la comunicazione tra Pulsar e un client o server reale grazie a messaggi semanticamente corretti che, in combinazione con una serie di primitive di fuzzing, consentono di testare l'implementazione di un protocollo sconosciuto per errori in stati più profondi della sua macchina a stati del protocollo.
Per informazioni dettagliate sul metodo implementato da Pulsar, è possibile leggere le seguenti pubblicazioni:
Pulsar: Stateful Black-Box Fuzzing of Proprietary Network Protocols
Hugo Gascon, Christian Wressnegger, Fabian Yamaguchi, Daniel Arp e Konrad Rieck
Proc. of 11th EAI International Conference on Security and Privacy in Communication Networks (SECURECOMM) Ottobre 2015
Learning Stateful Models for Network Honeypots
Tammo Krueger, Hugo Gascon, Nicole Krämer e Konrad Rieck
ACM Workshop on Security and Artificial Intelligence (AISEC) Ottobre 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.
La directory pulsar/conf contiene una serie di file di configurazione che definiscono i parametri necessari per determinate operazioni in ciascuno dei metodi di Pulsar per l'apprendimento automatico, la simulazione e il fuzzing.
Genera il modello di un canale di comunicazione da singoli file PCAP o dalle tracce registrate di uno o più eseguibili lanciati da cuckoo sandbox:
$> pulsar.py -l -p file.pcap (1 file pcap)
$> pulsar.py -b 016169EBEBF1CEC2AAD6C7F0D0EE9026 (1 o più eseguibili dallo storage di cuckoo)
$> pulsar.py -a (tutti gli eseguibili dallo storage di cuckoo)
Simula un canale di comunicazione basato su un modello appreso:
$> pulsar.py -s -m model_file
Avvia una sessione di fuzzing contro un target dato il modello del suo canale di comunicazione:
$> pulsar.py -z -m model_file