
Automatisiertes forensisches Analysetool für Google Workspace-Überwachungsprotokolle. Erfasst alle Protokolltypen, ordnet Ereignisse dem MITRE ATT&CK Cloud Framework zu und identifiziert Kill Chains durch statistische Bewertung.
Copyright (c) 2026 Invictus Incident Response
Ursprüngliche Autoren Greg Charitonos & BertJanCyber, gepflegt von Invictus Incident Response
Ein Hinweis zu unterstützten Betriebssystemen: ALFA wird auf mehreren Linux-Distributionen (Debian und Ubuntu) getestet.
Es ist zwar möglich, es unter Windows oder macOS zu verwenden, die Ergebnisse können jedoch variieren, daher erfolgt die Nutzung auf eigene Gefahr.
sudo pip install -e . oder sudo pip3 install -e . ausPython 3.9 mit pyenv installieren
ALFA funktioniert am besten mit Python 3.9. Sie können pyenv verwenden, um diese Version zu verwalten und zu installieren.
pyenv noch nicht installiert haben, können Sie dies mit Homebrew tun:
brew install pyenv
pyenv in Ihrer Shell ein, indem Sie Folgendes zu Ihrer Shell-Konfigurationsdatei (z. B. ~/.zshrc oder ~/.bashrc) hinzufügen:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
source ~/.zshrc # or source ~/.bashrc
pyenv:
pyenv install 3.9
(Optional) Eine virtuelle Umgebung erstellen Es ist eine gute Praxis, Projekte in einer virtuellen Umgebung auszuführen, um Abhängigkeiten zu isolieren. Erstellen Sie mit der soeben eingestellten Python 3.9-Version eine virtuelle Umgebung:
python -m venv alfa
source alfa/bin/activate
ALFA installieren
Installieren Sie ALFA im Ordner, in dem sich das ALFA-Projekt befindet, mit pip:
pip install -e .
Wenn Sie keine virtuelle Umgebung verwenden, benötigen Sie möglicherweise sudo:
sudo pip install -e .
Installation überprüfen
Nach der Installation können Sie überprüfen, ob ALFA installiert ist, indem Sie versuchen, das Befehlszeilentool alfa auszuführen.
HINWEIS: Informationen zum Abrufen von credentials.json finden Sie in CREDENTIALS.md
alfa init projektname aus. Dieser Befehl erstellt ein neues Verzeichnis zur Speicherung Ihrer Konfiguration und Daten. Z.B. alfa init project_xALFA bietet 3 Optionen, wie unten erklärt:
alfa acquire ausalfa acquire -h einSie können verschiedene Filterungen durchführen, um die erfassten Daten zu begrenzen. Nachfolgend einige Beispiele:
alfa acquire --logtype=adminalfa acquire -d /tmp/project_secretalfa acquire --user=insert_usernamealfa acquire --start-time=2022-07-10T10:00:00Z --end-time=2022-07-11T14:26:01Z das Zeitformat ist (RFC3339)Jetzt wissen Sie, wie Sie Daten erfassen können – Zeit für die ausgefallenen Funktionen, um die Kraft von ALFA zu entfesseln.
Die Analysefunktion analysiert automatisch alle Audit-Log-Daten für einen bestimmten Google Workspace, um verdächtige Aktivitäten zu identifizieren.
Kategorisierung Jedes einzelne Ereignis wird basierend auf einer Zuordnung kategorisiert, die in alfa/config/event_to_mitre.yml festgelegt ist. Wenn ein Ereignis mit dieser Liste übereinstimmt, wird es einer Technik des MITRE ATT&CK Cloud Frameworks (https://attack.mitre.org/matrices/enterprise/cloud/) zugeordnet.
Bewertung Als Nächstes analysiert ALFA alle zugeordneten Ereignisse in chronologischer Reihenfolge, um Kill Chains oder logische Angriffspfade zu identifizieren. Z.B. Ein Ereignis, das der Persistenzphase zugeordnet ist, gefolgt von einem Ereignis, das der Phase des Credential Access zugeordnet ist, führt zu einer höheren Bewertung.
Ergebnis Letztendlich liefert ALFA dem Analysten eine Liste identifizierter 'Subchains', die weiter analysiert werden können.
alfa analyze aus, das automatisch Subchains identifiziert (oder nicht, falls keine gefunden wurden). Es öffnet sich auch eine Shell, in der Sie Folgeaktivitäten durchführen können.A.aoi(export='activities.json'), um alle identifizierten Subchains in eine Datei zu exportieren, die Sie dann für weitere Analysen verwenden können.Verwenden Sie A = Alfa.load([logname]), um Logs aus dem lokalen Speicher zu laden und zu analysieren. Verwenden Sie A = Alfa.load('all'), um alle Logs zu laden. Alfa filtert standardmäßig harmlose Aktivitäten heraus. Um alle Aktivitäten und Ereignisse ungefiltert zu laden, verwenden Sie Alfa.load([logname], filter=False).
Es ist möglich, die Datei config/event_to_mitre.yml direkt zu bearbeiten, jedoch wird davon abgeraten. Das Layout dieser Datei ist unintuitiv. Erwägen Sie stattdessen Änderungen an utils/mappings.yml. Füllen Sie dann config/event_to_mitre.yml neu auf, indem Sie utils/event_mitre_remap.py ausführen.
Die Kill-Chain-Erkennungsfunktion verwendet hartcodierte Konstanten. Diese finden Sie in der config/config.yml. Forensischen Analysten wird empfohlen, die Werte zu überprüfen und bei Bedarf für ihren Workspace anzupassen. Diese Konstanten sind sowohl für die Kill-Chain-Statistik (kcs) als auch für die Kill-Chain-Erkennung (subchains) verantwortlich.
Möchten Sie mehr über die verwendeten Statistiken und Algorithmen für ALFA erfahren? Wir haben einen Blogbeitrag dazu hier geschrieben: (https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92)
Sie müssen eine credentials.json-Datei zum Projektordner im Unterverzeichnis 'config' hinzufügen. Anweisungen in der Datei 'CREDENTIALS.md'.
Dies bedeutet, dass Port 8089 bereits von einer anderen Anwendung verwendet wird. Dies kann passieren, wenn auf diesem Port ein Webserver läuft oder Splunk standardmäßig Port 8089 verwendet. Lösung: Stoppen Sie (vorübergehend) die Nutzung dieses Ports, da er für den Authentifizierungsablauf benötigt wird und verfügbar sein muss.
Manchmal müssen die Autorisierungsinformationen aktualisiert werden. Der einfachste Weg ist, die Datei 'token.json' aus dem Ordner project_name/config zu entfernen und den Befehl erneut auszuführen. Wenn das weiterhin Probleme bereitet, entfernen Sie token.json und credentials.json und registrieren Sie die OAuth-Anwendung erneut, wie in CREDENTIALS.MD beschrieben.
Stellen Sie sicher, dass der nachgestellte Schrägstrich (/) in der URI http://localhost:8089 unter Authorized redirect URIs Ihrer OAuth 2.0 Client IDs vorhanden ist.

pyenv global 3.9
pyenv shell 3.9