
Автоматизированный инструмент криминалистического анализа для журналов аудита Google Workspace. Получает все типы журналов, сопоставляет события с MITRE ATT&CK Cloud Framework и идентифицирует килл-чейны посредством статистической оценки.
Авторские права (c) 2026 Invictus Incident Response
Исходные авторы Greg Charitonos и BertJanCyber, поддерживается Invictus Incident Response
Замечание о поддерживаемых операционных системах: ALFA протестирован на нескольких дистрибутивах Linux (Debian и Ubuntu).
Хотя возможно его использование в Windows или macOS, результаты могут отличаться, так что действуйте на свой страх и риск.
sudo pip install -e . или sudo pip3 install -e .Установите Python 3.9 с помощью pyenv
ALFA лучше всего работает с Python 3.9. Вы можете использовать pyenv для управления и установки этой версии.
pyenv ещё не установлен, вы можете сделать это через Homebrew:
brew install pyenv
pyenv в вашей оболочке, добавив следующее в файл конфигурации (например, ~/.zshrc или ~/.bashrc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
source ~/.zshrc # или source ~/.bashrc
pyenv:
pyenv install 3.9
pyenv global 3.9
pyenv shell 3.9
(Опционально) Создайте виртуальное окружение Рекомендуется запускать проекты в виртуальном окружении для изоляции зависимостей. Используя версию Python 3.9, которую вы только что установили, создайте виртуальное окружение:
python -m venv alfa
source alfa/bin/activate
Установите ALFA
В папке, где находится проект ALFA, установите его с помощью pip:
pip install -e .
Если вы не используете виртуальное окружение, возможно, потребуется sudo:
sudo pip install -e .
Проверьте установку
После установки вы можете проверить, что ALFA установлен, попытавшись запустить его утилиту командной строки alfa.
ПРИМЕЧАНИЕ: Инструкции по получению credentials.json см. в CREDENTIALS.md
alfa init имя_проекта, эта команда создаст новый каталог для хранения вашей конфигурации и данных. Например: alfa init project_xУ ALFA есть 3 опции, как описано ниже:
alfa acquirealfa acquire -hВы можете применять различные фильтры для ограничения получаемых данных, вот несколько примеров:
alfa acquire --logtype=adminalfa acquire -d /tmp/project_secretalfa acquire --user=введите_имя_пользователяalfa acquire --start-time=2022-07-10T10:00:00Z --end-time=2022-07-11T14:26:01Z, формат времени: (RFC3339)Теперь вы знаете, как получать данные, время перейти к интересным вещам, чтобы раскрыть всю мощь ALFA.
Функция analyze автоматически анализирует все данные журналов аудита для заданной среды Google Workspace, чтобы выявить подозрительную активность.
Категоризация Каждое отдельное событие категоризируется на основе сопоставления, заданного в alfa/config/event_to_mitre.yml. Если событие соответствует записям из этого списка, оно сопоставляется с техникой, входящей в фреймворк MITRE ATT&CK Cloud (https://attack.mitre.org/matrices/enterprise/cloud/).
Оценка Затем ALFA анализирует все сопоставленные события в хронологическом порядке, чтобы попытаться выявить цепочки kill chain или логические пути атаки. Например, событие, сопоставленное с фазой Persistence, за которым следует событие, сопоставленное с фазой Credential Access, приведёт к более высокой оценке.
Результат В итоге ALFA предоставляет аналитику список выявленных «подцепочек» (subchains), которые можно проанализировать дальше.
alfa analyze, который автоматически выявит подцепи (или не выявит, если их нет). Он также откроет интерактивную оболочку, где вы сможете выполнять последующие действия.A.aoi(export='activities.json'), чтобы экспортировать все выявленные подцепи в файл, который затем можно использовать для дальнейшего анализа.Используйте A = Alfa.load([имя_журнала]) для загрузки и анализа журналов из локального хранилища. Используйте A = Alfa.load('all') для загрузки всех журналов. По умолчанию Alfa отфильтровывает безвредные действия. Чтобы загрузить все действия и события без фильтрации, используйте Alfa.load([имя_журнала], filter=False).
Вы можете напрямую редактировать файл config/event_to_mitre.yml, но это не рекомендуется. Структура этого файла неинтуитивна. Вместо этого вносите изменения в utils/mappings.yml. Затем заново создайте config/event_to_mitre.yml, выполнив utils/event_mitre_remap.py.
Функция обнаружения kill chain использует жёстко заданные константы. Их можно найти в файле config/config.yml. Криминалистам рекомендуется просмотреть значения и внести изменения под свою рабочую область при необходимости. Эти константы отвечают как за статистику kill chain (kcs), так и за обнаружение kill chain (подцепи).
Хотите узнать больше о статистике и алгоритмах, используемых в ALFA? Мы написали об этом пост в блоге: https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92
Необходимо добавить файл credentials.json в папку проекта в подкаталог 'config'. Инструкции в файле 'CREDENTIALS.md'.
Это означает, что порт 8089 уже используется другим приложением. Это может произойти, если на этом порту запущен веб-сервер, а также Splunk по умолчанию использует порт 8089. Решение — (временно) освободить этот порт, так как он необходим для процесса аутентификации.
Иногда информацию об авторизации необходимо обновить. Проще всего удалить файл 'token.json' из папки project_name/config, а затем повторно выполнить команду. Если это всё ещё вызывает проблемы, удалите token.json и credentials.json и заново зарегистрируйте приложение OAuth, как описано в CREDENTIALS.MD
Убедитесь, что в URI Authorized redirect URIs вашего приложения OAuth 2.0 Client IDs присутствует завершающий слэш (/) в URI http://localhost:8089.
