48c8e8a2f28318ae10000d4997784cd12703e182bd50db5da32b930034a0bc4cnanocore: 48c8e8a2 — VB.NET ConfuserEx sibling, NanoCore v1.2.2.0 RAT
Executive Summary
A 203 KB PE32 .NET assembly (jp.exe) that is a near-identical sibling of the NanoCore RAT client fe81691f. Same compilation timestamp (Feb 22 2015), same ConfuserEx obfuscation layer, same builder version (1.2.2.0), and same modular plugin architecture. The only static deltas are the assembly GUID, the encrypted resource payload, and the original filename. Static-only — no CAPE detonation. ^[file.txt] ^[metadata.json]
What It Is
| Property | Value | Provenance |
|---|---|---|
| SHA-256 | 48c8e8a2f28318ae10000d4997784cd12703e182bd50db5da32b930034a0bc4c |
metadata.json |
| File name | jp.exe |
metadata.json |
| Size | 207,872 bytes (203 KB) | metadata.json |
| Type | PE32 executable (GUI) Intel 80386 Mono/.Net assembly, 3 sections | file.txt |
| Timestamp | Sun Feb 22 00:49:37 2015 UTC | pefile.txt |
| Linker | .NET Framework v2.0.50727 (CLR 2.0) | strings.txt:43 |
| Language | Visual Basic .NET (My.Application framework) | strings.txt:58, strings.txt:70 |
| RAT version | NanoCore Client 1.2.2.0 | strings.txt:1626 |
| Obfuscator | ConfuserEx (massive #=q… mangling) |
strings.txt:278+ |
| Signed | No (stripped, unsigned) | pefile.txt |
| Assembly GUID | 6d372552-3ebe-40d9-9ac6-db2887e57715 |
strings.txt:1624 |
This sample is a sibling build from the same NanoCore builder batch as fe81691f. The shared fingerprint (timestamp, size, section layout, version string, and mangled-name corpus) indicates both were emitted by the same builder run or by the same operator re-running the builder with different settings. For the full family analysis see nanocore. ^[/intel/analyses/fe81691f199873bd5470c7beff9a52fdd6c1e03b80484e40b15ce040cde851b5.html]
How It Works
See the fe81691f deep-dive for the complete behavior narrative. The delta for this sample is minimal:
- Different GUID:
6d372552-3ebe-40d9-9ac6-db2887e57715vsb4de0bbe-4fc1-4999-bc15-86136959e331in the sibling. This is the auto-generatedMy.ApplicationGUID produced by Visual Studio at compile time, confirming a separate build. ^[strings.txt:1624] - Different encrypted payload:
.rsrcsection hashes differ (SHA-256:f62bd278...vs680ff063...), meaning the ConfuserEx-encrypted resource package (likely the builder-generatedClientSettings+ plugin ZIP) is unique to this build. ^[pefile.txt:132-136] - Filename:
jp.exevsokfun.exe— suggests the builder allows custom output names or the operator renamed post-build.
All other behaviors — VB.NET My.Application bootstrap, hidden ClientLoaderForm, raw TCP C2 with host-cache updates, registry Run persistence, pipe-based plugin IPC, and MD5 hashing — are identical to the sibling and documented at nanocore.
Decompiled Behavior
Radare2 analysis finds the same entry-point signature: ClientLoaderForm.Main at 0x40c480, with 858 methods and a single mscoree.dll!_CorExeMain import. ^[rabin2-info.txt] ^[r2:entry0] The CIL engine reports the same ConfuserEx control-flow flattening and delegate trampolines that block clean decompilation. No new functions of interest were surfaced beyond those already catalogued in fe81691f.
C2 Infrastructure
- Static C2: None extracted. The encrypted
.rsrcpayload differs from the sibling, so any embedded host list is unique to this build. ^[pefile.txt:132-136] - Protocol, persistence, and plugin IPC: Identical to
fe81691f. See nanocore for the full mapping.
Interesting Tidbits
- Builder batch confirmation: Two samples with the same compile-to-the-second timestamp, same size, and same version string strongly suggest they were produced by the same builder executable in a single session or by the same operator using the same builder package. ^[pefile.txt]
- Filename shift:
jp.exeis shorter and more generic thanokfun.exe. Possible masquerade as a Japanese-locale executable or simply a random short name chosen by the operator. - No new YARA hits: Still only
PE_File_Generic; the ConfuserEx layer defeats open-source NanoCore YARA rules. ^[yara.txt]
How To Mess With It (Homelab Replication)
See the replication notes in fe81691f. To reproduce this specific sibling:
- Use the same NanoCore builder (v1.2.2.0) to generate two clients with different
ClientSettingshost entries. - Pass both through ConfuserEx v1.6.0 with identical settings (name obfuscation, control flow, resource encryption).
- Compare SHA-256s — they will differ only in
.rsrcand the auto-generatedMy.ApplicationGUID.
Deployable Signatures
YARA — NanoCore ConfuserEx Sibling Detector
rule nanocore_confuserex_sibling_batch
{
meta:
description = "NanoCore RAT client ConfuserEx variant — sibling batch detector"
author = "triage-auto"
date = "2026-06-11"
sha256 = "48c8e8a2f28318ae10000d4997784cd12703e182bd50db5da32b930034a0bc4c"
strings:
$nano1 = "NanoCore Client" ascii wide
$nano2 = "NanoCore.ClientPlugin" ascii wide
$nano3 = "IClientApp" ascii wide
$nano4 = "ClientLoaderForm" ascii wide
$nano5 = "SendToServer" ascii wide
$nano6 = "AddHostEntry" ascii wide
$nano7 = "RebuildHostCache" ascii wide
$conf1 = /#=q[A-Za-z0-9_$]{20,}==/
$vb1 = "MyTemplate" ascii wide
$ver = "1.2.2.0" ascii wide
condition:
uint16(0) == 0x5A4D
and pe.number_of_sections == 3
and all of ($nano*)
and any of ($conf*)
and $vb1
and $ver
and filesize < 500KB
}
IOC List
| Category | Indicator | Context |
|---|---|---|
| Hash | 48c8e8a2f28318ae10000d4997784cd12703e182bd50db5da32b930034a0bc4c |
SHA-256 |
| Hash | 027b5054e74dba13c87006d3dfc13219 |
MD5 |
| Hash | 84cb60130c6b0b198df028ca135dea27a75cddb8 |
SHA-1 |
| Filename | jp.exe |
Original name |
| Registry | HKCU\Software\Microsoft\Windows\CurrentVersion\Run |
Persistence inferred |
| File | %TEMP%\*.tmp, %APPDATA%\* |
Staging inferred |
| Network | Raw TCP outbound (no static IP) | C2 host runtime-resolved |
Behavioral Fingerprint
Identical to fe81691f: .NET PE32 GUI assembly with single mscoree.dll import, hidden VB.NET WinForms loader, raw TCP socket C2 with keepalive framing, registry Run persistence, file-system self-copying, and pipe-based plugin IPC. ConfuserEx obfuscation (1,000+ mangled #=q… identifiers) blocks naive string extraction. The only deltas from the sibling build are the auto-generated GUID and the encrypted resource payload.
Detection Signatures (capa → ATT&CK)
capa static analysis mapped capabilities to ATT&CK: ^[capa.txt]
| capa Capability | ATT&CK Technique |
|---|---|
| modify registry | T1112 |
| reflective code loading | T1620 |
| account discovery | T1087 |
| file and directory discovery | T1083 |
| query registry | T1012 |
| system information discovery | T1082 |
| system owner/user discovery | T1033 |
| C2 communication (send/receive) | T1071 |
| DNS resolution | T1071.004 |
| create TCP socket | T1071 |
| MD5 hashing | — |
| create process | T1106 |
| create mutex | — |
| suspend thread | T1055 |
References
- SHA-256:
48c8e8a2f28318ae10000d4997784cd12703e182bd50db5da32b930034a0bc4c - Sibling analysis:
fe81691f199873bd5470c7beff9a52fdd6c1e03b80484e40b15ce040cde851b5^[raw/analyses/fe81691f.../report.md] - Wiki entity: nanocore
- Wiki technique: confuserex-obfuscation
- Wiki procedure: registry-run-persistence
- OpenCTI labels:
nanocore,rat,malware-bazaar^[metadata.json]
Provenance
- Report built from static artefacts generated by the triage pipeline on 2026-05-26.
- Tools:
file,strings,floss(no .NET support — 0 decoded strings),capav5 (static, dotnet),binwalk,radare2(CIL analysis, 858 functions),pefile,dnfile(assembly name/version extraction),diff(sibling comparison). - No CAPE dynamic analysis: Windows guest unavailable. All runtime/C2 claims are inferred from static artefacts and known NanoCore builder behavior.