
Herramienta automatizada de análisis forense para registros de auditoría de Google Workspace. Adquiere todos los tipos de registro, mapea eventos al marco MITRE ATT&CK Cloud e identifica cadenas de ataque mediante puntuación estadística.
Copyright (c) 2026 Invictus Incident Response
Autores originales Greg Charitonos & BertJanCyber mantenido por Invictus Incident Response
Nota sobre sistemas operativos compatibles: ALFA ha sido probado en varias distribuciones de Linux (Debian y Ubuntu).
Aunque es posible usarlo en Windows o macOS, los resultados pueden variar, así que proceda bajo su propio riesgo.
sudo pip install -e . o sudo pip3 install -e .Instale Python 3.9 usando pyenv
ALFA funciona mejor con Python 3.9. Puede usar pyenv para gestionar e instalar esta versión.
pyenv, puede hacerlo usando Homebrew:
brew install pyenv
pyenv en su shell añadiendo lo siguiente a su archivo de configuración (por ejemplo, ~/.zshrc o ~/.bashrc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
Después de actualizar el archivo, recargue su shell:
source ~/.zshrc # or source ~/.bashrc
pyenv:
pyenv install 3.9
pyenv global 3.9
o solo para la sesión actual: pyenv shell 3.9
(Opcional) Crear un Entorno Virtual Es una buena práctica ejecutar proyectos en un entorno virtual para mantener las dependencias aisladas. Usando la versión 3.9 de Python que acaba de configurar, cree un entorno virtual:
python -m venv alfa
source alfa/bin/activate
Instale ALFA
Dentro de la carpeta donde se encuentra el proyecto ALFA, instálelo usando pip:
pip install -e .
Si no está usando un entorno virtual, puede necesitar sudo:
sudo pip install -e .
Verifique la instalación
Después de la instalación, puede verificar que ALFA está instalado intentando ejecutar su herramienta de línea de comandos alfa.
NOTA: Para obtener credentials.json, consulte CREDENTIALS.md
alfa init projectname este comando creará un nuevo directorio para almacenar su configuración y datos. P.ej. alfa init project_xALFA tiene 3 opciones como se explica a continuación:
alfa acquirealfa acquire -hPuede hacer todo tipo de filtrado para limitar los datos que está adquiriendo. Algunos ejemplos a continuación:
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 el formato de hora es (RFC3339)Ahora ya sabe cómo adquirir datos. ¡Es hora de algunas cosas interesantes para desatar el poder de ALFA.
La función de análisis analiza automáticamente todos los datos de registros de auditoría de un Google Workspace dado para identificar actividad sospechosa.
Categorización Cada evento individual se categoriza basándose en un mapeo que se realiza en alfa/config/event_to_mitre.yml. Si un evento coincide con esa lista, se mapea a una técnica que forma parte del MITRE ATT&CK Cloud Framework (https://attack.mitre.org/matrices/enterprise/cloud/).
Puntuación A continuación, ALFA analizará todos los eventos mapeados en orden cronológico para intentar identificar cadenas de eliminación o rutas de ataque lógicas. P.ej., un evento que se mapea a la fase de Persistencia seguido de un evento que se mapea a la fase de Acceso a Credenciales resultará en una puntuación más alta.
Resultado Finalmente, ALFA le dará al analista una lista de 'subcadenas' identificadas que pueden ser analizadas más a fondo.
alfa analyze que identificará automáticamente (o no si no se encontró ninguna). También le llevará a un shell donde puede realizar actividades de seguimiento.A.subchains() que le mostrará la cadena usando el siguiente formato (número_del_primer_evento_en_la_cadena, número_del_último_evento_en_la_cadena, puntuación_de_cadena_de_eliminación). Donde una puntuación de 1 significa que se identificó una cadena perfecta, y cuanto más se acerque a 0, más débil es la cadena.A.aoi(export='activities.json') para exportar todas las subcadenas identificadas a un archivo, que luego puede usar para análisis posteriores.Use A = Alfa.load([logname]) para cargar y analizar registros desde almacenamiento local. Use A = Alfa.load('all') para cargar todos los registros. ALFA filtra las actividades benignas de forma predeterminada. Para cargar todas las actividades y eventos, sin filtrar, use Alfa.load([logname], filter=False).
Es posible editar el archivo config/event_to_mitre.yml directamente, pero no es recomendable. La disposición de este archivo no es intuitiva. En su lugar, considere hacer modificaciones en utils/mappings.yml. Luego, vuelva a poblar config/event_to_mitre.yml ejecutando utils/event_mitre_remap.py
La función de detección de cadenas de eliminación utiliza constantes codificadas. Estas se pueden encontrar en config/config.yml. Se recomienda a los analistas forenses revisar los valores y hacer modificaciones para su espacio de trabajo según sea necesario. Estas constantes son responsables tanto de la estadística de cadena de eliminación (kcs) como de la detección de cadenas de eliminación (subcadenas).
¿Quiere saber más sobre las estadísticas y el algoritmo utilizado para ALFA? Escribimos una publicación de blog al respecto aquí (https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92)
Debe agregar un archivo credentials.json a la carpeta del proyecto en el subdirectorio 'config'. Instrucciones en el archivo 'CREDENTIALS.md'.