Skip to content

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

Siemphony’s repertoire

Windows DACL or ownership seized with a built-in permissions tool

Siemphony@siemphonymediumT1222.001verified in lab
AN1177 describes a five-stage chain — a permissions utility launches, its command line reveals intent, a 4670 DACL change follows, a 4663 access succeeds, and persistence follows that. Only the first two stages survive the Sigma subset this corpus models: the analytic's own TemporalCorrelationWindow knob asks for a 300-second join across three event ids, and lib/sigma has no aggregation, no timeframe and no near, so the correlation is simply absent here and a match means one command ran, not that any access actually changed hands. The rule therefore takes the process-creation leg and gates it twice — the tool must be a DACL editor and the command line must carry an access-changing switch — because those binaries are also the standard way to *read* an ACL, and an unqualified `icacls C:\path` is a query, not a modification. The two tool families need separate gates because their switch vocabularies do not overlap: icacls takes /grant, /deny, /setowner and /inheritance:r, while the older cacls and xcacls spell the same operations /g, /r, /p and /d, so one switch list checked against both would leave the legacy binaries permanently unmatched. attrib.exe, which the analytic also names, is deliberately out of scope: it sets file attributes rather than a DACL, and hiding a file with attrib +h is T1564.001. takeown.exe gets its own selection with no argument gate: it has no read-only mode, so every invocation is an ownership seizure. A third selection covers the .NET/PowerShell equivalents the analytic names, matched on the command line of any process, which catches only one-liners — an ACL rewritten inside a .ps1 body or by a compiled binary calling SetSecurityInfo directly produces no process-creation record at all and is invisible here. Two deployment caveats. The brief maps this leg to Security EventID 4688, so the rule is written in the Sysmon-shaped `process_creation` vocabulary (Image, CommandLine) that Sigma backends map onto NewProcessName and CommandLine for 4688; if 4688 is the feed, *Audit Process Creation* must be enabled AND the separate *Include command line in process creation events* policy must be on, or every CommandLine term below is blind and the rule returns zero rows while looking healthy. MITRE's SuspiciousCommandLinePatterns and SensitivePathWhitelist knobs name where the tuning goes; the switch list and the tool list below were assembled here, not taken from MITRE. UNVERIFIED — derived from MITRE ATT&CK DET0418 and never executed against logs.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 "\\icacls.exe" and (ProcessCommandLine contains "/grant" or ProcessCommandLine contains "/deny" or ProcessCommandLine contains "/remove" or ProcessCommandLine contains "/setowner" or ProcessCommandLine contains "/inheritance:r" or ProcessCommandLine contains "/reset" or ProcessCommandLine contains "/setintegritylevel")) or ((FolderPath endswith "\\cacls.exe" or FolderPath endswith "\\xcacls.exe") and (ProcessCommandLine contains " /g " or ProcessCommandLine contains " /r " or ProcessCommandLine contains " /p " or ProcessCommandLine contains " /d "))) or FolderPath endswith "\\takeown.exe") or (ProcessCommandLine contains "Set-Acl" or ProcessCommandLine contains "SetAccessRule" or ProcessCommandLine contains "AddAccessRule" or ProcessCommandLine contains "SetAccessRuleProtection" or ProcessCommandLine contains "SetOwner"))

Splunk · SPL

Run this as a search.

index=* ((((Image="*\\icacls.exe" AND (CommandLine="*/grant*" OR CommandLine="*/deny*" OR CommandLine="*/remove*" OR CommandLine="*/setowner*" OR CommandLine="*/inheritance:r*" OR CommandLine="*/reset*" OR CommandLine="*/setintegritylevel*")) OR ((Image="*\\cacls.exe" OR Image="*\\xcacls.exe") AND (CommandLine="* /g *" OR CommandLine="* /r *" OR CommandLine="* /p *" OR CommandLine="* /d *"))) OR Image="*\\takeown.exe") OR (CommandLine="*Set-Acl*" OR CommandLine="*SetAccessRule*" OR CommandLine="*AddAccessRule*" OR CommandLine="*SetAccessRuleProtection*" OR CommandLine="*SetOwner*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((((TO_LOWER(process.executable) LIKE "*\\\\icacls.exe" AND (TO_LOWER(process.command_line) LIKE "*/grant*" OR TO_LOWER(process.command_line) LIKE "*/deny*" OR TO_LOWER(process.command_line) LIKE "*/remove*" OR TO_LOWER(process.command_line) LIKE "*/setowner*" OR TO_LOWER(process.command_line) LIKE "*/inheritance:r*" OR TO_LOWER(process.command_line) LIKE "*/reset*" OR TO_LOWER(process.command_line) LIKE "*/setintegritylevel*")) OR ((TO_LOWER(process.executable) LIKE "*\\\\cacls.exe" OR TO_LOWER(process.executable) LIKE "*\\\\xcacls.exe") AND (TO_LOWER(process.command_line) LIKE "* /g *" OR TO_LOWER(process.command_line) LIKE "* /r *" OR TO_LOWER(process.command_line) LIKE "* /p *" OR TO_LOWER(process.command_line) LIKE "* /d *"))) OR TO_LOWER(process.executable) LIKE "*\\\\takeown.exe") OR (TO_LOWER(process.command_line) LIKE "*set-acl*" OR TO_LOWER(process.command_line) LIKE "*setaccessrule*" OR TO_LOWER(process.command_line) LIKE "*addaccessrule*" OR TO_LOWER(process.command_line) LIKE "*setaccessruleprotection*" OR TO_LOWER(process.command_line) LIKE "*setowner*"))

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. -->  <!-- 4 rules: the Sigma condition ORs across different fields,       which one rule cannot express. Any one matching is a hit. -->  <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)\\icacls\.exe$</field>    <field name="CommandLine" type="pcre2">(?i)(/grant|/deny|/remove|/setowner|/inheritance:r|/reset|/setintegritylevel)</field>    <description>Windows DACL or ownership seized with a built-in permissions tool (1/4)</description>    <mitre>      <id>T1222.001</id>    </mitre>  </rule>   <rule id="100001" level="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)(\\cacls\.exe$|\\xcacls\.exe$)</field>    <field name="CommandLine" type="pcre2">(?i)( /g | /r | /p | /d )</field>    <description>Windows DACL or ownership seized with a built-in permissions tool (2/4)</description>    <mitre>      <id>T1222.001</id>    </mitre>  </rule>   <rule id="100002" level="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)\\takeown\.exe$</field>    <description>Windows DACL or ownership seized with a built-in permissions tool (3/4)</description>    <mitre>      <id>T1222.001</id>    </mitre>  </rule>   <rule id="100003" level="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="CommandLine" type="pcre2">(?i)(Set-Acl|SetAccessRule|AddAccessRule|SetAccessRuleProtection|SetOwner)</field>    <description>Windows DACL or ownership seized with a built-in permissions tool (4/4)</description>    <mitre>      <id>T1222.001</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.