
pcapファイルに基づいてネットワークトポロジを可視化し、グラフ統計を収集します
PcapVizは、tcpcapやその他のキャプチャソフトウェアを使用してネットワークデバイスからキャプチャされたpcapファイル内のパケット情報を使用して、ネットワークをデバイストポロジおよび情報フローとして描画します。キャプチャされたパケットを、3つの「レイヤー」のいずれかでフィルタリングし、オプションで表示します。これらは以下の通りです。
それぞれ、同じネットワークパケットのセットから異なるネットワークグラフを生成します。この分離により、多くの他の可視化パッケージのように混在させるのではなく、各レベルでのデータフローをはるかに簡単に見ることができます。重要なトポロジノードを特定したり、データ流出の試みのパターンをより簡単に見つけられるはずです。
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.
通信グラフ(レイヤー2)の描画
python main.py -i tests/test.pcap -o test2.png --layer2

デフォルトのsfdpレイアウトを使用したレイヤー3

デフォルトのsfdpレイアウトを使用したレイヤー4

受信パケット数が最も多いホストを表示:
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
必要なもの:
GraphViz システムに関する注意事項は以下を参照
Pipパッケージ要件 以下のコマンドを実行すると、Maxmind Python API およびその他の依存関係がインストールされます:
pip3 install -r requirements.txt
もちろん、これを実行してください!Python仮想環境を使用していますよね?
Debianベースのディストリビューションでは、GraphVizといくつかの追加依存関係をインストールする必要があります:
apt-get install python3-dev
apt-get install graphviz libgraphviz-dev pkg-config
ScapyはOSXではそのままでは動作しません。scapyのウェブサイトのプラットフォーム固有の手順に従ってください。
brew install graphviz
brew install --with-python libdnet
brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb
単体テストはtestsディレクトリから実行できます:
python3 core.py
上のサンプル画像はテスト出力グラフです。
現在、graphvizの非推奨機能に関する2つの警告があります。また、テストを機能させるには、fakerの引数を調整して、お使いのgeoIPデータファイルのコピーを指すようにする必要があるかもしれません。 geoIPデータにアクセスできない場合、2つのテストは常に失敗します。