Utility executing under a name its own PE metadata contradicts
Matches the first half of AN0012 inside a single Sysmon EventID 1 record: the PE version resource still names the utility the compiler built (`OriginalFileName`), while the file on disk has been given some other name — which is exactly what renaming rundll32.exe, or shipping a copy of PsExec as something else, produces. Both halves are needed, because the metadata on its own is just the tool running normally and the file name on its own says nothing, so the selection lists original names and a filter drops every event whose `Image` still ends in one of the matching real names. That list is MITRE's `PEInternalNameMismatch` knob, populated here with the system binaries and LOLBAS the analytic names plus the closely related script hosts; the two values that look wrong are not — PsExec's version resource carries `psexec.c` and rundll32's carries `RUNDLL.EXE`, so those are what a renamed copy reports. Three limits are structural. The filter is not paired name-for-name, so a utility renamed to another entry's real name (rundll32.exe copied to cmd.exe) is filtered out rather than matched. An adversary who strips or forges the version resource before use removes the only field this rule reads. And `OriginalFileName` is a Sysmon field: this rule is written in the Sysmon process-creation vocabulary, and on a Security 4688 feed mapped onto the same Sigma category that field does not exist at all, so no audit policy makes the rule work there — it needs Sysmon EventID 1 with a configuration that does not exclude these images. The analytic's Sysmon EventID 11 leg is not attempted, and neither are its macOS (AN0013) or Linux (AN0014) siblings; the copied-to-a-non-standard-directory case MITRE describes alongside renaming is a path observable rather than a metadata one and is authored under T1036.005. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0005, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full descriptionShow less
The detection
The 4 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.
detection.yml
Sentinel · KQL
Run this as a search.
DeviceProcessEvents| where ((ProcessVersionInfoOriginalFileName =~ "PowerShell.EXE" or ProcessVersionInfoOriginalFileName =~ "Cmd.Exe" or ProcessVersionInfoOriginalFileName =~ "RUNDLL.EXE" or ProcessVersionInfoOriginalFileName =~ "REGSVR32.EXE" or ProcessVersionInfoOriginalFileName =~ "MSHTA.EXE" or ProcessVersionInfoOriginalFileName =~ "CertUtil.exe" or ProcessVersionInfoOriginalFileName =~ "wscript.exe" or ProcessVersionInfoOriginalFileName =~ "cscript.exe" or ProcessVersionInfoOriginalFileName =~ "wmic.exe" or ProcessVersionInfoOriginalFileName =~ "bitsadmin.exe" or ProcessVersionInfoOriginalFileName =~ "psexec.c") and not ((FolderPath endswith "\\powershell.exe" or FolderPath endswith "\\cmd.exe" or FolderPath endswith "\\rundll32.exe" or FolderPath endswith "\\regsvr32.exe" or FolderPath endswith "\\mshta.exe" or FolderPath endswith "\\certutil.exe" or FolderPath endswith "\\wscript.exe" or FolderPath endswith "\\cscript.exe" or FolderPath endswith "\\wmic.exe" or FolderPath endswith "\\bitsadmin.exe" or FolderPath endswith "\\psexec.exe" or FolderPath endswith "\\psexec64.exe")))
Splunk · SPL
Run this as a search.
index=* ((OriginalFileName="PowerShell.EXE" OR OriginalFileName="Cmd.Exe" OR OriginalFileName="RUNDLL.EXE" OR OriginalFileName="REGSVR32.EXE" OR OriginalFileName="MSHTA.EXE" OR OriginalFileName="CertUtil.exe" OR OriginalFileName="wscript.exe" OR OriginalFileName="cscript.exe" OR OriginalFileName="wmic.exe" OR OriginalFileName="bitsadmin.exe" OR OriginalFileName="psexec.c") AND NOT ((Image="*\\powershell.exe" OR Image="*\\cmd.exe" OR Image="*\\rundll32.exe" OR Image="*\\regsvr32.exe" OR Image="*\\mshta.exe" OR Image="*\\certutil.exe" OR Image="*\\wscript.exe" OR Image="*\\cscript.exe" OR Image="*\\wmic.exe" OR Image="*\\bitsadmin.exe" OR Image="*\\psexec.exe" OR Image="*\\psexec64.exe")))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE ((TO_LOWER(process.pe.original_file_name) == "powershell.exe" OR TO_LOWER(process.pe.original_file_name) == "cmd.exe" OR TO_LOWER(process.pe.original_file_name) == "rundll.exe" OR TO_LOWER(process.pe.original_file_name) == "regsvr32.exe" OR TO_LOWER(process.pe.original_file_name) == "mshta.exe" OR TO_LOWER(process.pe.original_file_name) == "certutil.exe" OR TO_LOWER(process.pe.original_file_name) == "wscript.exe" OR TO_LOWER(process.pe.original_file_name) == "cscript.exe" OR TO_LOWER(process.pe.original_file_name) == "wmic.exe" OR TO_LOWER(process.pe.original_file_name) == "bitsadmin.exe" OR TO_LOWER(process.pe.original_file_name) == "psexec.c") AND NOT ((TO_LOWER(process.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cmd.exe" OR TO_LOWER(process.executable) LIKE "*\\\\rundll32.exe" OR TO_LOWER(process.executable) LIKE "*\\\\regsvr32.exe" OR TO_LOWER(process.executable) LIKE "*\\\\mshta.exe" OR TO_LOWER(process.executable) LIKE "*\\\\certutil.exe" OR TO_LOWER(process.executable) LIKE "*\\\\wscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\wmic.exe" OR TO_LOWER(process.executable) LIKE "*\\\\bitsadmin.exe" OR TO_LOWER(process.executable) LIKE "*\\\\psexec.exe" OR TO_LOWER(process.executable) LIKE "*\\\\psexec64.exe")))
Wazuh · XML rule
Deploy to your manager — this is a rule, not a search.
<group name="sigma,windows,process_creation,"> <!-- Rule ids must be unique on your manager; 100000+ is the user range. --> <rule id="100000" level="7"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="OriginalFileName" type="pcre2">(?i)(^PowerShell\.EXE$|^Cmd\.Exe$|^RUNDLL\.EXE$|^REGSVR32\.EXE$|^MSHTA\.EXE$|^CertUtil\.exe$|^wscript\.exe$|^cscript\.exe$|^wmic\.exe$|^bitsadmin\.exe$|^psexec\.c$)</field> <field name="Image" negate="yes" type="pcre2">(?i)(\\powershell\.exe$|\\cmd\.exe$|\\rundll32\.exe$|\\regsvr32\.exe$|\\mshta\.exe$|\\certutil\.exe$|\\wscript\.exe$|\\cscript\.exe$|\\wmic\.exe$|\\bitsadmin\.exe$|\\psexec\.exe$|\\psexec64\.exe$)</field> <description>Utility executing under a name its own PE metadata contradicts</description> <mitre> <id>T1036.003</id> </mitre> </rule></group>
Verdicts · reactions · comments
Community
Verdicts from engineers who actually deployed it, and the conversation around it.
Nobody has run this in a real environment and said what happened.
Verdicts from engineers who deployed it
0 castNo verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.
Log in to report a verdict.
Log in to join the discussion.
No comments yet. Someone who deploys this will have something to say about it.