3c63a3c0670132e07fb90ca3c29ba35d898f6293bd40619a5611cb705e8b8212unclassified-nsis-dropper: 3c63a3c0 — Unsigned .com-masquerade variant with stride-6 Danish PowerShell cradle
Executive Summary: Ninth confirmed sibling of the NSIS v3 Unicode dropper cluster. Delivered as WORK_REPORT_FOR_YOUR_FILLING_AND_SUBMITTING_SCAN0012_PDF.com — a .com-extension masquerade rather than the usual .exe. Unsigned (no fabricated certificate, unlike prior siblings). Embeds six files in a LZMA:23 solid archive: two high-entropy encrypted payloads, two low-entropy null-padded encrypted PEs, a 55 KB stride-6 Danish character-skip PowerShell cradle (Rockendes.Pot), and a Danish word-salad text decoy. The decoded PowerShell sets up byte arrays, hex-decodes nested payloads, and reflectively executes via .($Foreface) $Twinborn. Static-only — no CAPE detonation (no Windows guest).
What It Is
| Field | Value |
|---|---|
| SHA-256 | 3c63a3c0670132e07fb90ca3c29ba35d898f6293bd40619a5611cb705e8b8212 |
| Size | 924,706 bytes (904 KiB) ^[file.txt] |
| Type | PE32 executable (GUI) Intel 80386, Nullsoft Installer self-extracting archive, 5 sections ^[file.txt] |
| Filename | WORK_REPORT_FOR_YOUR_FILLING_AND_SUBMITTING_SCAN0012_PDF.com ^[triage.json] |
| Linker | MSVC 6.0 (MajorLinkerVersion 0x6) ^[pefile.txt] |
| Compiled | Sun Dec 11 21:50:48 2016 UTC ^[rabin2-info.txt] |
| NSIS | v3 Unicode, LZMA:23 solid, Headers Size 14,838, Embedded Stub 391,680 ^[binwalk.txt] ^[7z listing] |
| Signed | No — Security directory empty; no Authenticode ^[pefile.txt] |
| VS_VERSIONINFO | Comments: shrugs stoppekurvens droges; InternalName: forventnings.exe; FileVersion 2.2.0.0 ^[exiftool.json] ^[pefile.txt] |
| Family | unclassified-nsis-dropper — ninth confirmed sibling |
How It Works
- Social engineering: The
.comextension is a masquerade — the file is a PE32 NSIS installer. The filename masquerades as a scanned PDF document. ^[triage.json] - NSIS extraction: On execution, the NSIS stub extracts six files to a temporary directory. ^[7z extraction]
- PowerShell cradle:
Rockendes.Pot(55,351 bytes) is a Danish-themed, character-skip-obfuscated PowerShell script. It defines decoder functionAktricerneswith stride 6, offset 5, dead-code variable assignments ($Spejlingernes='Frugivorous',$Svartypesesprent='Indkaldelsestidspunkts'), and reflectively executes the decoded payload via.($Foreface) $Twinborn. ^[Rockendes.Pot decode] - Nested payloads: The decoded PowerShell reveals
New-Object byte[]arrays, hex-decode functions (Verandahs111), and references to nested payload files (Flashbulb.Ind,Nordamerikaneren.hyl,lenene.cul,uddelegeringer.twe). Static extraction of the final PE is not possible without the decryption key. ^[Rockendes.Pot decode] - Decoy:
Rooing.txtcontains Danish word-salad (salvingernes maalesteder anekdotens rejicerer...) to pad the archive and confuse triage. ^[Rooing.txt]
Decompiled Behavior
The NSIS exehead entry point (r2 entry0 @ 0x0040344a) is a standard NSIS v3 bootstrap: ^[r2:entry0]
- Calls
SetErrorMode(0x8001)andGetVersion()for Windows compatibility. - Loads
UXTHEME,USERENV,SETUPAPI,APPHELP,PROPSYS,DWMAPI,CRYPTBASE,OLEACC,CLBCATQ,RichEd32,RichEd20viaLoadLibraryAloop atfcn.0040657c. - Initializes COM (
OleInitialize) and common controls (InitCommonControls). - Creates a dialog window and enters the NSIS script interpreter — no anti-debug or VM checks in the stub.
The import table is a standard NSIS v3 surface: KERNEL32.dll, USER32.dll, GDI32.dll, SHELL32.dll, ADVAPI32.dll, COMCTL32.dll, ole32.dll. ^[pefile.txt] ^[r2:imports]
C2 Infrastructure
No network indicators recovered statically. The PowerShell cradle decodes to byte-array setup and reflective execution, but the actual C2 URLs (if any) are likely inside the encrypted inner payloads (Flashbulb.Ind, Nordamerikaneren.hyl, lenene.cul, uddelegeringer.twe). Static decryption is not possible without the key.
Interesting Tidbits
- Unsigned deviation: Unlike siblings
4978e16a,f7f089f7,cf9a061d,b3fb616d,9c43b920,78c5e8ca,5212423b, and3a13583c— all of which carry fabricated self-signed X.509 certificates — this sample is completely unsigned. This may indicate a different build pipeline, a stripped-down variant, or a test build. ^[pefile.txt] .comextension masquerade: The first observed sibling to use.cominstead of.exe. On some Windows configurations withPATHEXTordering, a.comfile takes precedence over.exe, making this a subtle execution-hijack vector. ^[triage.json]- Shallow VS_VERSIONINFO: Only Comments and InternalName are populated with Danish word-salad; previous siblings had richer fabricated version blocks (ProductName, LegalCopyright, etc.). ^[exiftool.json]
- Six-file archive: The archive structure matches the cluster pattern (high-entropy encrypted blob + low-entropy null-padded PE + PowerShell cradle + word-salad text). ^[7z listing]
- Danish linguistic fingerprint: Variable names (
Frakendelsesperioden,Aktricernes,Spejlingernes) and the decoder function name are Danish, consistent with the cluster. The VS_VERSIONINFO Comments fieldshrugs stoppekurvens drogesis a mix of English and Danish nonsense. ^[Rockendes.Pot] ^[exiftool.json]
How To Mess With It (Homelab Replication)
Goal: Build a comparable NSIS SFX dropper with an embedded PowerShell cradle.
- Install NSIS v3 and create a
.nsiscript that includesSetCompressor /SOLID lzma. - Embed multiple files using
Filedirectives — mix real payloads with noise-padded decoys. - Add an
ExecorExecWaitcall that launches the embedded PowerShell cradle. - Compile with
makensisto produce a self-extracting installer. - Verify with
7z l <output.exe>— should showType = Nsis,Method = LZMA:23,SubType = NSIS-3 Unicode.
Toolchain: NSIS v3.01+ (Unicode), MSVC 6.0–14.0 linker, 7-Zip for verification.
Deployable Signatures
YARA Rule
rule NSIS_DanishDropper_SFX_3c63a3c0 {
meta:
description = "NSIS v3 Unicode SFX dropper with Danish character-skip PowerShell cradle"
author = "PacketPursuit"
date = "2026-07-13"
hash = "3c63a3c0670132e07fb90ca3c29ba35d898f6293bd40619a5611cb705e8b8212"
family = "unclassified-nsis-dropper"
strings:
$nsis_manifest = "Nullsoft.NSIS.exehead" wide
$nsis_desc = "Nullsoft Install System v3.01" wide
$nsis_desc2 = "Nullsoft Install System v3.0" wide
$nsis_desc3 = "Nullsoft Install System v3." wide
$danish_1 = "Frakendelsesperioden" ascii wide
$danish_2 = "Aktricernes" ascii wide
$danish_3 = "Spejlingernes" ascii wide
$danish_4 = "forventnings" ascii wide
$iex_equiv = ".($Foreface) $Twinborn" ascii wide
$stride6_loop = "while($Microcosmus36[$Chromascope])" ascii wide
condition:
uint16(0) == 0x5A4D and
$nsis_manifest and
any of ($nsis_desc*) and
2 of ($danish_*) and
($iex_equiv or $stride6_loop)
}
Sigma Rule
title: NSIS Danish Character-Skip PowerShell Cradle Execution
status: experimental
description: Detects execution of NSIS-extracted PowerShell scripts using Danish variable names and character-skip decode loops
logsource:
category: process_creation
product: windows
detection:
selection:
CommandLine|contains:
- 'Frakendelsesperioden'
- 'Aktricernes'
- 'Spejlingernes'
- 'forventnings'
- '.($Foreface) $Twinborn'
- 'Chromascope+=6'
condition: selection
falsepositives:
- Unlikely — these strings are unique to this malware cluster
level: high
IOC List
| Type | Value | Notes |
|---|---|---|
| SHA-256 | 3c63a3c0670132e07fb90ca3c29ba35d898f6293bd40619a5611cb705e8b8212 |
Primary sample |
| Filename | WORK_REPORT_FOR_YOUR_FILLING_AND_SUBMITTING_SCAN0012_PDF.com |
.com masquerade |
| InternalName | forventnings.exe |
VS_VERSIONINFO |
| NSIS Script Var | $Frakendelsesperioden |
Encoded payload variable |
| NSIS Script Var | $Predesignated |
Secondary encoded payload variable |
| NSIS Script Func | Aktricernes |
Stride-6 decoder |
| Embedded File | Flashbulb.Ind |
342,728 bytes, entropy 7.65 |
| Embedded File | Nordamerikaneren.hyl |
339,413 bytes, entropy 1.25 |
| Embedded File | Rockendes.Pot |
55,351 bytes, PowerShell cradle |
| Embedded File | Rooing.txt |
325 bytes, word-salad decoy |
| Embedded File | utilfredsheders/lenene.cul |
386,186 bytes, entropy 1.25 |
| Embedded File | utilfredsheders/uddelegeringer.twe |
449,546 bytes, data |
Behavioral Fingerprint
This binary is a Nullsoft Installer SFX archive compiled with MSVC 6.0. Upon execution, it silently extracts six files to a temporary directory. One of those files is a 55 KB PowerShell script (Rockendes.Pot) containing a character-skip decoder (stride 6, offset 5) wrapped in Danish variable names. The decoder reassembles a secondary payload that sets up byte arrays, hex-decodes additional embedded files, and reflectively executes the result. No network indicators are visible in the outer layer; C2 is likely inside the encrypted inner payload. The sample is unsigned, unlike prior siblings in this cluster.
Detection Signatures
| Technique | ID | Evidence |
|---|---|---|
| User Execution | T1204.002 | PDF-document social-engineering filename ^[triage.json] |
| Hijack Execution Flow | T1574.002 | NSIS installer trust model abuse ^[file.txt] |
| Masquerade Task or Service | T1036.004 | WORK_REPORT...SCAN0012_PDF.com filename ^[triage.json] |
| Match Legitimate Name or Location | T1036.005 | Uses real NSIS v3 framework ^[strings.txt:239] |
| PowerShell | T1059.001 | Danish character-skip obfuscated cradle ^[Rockendes.Pot] |
| Reflective Code Loading | T1620 | .($Foreface) $Twinborn reflective execution ^[Rockendes.Pot] |
| Obfuscated Files or Information | T1027 | Stride-6 character-skip cipher, Danish variable names ^[Rockendes.Pot] |
References
- Artifact ID:
6cae26df-045e-4a71-828f-28d1cbaaa35c - MalwareBazaar:
https://bazaar.abuse.ch/sample/3c63a3c0670132e07fb90ca3c29ba35d898f6293bd40619a5611cb705e8b8212/ - Cluster entity: unclassified-nsis-dropper
- Technique page: character-skip-cipher-powershell-obfuscation
- Concept page: version-info-masquerade
- Related sibling: /intel/analyses/78c5e8ca9474815c1cd85825b00d9be487a0e049fb827b12ef74bc57580cd3f5.html
- Related sibling: /intel/analyses/f7f089f7f7753da939649fe98a4d274e44b837a61b72d022897858e1998cc7c4.html
Provenance
- File type:
filev5.44 — ^[file.txt] - PE parser:
python-pefile(pyc?) — ^[pefile.txt] - Strings:
stringsGNU binutils — ^[strings.txt] - radare2: r2
aaanalysis — ^[r2:entry0] ^[r2:imports] - Extraction:
7z23.01 — ^[7z listing] - PowerShell decode: Manual Python stride-6 decoder — ^[Rockendes.Pot decode]
- Metadata: ExifTool 12.76 — ^[exiftool.json]
- radare2 info:
rabin2 -I— ^[rabin2-info.txt]