Detection rules › Elastic

Renamed Windows Automaton Script Interpreter

Source
github.com/elastic/protections-artifacts

Identifies suspicious execution of commonly abused third party Windows automation script interpreters. Attackers may rename AutoHotKey, Rebol or KIXTART executable files or execute scripts from suspicious paths in an attempt to avoid signature-based detection.

MITRE ATT&CK coverage

Rule body

[rule]
description = """
Identifies suspicious execution of commonly abused third party Windows automation script interpreters. Attackers may
rename AutoHotKey, Rebol or KIXTART executable files or execute scripts from suspicious paths in an attempt to avoid
signature-based detection.
"""
id = "92d720dd-93b2-49e0-b68a-d5d6acbe4910"
license = "Elastic License v2"
name = "Renamed Windows Automaton Script Interpreter"
os_list = ["windows"]
reference = ["https://blog.morphisec.com/explosive-new-mirrorblast-campaign-targets-financial-companies"]
version = "1.0.36"

query = '''
process where event.action == "start" and
  (
     /* renamed */
   (process.pe.original_file_name : "AutoHotkey.exe" and not process.name : ("AutoHotkey*.exe", "InternalAHK.exe")) or
   (process.pe.original_file_name : "KIX32.EXE" and not process.name : "KIX*.EXE") or 
   (process.name : "rebol-view*.exe" and process.parent.name : "msiexec.exe") or 
   (process.name : ("KIX32.EXE", "rebol-view*.exe", "AutoIt*.exe") and
     
	 /* execution from common suspicious paths */
     process.args : ("?:\\Users\\Public\\*", 
                     "?:\\ProgramData\\*", 
                     "?:\\Users\\*\\AppData\\*", 
                     "?:\\Windows\\Temp\\*",
                     "?:\\Windows\\Tasks\\*")) or 
    
	/* legit rebol script interpreter has no original file name thus adding this hash abused by mirrorblast*/
    process.hash.sha256 : "215e28f9660472b6271a9902573c9d190e4d7ccca33fcf8d6054941d52a3ab85" or 
	
	/* unusual script extension */
	(process.name : ("rebol-view*.exe", "AutoHotkey*.exe", "KIX*.EXE") and process.args_count == 2 and 
	 not process.command_line : ("*.ahk*", "*.rb*", "*.kix*", "*.scr*", "*.bms")) or 

        (process.Ext.relative_file_creation_time <= 300 and process.pe.original_file_name : "node.exe" and 
	 process.code_signature.subject_name : "Node.js Foundation" and not process.name : "node*.exe" and 
         process.executable : ("?:\\Users\\*", "?:\\ProgramData\\*")) 
   
   ) and  
   
   /* FP - chocolatey installs and runs Autohotkey from programdata */
   not (process.pe.original_file_name : "AutoHotkey*.exe" and
         process.executable : ("?:\\ProgramData\\chocolatey\\*", 
                               "?:\\Program Files\\AutoHotkey\\AutoHotkey*.exe",
                               "?:\\Program Files (x86)\\AutoHotkey\\AutoHotkey*.exe")) and
   not (process.executable : "?:\\ProgramData\\chocolatey\\lib\\autohotkey.install\\tools\\AutoHotkey_*setup.exe" and 
        process.parent.executable : "?:\\ProgramData\\chocolatey\\choco.exe") and
   not (process.pe.original_file_name == "KIX32.EXE" and process.command_line : "*\\NETLOGON\\*") and
   not (process.pe.original_file_name == "KIX32.EXE" and process.parent.command_line : "*\\netlogon\\*") and
   not (process.pe.original_file_name == "KIX32.EXE" and
        process.executable : ("C:\\kworking\\Bin\\RMMKSE.EXE", "C:\\kworking\\Bin\\RMMSSE.EXE", "?:\\ProgramData\\MSPB\\Bin\\RMMSSE.EXE")) and
   not (process.pe.original_file_name == "AutoHotkey.exe" and process.executable : "C:\\TCPU73\\Programm\\ClockTC\\ClockTC.exe" and
        process.parent.executable : "C:\\TCPU73\\TOTALCMD.EXE") and
   not process.executable :
                    ("?:\\Program Files\\AutoHotkey\\SciTE\\InternalAHK.exe",
                     "?:\\Users\\*\\AppData\\Local\\Programs\\AutoHotkey\\UX\\AutoHotkeyUX.exe",
                     "C:\\Windows\\ccmcache\\*.exe",
                     "C:\\Windows\\IMECache\\*.exe",
                     "\\Device\\Mup\\*\\kix32.exe") and
   not process.parent.executable :
                          ("?:\\Program Files\\KeePass Password Safe ?\\KeePass.exe",
                           "?:\\Program Files (x86)\\AutoIt3\\AutoIt3.exe",
                           "?:\\Program Files\\Far Manager\\Far.exe",
                           "?:\\Users\\*\\Stepwise\\Stepwise.exe",
                           "?:\\Users\\*\\AppData\\Local\\Programs\\AutoHotkey\\UX\\AutoHotkeyUX.exe",
                           "C:\\Program Files (x86)\\SofttechLLC\\FlightVector\\FlightVector.exe",
                           "C:\\Program Files\\WindowsApps\\Microsoft.DesktopAppInstaller_*\\winget.exe")
'''

