
Beagle est un outil de réponse aux incidents et de criminalistique numérique qui transforme les journaux de sécurité et les données en graphiques.
Beagle est un outil de réponse aux incidents et de forensique numérique qui transforme des sources de données et des journaux en graphes. Les sources de données prises en charge incluent les triages FireEye HX, les fichiers EVTX Windows, les journaux SysMon et les images mémoire brutes Windows. Les graphes résultants peuvent être envoyés à des bases de données de graphes comme Neo4J ou DGraph, ou conservés localement en tant qu'objets Python NetworkX.
Beagle peut être utilisé directement comme bibliothèque Python, ou via une interface Web fournie.
La bibliothèque peut être utilisée soit comme une séquence d'appels fonctionnels à partir d'une seule source de données.
>>> from beagle.datasources import SysmonEVTX
>>> graph = SysmonEVTX("malicious.evtx").to_graph()
>>> graph
<networkx.classes.multidigraph.MultiDiGraph at 0x12700ee10>
Comme un graphe généré à partir d'un ensemble de plusieurs artefacts
>>> from beagle.datasources import SysmonEVTX, HXTriage, PCAP
>>> from beagle.backends import NetworkX
>>> nx = NetworkX.from_datasources(
datasources=[
SysmonEVTX("malicious.evtx"),
HXTriage("alert.mans"),
PCAP("traffic.pcap"),
]
)
>>> G = nx.graph()
<networkx.classes.multidigraph.MultiDiGraph at 0x12700ee10>
Ou en appelant strictement chaque étape intermédiaire du processus de source de données vers graphe.
>>> from beagle.backends import NetworkX
>>> from beagle.datasources import SysmonEVTX
>>> from beagle.transformers import SysmonTransformer
>>> datasource = SysmonEVTX("malicious.evtx")
# Les transformateurs prennent une source de données et transforment chaque événement
# en un tuple d'un ou plusieurs nœuds.
>>> transformer = SysmonTransformer(datasource=datasource)
>>> nodes = transformer.run()
# Les transformateurs produisent un tableau de nœuds.
[
(<SysMonProc> process_guid="{0ad3e319-0c16-59c8-0000-0010d47d0000}"),
(<File> host="DESKTOP-2C3IQHO" full_path="C:\Windows\System32\services.exe"),
...
]
# Les backends prennent les nœuds et les transforment en graphes
>>> backend = NetworkX(nodes=nodes)
>>> G = backend.graph()
<networkx.classes.multidigraph.MultiDiGraph at 0x126b887f0>
Les graphes sont centrés sur l'activité de processus individuels et sont principalement destinés à aider les analystes à enquêter sur l'activité des hôtes, et non entre eux.
Beagle est disponible en tant que fichier docker :
docker pull yampelo/beagle
mkdir -p data/beagle
docker run -v "$PWD/data/beagle":"/data/beagle" -p 8000:8000 yampelo/beagle
Il est également disponible en tant que bibliothèque. La documentation complète de l'API est disponible sur https://beagle-graphs.readthedocs.io
pip install pybeagle
Note : Seul Python 3.6+ est actuellement pris en charge.
Rekall n'est pas installé automatiquement. Pour installer Rekall, exécutez plutôt la commande suivante :
pip install pybeagle[rekall]
Toute entrée du fichier de configuration peut être modifiée à l'aide de variables d'environnement qui suivent le format suivant : BEAGLE__{SECTION}__{KEY}. Par exemple, pour modifier la clé API VirusTotal utilisée lors de l'utilisation de l'image Docker, vous utiliseriez le paramètre -e et définiriez la variable BEAGLE__VIRUSTOTAL__API_KEY :
docker run -v "data/beagle":"/data/beagle" -p 8000:8000 -e "BEAGLE__VIRUSTOTAL__API_KEY=$API_KEY" beagle
Les variables d'environnement et les répertoires peuvent être facilement définis à l'aide de docker compose
version: "3"
services:
beagle:
image: yampelo/beagle
volumes:
- /data/beagle:/data/beagle
ports:
- "8000:8000"
environment:
- BEAGLE__VIRUSTOTAL__API_KEY=$key$
L'image Docker de Beagle est livrée avec une interface Web qui encapsule à la fois le processus de transformation des données en graphes et leur utilisation pour enquêter sur les données.
Le formulaire de téléchargement encapsule le processus de création du graphe et utilise automatiquement NetworkX comme backend. Selon les paramètres requis par la source de données, le formulaire demandera soit un téléchargement de fichier, soit une saisie de texte. Par exemple :
Tout graphe créé est stocké localement dans le dossier défini sous la clé dir de la section storage de la configuration. Cela peut être modifié en définissant la variable d'environnement BEAGLE__STORAGE__DIR.
Optionnellement, un commentaire peut être ajouté à tout graphe pour mieux le décrire.
Chaque source de données extrait automatiquement les métadonnées du paramètre fourni. Les métadonnées et le commentaire sont visibles ultérieurement lors de la visualisation des graphes existants de la source de données.
Cliquer sur une source de données dans la barre latérale affiche un tableau de tous les graphes analysés pour cette source de données.