Detection rules › Sigma

MacOS Scripting Interpreter AppleScript

Status
test
Severity
medium
Log source
product macos, category process_creation
Author
Alejandro Ortuno, oscd.community
Source
github.com/SigmaHQ/sigma

Detects execution of AppleScript of the macOS scripting language AppleScript.

MITRE ATT&CK coverage

Event coverage

ProviderEventTitle
ESFexecProcess Execution (Notify)

Rule body yaml

title: MacOS Scripting Interpreter AppleScript
id: 1bc2e6c5-0885-472b-bed6-be5ea8eace55
status: test
description: Detects execution of AppleScript of the macOS scripting language AppleScript.
references:
    - https://github.com/redcanaryco/atomic-red-team/blob/f339e7da7d05f6057fdfcdd3742bfcf365fee2a9/atomics/T1059.002/T1059.002.md
    - https://redcanary.com/blog/applescript/
author: Alejandro Ortuno, oscd.community
date: 2020-10-21
modified: 2026-05-21
tags:
    - attack.execution
    - attack.t1059.002
logsource:
    category: process_creation
    product: macos
detection:
    selection:
        Image|endswith: '/osascript'
        CommandLine|contains:
            - ' -e '
            - '.scpt'
            - '.js'
    filter_optional_opencode:
        # OpenCode uses osascript to handle copying text from the TUI on MacOS devices. See https://github.com/anomalyco/opencode/blob/ca723f1cbc6fc4244ae57e61e9de8c4e37380ed4/packages/opencode/src/cli/cmd/tui/util/clipboard.ts#L65 for reference.
        ParentImage|endswith: 'opencode'
        CommandLine|contains|all:
            - 'osascript'
            - ' -e '
            - 'set imageData to the clipboard'
            - 'set fileRef'
    condition: selection and not 1 of filter_optional_*
falsepositives:
    - Application installers might contain scripts as part of the installation process.
level: medium

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_optional_*

Stage 1: selection

selection:
    Image|endswith: '/osascript'
    CommandLine|contains:
        - ' -e '
        - '.scpt'
        - '.js'

Stage 2: not filter_optional_opencode

filter_optional_opencode:
    ParentImage|endswith: 'opencode'
    CommandLine|contains|all:
        - 'osascript'
        - ' -e '
        - 'set imageData to the clipboard'
        - 'set fileRef'

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
CommandLinematch -e
CommandLinematchosascript
CommandLinematchset fileRef
CommandLinematchset imageData to the clipboard
ParentImageends_withopencode

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
CommandLinematch
  • -e
  • .js
  • .scpt
Imageends_with
  • /osascript