
Beagle — это инструмент для реагирования на инциденты и цифровой криминалистики, который преобразует журналы безопасности и данные в графы.
Beagle — это инструмент для реагирования на инциденты и цифровой криминалистики, который преобразует источники данных и журналы в графы. Поддерживаемые источники данных включают FireEye HX Triages, файлы Windows EVTX, журналы SysMon и образы оперативной памяти Windows. Полученные графы могут быть отправлены в графовые базы данных, такие как Neo4J или DGraph, или сохранены локально как объекты Python NetworkX.
Beagle можно использовать напрямую как библиотеку Python или через предоставленный веб-интерфейс.
Библиотека может использоваться как последовательность функциональных вызовов из одного источника данных.
>>> from beagle.datasources import SysmonEVTX
>>> graph = SysmonEVTX("malicious.evtx").to_graph()
>>> graph
<networkx.classes.multidigraph.MultiDiGraph at 0x12700ee10>
Как граф, сгенерированный из набора нескольких артефактов
>>> 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>
Или путём строгого вызова каждого промежуточного шага процесса преобразования источника данных в граф.
>>> from beagle.backends import NetworkX
>>> from beagle.datasources import SysmonEVTX
>>> from beagle.transformers import SysmonTransformer
>>> datasource = SysmonEVTX("malicious.evtx")
# Transformers принимают источник данных и преобразуют каждое событие
# в кортеж из одного или нескольких узлов.
>>> transformer = SysmonTransformer(datasource=datasource)
>>> nodes = transformer.run()
# Transformers выдают массив узлов.
[
(<SysMonProc> process_guid="{0ad3e319-0c16-59c8-0000-0010d47d0000}"),
(<File> host="DESKTOP-2C3IQHO" full_path="C:\Windows\System32\services.exe"),
...
]
# Backends принимают узлы и преобразуют их в графы
>>> backend = NetworkX(nodes=nodes)
>>> G = backend.graph()
<networkx.classes.multidigraph.MultiDiGraph at 0x126b887f0>
Графы сосредоточены вокруг активности отдельных процессов и предназначены в первую очередь для помощи аналитикам в исследовании активности на хостах, а не между ними.
Beagle доступен в виде Docker-образа:
docker pull yampelo/beagle
mkdir -p data/beagle
docker run -v "$PWD/data/beagle":"/data/beagle" -p 8000:8000 yampelo/beagle
Также доступен как библиотека. Полная документация по API доступна на https://beagle-graphs.readthedocs.io
pip install pybeagle
Примечание: Поддерживается только Python 3.6+.
Rekall не устанавливается автоматически. Чтобы установить Rekall, выполните следующую команду:
pip install pybeagle[rekall]
Любую запись в файле конфигурации можно изменить с помощью переменных окружения, которые следуют следующему формату: BEAGLE__{SECTION}__{KEY}. Например, чтобы изменить ключ API VirusTotal, используемый при работе с Docker-образом, используйте параметр -e и установите переменную BEAGLE__VIRUSTOTAL__API_KEY:
docker run -v "data/beagle":"/data/beagle" -p 8000:8000 -e "BEAGLE__VIRUSTOTAL__API_KEY=$API_KEY" beagle
Переменные окружения и каталоги можно легко определить с помощью docker compose
version: "3"
services:
beagle:
image: yampelo/beagle
volumes:
- /data/beagle:/data/beagle
ports:
- "8000:8000"
environment:
- BEAGLE__VIRUSTOTAL__API_KEY=$key$
Docker-образ Beagle поставляется с веб-интерфейсом, который объединяет процессы преобразования данных в графы и их использования для исследования данных.
Форма загрузки оборачивает процесс создания графа и автоматически использует NetworkX в качестве бэкенда. В зависимости от параметров, требуемых источником данных, форма предложит либо загрузить файл, либо ввести текст. Например:
Любой созданный граф сохраняется локально в папке, заданной ключом dir из раздела storage в конфигурации. Это можно изменить, установив переменную окружения BEAGLE__STORAGE__DIR.
При желании к любому графу можно добавить комментарий, чтобы лучше его описать.
Каждый источник данных автоматически извлекает метаданные из предоставленного параметра. Метаданные и комментарий будут видны позже при просмотре существующих графов этого источника данных.
Щелчок по источнику данных на боковой панели отображает таблицу всех обработанных графов для этого источника данных.
Просмотр графа в Beagle предоставляет веб-интерфейс, позволяющий аналитикам быстро переключаться между аспектами инцидента.
Интерфейс разделён на две основные части: левая часть содержит различные перспективы графа (Граф, Дерево, Таблица и т.д.), а правая часть позволяет фильтровать узлы и рёбра по типу, искать узлы и разворачивать свойства узла. Также доступны отмена и повтор операций, выполняемых над графом.
Любой элемент графа, над которым есть разделитель, можно свернуть: