typereportfamilyunclassified-dotnet-bitmap-stego-loaderconfidencelowcreated2026-06-05updated2026-06-05
SHA-256: 4bf14434ef61c6da79d3e5e4ea7831a4e5f0a2769cccdb41ddcc7ca0920e640a

Deep Analysis: 4bf14434ef61c6da79d3e5e4ea7831a4e5f0a2769cccdb41ddcc7ca0920e640a

1. Build / RE

Toolchain

  • Format: PE32 executable (GUI) Intel 80386 Mono/.NET assembly, 3 sections ^[file.txt]
  • Compiler: CIL / .NET Framework 4.0.30319 ^[strings.txt:3530]
  • Linker timestamp: Thu Apr 30 13:14:21 2020 UTC ^[pefile.txt:34] ^[rabin2-info.txt:11]
  • Subsystem: Windows GUI ^[exiftool.json:26]
  • Import table: Minimal — only mscoree.dll!_CorExeMain ^[pefile.txt:254]

Packing / Obfuscation

  • Heavy name mangling: All types, methods, fields, and properties renamed to random alphanumeric strings (e.g., 4LapsdJ3f2nRyw.6DpdEwf9.qLr02nNabGm5ck, yn7L2a.Xme8qY0g.zt7N0pSf). Pattern does not match ConfuserEx base64 (#=q…==) but achieves equivalent entropy. ^[r2:list_exports] ^[strings.txt:3532–5082]
  • Control-flow flattening: Decompilation produces large switch-dispatched state machines with exception-based branching, consistent with .NET obfuscator output. ^[r2:decompile entry0]
  • String encryption: floss recovered no plaintext API names or C2 strings; only mscorlib and System.Drawing namespaces survive. ^[floss.txt]
  • Anti-analysis: capa flags anti-VM strings targeting Xen and system-check virtualization/sandbox evasion. ^[capa.txt:15–17]
  • No native packer / no UPX: PE remains a valid .NET assembly. .text section entropy not anomalous for managed code.

Embedded Resources

  • 20+ Bitmap resources: binwalk detects repeated PC bitmap, Windows 3.x format, 76 x 76 x 24 entries between offsets 0x76940 and 0xD7E4A. ^[binwalk.txt:5–24]
  • System.Drawing references: Strings reveal System.Drawing.Bitmap and System.Drawing, Version=4.0.0.0 repeated for each resource slot, indicating bitmap objects are materialized at runtime. ^[strings.txt:3070–3506]
  • ResourceReader manifest: System.Resources.ResourceReader and RuntimeResourceSet strings confirm manifest-resource stream extraction. ^[strings.txt:3067]
  • Inference: The repeated 76×76×24 BMP structures are likely LSB-steganography carriers or encrypted payload slices, not genuine image assets. A typical .NET malware pattern.

Version-Info Masquerade

  • OriginalFileName: dgnjtnhgjf.exe (nonsense, likely auto-generated). ^[exiftool.json:42]
  • CompanyName / ProductName / FileDescription: Obfuscated gibberish (J=:FEF32GGE5HDBCEG, 94B;@F:?EE76G8A). Not a stolen legitimate identity — just randomized padding to populate the VS_VERSIONINFO block. ^[exiftool.json:36–38]
  • FileVersion: 21.19.1.278 — fabricated, no correlation to any known product. ^[exiftool.json:27]
  • InternalName: dgnjtnhgjf.exe ^[exiftool.json:41]

Notable Functions

  • entry0 (0x0040a474): Flattened dispatcher — pushes a state variable, branches via switch table, loops indefinitely until a return condition is met. No readable high-level logic in raw decompilation. ^[r2:decompile entry0]
  • 4LapsdJ3f2nRyw.6DpdEwf9: Largest class (~150+ methods) — likely the main orchestrator or decryption engine. Contains .ctor, file-write helpers, and thread-suspend wrappers. ^[r2:list_exports]

2. Deploy / ATT&CK

Note: CAPE detonation was skipped — no Windows guest exists in the lab. All TTPs below are inferred from static evidence (imports, strings, capa, binwalk). No runtime network IOCs, registry writes, or process trees are available.

TTPs Mapped

Tactic Technique Evidence
Defense Evasion T1620 Reflective Code Loading Invoke, Assembly.Load, GetMethod strings + capa hit ^[capa.txt:15] ^[strings.txt:4233]
Defense Evasion T1497.001 Virtualization Evasion Anti-VM Xen strings flagged by capa ^[capa.txt:16–17]
Discovery T1083 File and Directory Discovery check file extension, check if file exists capa rules ^[capa.txt:18]
Execution T1059.001 / T1059.003 Suspected .NET in-memory assembly execution after resource decryption (static inference; no process tree observed)
Collection T1025 Data from Removable Media 20× bitmap resource slots suggest bulk payload or config extraction (static inference)
Defense Evasion T1036.002 Masquerading Version-info block with fabricated company/product strings ^[exiftool.json]

Persistence

  • No registry or scheduled-task strings observed statically. Persistence mechanism, if any, likely resides inside the decrypted bitmap payload and is not visible pre-runtime.

C2 / Comms

  • No hardcoded IPs, domains, URLs, or port strings found in strings.txt or floss.txt. C2 configuration is almost certainly embedded in the encrypted bitmap resources and built at runtime.

Lateral Movement / Exfil

  • No evidence from static analysis. Would require dynamic detonation to confirm.

Attribution

  • Low confidence. The build traits (.NET 4.0, ConfuserEx-class obfuscation, bitmap-resource payload hiding) are commodity and overlap with multiple families (AsyncRAT, NanoCore, various stealers). The nonsensical version-info masquerade and PO# SYF20069.exe filename suggest an adversary who does not invest in plausible branding — possibly a low-tier crimeware bundle.
  • No code-reuse signatures or linguistic markers. Not linked to any named family in the existing wiki corpus.

3. Summary

This sample is a .NET Framework PE32 loader protected by an unnamed (or custom-fork) .NET obfuscator that applies extreme name mangling, control-flow flattening, and string encryption. Its distinguishing feature is the embedding of ~20 small 76×76 bitmap resources that likely carry an encrypted secondary payload or C2 configuration via LSB steganography or stream-based decryption. Anti-VM and reflective-loading capabilities are confirmed statically. Without CAPE detonation, the final payload family and network footprint remain unknown. Treat as a previously unseen .NET steganographic loader variant.


Provenance

Source File
Static file-type file.txt
PE headers pefile.txt
radare2 analysis rabin2-info.txt
FireEye floss floss.txt
Mandiant capa capa.txt
binwalk embedded scan binwalk.txt
ExifTool metadata exiftool.json
radare2 exports & functions MCP list_exports, list_functions, decompile_function

Confidence Assessment

  • Family attribution: LOW — unique build signature, no known-family YARA matches beyond generic PE_File_Generic. ^[yara.txt]
  • Steganography inference: MEDIUM — bitmap count, size uniformity, and System.Drawing runtime references are strong indicators, but no decoded payload recovered.
  • Dynamic behaviour: NOT AVAILABLE — CAPE skipped, no runtime ground truth.