min_endpoint_version = "8.4.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0

[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1036"
name = "Masquerading"
reference = "https://attack.mitre.org/techniques/T1036/"
[[threat.technique.subtechnique]]
id = "T1036.003"
name = "Rename Legitimate Utilities"
reference = "https://attack.mitre.org/techniques/T1036/003/"



[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"

[internal]
min_endpoint_version = "8.4.0"

Stages and Predicates

Stage 1: process

process where event.action == "start" and
  (
   (process.pe.original_file_name : "AutoHotkey.exe" and not process.name : ("AutoHotkey*.exe", "InternalAHK.exe")) or
   (process.pe.original_file_name : "KIX32.EXE" and not process.name : "KIX*.EXE") or
   (process.name : "rebol-view*.exe" and process.parent.name : "msiexec.exe") or
   (process.name : ("KIX32.EXE", "rebol-view*.exe", "AutoIt*.exe") and
     process.args : ("?:\\Users\\Public\\*",
                     "?:\\ProgramData\\*",
                     "?:\\Users\\*\\AppData\\*",
                     "?:\\Windows\\Temp\\*",
                     "?:\\Windows\\Tasks\\*")) or
    process.hash.sha256 : "215e28f9660472b6271a9902573c9d190e4d7ccca33fcf8d6054941d52a3ab85" or
	(process.name : ("rebol-view*.exe", "AutoHotkey*.exe", "KIX*.EXE") and process.args_count == 2 and
	 not process.command_line : ("*.ahk*", "*.rb*", "*.kix*", "*.scr*", "*.bms")) or
        (process.Ext.relative_file_creation_time <= 300 and process.pe.original_file_name : "node.exe" and
	 process.code_signature.subject_name : "Node.js Foundation" and not process.name : "node*.exe" and
         process.executable : ("?:\\Users\\*", "?:\\ProgramData\\*"))
   ) and
   not (process.pe.original_file_name : "AutoHotkey*.exe" and
         process.executable : ("?:\\ProgramData\\chocolatey\\*",
                               "?:\\Program Files\\AutoHotkey\\AutoHotkey*.exe",
                               "?:\\Program Files (x86)\\AutoHotkey\\AutoHotkey*.exe")) and
   not (process.executable : "?:\\ProgramData\\chocolatey\\lib\\autohotkey.install\\tools\\AutoHotkey_*setup.exe" and
        process.parent.executable : "?:\\ProgramData\\chocolatey\\choco.exe") and
   not (process.pe.original_file_name == "KIX32.EXE" and process.command_line : "*\\NETLOGON\\*") and
   not (process.pe.original_file_name == "KIX32.EXE" and process.parent.command_line : "*\\netlogon\\*") and
   not (process.pe.original_file_name == "KIX32.EXE" and
        process.executable : ("C:\\kworking\\Bin\\RMMKSE.EXE", "C:\\kworking\\Bin\\RMMSSE.EXE", "?:\\ProgramData\\MSPB\\Bin\\RMMSSE.EXE")) and
   not (process.pe.original_file_name == "AutoHotkey.exe" and process.executable : "C:\\TCPU73\\Programm\\ClockTC\\ClockTC.exe" and
        process.parent.executable : "C:\\TCPU73\\TOTALCMD.EXE") and
   not process.executable :
                    ("?:\\Program Files\\AutoHotkey\\SciTE\\InternalAHK.exe",
                     "?:\\Users\\*\\AppData\\Local\\Programs\\AutoHotkey\\UX\\AutoHotkeyUX.exe",
                     "C:\\Windows\\ccmcache\\*.exe",
                     "C:\\Windows\\IMECache\\*.exe",
                     "\\Device\\Mup\\*\\kix32.exe") and
   not process.parent.executable :
                          ("?:\\Program Files\\KeePass Password Safe ?\\KeePass.exe",
                           "?:\\Program Files (x86)\\AutoIt3\\AutoIt3.exe",
                           "?:\\Program Files\\Far Manager\\Far.exe",
                           "?:\\Users\\*\\Stepwise\\Stepwise.exe",
                           "?:\\Users\\*\\AppData\\Local\\Programs\\AutoHotkey\\UX\\AutoHotkeyUX.exe",
                           "C:\\Program Files (x86)\\SofttechLLC\\FlightVector\\FlightVector.exe",
                           "C:\\Program Files\\WindowsApps\\Microsoft.DesktopAppInstaller_*\\winget.exe")

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
process.command_linematch\NETLOGON\excludes:process.command_line field:"process.command_line" value:"\NETLOGON\"
process.pe.original_file_nameeqKIX32.EXEexcludes:process.pe.original_file_name field:"process.pe.original_file_name" value:"KIX32.EXE"
process.executableeqC:\TCPU73\Programm\ClockTC\ClockTC.exeexcludes:process.executable field:"process.executable" value:"C:\TCPU73\Programm\ClockTC\ClockTC.exe"
process.parent.executableeqC:\TCPU73\TOTALCMD.EXEexcludes:process.parent.executable field:"process.parent.executable" value:"C:\TCPU73\TOTALCMD.EXE"
process.pe.original_file_nameeqAutoHotkey.exeexcludes:process.pe.original_file_name field:"process.pe.original_file_name" value:"AutoHotkey.exe"
process.executableeqC:\kworking\Bin\RMMKSE.EXE, C:\kworking\Bin\RMMSSE.EXE, ?:\ProgramData\MSPB\Bin\RMMSSE.EXEexcludes:process.executable field:"process.executable" value:"C:\kworking\Bin\RMMKSE.EXE" field:"process.executable" value:"C:\kworking\Bin\RMMSSE.EXE" field:"process.executable" value:"?:\ProgramData\MSPB\Bin\RMMSSE.EXE"
process.executablewildcard?:\ProgramData\chocolatey\*, ?:\Program Files\AutoHotkey\AutoHotkey*.exe, ?:\Program Files (x86)\AutoHotkey\AutoHotkey*.exeexcludes:process.executable field:"process.executable" value:"?:\ProgramData\chocolatey\*" field:"process.executable" value:"?:\Program Files\AutoHotkey\AutoHotkey*.exe" field:"process.executable" value:"?:\Program Files (x86)\AutoHotkey\AutoHotkey*.exe"
process.pe.original_file_namewildcardAutoHotkey*.exeexcludes:process.pe.original_file_name field:"process.pe.original_file_name" value:"AutoHotkey*.exe"
process.executablewildcard?:\ProgramData\chocolatey\lib\autohotkey.install\tools\AutoHotkey_*setup.exeexcludes:process.executable field:"process.executable" value:"?:\ProgramData\chocolatey\lib\autohotkey.install\tools\AutoHotkey_*setup.exe"
process.parent.executableeq?:\ProgramData\chocolatey\choco.exeexcludes:process.parent.executable field:"process.parent.executable" value:"?:\ProgramData\chocolatey\choco.exe"
process.parent.command_linematch\netlogon\excludes:process.parent.command_line field:"process.parent.command_line" value:"\netlogon\"
process.executablewildcard?:\Program Files\AutoHotkey\SciTE\InternalAHK.exe, ?:\Users\*\AppData\Local\Programs\AutoHotkey\UX\AutoHotkeyUX.exe, C:\Windows\ccmcache\*.exe, C:\Windows\IMECache\*.exe, \Device\Mup\*\kix32.exeexcludes:process.executable
process.parent.executablewildcard?:\Program Files\KeePass Password Safe ?\KeePass.exe, ?:\Program Files (x86)\AutoIt3\AutoIt3.exe, ?:\Program Files\Far Manager\Far.exe, ?:\Users\*\Stepwise\Stepwise.exe, ?:\Users\*\AppData\Local\Programs\AutoHotkey\UX\AutoHotkeyUX.exe, C:\Program Files (x86)\SofttechLLC\FlightVector\FlightVector.exe, C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*\winget.exeexcludes:process.parent.executable

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
event.actioneq
  • start corpus 391 (elastic 391)
field:"EventType" kind:eq value:"start"
process.Ext.relative_file_creation_timele
  • 300 transforms: number corpus 11 (elastic 11)
field:"process.Ext.relative_file_creation_time" kind:le value:"300"
process.argswildcard
  • ?:\ProgramData\* corpus 3 (elastic 3)
  • ?:\Users\*\AppData\* corpus 6 (elastic 6)
  • ?:\Users\Public\*
  • ?:\Windows\Tasks\*
  • ?:\Windows\Temp\*
field:"process.args" kind:wildcard
process.args_counteq
  • 2 transforms: number corpus 37 (elastic 37)
field:"process.args_count" kind:eq value:"2"
process.code_signature.subject_namewildcard
  • Node.js Foundation corpus 2 (elastic 2)
field:"Signature" kind:wildcard value:"Node.js Foundation"
process.executablewildcard
  • ?:\ProgramData\* corpus 17 (elastic 17)
  • ?:\Users\* corpus 18 (elastic 18)
field:"Image" kind:wildcard
process.hash.sha256wildcard
  • 215e28f9660472b6271a9902573c9d190e4d7ccca33fcf8d6054941d52a3ab85
field:"Hashes" kind:wildcard value:"215e28f9660472b6271a9902573c9d190e4d7ccca33fcf8d6054941d52a3ab85"
process.namewildcard
  • AutoHotkey*.exe
  • AutoIt*.exe corpus 4 (elastic 4)
  • KIX*.EXE
  • KIX32.EXE
  • rebol-view*.exe
field:"process_name" kind:wildcard
process.parent.namewildcard
  • msiexec.exe corpus 19 (elastic 14, splunk 3, kusto 2)
field:"parent_process_name" kind:wildcard value:"msiexec.exe"
process.pe.original_file_namewildcard
  • AutoHotkey.exe corpus 3 (elastic 2, sigma 1)
  • KIX32.EXE corpus 2 (elastic 2)
  • node.exe corpus 7 (elastic 4, sigma 3)
field:"OriginalFileName" kind:wildcard