Tool
PULSAR
Research prototype by Hugo Gascon and colleagues that learns a model of an unknown network protocol from recorded traffic. Messages extracted from PCAP traces are embedded as token or n-gram vectors, clustered by matrix factorization through the PRISMA R module, and turned into a Markov-chain state model with message templates and rules linking fields to earlier messages, written out as model files and a Graphviz state graph. The same models drive the tool's session simulator and stateful fuzzer, described in the authors' SecureComm 2015 paper; this entry covers only the protocol-learning part.
- Targets
- Protocol
- Category
- Protocol analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- Reviewed at master commit 3c61178 (2022-06-07), the last push; the repository has no releases or tags, and the CLI reports itself as v0.1-dev. Contributed changes merged in 2021 converted the code from Python 2 to Python 3 with 2to3. There are no tests or CI configuration.
- Learning takes PCAP traces of the protocol under study, or the captures that Cuckoo sandbox stored for analyzed samples. The repository commits one example model, models/itunes-xbmc, with the roughly 3 MB iTunes–XBMC capture it was learned from (itunes-xbmc.pcap, part of the 2015 initial commit) and its intermediate Derrick, Sally and Harry files; it bundles no other target data.
- INSTALL.md has users clone the PRISMA R module into pulsar/modules, build Konrad Rieck's Derrick and Sally C tools from their repositories, install R, Wireshark's mergecap and Graphviz, and pip-install pygraphviz, progressBar, NumPy and python-Levenshtein, giving package commands for CentOS only. Dependencies are unpinned; PRISMA was last updated in 2018, and Derrick and Sally in 2019.
- The README points to the SecureComm 2015 paper for the method and to an AISec 2012 paper on learning stateful models for network honeypots; results reported there are the authors'. Learned templates and state machines are statistical approximations that need analyst validation.
- BSD-3-Clause (Copyright 2014 Hugo Gascon); the bundled pulsar/core/sippy SIP stack keeps its own GPL-2.0-or-later notices.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · hgascon/pulsar · Revision 3c61178
- INSTALL.md GitHub · hgascon/pulsar · Revision 3c61178
- LICENSE GitHub · hgascon/pulsar · Revision 3c61178
- pulsar.py GitHub · hgascon/pulsar · Revision 3c61178
- pulsar/core/model.py GitHub · hgascon/pulsar · Revision 3c61178
- pulsar/core/cluster_generator.R GitHub · hgascon/pulsar · Revision 3c61178
- pulsar/conf/model.conf GitHub · hgascon/pulsar · Revision 3c61178
- models/itunes-xbmc GitHub · hgascon/pulsar · Revision 3c61178
- pulsar/core/sippy/SipCSeq.py GitHub · hgascon/pulsar · Revision 3c61178
- https://hugogascon.com/publications/2015-securecomm.pdf
- https://doi.org/10.1007/978-3-319-28865-9_18
- README.md GitHub · tammok/PRISMA · Revision a48624f
More in Protocols
- CanLab · Tool
- Facedancer · Tool
- Mirage · Tool
- Protobuf Decoder · Tool
- gr-lora · Tool
- termshark · Tool