
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는 아래 설명된 세 가지 옵션이 있습니다:
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 끝에 백슬래시(/)가 있는지 확인하세요.
