8eddf076bf8b47cfd10dc5fbbd05588bc9bd7d05739671f6bc32a2d717e88e2ehippamsascom: 8eddf076 — Matchpool.exe — "redundant alarm" masquerade, Hane Group fabricated cert
Build / RE
Toolchain: MSVC 14.44 (Visual Studio 2022), C, x64 Release ^[rabin2-info.txt]. LinkerVersion=14.44, compiled 2026-04-29 ^[exiftool.json]. PE32+ GUI, 7 sections, ImageBase 0x140000000 ^[pefile.txt].
Import Table: Zero IAT. IMAGE_DIRECTORY_ENTRY_IMPORT VA=0, Size=0 ^[pefile.txt:223]. No static imports; all Win32 APIs resolved at runtime via PEB-walking export hash lookup ^[r2:fcn.14002a870], ^[r2:fcn.14002a930].
Exports: Semantic-jargon obfuscation — hundreds of export names (App.exe_AllocCalculateSocket, App.exe_BufferProcessor, App.exe_ArchiveReader, etc.) mapping to only ~21 unique RVAs ^[r2:list_exports]. Same saturation pattern as sibling 0c9e772d and sunwukong.
Anti-Analysis / Evasion:
- Export-obfuscation saturation (T1027) ^[r2:list_exports].
- Parent-process / sandbox gate at entry ^[r2:entry0] →
fcn.14002aca0checks parent process name against two hardcoded hash constants (0x5a/0x59) before permitting payload decryption ^[r2:fcn.14002aca0]. Same gate pattern as 0c9e772d. - Payload encrypted in
.datasection (entropy 7.97, 0xFCE00 bytes) ^[pefile.txt:123-139] ^[binwalk.txt]. Decrypted at runtime via custom stream cipher (fcn.140029890— 1024-byte/256-byte/128-byte state buffers with multi-round substitution and XOR, static XOR byte0x95) into RWX memory, then manually mapped as a PE ^[r2:fcn.14002add0], ^[r2:fcn.14002ae90], ^[r2:fcn.14002b3b0].
Signing: Authenticode PKCS#7 with fabricated intermediate CA. Certificate alt-names include hanegroup.digital, *.hanegroup.digital, hanegroup-lesly.digital, hanegroup-russel.group, hanegroup-lamont.group, and synthetic employee emails (Emmalee_Prohaska29@gmail.com, Juston.Corwin@hotmail.com, Jewell_Stark@yahoo.com) ^[strings.txt:10078-10149]. Cross-signed by DigiCert Trusted Root G4 ^[strings.txt]. Same fraudulent playbook as 0c9e772d (Emard LLC) and fa16b64a (Erdman Group) but with a fresh synthetic identity.
Embedded Resources: PNG icon 256×256 in .rsrc, XML manifest, plus Authenticode security directory (0x16B600, 0x2710 bytes) ^[binwalk.txt].
Notable Functions:
fcn.14002add0: Main payload decryptor orchestrator. Allocates RWX buffer (0xF4800bytes), copies encrypted payload from.data(rip+0x42db=0x14002f120), callsfcn.140029890(stream cipher), then callsfcn.14002ae90(PE mapper/loader) ^[r2:fcn.14002add0].fcn.140029890: Custom stream-cipher decryptor. Initializes 1024-byte, 256-byte, and 128-byte state buffers, performs multi-round byte substitution using.rdatalookup tables and XOR/add/ROL operations. Key schedule includes static XOR byte0x95^[r2:fcn.140029890].fcn.14002ae90: In-memory PE mapper / loader. Validates decrypted MZ header (0x5a4d), resolvesVirtualAlloc,memcpy,VirtualProtectvia PEB hash lookup, maps sections, fixes relocations, resolves imports from the decrypted PE, and transfers execution ^[r2:fcn.14002ae90]. Self-loader pattern identical to 0c9e772d.fcn.14002a870: PEB-walking helper. TraversesInMemoryOrderModuleListfrom TEB/PEB ^[r2:fcn.14002a870].fcn.14002a930: Hash-based export resolver. Takes module base + 32-bit hash constant (e.g.0x1bc2c88a,0x5337dd3c,0xfd08d565) and returns API pointer ^[r2:fcn.14002a930].fcn.140028294: Anti-debug / timing gate. Checks global state dword; if unset, loops 5 iterations calling a timing/tick function ^[r2:fcn.140028294].
Code Quality: No stack canary, no CFG, no PDB path. Stripped but retains IMAGE_DEBUG_TYPE_POGO debug directory entry ^[pefile.txt]. Release build, not debug.
Deploy / ATT&CK
No CAPE detonation available (no Windows guest) ^[dynamic-analysis.md]. All behavioural claims are static inference.
| Technique | ID | Evidence |
|---|---|---|
| Masquerading | T1036.002 | Version info claims "redundant alarm Enterprise Protector" by Hane Group, OriginalFilename redundantalarm_9821.exe ^[exiftool.json] |
| Obfuscated Files or Information | T1027 | Semantic export obfuscation (hundreds of names → ~21 unique RVAs) ^[r2:list_exports] |
| Software Packing | T1027.002 | Custom stream-cipher payload decryption into RWX memory + manual PE mapping ^[r2:fcn.14002add0], ^[r2:fcn.140029890] |
| Native API | T1106 | PEB-walking hash resolver for all Win32 APIs ^[r2:fcn.14002a870], ^[r2:fcn.14002a930] |
| Code Signing | T1553.002 | Fabricated Hane Group intermediate CA with DigiCert cross-sign ^[strings.txt], ^[binwalk.txt] |
| Evade Detection | T1497 | Parent-process hash gate at entry ^[r2:fcn.14002aca0] |
| Process Injection (inferred) | T1055 | Self-loader maps decrypted PE into RWX memory and transfers execution ^[r2:fcn.14002ae90] |
C2 / Network: No hardcoded IPs, domains, or URL paths in static strings. C2 infrastructure is presumed runtime-resolved inside the encrypted payload. The loader resolves ShellExecuteA/W and SHGetSpecialFolderPathW via PEB walk (import resolution loop in fcn.14002ae90), suggesting the decrypted payload may use standard Windows file/execution APIs for staging.
Persistence (inferred): Unknown without dynamic execution. Typical cluster behaviour suggests %APPDATA% or Startup folder staging, but this is speculative.
Attribution / Clustering:
- Label
hippamsas-comfrom OpenCTI/MalwareBazaar, co-taggedsunwukong^[triage.json]. - Confirmed same build cluster as sunwukong and 0c9e772d: MSVC x64, zero IAT, PEB-walking hash resolution, semantic export obfuscation, Authenticode fraud with fabricated intermediate CA + DigiCert cross-sign, version-info masquerade, encrypted
.datapayload, custom stream-cipher, self-loading PE mapper. - Diverges in masquerade identity (this sample = "Hane Group" / "redundant alarm"; 0c9e772d = "Emard LLC" / "JBOD monitor"; fa16b64a = "Erdman Group" / "1080p protocol") and certificate alt-name pattern.
- Confidence: high that all three represent the same loader/dropper family rotating synthetic corporate identities per campaign.