System Binary Proxy Execution: Msiexec T1218.007

Tactic: Stealth

Adversaries may abuse msiexec.exe to proxy execution of malicious payloads. Msiexec.exe is the command-line utility for the Windows Installer and is thus commonly associated with executing installation packages (.msi). The Msiexec.exe binary may also be digitally signed by Microsoft.

Events covered

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

Authoring guide

Patterns shared across the 51 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 (40 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
CommandLine29contains 12, match 6, regex_match 6, in 4, is_not_null 2, ends_with 1(?i)\w+tps?://\S+\.msi, (?i)\stest\s.+\-setupcommandline, (?i)msiexec.*?\.\w{2,5}, -a, -i
process_name22eq 19, in 2, regex_match 2, is_not_null 1msiexec.exe, cmd.exe, bitsadmin.exe, certutil.exe, (?i)msiexec\.exe
EventID18eq 181, 4688, 1040, 4103, 4104
parent_process_name17eq 15, regex_match 2msiexec.exe, (?i)(spoolsv|powershell|pwsh|cmd|svchost|winlogon|taskhos..., cmd.exe, explorer.exe, 7zFM.exe
event.type10eq 10start, change
Image9ends_with 7, starts_with 1, wildcard 1\msiexec.exe, \powershell.exe, :\windows\system32\cmd.exe, \cmd.exe, \device\harddiskvolume*\users\*\*.exe
OriginalFileName8eq 8msiexec.exe, \msiexec.exe, powershell.exe, powershell_ise.exe, pwsh.dll
EventType6eq 6start, creation, connection_attempted, modification
Type6eq 6
process.args5eq 4, starts_with 3, wildcard 1-i, /i, *Reflection.Assembly*, *downloadstring*, *http*
ParentCommandLine4contains 2, is_not_null 1, length_compare 1, wildcard 1*extensionHost*, *vscode*extensions*, -embedding , 200, >=
ParentImage4eq 3, contains 1, is_not_null 1, starts_with 1, wildcard 1?:\program files (x86)\teamcity\jre\bin\java.exe, ?:\program files\teamcity\jre\bin\java.exe, ?:\teamcity\buildagent\jre\bin\java.exe, ?:\users\*\appdata\*, \appdata\local\temp\
user.id3starts_with 2, ne 1S-1-12-, S-1-5-12-1-, S-1-5-18, S-1-5-21, S-1-5-21-
CurrentDirectory2eq 1, starts_with 1?:\, D:\, E:\, F:\
DestinationPort2eq 1, in 1443, 80

Top indicator values (357 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
process_nameeq
msiexec.exe
1722
process_nameeq
cmd.exe
677
process_nameeq
wscript.exe
629
process_nameeq
mshta.exe
531
process_nameeq
powershell.exe
5104
process_nameeq
rundll32.exe
560
process_nameeq
bitsadmin.exe
414
process_nameeq
certutil.exe
422
process_nameeq
cscript.exe
425
process_nameeq
curl.exe
415
process_nameeq
schtasks.exe
421
process_nameeq
pwsh.exe
362
process_nameeq
regsvr32.exe
325
process_nameeq
wmic.exe
347
event.typeeq
start
9606
EventIDeq
1
7237
EventIDeq
4688
6313
EventIDeq
1040
33
EventIDeq
4103
3105
EventIDeq
4104
3268
parent_process_nameeq
msiexec.exe
79
parent_process_nameeq
explorer.exe
320
CommandLinematch
(?i)\w+tps?://\S+\.msi
66
OriginalFileNameeq
msiexec.exe
610
Imageends_with
\msiexec.exe
521
EventTypeeq
start
416
CommandLineregex_match
(?i)\stest\s.+\-setupcommandline
33
process.argseq
/q
33
process.argseq
/quiet
33
CommandLinecontains
-a
27

Exclusions (137 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
Imagewildcard
?:\program files (x86)\*.exe
3
Imagewildcard
?:\program files\*.exe
3
Imagewildcard
?:\windows\installer\msi*.tmp
2
Imagewildcard
?:\windows\system32\msiexec.exe
2
Imagewildcard
?:\windows\system32\srtasks.exe
2
Imagewildcard
?:\windows\syswow64\msiexec.exe
2
Imagewildcard
?:\windows\syswow64\srtasks.exe
2
process.argsstarts_with
?:\Program Files (x86)\
3
process.argsstarts_with
?:\Program Files\
3
process.code_signature.trustedeq
true
3
process_nameeq
cmd.exe
3
process_nameeq
powershell.exe
3
dns.question.namewildcard
localhost
2
dns.question.namewildcard
ocsp.digicert.com
2
dns.question.namewildcard
ocsp.verisign.com
2

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 10 rules

Elastic 14 rules

Splunk 26 rules

Kusto 1 rule