Skip to content

Siemphony is in beta and still being built. How a rule earns its badge.

Siemphony’s repertoire

DLL registered under the AppCertDLLs registry key

Siemphony@siemphonyhighT1546.009unverified
Matches a write beneath the AppCertDLLs key under `HKLM\System\CurrentControlSet\Control\Session Manager\`, whose contents are loaded into every process that calls the CreateProcess family or WinExec — the registry half of AN1029. AppCertDLLs is a key, not a value: the DLL path an operator installs is an arbitrarily named value one level beneath it, so a real write produces a TargetObject ending in `\Session Manager\AppCertDLLs\<ValueName>`. The match is therefore a contains on `\Session Manager\AppCertDLLs\` including the trailing separator, which catches the write whatever the operator names the value; an endswith on the key name itself would only match a value literally called AppCertDLLs sitting directly under Session Manager, which is not how this mechanism works. Unlike the AppInit_DLLs value used by the sibling T1546.010 rule, Session Manager lives under HKLM\SYSTEM, which WOW64 does not redirect, so there is no Wow6432Node twin to also cover. The two techniques are siblings but not the same shape: AppInit_DLLs is loaded by user32.dll into GUI processes, while AppCertDLLs is loaded by the kernel32 process-creation path itself, so it reaches console and service processes that AppInit never touches, and this rule targets that key specifically rather than reusing AppInit's selector. The brief maps this from Security EventID 4657 onto Sigma's registry_set category, which is Sysmon-shaped (TargetObject); that is the vocabulary chosen here, and a deployment relying on 4657 alone — which needs Audit Registry auditing and a SACL on this key, neither on by default — would need ObjectName/ObjectValueName mapped onto TargetObject first. The analytic's DLL-load correlation (linking the write to a subsequent unexpected module load) needs a cross-event join Sigma cannot express and is not attempted. Sysmon registry monitoring is an allowlist of paths; confirm this key is included before reading silence as a clean result. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0362, 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.

DeviceRegistryEvents| where RegistryKey contains "\\Session Manager\\AppCertDLLs\\"

Splunk · SPL

Run this as a search.

index=* TargetObject="*\\Session Manager\\AppCertDLLs\\*"

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE TO_LOWER(registry.path) LIKE "*\\\\session manager\\\\appcertdlls\\\\*"

Wazuh · XML rule

Deploy to your manager — this is a rule, not a search.

<group name="sigma,windows,registry_set,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <rule id="100000" level="12">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="TargetObject" type="pcre2">(?i)\\Session Manager\\AppCertDLLs\\</field>    <description>DLL registered under the AppCertDLLs registry key</description>    <mitre>      <id>T1546.009</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.