Persistence via Folder Action Scriptedit

Detects modification of a Folder Action script. A Folder Action script is executed when the folder to which it is attached has items added or removed, or when its window is opened, closed, moved, or resized. Adversaries may abuse this feature to establish persistence by utilizing a malicious script.

Rule type: eql

Rule indices:

  • auditbeat-*
  • logs-endpoint.events.*

Severity: medium

Risk score: 47

Runs every: 5 minutes

Searches indices from: now-9m (Date Math format, see also Additional look-back time)

Maximum alerts per execution: 100

References:

Tags:

  • Elastic
  • Host
  • macOS
  • Threat Detection
  • Execution
  • Persistence

Version: 7 (version history)

Added (Elastic Stack release): 7.11.0

Last modified (Elastic Stack release): 8.4.0

Rule authors: Elastic

Rule license: Elastic License v2

Rule queryedit

sequence by host.id with maxspan=5s [process where event.type in
("start", "process_started", "info") and process.name ==
"com.apple.foundation.UserScriptService"] by process.pid [process
where event.type in ("start", "process_started") and process.name in
("osascript", "python", "tcl", "node", "perl", "ruby", "php", "bash",
"csh", "zsh", "sh") and not process.args :
"/Users/*/Library/Application
Support/iTerm2/Scripts/AutoLaunch/*.scpt" ] by process.parent.pid

Threat mappingedit

Framework: MITRE ATT&CKTM

Rule version historyedit

Version 7 (8.4.0 release)
  • Updated query, changed from:

    sequence by host.id with maxspan=5s [process where event.type in
    ("start", "process_started", "info") and process.name ==
    "com.apple.foundation.UserScriptService"] by process.pid [process
    where event.type in ("start", "process_started") and process.name in
    ("osascript", "python", "tcl", "node", "perl", "ruby", "php", "bash",
    "csh", "zsh", "sh")] by process.parent.pid
Version 5 (8.2.0 release)
  • Formatting only
Version 4 (8.0.0 release)
  • Updated query, changed from:

    sequence by host.id with maxspan=5s [process where event.type in
    ("start", "process_started", "info") and process.name ==
    "com.apple.foundation.UserScriptService"] by process.pid [process
    where event.type in ("start", "process_started") and process.name in
    ("osascript", "sh")] by process.parent.pid
Version 3 (7.14.0 release)
  • Updated query, changed from:

    sequence by host.id with maxspan=5s [process where event.type in
    ("start", "process_started", "info") and process.name ==
    "com.apple.foundation.UserScriptService"] by process.pid [process
    where event.type in ("start", "process_started") and process.name in
    ("osascript", "sh")] by process.ppid
Version 2 (7.12.0 release)
  • Formatting only