
Google Workspace監査ログ用の自動フォレンジック分析ツール。すべてのログタイプを取得し、イベントをMITRE ATT&CK Cloud Frameworkにマッピングし、統計スコアリングによりキルチェーンを特定します。
Copyright (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 . を実行pyenv を使用して Python 3.9 をインストール
ALFA は Python 3.9 で最もよく動作します。pyenv を使用してこのバージョンを管理およびインストールできます。
pyenv をまだインストールしていない場合は、Homebrew を使用してインストールできます:
brew install pyenv
~/.zshrc または ~/.bashrc) に以下を追加して、シェルで pyenv を設定します:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
source ~/.zshrc # または source ~/.bashrc
pyenv を使用して Python 3.9 をインストールします:
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 projectname を実行して、設定とデータを保存する新しいディレクトリを作成します。例: alfa init project_xALFA には以下の3つのオプションがあります:
alfa acquire を実行alfa acquire -h と入力収集するデータを制限するために、さまざまなフィルタリングを行うことができます。以下に例を示します:
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 時間形式は (RFC3339)これでデータの収集方法がわかりました。ALFA の力を解き放つための高度な機能を使う準備が整いました。
分析機能は、指定された Google Workspace のすべての監査ログデータを自動的に分析し、不審なアクティビティを特定します。
カテゴリ化 個々のイベントは、alfa/config/event_to_mitre.yml で作成されたマッピングに基づいてカテゴリ化されます。イベントがそのリストに一致する場合、MITRE ATT&CK Cloud Framework (https://attack.mitre.org/matrices/enterprise/cloud/) の一部であるテクニックにマッピングされます。
スコアリング 次に ALFA は、マッピングされたすべてのイベントを時系列順に分析し、キルチェーンまたは論理的な攻撃パスを特定しようとします。 例: 永続化 (Persistence) フェーズにマッピングされたイベントの後に、認証情報アクセス (Credential Access) フェーズにマッピングされたイベントが続くと、スコアが高くなります。
結果 最終的に ALFA は、アナリストに特定された「サブチェーン」のリストを提供し、さらに分析することができます。
alfa analyze を実行します。これにより自動的に識別されます(見つからない場合は識別されません)。また、フォローアップアクティビティを実行できるシェルにドロップされます。A.aoi(export='activities.json') を使用して、特定されたすべてのサブチェーンをファイルにエクスポートし、それをさらなる分析に使用できます。A = Alfa.load([logname]) を使用して、ローカルストレージからログをロードおよび分析します。すべてのログをロードするには A = Alfa.load('all') を使用します。Alfa はデフォルトで良性のアクティビティを除外します。フィルタリングせずにすべてのアクティビティとイベントをロードするには、Alfa.load([logname], filter=False) を使用します。
config/event_to_mitre.yml ファイルを直接編集することは可能ですが、推奨されません。このファイルのレイアウトは直感的ではありません。代わりに、utils/mappings.yml を修正することを検討してください。その後、utils/event_mitre_remap.py を実行して config/event_to_mitre.yml を再生成します。
キルチェーン発見機能はハードコードされた定数を使用します。これらは config/config.yml にあります。 フォレンジックアナリストは、値を確認し、必要に応じてワークスペースに合わせて修正することをお勧めします。 これらの定数は、キルチェーンスタティスティック (kcs) とキルチェーン発見 (サブチェーン) の両方に関与しています。
ALFA で使用される統計とアルゴリズムの詳細については、こちらのブログ記事をご覧ください (https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92)
プロジェクトフォルダ内の 'config' サブディレクトリに credentials.json ファイルを追加する必要があります。手順は 'CREDENTIALS.md' ファイルにあります。
これは、ポート 8089 が別のアプリケーションですでに使用されていることを意味します。このポートでウェブサーバーが実行されている場合や、Splunk がデフォルトでポート 8089 を使用する場合に発生する可能性があります。解決策は、そのポートの使用を(一時的に)停止することです。認証フローではこのポートが利用可能である必要があるためです。
認証情報を更新する必要がある場合があります。最も簡単な方法は、project_name/config フォルダから 'token.json' を削除し、コマンドを再実行することです。それでも問題が解決しない場合は、token.json と credentials.json を削除し、CREDENTIALS.MD に記載されているように OAuth アプリケーションを再登録してください。
アプリケーションの OAuth 2.0 クライアント ID の Authorized redirect URIs URI http://localhost:8089 に末尾のバックスラッシュ (/) が含まれていることを確認してください。
