Skip to content

Siemphony is in beta and still being built. What ships today, and what does not.

Siemphony’s repertoire

Control panel item executed from a user-writable directory

Siemphony@siemphonymediumT1218.002verified in lab
Matches the first arm of AN0558: control.exe or rundll32.exe created with a command line that names a .cpl file living under a directory an unprivileged user can write to. A .cpl is a renamed DLL exporting `CPlApplet`, so both binaries load and run it in their own process — that load is the proxy execution this technique is about, and a payload delivered by phishing lands in Downloads, %TEMP% or %AppData% rather than in System32. The path clause is MITRE's `CPLPathRegex` knob, whose description says to tune it to exclude the legitimate applets in System32; the directory list below is authored here, not supplied by MITRE. The consequence is stated plainly: an applet staged into System32 by an adversary who already has write access there, one launched from a UNC share, and one loaded through the `CPlApplet` API rather than from a command line all fall outside this rule. So does a payload renamed away from the .cpl extension: shell32's `Control_RunDLL` loads whatever DLL it is handed regardless of what the file is called, so `rundll32.exe shell32.dll,Control_RunDLL invoice.dat` proxies the same applet past the `.cpl` clause. Both `contains` clauses are independent, so nothing requires the .cpl string and the writable path to belong to the same token on the command line. AN0558's other three log sources are not attempted. Its file_event (Sysmon EventID 11) and image_load (EventID 7) arms only mean anything joined to the execution through the `NewFileTimeWindow` knob, and Sigma models neither a timeframe nor a join; its registry_add (EventID 12) arm for newly registered Control Panel items turns on `RegistryKeyAllowlist`, a list of known-good entries the brief supplies no values for. This rule is written in the Sysmon EventID 1 vocabulary (`Image`, `CommandLine`) that AN0558 names. An estate feeding Security 4688 instead needs `NewProcessName` mapped onto `Image` first, and 4688 needs both *Audit Process Creation* and the separate *Include command line in process creation events* policy before `CommandLine` exists at all — neither is on in a default install or in the Microsoft and CIS baselines. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0194, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

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 (((FolderPath endswith "\\control.exe" or FolderPath endswith "\\rundll32.exe") and ProcessCommandLine contains ".cpl") and (ProcessCommandLine contains "\\AppData\\" or ProcessCommandLine contains "\\Temp\\" or ProcessCommandLine contains "\\Users\\Public\\" or ProcessCommandLine contains "\\Downloads\\" or ProcessCommandLine contains "\\ProgramData\\" or ProcessCommandLine contains "\\Windows\\Tasks\\" or ProcessCommandLine contains "\\PerfLogs\\"))

Splunk · SPL

Run this as a search.

index=* (((Image="*\\control.exe" OR Image="*\\rundll32.exe") AND CommandLine="*.cpl*") AND (CommandLine="*\\AppData\\*" OR CommandLine="*\\Temp\\*" OR CommandLine="*\\Users\\Public\\*" OR CommandLine="*\\Downloads\\*" OR CommandLine="*\\ProgramData\\*" OR CommandLine="*\\Windows\\Tasks\\*" OR CommandLine="*\\PerfLogs\\*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (((TO_LOWER(process.executable) LIKE "*\\\\control.exe" OR TO_LOWER(process.executable) LIKE "*\\\\rundll32.exe") AND TO_LOWER(process.command_line) LIKE "*.cpl*") AND (TO_LOWER(process.command_line) LIKE "*\\\\appdata\\\\*" OR TO_LOWER(process.command_line) LIKE "*\\\\temp\\\\*" OR TO_LOWER(process.command_line) LIKE "*\\\\users\\\\public\\\\*" OR TO_LOWER(process.command_line) LIKE "*\\\\downloads\\\\*" OR TO_LOWER(process.command_line) LIKE "*\\\\programdata\\\\*" OR TO_LOWER(process.command_line) LIKE "*\\\\windows\\\\tasks\\\\*" OR TO_LOWER(process.command_line) LIKE "*\\\\perflogs\\\\*"))

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="Image" type="pcre2">(?i)(\\control\.exe$|\\rundll32\.exe$)</field>    <field name="CommandLine" type="pcre2">(?i)\.cpl</field>    <field name="CommandLine" type="pcre2">(?i)(\\AppData\\|\\Temp\\|\\Users\\Public\\|\\Downloads\\|\\ProgramData\\|\\Windows\\Tasks\\|\\PerfLogs\\)</field>    <description>Control panel item executed from a user-writable directory</description>    <mitre>      <id>T1218.002</id>    </mitre>  </rule></group>

Verdicts · reactions · comments

Community

Verdicts from engineers who actually deployed it, and the conversation around it.

Log in to react
Not yet reported on

Nobody has run this in a real environment and said what happened.

Verdicts from engineers who deployed it

0 cast

No 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.