XSL Script Processing T1220

Tactic: Stealth

Adversaries may bypass application control and obscure execution of code by embedding scripts inside XSL files. Extensible Stylesheet Language (XSL) files are commonly used to describe the processing and rendering of data within XML files. To support complex operations, the XSL standard includes support for embedded scripting in various languages.

Events covered

4 catalog events are tagged with this technique by at least one rule.

Authoring guide

Patterns shared across the 15 rules above: which fields they filter on, what specific values they look for, and what they exclude. The catalog normalizes field names across vendors so Sigma's Image, Elastic's process.name, and Splunk's process_name collapse into one row. Each rule contributes at most once per row.

Fields filtered most (18 distinct)

The fields most rules look at when detecting this technique. The How column shows the operators authors use (eq, wildcard, regex_match, match) and how often each appears. Sample values are concrete examples to start from, not an exhaustive list.

FieldRulesHowSample values
process_name10eq 7, match 3(?i)msxsl, wmic.exe, msxsl.exe, certutil.exe, cscript.exe
CommandLine8contains 5, match 3, in 1(?i)\S+\.x[ms]l\s+.*\.xsl, /format:, ://, \\\\, *http://*
Image6ends_with 5, wildcard 1\wmic.exe, \msxsl.exe, ?:\users\*\appdata\*.exe
OriginalFileName5eq 5wmic.exe
EventType3eq 2, starts_with 1start, Image loaded
Type3eq 3
EventID2eq 21, 4688
Hashes2contains 2imphash=16a48c3cabf98a9dc1bf02c07fe1ea00, imphash=1b1a3f43bf37b5bfe60751f2ee2f326e, imphash=37777a96245a3c74eb217308f3546f4c
dll.name2eq 2jscript.dll, msxml3.dll, vbscript.dll
event.type2eq 2start
parent_process_name2eq 2cmd.exe, excel.exe, mspub.exe, powerpnt.exe
process.args2eq 1, wildcard 1*-format*:*, -n, /format*:*, format*:*
ImageLoaded1ends_with 1\jscript.dll, \vbscript.dll
event.category1eq 1library, process
event_type1in 1childproc, netconn, proc

Top indicator values (78 distinct)

Specific (field, operator, value) combinations the rules check for, ranked by how many rules under this technique use each one. The Corpus reach column counts how many rules across the entire catalog (any technique) check the same combination. High numbers point to widely-used indicators that are likely noisy on their own; combine them with another condition for useful signal. Blank means the combination is specific to rules under this technique. Click a value to expand the rules under this technique that use it.

FieldKindValueRules (here)Corpus reach
OriginalFileNameeq
wmic.exe
561
process_nameeq
wmic.exe
447
process_nameeq
msxsl.exe
39
CommandLinecontains
/format:
33
CommandLinecontains
://
23
CommandLinecontains
\\\\
26
CommandLinecontains
-format:
1
CommandLinecontains
.xsl
1
CommandLinecontains
format:csv
1
CommandLinecontains
format:hform
1
CommandLinecontains
format:htable
1
CommandLinecontains
format:list
1
CommandLinecontains
format:mof
1
CommandLinecontains
format:rawxml
1
CommandLinecontains
format:table
1
CommandLinecontains
format:value
1
CommandLinecontains
format:xml
1
CommandLinecontains
http
139
CommandLinecontains
os get
1
CommandLinematch
(?i)\S+\.x[ms]l\s+.*\.xsl
33
Imageends_with
\wmic.exe
360
Imageends_with
\msxsl.exe
26
process_namematch
(?i)msxsl
33
EventTypeeq
start
216
Hashescontains
imphash=16a48c3cabf98a9dc1bf02c07fe1ea00
22
Hashescontains
imphash=1b1a3f43bf37b5bfe60751f2ee2f326e
22
Hashescontains
imphash=37777a96245a3c74eb217308f3546f4c
22
Hashescontains
imphash=9d87c9d67ce724033c0b40cc4ca1b206
22
Hashescontains
imphash=b12619881d79c3acadf45e752a58554a
22
event.typeeq
start
2606

Exclusions (90 distinct)

Field/operator/value combinations excluded by rules under this technique (top-level not() clauses), sorted by how many rules exclude each. These are the false-positive paths the community has learned to filter out. A new rule that ignores the high-count entries here will likely fire on the same noisy paths. Click a value to expand the rules under this technique that exclude it.

FieldKindValueRules excluding
CommandLinecontains
://
1
CommandLinecontains
\\\\
1
CommandLinecontains
format:csv
1
CommandLinecontains
format:hform
1
CommandLinecontains
format:htable
1
CommandLinecontains
format:list
1
CommandLinecontains
format:mof
1
CommandLinecontains
format:rawxml
1
CommandLinecontains
format:table
1
CommandLinecontains
format:value
1
CommandLinecontains
format:xml
1
CommandLineeq
driver\DPInst_x64 /f
1
CommandLinewildcard
* /format:table
1
CommandLinewildcard
* /format:table *
1
CurrentDirectorywildcard
?:\Users\*\AppData\Local\Temp\BackupBootstrapper\Logs\
1

Rules under this technique

Every rule in the catalog tagged with this technique, grouped by vendor. Click a rule title for its full predicates, exclusions, and indicators.

Platform (all)
Domain (all)

Sigma 5 rules

Elastic 4 rules

Splunk 6 rules