Skip to content

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

Siemphony’s repertoire

Odbcconf loading a DLL through REGSVR or a response file

Siemphony@siemphonymediumT1218.008unverified
Matches the first step of AN1335's behaviour chain: a process creation of odbcconf.exe carrying either the `REGSVR` action, which hands a DLL path to the ODBC installer to load and call, or the `/f` response-file switch, which moves that same action into a text file where the string `REGSVR` never reaches the command line. Both branches are required because either one on its own leaves half the technique invisible — `odbcconf /a {REGSVR c:\users\public\file.dll}` is the form every public write-up shows, and `odbcconf /f payload.rsp` is how that command is hidden from exactly this kind of string match. The response-file branch is written with `windash` because odbcconf accepts `/f` and `-f` alike, and the dash variants are a standard way to slip a literal match. MITRE's `AllowedCommandPatterns` and `ParentProcessName` knobs are where an estate records the installer processes and argument shapes it expects to see; neither is applied here, because both are site-specific and an empty allowlist would silently disable the rule. Four limits are worth stating. A renamed copy of odbcconf.exe defeats the `Image` gate entirely, and renaming a signed LOLBIN is cheap. Sysmon EventID 1 does carry `OriginalFileName`, which survives a rename, and this rule is already written in Sysmon field names, so that gate is available and is simply not used here: it would put the binary anchor on two different fields, and the brief's own process source for this analytic is Security 4688, which has no equivalent to fall back on. A Sysmon-only estate should add `OriginalFileName: 'odbcconf.exe'` as an alternative to the `Image` test, and should expect the extra field to cost a backend or two. The rest of the chain is also not attempted: the module load of the payload DLL (Sysmon EventID 7) needs MITRE's `ApprovedModuleHashes` baseline to say anything, and the network and DNS legs (Sysmon EventID 3 and 22) describe what the loaded payload does rather than what odbcconf did, gated by a `TimeWindow` correlation lib/sigma cannot express. Vocabulary and prerequisite: the brief maps Security 4688 onto the Sysmon-shaped `process_creation` category, and this rule is written in the Sysmon EventID 1 vocabulary (`Image`, `CommandLine`); an estate feeding 4688 instead needs `NewProcessName` mapped onto `Image` first, and 4688 requires 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 MS and CIS baselines, and without them this rule returns zero rows, which reads as quiet when it means blind. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0486, 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 "\\odbcconf.exe" and (ProcessCommandLine contains "REGSVR" or (ProcessCommandLine contains "-f " or ProcessCommandLine contains "/f " or ProcessCommandLine contains "–f " or ProcessCommandLine contains "—f " or ProcessCommandLine contains "―f ")))

Splunk · SPL

Run this as a search.

index=* (Image="*\\odbcconf.exe" AND (CommandLine="*REGSVR*" OR (CommandLine="*-f *" OR CommandLine="*/f *" OR CommandLine="*–f *" OR CommandLine="*—f *" OR CommandLine="*―f *")))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(process.executable) LIKE "*\\\\odbcconf.exe" AND (TO_LOWER(process.command_line) LIKE "*regsvr*" OR (TO_LOWER(process.command_line) LIKE "*-f *" OR TO_LOWER(process.command_line) LIKE "*/f *" OR TO_LOWER(process.command_line) LIKE "*–f *" OR TO_LOWER(process.command_line) LIKE "*—f *" OR TO_LOWER(process.command_line) LIKE "*―f *")))

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)\\odbcconf\.exe$</field>    <field name="CommandLine" type="pcre2">(?i)(REGSVR|(-f |/f |–f |—f |―f ))</field>    <description>Odbcconf loading a DLL through REGSVR or a response file</description>    <mitre>      <id>T1218.008</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.