b760c6f2383e05037e5a71b4a39e2e333504d37f81d15116a2bed45eac537febunclassified-dotnet: b760c6f2 — .NET WinForms file manager masquerading as purchase-order lure
Executive Summary
A .NET Framework 4.0 WinForms dual-pane file manager (FManagerApp) compiled Sep 2024 and distributed as PO-000001488.exe (purchase-order social-engineering lure). No malicious payload, no network APIs, no persistence, no anti-analysis. The threat is purely the masquerade — a benign utility wrapped in a business-document filename to lower suspicion. Static-only analysis (CAPE skipped; no Windows guest).
What It Is
| Field | Value |
|---|---|
| SHA-256 | b760c6f2383e05037e5a71b4a39e2e333504d37f81d15116a2bed45eac537feb |
| Filename (distribution) | PO-000001488.exe |
| Internal name | NvQw.exe ^[exiftool.json:40] |
| File type | PE32 executable (GUI) Intel 80386 Mono/.NET assembly, 3 sections ^[file.txt:1] |
| Size | 724,992 bytes (708 KB) |
| Build timestamp | Mon Sep 23 05:35:50 2024 UTC (PE header 0x66F0FE36) ^[pefile.txt:34] |
| Linker | IL linker v48.0 (.NET Native / ILC compile path) ^[pefile.txt:45-46] |
| PDB | NvQw.pdb, GUID 2DCE29D8-6CF2-4C47-B65F-2F92BCE96DA3 ^[pefile.txt:345-353] |
| Signed | No ^[rabin2-info.txt:29] |
| VS_VERSIONINFO | Presentation Foundation Terminal / Microsoft Corporation. — fabricated masquerade ^[exiftool.json:37-44] |
The binary is a .NET Framework PE32 compiled with the IL linker (.NET Native toolchain), not JIT. It has only one import (mscoree.dll._CorExeMain) ^[pefile.txt:255] and a minimal resource directory containing just RT_VERSION and RT_MANIFEST ^[pefile.txt:266-328].
How It Works
The application is a standard WinForms dual-pane file manager with the following observable surface:
- Dual-pane tree/list views (
LeftListView,RightListView,LeftDrivesPanel,RightDrivesPanel) withFileSystemWatcherobservers for live refresh ^[strings.txt:296-299] - File operations: Copy, Move, Delete, Rename — all via standard
System.IOAPIs (FileInfo,DirectoryInfo,FileStream,Path) ^[strings.txt:270-279] - Assembly introspection:
ShowAssemblyFormloads a selected assembly and reflects over itsTypes,MethodInfos,FieldInfos,ConstructorInfos, andPropertyInfos viaSystem.Reflection^[strings.txt:336-344] - Font/settings dialog:
FontSettingsFormwithColorDialogandFontDialog^[strings.txt:160-161] - Progress reporting:
IProgress<T>/CancellationTokenSourceasync file-copy with per-file and overall progress bars ^[strings.txt:55-56,74]
No networking namespace (System.Net absent), no cryptography namespace (System.Security absent), no process injection, no registry writes, no persistence. The ShowAssemblyForm reflective loading is a benign developer feature (assembly inspection), not a T1620 payload — capa flags it because it hits the invoke .NET assembly method / load .NET assembly rules generically ^[capa.txt:45-46].
Decompiled Behavior
Ghidra / dnSpy not required — the CIL metadata is unobfuscated and the strings surface tells the full story. Key namespaces recovered from #Strings and resource names:
FileManager— main namespace;Form1is the primary dual-pane windowFileManager.Forms— child dialogs (RenameForm,DeleteForm,MoveForm,CopyForm,FontSettingsForm,ShowAssemblyForm)FManagerApp.Properties—ResourcesandSettingsdesignersFManagerApp.Properties.Resources.resources— embedded icons and image streams
The ShowAssemblyForm is notable only because it calls Assembly.LoadFrom, GetTypes, GetMethods, GetFields, and InvokeMember ^[strings.txt:214,236,270,279,285] — this is what triggers capa's T1620 reflective-code-loading flag, but in context it is a benign assembly-browser feature analogous to ILSpy or Reflector.
C2 Infrastructure
None. No hardcoded domains, IPs, URLs, mutexes, named pipes, or registry keys. No System.Net references. ^[strings.txt — absence confirmed by grep for System.Net, HttpWebRequest, Socket, TcpClient, WebClient]
Interesting Tidbits
- Internal / original filename mismatch: Internal name
NvQw.exeand original filenameNvQw.exebear no relation to the distribution namePO-000001488.exeor the VS_VERSIONINFO product namePresentation Foundation Terminal^[exiftool.json:40,43]. This is classic anti-triage noise — three unrelated identities for the same binary. - VS_VERSIONINFO masquerade: Claims
Microsoft Corporation./Presentation Foundation Terminal/Copyright © Microsoft Corporation. All rights reserved.^[exiftool.json:37-42]. The binary is unsigned, so the masquerade is purely social-engineering — no Authenticode validation to backstop it. - PDB path is local:
NvQw.pdbwith no directory prefix suggests a Visual Studio default build on the author's machine, not a CI pipeline. - High
.textentropy (7.84): Standard for .NET Native / ILC compiled assemblies where the IL has been ahead-of-time compiled to native code and embedded in the PE. Not packing. ^[pefile.txt:92] - No obfuscation: No SmartAssembly, ConfuserEx, Xenocode, or Dotfuscator signatures. Class and method names are human-readable (
FileManager,CopyForm_Load,ConfigurateObservers). - PNG resource embedded: Binwalk finds a 524×524 PNG at offset
0xB748^[binwalk.txt:6] — likely the application icon or splash image.
How To Mess With It (Homelab Replication)
This is a benign file manager; replicating it teaches WinForms dual-pane UI design and System.Reflection assembly browsing.
- Toolchain: Visual Studio 2022, .NET Framework 4.8, C# WinForms App template
- Key controls:
TreeView(folder tree),ListView(file list withName,Type,Size,Datecolumns),SplitContainer,ToolStrip,FileSystemWatcher - Reflection feature: Load an assembly via
Assembly.LoadFrom(path), iterateassembly.GetTypes(), display methods/fields/properties in aPropertyGridor custom list - Verification: Build, run
capa <output.exe>— expectT1083(file discovery) andT1620(assembly loading) hits. Confirm they are false positives by reviewing the actual call sites.
Deployable Signatures
YARA rule
rule Unclassified_DotNet_FileManager_Masquerade
{
meta:
description = "Detects .NET Native file manager with NvQw.exe internal name and PO lure masquerade"
author = "pp-hermes"
date = "2026-06-30"
hash = "b760c6f2383e05037e5a71b4a39e2e333504d37f81d15116a2bed45eac537feb"
strings:
$s1 = "NvQw.exe" ascii wide
$s2 = "Presentation Foundation Terminal" ascii wide
$s3 = "FileManager.Forms.ShowAssemblyForm" ascii wide
$s4 = "FManagerApp.Properties.Resources" ascii wide
$s5 = "ConfigurateObservers" ascii wide
condition:
uint16(0) == 0x5A4D and
pe.is_dotnet and
3 of ($s*)
}
Behavioral fingerprint
A .NET Framework PE32 with IL linker v48.0, internal name NvQw.exe, VS_VERSIONINFO claiming Presentation Foundation Terminal by Microsoft Corporation., and no System.Net or System.Security imports. Opens as a standard GUI file manager with dual-pane layout, FileSystemWatcher-driven live refresh, and an assembly-reflection browser feature. No network, no crypto, no persistence.
IOC list
| Indicator | Value | Type |
|---|---|---|
| SHA-256 | b760c6f2383e05037e5a71b4a39e2e333504d37f81d15116a2bed45eac537feb |
Hash |
| SHA-1 | a4a778f6a18c8d70d0276d6623f60f647c9a54e2 |
Hash |
| MD5 | 370040a04268d0ceb2631c15a6647610 |
Hash |
| Internal name | NvQw.exe |
Metadata |
| Original filename | NvQw.exe |
Metadata |
| Product name | Presentation Foundation Terminal |
Metadata |
| Company name | Microsoft Corporation. |
Metadata |
| PDB GUID | 2DCE29D8-6CF2-4C47-B65F-2F92BCE96DA3 |
Debug |
| Compilation | Mon Sep 23 05:35:50 2024 UTC |
Timestamp |
Detection Signatures
| Capa Rule | ATT&CK | Verdict |
|---|---|---|
reference analysis tools strings |
— | False positive — DebuggerBrowsableState / DebuggableAttribute in Debug build ^[capa.txt:33] |
invoke .NET assembly method / load .NET assembly |
T1620 | False positive — benign Assembly.LoadFrom + InvokeMember in assembly-browser form ^[capa.txt:15,45-46] |
enumerate files in .NET |
T1083 | True positive — legitimate file-manager functionality ^[capa.txt:40] |
enumerate drives |
T1082 | True positive — drive-list population in UI ^[capa.txt:39] |
create directory / delete file / move file |
— | True positive — standard file operations ^[capa.txt:36-38] |
References
- Artifact ID:
e4c1539b-6aa6-402b-9938-1a4756ade21b - MalwareBazaar:
PO-000001488.exe(taggedexe) - Family entity: unclassified-dotnet
- Concept: social-engineering-filename-lure
- Concept: version-info-masquerade
Provenance
Analysis based on static triage artifacts generated by the pp-hermes pipeline: file (file-type), exiftool (metadata), pefile (PE structure), strings (ASCII/Unicode), capa (Mandiant capability detection), binwalk (embedded file carving), rabin2 -I (radare2 binary info). No dynamic execution available (CAPE skipped: no Windows guest). FLOSS not run successfully on .NET assembly. No Ghidra decompilation performed — CIL metadata is unobfuscated and sufficient for attribution.