Skip to content

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

Siemphony’s repertoire

AutoIt or AutoHotkey binary executing under a different file name

Matches Sysmon EventID 1's `OriginalFileName`, PE version-resource metadata the compiler embeds and a rename cannot remove, against the AutoIt/AutoHotkey interpreter names — the direct answer to AN0942's own ScriptExtension knob, which flags "unknown .exe names compiled from these": once a `.ahk`/`.au3` script is compiled to a standalone executable the extension is gone, so matching on `Image` or `CommandLine` for those scripts would miss exactly the compiled case MITRE names. This selector needs no companion field to be meaningful and stays true whether the interpreter kept its own name or was renamed to blend in. MITRE's other tuning knobs — ParentProcessName, TimeWindow, ChildProcessCount — are left for a site to add; none is incorporated here. A determined adversary can still strip or forge the version-resource block before compiling, which removes the one field this rule relies on. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0332, 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: AutoIt or AutoHotkey binary executing under a different file nameid: 4340c739-27e0-4327-af00-adc41efe9a6estatus: experimentaldescription: |  Matches Sysmon EventID 1's `OriginalFileName`, PE version-resource metadata  the compiler embeds and a rename cannot remove, against the AutoIt/AutoHotkey  interpreter names — the direct answer to AN0942's own ScriptExtension knob,  which flags "unknown .exe names compiled from these": once a `.ahk`/`.au3`  script is compiled to a standalone executable the extension is gone, so  matching on `Image` or `CommandLine` for those scripts would miss exactly the  compiled case MITRE names. This selector needs no companion field to be  meaningful and stays true whether the interpreter kept its own name or was  renamed to blend in. MITRE's other tuning knobs — ParentProcessName,  TimeWindow, ChildProcessCount — are left for a site to add; none is  incorporated here. A determined adversary can still strip or forge the  version-resource block before compiling, which removes the one field this  rule relies on.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0332, 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/T1059/010  - https://attack.mitre.org/detectionstrategies/DET0332author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.execution  - attack.t1059.010logsource:  category: process_creation  product: windowsdetection:  selection:    OriginalFileName:      - 'AutoIt3.exe'      - 'AutoIt.exe'      - 'AutoHotkey.exe'      - 'AutoHotkeyU32.exe'      - 'AutoHotkeyU64.exe'      - 'AutoHotkeyA32.exe'  condition: selectionfalsepositives:  - "Legitimate business-process automation and RPA built on AutoIt or AutoHotkey — help-desk password-reset macros, kiosk automation, unattended-install wrappers — all carry the same OriginalFileName metadata as malicious use and are indistinguishable from it on this field alone."  - "Third-party installers and updaters that embed an AutoIt3.exe-compiled component as their own installer engine; several commercial Windows applications ship this way, so the vendor's executable name differs but the original AutoIt3.exe metadata survives."level: medium

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where (ProcessVersionInfoOriginalFileName =~ "AutoIt3.exe" or ProcessVersionInfoOriginalFileName =~ "AutoIt.exe" or ProcessVersionInfoOriginalFileName =~ "AutoHotkey.exe" or ProcessVersionInfoOriginalFileName =~ "AutoHotkeyU32.exe" or ProcessVersionInfoOriginalFileName =~ "AutoHotkeyU64.exe" or ProcessVersionInfoOriginalFileName =~ "AutoHotkeyA32.exe")

Splunk · SPL

Run this as a search.

index=* (OriginalFileName="AutoIt3.exe" OR OriginalFileName="AutoIt.exe" OR OriginalFileName="AutoHotkey.exe" OR OriginalFileName="AutoHotkeyU32.exe" OR OriginalFileName="AutoHotkeyU64.exe" OR OriginalFileName="AutoHotkeyA32.exe")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(process.pe.original_file_name) == "autoit3.exe" OR TO_LOWER(process.pe.original_file_name) == "autoit.exe" OR TO_LOWER(process.pe.original_file_name) == "autohotkey.exe" OR TO_LOWER(process.pe.original_file_name) == "autohotkeyu32.exe" OR TO_LOWER(process.pe.original_file_name) == "autohotkeyu64.exe" OR TO_LOWER(process.pe.original_file_name) == "autohotkeya32.exe")

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="OriginalFileName" type="pcre2">(?i)(^AutoIt3\.exe$|^AutoIt\.exe$|^AutoHotkey\.exe$|^AutoHotkeyU32\.exe$|^AutoHotkeyU64\.exe$|^AutoHotkeyA32\.exe$)</field>    <description>AutoIt or AutoHotkey binary executing under a different file name</description>    <mitre>      <id>T1059.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.