
Visualize topologias de rede e colete estatísticas de grafos com base em arquivos pcap.
PcapViz desenha redes como topologias de dispositivos e como fluxos de informação usando as informações de pacotes em arquivos pcap capturados de um dispositivo de rede usando tcpcap ou outro software de captura. Ele filtra e opcionalmente exibe os pacotes capturados em qualquer uma das 3 "camadas". Estas são:
Cada uma produz um grafo de rede distinto a partir do mesmo conjunto de pacotes de rede. Esta separação torna muito mais fácil ver os fluxos de dados em cada nível, em vez de misturá-los como muitos outros pacotes de visualização fazem. Deve ser possível determinar nós topológicos chave ou detectar padrões de tentativas de exfiltração de dados mais facilmente.
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.
Desenhando um grafo de comunicação (camada 2), segmento
python main.py -i tests/test.pcap -o test2.png --layer2

Camada 3 com layout sfdp padrão

Camada 4 com layout sfdp padrão

Retorna os hosts com maior número de pacotes recebidos:
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
Requerido:
GraphViz Veja as notas do sistema abaixo
Requisitos do pacote Pip A API Maxmind Python e outras dependências serão instaladas ao executar:
pip3 install -r requirements.txt
então, claro, execute isso! Você está usando um ambiente virtual python, não está?
Para distribuições baseadas em Debian, você precisa instalar o GraphViz com algumas dependências adicionais:
apt-get install python3-dev
apt-get install graphviz libgraphviz-dev pkg-config
Scapy não funciona diretamente no OSX. Siga as instruções específicas da plataforma no site do scapy
brew install graphviz
brew install --with-python libdnet
brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb
Os testes unitários podem ser executados a partir do diretório tests:
python3 core.py
As imagens de exemplo acima são os grafos de saída dos testes.
Observe que atualmente existem 2 avisos sobre funcionalidades obsoletas no graphviz e, para que os testes funcionem, pode ser necessário ajustar os argumentos falsos para apontar para sua cópia do arquivo de dados geoIP.
Sem acesso aos dados geoIP, dois dos testes sempre falharão.