Unclassified JScript Hex+ROT Dropper Family
JScript (.js) droppers distributed with Polish-language purchase-order lures. The outer script is obfuscated via a custom three-stage pipeline: Unicode-fragment string assembly (luminal()), hex decoding, and ROT13 character substitution. After deobfuscation the script spawns a hidden child process via WMI and drops a PowerShell reflective .NET loader that fetches a second-stage assembly over HTTP.
Capabilities
- jscript-unicode-fragment-assembly-obfuscation
- hex-encoded-string-decoder
- rot13-character-cipher
- wmi-hidden-process-spawn-win32process
- powershell-reflective-dotnet-loader
- cloudflare-r2-stage-two-hosting
- polish-invoice-social-engineering-lure
- assembly-load-entrypoint-invoke
Build / RE
- Language: JScript (plain text, WScript/CScript host)
- Obfuscation: Custom — no commercial packer. Three chained transforms:
luminal(picture, beefsteak, retaping)splits strings across Unicode fragments inside ~27,600 repetitions ofthis.bucorvus += luminal(...)^[/intel/analyses/a94a77a31e66e7c54af6a47a0a2f2b1f6cb35f2232f466d92d2dc8546d4130ed.html]- Hex decoder:
parseInt(directions.substr(doggiest, 2), 16)→String.fromCharCode^[/intel/analyses/a94a77a31e66e7c54af6a47a0a2f2b1f6cb35f2232f466d92d2dc8546d4130ed.html] - ROT13:
((symcentry-65+13)%26)+65for uppercase,((symcentry-97+13)%26)+97for lowercase ^[/intel/analyses/a94a77a31e66e7c54af6a47a0a2f2b1f6cb35f2232f466d92d2dc8546d4130ed.html]
- Anti-analysis: Bulk noise (2.3 MB) exhausts static scanners. No debugger/VM checks in outer layer.
- Code quality: Medium — the multi-stage pipeline is deliberate, but the
luminalpattern is easily grep-able once recognised.
Deploy / ATT&CK
| Tactic | Technique | Evidence |
|---|---|---|
| Execution | T1059.003 | JScript via WScript.Shell |
| Execution | T1059.001 | PowerShell reflective cradle |
| Execution | T1047 | WMI Win32_Process.Create with ShowWindow=0 |
| Defense Evasion | T1027.010 | Hex + ROT13 + Unicode fragment assembly |
| Defense Evasion | T1620 | [Reflection.Assembly]::Load of downloaded payload |
| Command and Control | T1105 | HTTP download from Cloudflare R2 public bucket |
| Defense Evasion | T1036 | Polish purchase-order filename masquerade |
Infrastructure
- Stage-2 hosting:
pub-80565167acbb45ceb2e952d272ee2abc.r2.dev(Cloudflare R2 public bucket) - Observed payload URL:
zgh6ey.png(PNG masquerade for .NET assembly) - Entry class:
Fiber.Program::Main()
Sibling Analyses
a94a77a31e66e7c54af6a47a0a2f2b1f6cb35f2232f466d92d2dc8546d4130ed— First observed sample: Polish invoice lure, 2.3 MB JScript, R2 stage-2. ^[/intel/analyses/a94a77a31e66e7c54af6a47a0a2f2b1f6cb35f2232f466d92d2dc8546d4130ed.html]
Related
- unclassified-js-dropper — Brazilian Portuguese WScript→PowerShell→.NET dropper with sandbox gate and HostGator C2. Different obfuscation (RC4 JS string arrays vs hex+ROT+luminal).
- powershell-cradle-downloader — Generic pattern: compiled or scripted binary spawns
powershell.exewith an embedded cradle. - jscript-hexrot-wmi-reflective-dropper — Technique page for the three-stage obfuscation + WMI + reflective loader chain observed here.