This documentation contains work-in-progress information for future Elastic Stack and Cloud releases. Use the version selector to view supported release docs. It also contains some Elastic Cloud serverless information. Check out our serverless docs for more details.
Persistence via Login or Logout Hook
editPersistence via Login or Logout Hook
editIdentifies use of the Defaults command to install a login or logoff hook in MacOS. An adversary may abuse this capability to establish persistence in an environment by inserting code to be executed at login or logout.
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
- Persistence
Version: 100 (version history)
Added (Elastic Stack release): 7.11.0
Last modified (Elastic Stack release): 8.5.0
Rule authors: Elastic
Rule license: Elastic License v2
Investigation guide
editRule query
editprocess where event.type == "start" and process.name == "defaults" and process.args == "write" and process.args in ("LoginHook", "LogoutHook") and not process.args : ( "Support/JAMF/ManagementFrameworkScripts/logouthook.sh", "Support/JAMF/ManagementFrameworkScripts/loginhook.sh", "/Library/Application Support/JAMF/ManagementFrameworkScripts/logouthook.sh", "/Library/Application Support/JAMF/ManagementFrameworkScripts/loginhook.sh" )
Threat mapping
editFramework: MITRE ATT&CKTM
-
Tactic:
- Name: Persistence
- ID: TA0003
- Reference URL: https://attack.mitre.org/tactics/TA0003/
-
Technique:
- Name: Boot or Logon Initialization Scripts
- ID: T1037
- Reference URL: https://attack.mitre.org/techniques/T1037/
Rule version history
edit- Version 100 (8.5.0 release)
-
- Formatting only
- Version 7 (8.4.0 release)
-
- Formatting only
- Version 5 (8.2.0 release)
-
- Formatting only
- Version 4 (7.13.0 release)
-
-
Updated query, changed from:
process where event.type in ("start", "process_started") and process.name == "defaults" and process.args == "write" and process.args in ("LoginHook", "LogoutHook")
-
- Version 3 (7.12.0 release)
-
- Formatting only
- Version 2 (7.11.2 release)
-
- Formatting only