
Strumento automatizzato di analisi forense per i log di audit di Google Workspace. Acquisisce tutti i tipi di log, mappa gli eventi al MITRE ATT&CK Cloud Framework e identifica le kill chain tramite punteggio statistico.
Copyright (c) 2026 Invictus Incident Response
Autori originali Greg Charitonos & BertJanCyber mantenuto da Invictus Incident Response
Una nota sui sistemi operativi supportati: ALFA è testato su diverse distribuzioni Linux (Debian e Ubuntu).
Sebbene sia possibile utilizzarlo su Windows o macOS, i risultati possono variare, quindi procedi a tuo rischio.
sudo pip install -e . o sudo pip3 install -e .Installa Python 3.9 usando pyenv
ALFA funziona meglio con Python 3.9. Puoi usare pyenv per gestire e installare questa versione.
pyenv, puoi farlo usando Homebrew:
brew install pyenv
pyenv nella tua shell aggiungendo quanto segue al file di configurazione della shell (es. ~/.zshrc o ~/.bashrc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
source ~/.zshrc # o source ~/.bashrc
pyenv:
pyenv install 3.9
pyenv global 3.9
pyenv shell 3.9
(Opzionale) Crea un ambiente virtuale È buona pratica eseguire i progetti in un ambiente virtuale per mantenere isolate le dipendenze. Usando la versione 3.9 di Python che hai appena impostato, crea un ambiente virtuale:
python -m venv alfa
source alfa/bin/activate
Installa ALFA
All'interno della cartella dove si trova il progetto ALFA, installalo usando pip:
pip install -e .
Se non stai usando un ambiente virtuale, potresti aver bisogno di sudo:
sudo pip install -e .
Verifica l'installazione
Dopo l'installazione, puoi verificare che ALFA sia installato provando a eseguire il suo strumento a riga di comando alfa.
NOTA: Per recuperare il file credentials.json, consulta CREDENTIALS.md
alfa init nomeprogetto; questo comando creerà una nuova directory per archiviare la tua configurazione e i dati. Es. alfa init progetto_xALFA ha 3 opzioni come spiegato di seguito:
alfa acquirealfa acquire -hPuoi fare vari tipi di filtraggio per limitare i dati che stai acquisendo; alcuni esempi qui sotto:
alfa acquire --logtype=adminalfa acquire -d /tmp/progetto_segretoalfa acquire --user=inserisci_usernamealfa acquire --start-time=2022-07-10T10:00:00Z --end-time=2022-07-11T14:26:01Z il formato dell'ora è (RFC3339)Ora sai come acquisire i dati: è ora di cose più interessanti per scatenare la potenza di ALFA.
La funzione di analisi analizza automaticamente tutti i dati dei log di audit per un dato Google Workspace per identificare attività sospette.
Categorizzazione Ogni singolo evento viene categorizzato in base a una mappatura definita in alfa/config/event_to_mitre.yml. Se un evento corrisponde a quelle liste, viene mappato a una tecnica che fa parte del framework MITRE ATT&CK Cloud (https://attack.mitre.org/matrices/enterprise/cloud/).
Punteggio Successivamente ALFA analizzerà tutti gli eventi mappati in ordine cronologico per cercare di identificare kill chain o percorsi di attacco logici. Ad esempio, un evento mappato alla fase di Persistenza seguito da un evento mappato alla fase di Accesso alle Credenziali risulterà in un punteggio più alto.
Risultato Alla fine ALFA fornirà all'analista un elenco di 'sottocatene' identificate che possono essere ulteriormente analizzate.
alfa analyze che automaticamente identificherà (o meno se non ne vengono trovati). Ti porterà anche in una shell dove puoi eseguire attività di follow-up.A.aoi(export='activities.json') per esportare tutte le sottocatene identificate in un file, che potrai poi usare per ulteriori analisi.Usa A = Alfa.load([nome_log]) per caricare e analizzare i log dall'archivio locale. Usa A = Alfa.load('all') per caricare tutti i log. Alfa filtra le attività benigne per impostazione predefinita. Per caricare tutte le attività e gli eventi, senza filtri, usa Alfa.load([nome_log], filter=False).
È possibile modificare direttamente il file config/event_to_mitre.yml, ma è sconsigliato. La struttura di questo file non è intuitiva. Invece, considera di apportare modifiche a utils/mappings.yml. Poi ripopola config/event_to_mitre.yml eseguendo utils/event_mitre_remap.py
La funzione di scoperta della kill chain utilizza costanti hard-coded. Queste si trovano nel file config/config.yml. Si consiglia agli analisti forensi di rivedere i valori e apportare le modifiche necessarie per il proprio workspace. Queste costanti sono responsabili sia della statistica della kill chain (kcs) che della scoperta della kill chain (sottocatene).
Vuoi saperne di più sulle statistiche e l'algoritmo usati da ALFA? Abbiamo scritto un post sul blog qui (https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92)
Devi aggiungere un file credentials.json alla cartella del progetto nella sottodirectory 'config'. Istruzioni nel file 'CREDENTIALS.md'.
Questo significa che la porta 8089 è già in uso da un'altra applicazione; questo potrebbe accadere se hai un server web in esecuzione su questa porta e anche Splunk usa la porta 8089 per impostazione predefinita. La soluzione è fermare (temporaneamente) l'uso di quella porta poiché è necessaria per il flusso di autenticazione che la porta sia disponibile.
A volte le informazioni di autorizzazione devono essere aggiornate; il modo più semplice per farlo è rimuovere il file 'token.json' dalla cartella nome_progetto/config. E poi rieseguire il comando. Se il problema persiste, rimuovi token.json e credentials.json e riregistra l'applicazione OAuth come descritto in
CREDENTIALS.MD
Assicurati di avere la barra finale (/) nell'URI Authorized redirect URIs http://localhost:8089 dell'applicazione nei tuoi OAuth 2.0 Client IDs.
