ce07d963d3c52f34db80ac871c3d590a49b9c8c5355130a23ca7f18a9cd08a5ece07d963 — .NET x64 reflective loader masquerading as "Strong" utility
Build / RE
Language / Runtime: C# .NET Framework, 64-bit PE32+ (AMD64). PE compilation timestamp 2024-10-08 13:58:44 UTC ^[file.txt]. Version info claims Strong.exe / Strong / 1.0.0.0 / Copyright 2024 — likely a masquerade to look like a legitimate tool or game mod ^[file.txt:20-32]. No PDB path recovered; the sample was built without debug symbols.
Compiler: csc / Roslyn (evidenced by mscorlib binding and Microsoft.CodeAnalysis.EmbeddedAttribute patterns in metadata) ^[capa.txt].
Packing / Obfuscation: No native packer. The binary remains a valid .NET assembly with a 2-section PE layout (.text, .rsrc) ^[file.txt]. Heavy IL-level obfuscation is present: radare2 exports show mangled Unicode surrogate names (\u06a1\ufc35... etc.) and 20-char random strings, consistent with ConfuserEx or a similar .NET obfuscator ^[r2:exports]. capa flags compiled to the .NET platform and invoke .NET assembly method ^[capa.txt].
Anti-analysis: No VM checks, no anti-debug strings, and no TLS callbacks observed in static analysis. The primary defense is heavy name mangling and probable control-flow flattening (typical of the obfuscator family), not environmental gating. FreeConsole is absent from strings, suggesting the sample may keep a visible console or was compiled as a console app (capa reports accept command line arguments) ^[capa.txt].
Embedded resources: .NET resource stream present in .rsrc (0x3E00 bytes) but contents are not decrypted in the static artifact set. Given the AES + GZip + Base64 patterns observed in the string table, the payload is likely staged inside this resource and decrypted at runtime ^[floss.txt] (floss invocation errored; static strings alone are insufficient).
Notable imports / API usage: System.Security.Cryptography.AesManaged, CreateDecryptor, ICryptoTransform, GZipStream, Convert.FromBase64String, Assembly.Load, MethodInfo.Invoke, Marshal.GetDelegateForFunctionPointer, GetProcAddress, FreeConsole (not found in this sample, but other P/Invoke patterns present), Random ^[strings.txt]. The GetProcAddress + GetModuleHandle P/Invoke pair indicates runtime API resolution for native bridging.
Code quality: Relatively high for commodity malware — clean .NET metadata, valid assembly version, and a deliberate masquerade suggest a purchased or pre-built crypter/loader rather than a one-off manual build.
Deploy / ATT&CK
| Technique | ID | Evidence |
|---|---|---|
| Obfuscated Files or Information | T1027 | AES + GZip + Base64 layered payload encryption, plus heavy name mangling ^[strings.txt] ^[capa.txt] |
| Deobfuscate/Decode Files or Information | T1140 | CreateDecryptor, GZipStream, Convert.FromBase64String chain for resource unpacking (inferred) ^[strings.txt] |
| Reflective Code Loading | T1620 | Assembly.Load + MethodInfo.Invoke + Marshal.GetDelegateForFunctionPointer for native thunk generation (inferred) ^[capa.txt] |
| Command and Scripting Interpreter | T1059 | invoke .NET assembly method capability — may dispatch to PowerShell or cmd via reflection (inferred) ^[capa.txt] |
| Shared Modules | T1129 | GetProcAddress / GetModuleHandle runtime linking for native API bridging ^[capa.txt] |
| Process Injection (inferred) | T1055 | manipulate unmanaged memory in .NET + GetDelegateForFunctionPointer suggests native shellcode/DLL injection via P/Invoke ^[capa.txt] |
| Generate Pseudo-random Sequence | C0021.003 | Random class usage, likely for key/IV generation or jitter ^[capa.txt] |
C2 / Network: No hardcoded IPs, URLs, or domain strings found in static analysis. C2 configuration is likely inside the encrypted resource payload or delivered via a secondary stage (no network artifact to inspect). The UriSchemeHttp and CheckHostName strings suggest HTTP-capable C2, but no target endpoints are visible statically ^[strings.txt].
Persistence: None observed statically. No registry, scheduled task, or startup-folder strings present. Persistence would be handled by the decrypted payload, not this outer loader.
Attribution: None. The "Strong" branding and 2024 copyright are generic masquerade. No linguistic markers, no code overlap with known families, and no reused PDB paths. The build tooling (csc + obfuscator) is commodity.
Dynamic Analysis
Status: No CAPE detonation available. No Windows guest currently provisioned. All behavioral observations are static inference marked above. The outer loader decrypts a resource into a managed or unmanaged buffer and then invokes it; the actual C2, persistence, and payload behavior are opaque without runtime detonation.
Summary
A commodity .NET 64-bit reflective loader/crypter with a masquerade identity ("Strong" utility). Outer layer uses AES + GZip + Base64 to unpack a staged payload from the .rsrc section, then bridges into native code via P/Invoke and MethodInfo.Invoke. No environmental gating; relies on obfuscation and name mangling for evasion. Inner payload unknown due to lack of dynamic execution. Treat as a stage-1 dropper/loader until detonation confirms stage-2 behavior.