1051b5a48a4db66f11b8a28762bc7fae03de6b0a425dbfea26f89b0d99506959unclassified-dotnet-tripledes-resource-loader: 1051b5a4 — TripleDES + Base64 resource decryptor, "sc copy" masquerade
Executive Summary
A second confirmed sibling of the unclassified-dotnet-tripledes-resource-loader .NET Framework crypter/loader family. Decrypts an embedded .resources payload via TripleDESCryptoServiceProvider + Base64, then reflectively loads the inner assembly. Masquerades as "sc copy" (service-controller copy) with a 2012 copyright stamp. Same build artefacts as sibling 5e1922a7 (linker 8.0, 2024 timestamp, no commercial obfuscator, no P/Invoke), but with completely different randomized CIL identifiers and an additional capa discovery hit (get session user name → T1033).
What It Is
| Attribute | Value |
|---|---|
| SHA-256 | 1051b5a48a4db66f11b8a28762bc7fae03de6b0a425dbfea26f89b0d99506959 |
| File name | sc_copy.exe ^[triage.json] |
| Type | PE32 executable (GUI) Intel 80386 Mono/.Net assembly, 3 sections ^[file.txt] |
| Size | 1,633,280 bytes (1.6 MB) ^[exiftool.json] |
| Timestamp | 2024-09-04 09:36:24 UTC ^[pefile.txt] |
| Linker | 8.0 (Visual Studio 2005 / .NET 2.0 era linker) ^[pefile.txt] |
| CLR | .NET Framework 4.0 (metadata version v4.0.30319) ^[rabin2-info.txt] |
| Signed | No ^[pefile.txt] |
| Overlay | None (file ends at last section boundary) ^[pefile.txt] |
| IAT | Single import: mscoree.dll._CorExeMain ^[pefile.txt] |
VS_VERSIONINFO brands the binary as sc copy / sc copy.exe, Copyright © 2012. ^[exiftool.json] The name mimics the legitimate Windows sc.exe (Service Controller) utility, adding a social-engineering veneer of system administration legitimacy.
How It Works
Same staging chain as sibling 5e1922a7 — see unclassified-dotnet-tripledes-resource-loader for the family-wide pattern. Per-sample deltas follow:
Randomized CIL Identifiers (family anti-clustering)
| Element | This sample (1051b5a4) |
Sibling (5e1922a7) |
|---|---|---|
| Root namespace | Axdne |
Nmvffwquw |
| Main class | Cptnzhewmk |
Cxgajcbno |
| Decryptor class | Xnapyrru |
Diqzw |
| Resource accessor class | Qduewrj |
Zyscaotxd |
| Resource getter | get_Sfzmuyv |
get_Cmoqoxce |
| Entry method | Fdiwrh |
Mpiqbkpvxcv |
| Orchestrator | Jdqvgogfqvj |
Uvngzbfbbiu |
^[r2:symbol list] ^[/intel/analyses/5e1922a744bc4df2ef384022a4554908baab68c8ee6c14305130c1d4fef79a3f.html]
Payload Staging Chain
- Resource Retrieval —
Axdne.Properties.Qduewrj.get_Sfzmuyv()wrapsResourceManager.GetObject()to pull the encrypted.resourcesblob. ^[r2:method.Axdne.Properties.Qduewrj.get_Sfzmuyv] - Base64 Decode —
Convert.FromBase64String()on the resource string. ^[strings.txt:2830] - TripleDES Decrypt —
TripleDESCryptoServiceProvider.CreateDecryptor()invoked against the decoded bytes inside aCryptoStream. ^[strings.txt:2853] ^[strings.txt:2857] - Reflective Load — Decrypted bytes passed to
Assembly.Load(byte[])(inferred fromInvokeMemberreference and capa hits). ^[strings.txt:2830] ^[capa.txt]
The hardcoded key/IV pair is not recoverable statically from strings or metadata in this sample — the #US heap is compressed and the Base64 material does not surface in plain strings output. Dynamic detonation or dnSpy/ILSpy analysis would be required to extract the actual crypto material. This is a step forward in opsec from sibling 5e1922a7, whose key/IV were plaintext in the #US heap.
CIL Metadata Structure
- 10 methods, 4 type definitions, 2 assembly references (mscorlib only). ^[r2:function list]
- No ConfuserEx (
#=q…==absent), no SmartAssembly, no Xenocode, no P/Invoke surface. ^[strings.txt]
Decompiled Behavior
radare2 CIL analysis (Ghidra not run; pyghidra MCP unavailable):
entry0at0x004020b4is the standard_CorExeMainstub. ^[r2:entry0]method.Axdne.Cptnzhewmk.Fdiwrhinitializes the runtime context. ^[r2:method.Axdne.Cptnzhewmk.Fdiwrh]method.Axdne.Cptnzhewmk.Jdqvgogfqvjorchestrates the decrypt-and-invoke chain. ^[r2:method.Axdne.Cptnzhewmk.Jdqvgogfqvj]method.Axdne.Xnapyrru.Decryptimplements the TripleDES + Base64 pipeline. ^[r2:method.Axdne.Xnapyrru.Decrypt]
Control flow is linear: no environment checks, no obfuscated dispatch, no anti-debug. The outer layer is a thin crypter wrapper.
C2 Infrastructure
No C2 indicators recovered statically. No URLs, IPs, domains, mutex names, named pipes, or registry keys observed in the outer layer. The inner payload is encrypted and not recoverable without detonation. ^[strings.txt] ^[dynamic-analysis.md]
Interesting Tidbits
- Key/IV opsec improvement — Unlike sibling
5e1922a7, the hardcoded TripleDES key and IV are not visible instringsor #US heap dumps. This suggests the crypter builder may have been updated, or the strings are stored in a different encoding/compression. ^[strings.txt] ^[floss.txt] sc copymasquerade — The filename and VS_VERSIONINFO impersonate the Windows Service Controller (sc.exe), a common administrative tool. This is slightly more targeted than sibling5e1922a7's generic "new request" masquerade. ^[exiftool.json]- Linker anachronism persists — Linker version 8.0 (VS 2005) with a 2024 compile timestamp, identical to sibling
5e1922a7. Strong indicator of a reused crypter stub or ILASM rebuild pipeline. ^[pefile.txt] - Capa discovery hit —
get session user name/ T1033 is present in this sample but was not reported in5e1922a7. This may reflect a different inner payload, or capa detectingEnvironment.UserName/WindowsIdentityreferences in the CIL metadata that were absent in the first sibling. ^[capa.txt] ^[strings.txt:2804] - floss failure —
floss.txtcontains only an argument-parsing error; no decoded strings recovered, as expected for a pure .NET binary where strings live in CIL metadata. ^[floss.txt]
How To Mess With It (Homelab Replication)
See the family-wide replication notes on the unclassified-dotnet-tripledes-resource-loader entity page. The build recipe is identical; substitute the randomized namespace/class names and embed your own payload as a .resources string encrypted with TripleDES-CBC + Base64.
Deployable Signatures
YARA Rule
rule dotnet_tripledes_resource_loader_family {
meta:
description = ".NET crypter/loader family using TripleDESCryptoServiceProvider + Base64 resource decryption"
author = "PacketPursuit"
date = "2026-07-17"
sha256_1 = "5e1922a744bc4df2ef384022a4554908baab68c8ee6c14305130c1d4fef79a3f"
sha256_2 = "1051b5a48a4db66f11b8a28762bc7fae03de6b0a425dbfea26f89b0d99506959"
strings:
$tripledes = "TripleDESCryptoServiceProvider" wide ascii
$create_dec = "CreateDecryptor" wide ascii
$fromb64 = "FromBase64String" wide ascii
$crypto_stream = "CryptoStream" wide ascii
$resource_reader = "System.Resources.ResourceReader" ascii
$runtime_set = "System.Resources.RuntimeResourceSet" ascii
condition:
uint16(0) == 0x5a4d and
($tripledes and $create_dec and $fromb64) and
($crypto_stream or $resource_reader or $runtime_set) and
filesize < 2MB
}
Behavioral Fingerprint Statement
This binary is a .NET Framework PE32 with a minimal IAT (only mscoree.dll._CorExeMain), a VS_VERSIONINFO masquerading as a benign system utility ("sc copy", "new request", etc.), and an unusually large .text section (~1.6 MB) with near-maximum entropy. At runtime, it retrieves an embedded resource via ResourceManager.GetObject, Base64-decodes it, decrypts it with TripleDESCryptoServiceProvider.CreateDecryptor, and loads the resulting assembly reflectively via Assembly.Load(byte[]). No network APIs and no persistence mechanisms are present in the outer layer. The CIL namespace and class names are randomized 8–12 character gibberish strings that change per sample. Detection should focus on the TripleDES + Base64 + ResourceManager chain combined with the single-import IAT and oversized .text section.
IOC List
| Type | Value | Notes |
|---|---|---|
| SHA-256 | 1051b5a48a4db66f11b8a28762bc7fae03de6b0a425dbfea26f89b0d99506959 |
Outer loader |
| MD5 | 13db78ce484eca4c4de0c0d9588e73d3 |
Outer loader |
| Filename | sc_copy.exe |
Distribution name |
| Namespace | Axdne |
Outer assembly namespace |
| Decryptor class | Xnapyrru |
Contains Decrypt() |
| Resource class | Qduewrj |
Contains get_Sfzmuyv() |
| Resource name | Sfzmuyv (getter) / inferred Axdne.Properties.Resources.resources |
Encrypted payload resource |
Detection Signatures (capa → ATT&CK)
| capa capability | ATT&CK Technique |
|---|---|
| decode data using Base64 in .NET | T1140 Deobfuscate/Decode Files or Information |
| load .NET assembly | T1620 Reflective Code Loading |
| invoke .NET assembly method | T1620 Reflective Code Loading |
| access .NET resource | T1140 Deobfuscate/Decode Files or Information (indirect) |
| get session user name | T1033 System Owner/User Discovery |
| compiled to the .NET platform | — |
References
- SHA-256:
1051b5a48a4db66f11b8a28762bc7fae03de6b0a425dbfea26f89b0d99506959 - Source: MalwareBazaar / OpenCTI ingestion
- Related family: unclassified-dotnet-tripledes-resource-loader — cluster entity page with first sibling (
5e1922a7) and full build/replication notes
Provenance
file.txt— file(1) v5.45exiftool.json— ExifTool 12.76pefile.txt— pefile (Python)strings.txt— strings (GNU binutils)capa.txt— Mandiant capa v8.0.1 (static)rabin2-info.txt— radare2 5.9.8dynamic-analysis.md— CAPE sandbox (skipped — no Windows guest)- CIL metadata parsed via dnfile (Python)