KONDORDEVSECURITYCORP/Babuk-Ransomware-Threat-Analysis

GitHub: KONDORDEVSECURITYCORP/Babuk-Ransomware-Threat-Analysis

这是一份针对Babuk勒索软件v1版本的完整技术分析报告,深入剖析了其ECDH加密架构、执行流程及防御检测策略。

Stars: 0 | Forks: 0

Malware Analysis Babuk Crypto NIST K-571 Threat Intel

Babuk 勒索软件 v1 — 威胁分析报告

Babuk Locker 勒索软件家族的静态分析与密码学研究

面向恶意软件分析师、检测工程师和事件响应人员的综合技术文档

摘要加密阶段加密引擎局域网IOCsATT&CK检测完整报告 EN报告 ES

## 执行摘要 **Babuk Locker**(又称 Babyk, Babuk)是一个自 **2021 年 1 月** 开始活跃的勒索软件行动,其目标包括企业、关键基础设施和政府实体,其中包括**华盛顿特区大都会警察局**。该组织运营着一个双重勒索模式,并拥有基于 Tor 的数据泄露站点。 此仓库包含 Babuk 勒索软件版本 1(Windows 变体)的**详细技术分析文档**,提供对以下内容的全面可见性: - **混合型 ECDH + ChaCha20** 加密方案 - 具有**双模式处理**(小/大文件)的多线程文件加密 - 通过 Windows 网络资源枚举实现的 **LAN 传播** - 服务/进程终止和卷影副本销毁 - **NIST K-571** 椭圆曲线实现(256 位等效安全性) ### 威胁画像 | 属性 | 值 | |-----------|-------| | **恶意软件家族** | Babuk Locker / Babyk | | **版本** | 1.0 (初始变体) | | **首次发现** | 2021 年 1 月 | | **目标操作系统** | Windows (本变体) | | **语言** | C++ (最初为 Embarcadero Dev-C++) | | **加密方式** | ECDH (NIST K-571) + ChaCha20 + SHA-256 | | **密钥长度** | 571 位 ECC (~256 位对称等效) | | **扩展名** | `.__NIST_K571__` | | **勒索信** | `How To Restore Your Files.txt` | | **知名受害者** | DC Metropolitan Police, Houston Rockets, Serco | | **泄露站点** | `babukq4e2p4wu4iq.onion` (已失效) | ## 密码学架构 Babuk 实现了一种结合非对称和对称密码学的**多层混合加密方案**。这是本分析的核心技术贡献。 ### 密钥层级 ``` OPERATOR LEVEL (pre-embedded) ┌─────────────────────────────────────────────────────────┐ │ MY_ECDH_PUB_KEY (144 bytes) │ │ Operator's ECDH public key — NIST K-571 curve │ │ Hardcoded at compile time │ └───────────────────────┬─────────────────────────────────┘ │ VICTIM LEVEL (runtime) │ ┌───────────────────────┴─────────────────────────────────┐ │ 1. RtlGenRandom() → 88 random bytes → CHACHA20KEY_1 │ │ 2. ChaCha20 self-encryption of KEY_1 → ECDH seed │ │ 3. ecdh_generate_keys() → victim key pair │ │ ├── VICTIM_ECDH_PUBLIC_KEY (144 bytes) → saved │ │ └── VICTIM_ECDH_PRIVATE_KEY (72 bytes) → memory │ │ 4. ecdh_shared_secret(victim_priv, operator_pub) │ │ └── ECDH_SHARED_SECRET (144 bytes) │ └───────────────────────┬─────────────────────────────────┘ │ FILE LEVEL │ ┌───────────────────────┴─────────────────────────────────┐ │ 5. SHA-256(shared_secret[:72]) → CHACHA20_FINAL_KEY_1 │ │ 6. SHA-256(shared_secret[:144]) → CHACHA20_FINAL_KEY_2 │ │ 7. memcpy(shared_secret[:12]) → CHACHA20_FINAL_NONCE │ │ │ │ ALL files encrypted with the SAME derived keys │ │ Double ChaCha20 pass: Key1 then Key2 (same nonce) │ └──────────────────────────────────────────────────────────┘ ``` ### 密码学弱点分析 | 方面 | 实现方式 | 评估 | |--------|---------------|------------| | **曲线** | NIST K-571 (Koblitz) | 强 — 256 位等效安全性 | | **密钥派生** | 共享秘密的 SHA-256 哈希 | 可接受但非标准 | | **对称密码** | ChaCha20 (双重遍历) | 冗余 — 第二次遍历未增加安全性 | | **Nonce 处理** | 共享秘密的前 12 字节 | **严重缺陷** — 所有文件使用相同的 nonce | | **每文件密钥** | 无 — 每个受害者单密钥对 | **弱点** — 泄露一个密钥即可解密所有文件 | | **密钥存储** | 公钥保存至 `%APPDATA%\ecdh_pub_k.bin` | 运营者解密所必需 | | **CSPRNG** | `RtlGenRandom` (SystemFunction036) | 充足 — Windows CSPRNG | ## 执行阶段 ``` PHASE 1 — System Preparation ═══════════════════════════════════════════════════════════ [1.1] ServiceFucker() → Stop 44 security/backup services [1.2] ProcessFucker() → Terminate 31 file-locking processes [1.3] ShadowFucker() → vssadmin delete shadows /all /quiet [1.4] SHEmptyRecycleBin → Empty recycle bin silently PHASE 2 — Cryptographic Setup ═══════════════════════════════════════════════════════════ [2.1] GetSystemInfo → Detect processor count [2.2] ChaChaKey1Setup() → RtlGenRandom → 88 bytes entropy [2.3] ECDHPrivateKeySetup() → ChaCha20 self-XOR → ECDH seed [2.4] ecdh_generate_keys() → Victim ECDH key pair (K-571) [2.5] ecdh_shared_secret() → Diffie-Hellman shared secret [2.6] SHA-256(secret) → ChaCha20 final keys (2x 32 bytes) [2.7] memcpy(secret[:12]) → ChaCha20 nonce (12 bytes) PHASE 3 — Key Persistence ═══════════════════════════════════════════════════════════ [3.1] Save VICTIM_ECDH_PUBLIC_KEY to %APPDATA%\ecdh_pub_k.bin [3.2] Fallback: %TEMP%\ecdh_pub_k.bin PHASE 4 — File Encryption ═══════════════════════════════════════════════════════════ [4.1] If -lanfirst: SearchLAN() → WNetOpenEnumW recursion [4.2] MountVolumes() → Mount all unmounted NTFS volumes [4.3] GetLogicalDrives() → Enumerate A:-Z: [4.4] Multi-threaded SearchFiles() per drive └── Thread count = NumProcessors * 2 [4.5] If -lansecond: SearchLAN() after local encryption [4.6] WaitForMultipleObjects() → Join all threads PHASE 5 — Final Cleanup ═══════════════════════════════════════════════════════════ [5.1] ShadowFucker() → Delete shadow copies again ``` ## 文件加密引擎 ### 双模式处理 Babuk 实现了**基于大小的加密策略**以最大化速度: ``` ┌──────────────────────────────────────────────────────┐ │ FILE SIZE DECISION │ │ │ │ File <= 40 MB (41,943,040 bytes) │ │ ├── Memory-map ENTIRE file │ │ ├── ChaCha20(Key1, Nonce) XOR full content │ │ ├── ChaCha20(Key2, Nonce) XOR full content │ │ └── 100% of file encrypted │ │ │ │ File > 40 MB │ │ ├── Calculate: block_spacing = filesize / 10MB / 3 │ │ ├── Encrypt 3 blocks of 10 MB each │ │ │ ├── Block 1: offset 0 │ │ │ ├── Block 2: offset block_spacing * 10MB │ │ │ └── Block 3: offset block_spacing * 2 * 10MB │ │ ├── ChaCha20 double-pass on each block │ │ └── ~30 MB encrypted regardless of file size │ └──────────────────────────────────────────────────────┘ ``` ### 文件处理流水线 ``` For each file: 1. SetFileAttributesW(NORMAL) — Remove read-only protection 2. CreateFileW(READ|WRITE) — Open with full access 3. If locked → Restart Manager API: a. RmStartSession() b. RmRegisterResources() c. RmGetList() → find locking processes d. TerminateProcess() on each (skip Explorer/Critical) e. RmEndSession() 4. CreateFileMappingA() — Memory-map the file 5. MapViewOfFile() — Map into address space 6. ChaCha20XOR(Key1) → in-place — First encryption pass 7. ChaCha20XOR(Key2) → in-place — Second encryption pass 8. UnmapViewOfFile() — Flush to disk 9. MoveFileExW(+ ".__NIST_K571__") — Append extension 10. Drop ransom note in directory ``` ## 横向移动 ### LAN 传播 Babuk 实现了**递归式 Windows 网络资源枚举**以进行横向文件加密: ``` SearchLAN(NULL) └── WNetOpenEnumW(RESOURCE_GLOBALNET, RESOURCETYPE_ANY) └── WNetEnumResourceW() loop ├── If RESOURCEUSAGE_CONTAINER → SearchLAN(resource) // Recurse deeper └── Else → SearchFiles(lpRemoteName, 0) // Encrypt share ``` ### 执行模式 | 标志 | 行为 | |------|----------| | `-lanfirst` | 在本地驱动器之前加密 LAN 共享 | | `-lansecond` | 在本地驱动器之后加密 LAN 共享 (默认) | | `-nolan` | 完全跳过 LAN 加密 | ## 服务与进程终止 ### 目标服务 (44 项) | 类别 | 服务 | |----------|----------| | **备份** | `vss`, `veeam`, `VeeamTransportSvc`, `VeeamDeploymentService`, `VeeamNFSSvc`, `BackupExecVSSProvider`, `BackupExecAgentAccelerator`, `BackupExecAgentBrowser`, `BackupExecJobEngine`, `BackupExecManagementService`, `BackupExecRPCService`, `YooBackup`, `YooIT`, `AcrSch2Svc`, `AcronisAgent`, `CASAD2DWebSvc`, `CAARCUpdateSvc`, `GxVss`, `GxBlr`, `GxFWD`, `GxCVD`, `GxCIMgr`, `VSNAPVSS`, `PDVFSService` | | **安全** | `sophos`, `DefWatch`, `ccEvtMgr`, `ccSetMgr`, `SavRoam`, `RTVscan`, `zhudongfangyu`, `stc_raw_agent` | | **数据库** | `sql`, `svc$`, `memtas`, `mepocs` | | **会计** | `QBFCService`, `QBIDPService`, `Intuit.QuickBooks.FCS`, `QBCFMonitorService` | ### 目标进程 (31 项) | 类别 | 进程 | |----------|-----------| | **数据库** | `sql.exe`, `oracle.exe`, `ocssd.exe`, `dbsnmp.exe`, `dbeng50.exe` | | **办公** | `excel.exe`, `winword.exe`, `outlook.exe`, `powerpnt.exe`, `msaccess.exe`, `mspub.exe`, `onenote.exe`, `visio.exe`, `wordpad.exe`, `notepad.exe`, `infopath.exe` | | **邮件** | `thunderbird.exe`, `thebat.exe` | | **浏览器** | `firefox.exe` | | **其他** | `synctime.exe`, `agntsvc.exe`, `isqlplussvc.exe`, `xfssvccon.exe`, `mydesktopservice.exe`, `ocautoupds.exe`, `encsvc.exe`, `tbirdconfig.exe`, `mydesktopqos.exe`, `ocomm.exe`, `sqbcoreservice.exe`, `steam.exe` | ### 排除列表 **排除目录:** `Windows`, `Windows.old`, `Tor Browser`, `Internet Explorer`, `Google`, `Opera`, `Mozilla`, `Mozilla Firefox`, `$Recycle.Bin`, `ProgramData`, `All Users`, `Program Files`, `Program Files (x86)` **排除文件:** `autorun.inf`, `boot.ini`, `bootfont.bin`, `bootsect.bak`, `bootmgr`, `bootmgr.efi`, `bootmgfw.efi`, `desktop.ini`, `iconcache.db`, `ntldr`, `ntuser.dat`, `ntuser.dat.log`, `ntuser.ini`, `thumbs.db`, `ecdh_pub_k.bin` ## IOC ### 文件系统 | 指标 | 值 | |-----------|-------| | **加密扩展名** | `.__NIST_K571__` | | **勒索信** | `How To Restore Your Files.txt` | | **ECDH 密钥文件** | `%APPDATA%\ecdh_pub_k.bin` (144 字节) | | **备用密钥** | `%TEMP%\ecdh_pub_k.bin` | ### 网络 | 类型 | 值 | |------|-------| | **Onion URL** | `babukq4e2p4wu4iq.onion` | | **登录路径** | `/login.php?id=8M60J4vCbbkKgM6QnA07E9qpkn0Qk7` | ### 行为 | 指标 | 详情 | |-----------|--------| | 卷影删除 | `cmd.exe /c vssadmin.exe delete shadows /all /quiet` | | 回收站清空 | `SHEmptyRecycleBinW(NULL, NULL, 7)` | | 关机参数 | `SetProcessShutdownParameters(0, 0)` | | 动态 API 加载 | `LoadLibraryA("advapi32.dll")` → `SystemFunction036` | | WoW64 重定向 | `Wow64DisableWow64FsRedirection` 用于卷影删除 | | 网络枚举 | `WNetOpenEnumW(RESOURCE_GLOBALNET)` | | 卷挂载 | `SetVolumeMountPointW` 在未挂载的 NTFS 卷上 | | 重启管理器滥用 | `RmStartSession` → `RmGetList` → 终止锁定进程 | ### 编译产物 | 属性 | 值 | |-----------|-------| | 编译器 | MSVC (Visual Studio 2019/2022) 或 Embarcadero Dev-C++ | | 子系统 | CONSOLE | | 链接库 | `advapi32.lib`, `shlwapi.lib`, `netapi32.lib`, `rstrtmgr.lib`, `mpr.lib`, `shell32.lib` | | 运行时 | 静态 (/MT) | | 优化 | /O2 | ## MITRE ATT&CK 映射 | 战术 | 技术 | ID | 实现方式 | |--------|-----------|-----|---------------| | **执行** | 命令和脚本解释器 | T1059.003 | `cmd.exe /c vssadmin.exe delete shadows` | | **执行** | 共享模块 | T1129 | 动态 `LoadLibraryA` 用于 API 解析 | | **持久化** | (无) | — | Babuk 不进行持久化 — 单次执行 | | **防御规避** | 指标移除 | T1070.004 | 卷影副本删除,回收站清空 | | **防御规避** | 文件和目录权限修改 | T1222.001 | `SetFileAttributesW(NORMAL)` 移除保护 | | **防御规避** | 进程注入 | T1055 | WoW64 FS 重定向绕过 | | **发现** | 系统信息发现 | T1082 | `GetSystemInfo()` 获取处理器数量 | | **发现** | 文件和目录发现 | T1083 | `FindFirstFileW` 递归枚举 | | **发现** | 网络共享发现 | T1135 | `WNetOpenEnumW(RESOURCE_GLOBALNET)` | | **发现** | 外设设备发现 | T1120 | `GetLogicalDrives()` + `GetDriveTypeW()` | | **横向移动** | 远程服务:SMB | T1021.002 | 通过 WNet 进行 LAN 共享文件加密 | | **影响** | 数据加密以造成影响 | T1486 | ChaCha20 双重遍历加密 | | **影响** | 服务停止 | T1489 | 通过 SCM 终止 44 个服务 | | **影响** | 阻止系统恢复 | T1490 | 卷影副本删除 (x2),回收站 | | **影响** | 系统关机/重启 | T1529 | `SetProcessShutdownParameters(0, 0)` | ## 仓库结构 ``` Babuk-Ransomware-Analysis/ ├── README.md # This file — full technical overview └── docs/ ├── ANALYSIS_EN.md # Complete reverse engineering report (English) └── ANALYSIS_ES.md # Reporte de ingenieria inversa completo (Espanol) ``` ## 检测工程 ### YARA 规则 ``` rule Babuk_Ransomware_V1 { meta: description = "Detects Babuk Ransomware Version 1" author = "KONDOR DEV SECURITY CORP" date = "2025-04-09" malware_family = "Babuk" severity = "critical" strings: $ext = ".__NIST_K571__" wide $note_name = "How To Restore Your Files.txt" wide $note_body = "BABUK LOCKER" ascii $onion = "babukq4e2p4wu4iq.onion" ascii $shadow = "vssadmin.exe delete shadows /all /quiet" wide $key_file = "ecdh_pub_k.bin" wide ascii $func1 = "SystemFunction036" ascii $func2 = "Wow64DisableWow64FsRedirection" ascii condition: uint16(0) == 0x5A4D and 4 of them } ``` ### Sigma 规则 ``` title: Babuk Ransomware Shadow Copy Deletion id: babuk-shadow-delete status: experimental logsource: category: process_creation product: windows detection: selection: ParentImage|endswith: '\cmd.exe' CommandLine|contains|all: - 'vssadmin' - 'delete' - 'shadows' - '/all' condition: selection level: critical tags: - attack.impact - attack.t1490 ``` ### Snort/Suricata ``` alert tcp $HOME_NET any -> $EXTERNAL_NET any ( msg:"MALWARE Babuk Ransomware Onion Beacon"; content:"babukq4e2p4wu4iq"; classtype:trojan-activity; sid:2025001; rev:1; ) ``` ## 参考资料 | 来源 | 链接 | |--------|------| | McAfee — Babuk 分析 | [mcafee.com/blogs](https://www.mcafee.com/blogs/other-blogs/mcafee-labs/babuk-ransomware/) | | Trend Micro — Babuk 深度剖析 | [trendmicro.com](https://www.trendmicro.com/en_us/research.html) | | CISA — 勒索软件指南 | [cisa.gov/stopransomware](https://www.cisa.gov/stopransomware) | | No More Ransom | [nomoreransom.org](https://www.nomoreransom.org/) | | MITRE ATT&CK — 勒索软件 | [attack.mitre.org](https://attack.mitre.org/) | | NIST K-571 规范 | [FIPS 186-3](https://csrc.nist.gov/publications/detail/fips/186/3/archive/2009-06-25) | ##免责声明

GitHub Telegram

分析由 KONDOR DEV SECURITY CORP 提供 — 致力于网络安全研究社区

标签:Babuk, ChaCha20, CISA项目, Cloudflare, DAST, ECDH, IOC, MITRE ATT&CK, NIST K-571, PE 加载器, YARA, 云安全监控, 云资产可视化, 加密算法, 勒索软件, 双重勒索, 后渗透, 威胁情报, 子域名变形, 库, 应急响应, 开发者工具, 恶意软件分析, 文件加密, 无线安全, 检测规则, 横向移动, 端点可见性, 编程规范, 网络安全, 网络安全审计, 网络资产发现, 隐私保护, 静态分析