Detection rules › Sigma

macOS ESF Launch Persistence Creation

Status
experimental
Severity
high
Log source
product macos, service endpointsecurity
Author
Eric Brown - Nebulock, Inc.
Source
github.com/Nebulock-Inc/macos-coresigma

Detect creation of launchd persistence files in LaunchAgents/LaunchDaemons.

MITRE ATT&CK coverage

TacticTechniques
PersistenceT1543 Create or Modify System Process

Rule body yaml

title: macOS ESF Launch Persistence Creation
id: a2f1e7f3-2a5b-4d17-8a9f-60a6b7b0a09f
status: experimental
description: Detect creation of launchd persistence files in LaunchAgents/LaunchDaemons.
author: Eric Brown - Nebulock, Inc.
date: 2025-10-29
logsource:
  product: macos
  service: endpointsecurity
level: high
detection:
  selection_evt:
    esf.event_type: 13
    event.action: create
  selection_path:
    TargetFilename|startswith:
    - /Library/LaunchDaemons/
    - /Library/LaunchAgents/
    - /System/Library/LaunchDaemons/
  selection_ext:
    TargetFilename|endswith: .plist
  condition: selection_evt and selection_path and selection_ext
falsepositives:
- legitimate software installations
modified: 2025/01/15

Stages and Predicates

Stage 0: condition

selection_evt and selection_path and selection_ext

Stage 1: selection_evt

selection_evt:
  esf.event_type: 13
  event.action: create

Stage 2: selection_path

selection_path:
  TargetFilename|startswith:
  - /Library/LaunchDaemons/
  - /Library/LaunchAgents/
  - /System/Library/LaunchDaemons/

Stage 3: selection_ext

selection_ext:
  TargetFilename|endswith: .plist

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
TargetFilenameends_with
  • .plist
TargetFilenamestarts_with
  • /Library/LaunchAgents/
  • /Library/LaunchDaemons/
  • /System/Library/LaunchDaemons/
esf.event_typeeq
  • 13
event.actioneq
  • create