
Pulsarは、自動プロトコル学習とシミュレーション機能を備えたネットワークファザーです。このツールは、クラスタリングやマルコフモデルなどの機械学習技術を用いてプロトコルをモデル化します。これらのモデルは、意味的に正しいメッセージによりPulsarと実際のクライアントまたはサーバー間の通信をシミュレートするために使用できます。一連のファジングプリミティブと組み合わせることで、未知のプロトコルの実装をそのプロトコル状態機械のより深い状態でエラーについてテストできます。
Pulsarが実装する方法の詳細については、以下の出版物をご参照ください:
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
|_|
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.
ディレクトリ pulsar/conf には、Pulsarの自動学習、シミュレーション、ファジングの各メソッドで特定の操作に必要なパラメータを定義する一連の設定ファイルが含まれています。
個々のPCAPファイルまたはCuckooサンドボックスで実行された1つ以上のバイナリの記録されたトレースから通信チャネルのモデルを生成します:
$> 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)
学習したモデルに基づいて通信チャネルをシミュレーションします:
$> pulsar.py -s -m model_file
通信チャネルのモデルを基にターゲットに対するファジングセッションを開始します:
$> pulsar.py -z -m model_file