
Ferramenta automatizada de análise forense para logs de auditoria do Google Workspace. Adquire todos os tipos de logs, mapeia eventos para o MITRE ATT&CK Cloud Framework e identifica cadeias de ataque através de pontuação estatística.
Copyright (c) 2026 Invictus Incident Response
Autores originais Greg Charitonos & BertJanCyber mantido por Invictus Incident Response
Uma nota sobre sistemas operacionais suportados: ALFA é testado em várias distribuições Linux (Debian e Ubuntu).
Embora possa ser possível usá-lo no Windows ou macOS, os resultados podem variar, portanto, prossiga por sua conta e risco.
sudo pip install -e . ou sudo pip3 install -e .Instale o Python 3.9 usando pyenv
O ALFA funciona melhor com Python 3.9. Você pode usar pyenv para gerenciar e instalar esta versão.
pyenv, pode fazê-lo usando o Homebrew:
brew install pyenv
pyenv no seu shell adicionando o seguinte ao seu arquivo de configuração do shell (por exemplo, ~/.zshrc ou ~/.bashrc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
source ~/.zshrc # ou source ~/.bashrc
pyenv:
pyenv install 3.9
pyenv global 3.9
pyenv shell 3.9
(Opcional) Crie um Ambiente Virtual É uma boa prática executar projetos em um ambiente virtual para manter as dependências isoladas. Usando a versão 3.9 do Python que você acabou de definir, crie um ambiente virtual:
python -m venv alfa
source alfa/bin/activate
Instale o ALFA
Dentro da pasta onde o projeto ALFA está localizado, instale-o usando pip:
pip install -e .
Se você não estiver usando um ambiente virtual, pode ser necessário usar sudo:
sudo pip install -e .
Verifique a Instalação
Após a instalação, você pode verificar se o ALFA está instalado tentando executar sua ferramenta de linha de comando alfa.
NOTA: Para obter o credentials.json, consulte CREDENTIALS.md
alfa init nome_do_projeto. Este comando criará um novo diretório para armazenar sua configuração e dados. Ex.: alfa init projeto_xO ALFA tem 3 opções, conforme explicado abaixo:
alfa acquirealfa acquire -hVocê pode fazer todos os tipos de filtragem para limitar os dados que está adquirindo. Alguns exemplos abaixo:
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 o formato de hora é (RFC3339)Agora você sabe como adquirir dados. Hora de algumas coisas interessantes para liberar o poder do ALFA.
A função de análise automaticamente analisa todos os dados de log de auditoria de um determinado Google Workspace para identificar atividades suspeitas.
Categorização Cada evento individual é categorizado com base em um mapeamento feito em alfa/config/event_to_mitre.yml. Se um evento corresponder a essa lista, ele é mapeado para uma técnica que faz parte do MITRE ATT&CK Cloud Framework (https://attack.mitre.org/matrices/enterprise/cloud/).
Pontuação Em seguida, o ALFA analisará todos os eventos mapeados em ordem cronológica para tentar identificar kill chains ou caminhos de ataque lógicos. Ex.: Um evento mapeado para a fase de Persistência seguido por um evento mapeado para a fase de Acesso a Credenciais resultará em uma pontuação mais alta.
Resultado Por fim, o ALFA fornecerá ao analista uma lista de 'subcadeias' identificadas que podem ser analisadas posteriormente.
alfa analyze que identificará automaticamente (ou não, se nenhuma for encontrada). Também o colocará em um shell onde você pode realizar atividades de acompanhamento.A.aoi(export='activities.json') para exportar todas as subcadeias identificadas para um arquivo, que você pode usar para análises posteriores.Use A = Alfa.load([nome_do_log]) para carregar e analisar logs do armazenamento local. Use A = Alfa.load('all') para carregar todos os logs. Por padrão, o Alfa filtra atividades benignas. Para carregar todas as atividades e eventos, sem filtro, use Alfa.load([nome_do_log], filter=False).
É possível editar o arquivo config/event_to_mitre.yml diretamente, mas não é recomendado. O layout deste arquivo não é intuitivo. Em vez disso, considere fazer alterações em utils/mappings.yml. Em seguida, repopule config/event_to_mitre.yml executando utils/event_mitre_remap.py
A função de descoberta de kill chain utiliza constantes codificadas. Elas podem ser encontradas em config/config.yml. Os analistas forenses são aconselhados a revisar os valores e fazer alterações para seu workspace conforme necessário. Essas constantes são responsáveis tanto pela estatística da kill chain (kcs) quanto pela descoberta da kill chain (subchains).
Quer saber mais sobre as estatísticas e o algoritmo usado para o ALFA? Escrevemos um post no blog sobre isso aqui(https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92)
Você precisa adicionar um arquivo credentials.json à pasta do projeto no subdiretório 'config'. Instruções no arquivo 'CREDENTIALS.md'.
Isso significa que a porta 8089 já está em uso por outra aplicação. Isso pode acontecer se você tiver um servidor web rodando nesta porta e também o Splunk usa a porta 8089 por padrão. A solução é (temporariamente) parar o uso dessa porta, pois ela é necessária para o fluxo de autenticação.
Às vezes, as informações de autorização precisam ser atualizadas. A maneira mais fácil de fazer isso é remover o 'token.json' da pasta project_name/config e depois executar novamente o comando. Se isso ainda causar problemas, remova token.json e credentials.json e registre novamente a aplicação OAuth conforme descrito em
CREDENTIALS.MD
Certifique-se de ter a barra invertida (/) no final da URI Authorized redirect URIs http://localhost:8089 dos IDs do Cliente OAuth 2.0 da sua aplicação.
