unclassified-dotnet-native-aot-loader
Umbrella label for malware built with .NET Native AOT (PublishAot) that embeds a large encrypted payload inside a custom-named PE resource. The AOT compilation strips all CLR metadata, rendering the binary opaque to conventional .NET analysis tools while inflating file size to 4–10 MB with inlined BCL runtime.
Observed Samples
| SHA-256 Prefix | Size | Timestamp | Notes |
|---|---|---|---|
fbc07658... |
10 MB | — | ValleyRAT / SilverFox co-label, Update.dll masquerade, 52pojie build provenance. ^[raw/analyses/fbc07658.../report.md] |
ef48ae9e... |
5.5 MB | 2024-07-29 | PO147222D_f_d_p_..exe, SetVersionHasValue.dll masquerade, 3.2 MB encrypted ZZERIUIN7HDZATO9A1 resource. ^[raw/analyses/ef48ae9e.../report.md] |
Build Stack
- Compiler: .NET 8+ SDK with
PublishAot=true, RIDwin-x64. - Linker: MSVC 14.38–14.40 (Visual Studio 2022 v143).
- Runtime artefacts:
System.Private.CoreLib,Internal.Runtime.TypeLoader,RhGetGcTotalMemory,CanonType,UniversalCanonType,DotNetRuntimeDebugHeaderexport. - CLR metadata: Absent —
COM_DESCRIPTORvirtual address is 0x0.
Deploy / TTPs
- Anti-analysis: Native AOT defeats dnSpy/ILSpy/de4dot; no IL to disassemble. ^[raw/analyses/ef48ae9e.../report.md]
- Payload staging: Encrypted blob stored as custom
BINARYorRCDATAresource; decrypted at runtime by AOT-compiled stub. ^[raw/analyses/ef48ae9e.../report.md] - Network: Via natively compiled
System.Net.Http— no Winsock imports in IAT. ^[raw/analyses/ef48ae9e.../report.md] - Masquerade: Version-info fields populated with bland or nonsensical strings (e.g.,
SetVersionHasValue). ^[raw/analyses/ef48ae9e.../report.md]
Capabilities
dotnet-native-aot-compilation-evasioncustom-resource-encrypted-payloadruntime-http-client-no-iatversion-info-masqueradeself-contained-runtime-no-clr
Related Pages
- dotnet-native-aot-rat-compilation — technique deep-dive on Native AOT as anti-analysis
- version-info-masquerade — version-info fabrication pattern
- valleyrat — tentative OpenCTI co-label for one sibling
- silverfox — co-labeled cluster (different build stack)