
Visualiser les topologies réseau et collecter des statistiques de graphe à partir de fichiers pcap
PcapViz dessine les réseaux sous forme de topologies de périphériques et de flux d'informations en utilisant les informations de paquets contenues dans les fichiers pcap capturés depuis un périphérique réseau à l'aide de tcpcap ou d'un autre logiciel de capture. Il filtre et affiche optionnellement les paquets capturés à l'un des 3 « niveaux ». Ce sont :
Chacun produit un graphe réseau distinct à partir du même ensemble de paquets réseau. Cette séparation rend beaucoup plus facile la visualisation des flux de données à chaque niveau plutôt que de les mélanger comme le font de nombreux autres outils de visualisation. Il devrait être possible de déterminer les nœuds topologiques clés ou de repérer plus facilement les schémas de tentatives d'exfiltration de données.
usage: main.py [-h] [-i [PCAPS [PCAPS ...]]] [-o OUT] [-g GRAPHVIZ] [--layer2]
[--layer3] [--layer4] [-fi] [-fo] [-G GEOPATH] [-l GEOLANG]
[-E LAYOUTENGINE] [-s SHAPE]
pcap topology and message mapper
optional arguments:
-h, --help show this help message and exit
-i [PCAPS [PCAPS ...]], --pcaps [PCAPS [PCAPS ...]]
space delimited list of capture files to be analyzed
-o OUT, --out OUT topology will be stored in the specified file
-g GRAPHVIZ, --graphviz GRAPHVIZ
graph will be exported to the specified file (dot
format)
--layer2 device topology network graph
--layer3 ip message graph. Default
--layer4 tcp/udp message graph
-fi, --frequent-in print frequently contacted nodes to stdout
-fo, --frequent-out print frequent source nodes to stdout
-G GEOPATH, --geopath GEOPATH
path to maxmind geodb data
-l GEOLANG, --geolang GEOLANG
Language to use for geoIP names
-E LAYOUTENGINE, --layoutengine LAYOUTENGINE
Graph layout method - dot, sfdp etc.
-s SHAPE, --shape SHAPE
Graphviz node shape - circle, diamond, box etc.
Dessin d'un graphe de communication (couche 2), segment
python main.py -i tests/test.pcap -o test2.png --layer2

Layer3 avec mise en page sfdp par défaut

Layer4 avec mise en page sfdp par défaut

Retourne les hôtes avec le plus grand nombre de paquets entrants :
python3 main.py -i tests/test.pcap -fi --layer3
4 172.16.11.12
1 74.125.19.17
1 216.34.181.45 slashdot.org
1 172.16.11.1
1 96.17.211.172 a96-17-211-172.deploy.static.akamaitechnologies.com
Requis :
GraphViz Voir les notes système ci-dessous
Exigences des packages Pip L'API Python Maxmind et les autres dépendances seront installées lorsque vous exécuterez :
pip3 install -r requirements.txt
alors bien sûr, exécutez-le ! Vous utilisez bien un environnement virtuel Python, n'est-ce pas ?
Pour les distributions basées sur Debian, vous devez installer GraphViz avec quelques dépendances supplémentaires :
apt-get install python3-dev
apt-get install graphviz libgraphviz-dev pkg-config
Scapy ne fonctionne pas directement sur OSX. Suivez les instructions spécifiques à la plateforme depuis le site de Scapy
brew install graphviz
brew install --with-python libdnet
brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb
Les tests unitaires peuvent être exécutés depuis le répertoire tests :
python3 core.py
Les exemples d'images ci-dessus sont les graphes produits par les tests.
Notez qu'il y a actuellement 2 avertissements concernant des fonctionnalités obsolètes dans graphviz et pour que les tests fonctionnent, vous devrez peut-être ajuster les faux arguments pour pointer vers votre copie du fichier de données geoIP. Sans accès aux données geoIP, deux des tests échoueront toujours.