Access to Keychain Credentials Directories

edit

Adversaries may collect the keychain storage data from a system to acquire credentials. Keychains are the built-in way for macOS to keep track of users' passwords and credentials for many services and features such as WiFi passwords, websites, secure notes and certificates.

Rule type: eql

Rule indices:

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

Severity: high

Risk score: 73

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
  • Credential Access

Version: 8 (version history)

Added (Elastic Stack release): 7.10.0

Last modified (Elastic Stack release): 8.4.0

Rule authors: Elastic

Rule license: Elastic License v2

Investigation guide

edit

Rule query

edit
process where event.type in ("start", "process_started") and
process.args : ( "/Users/*/Library/Keychains/*",
"/Library/Keychains/*", "/Network/Library/Keychains/*",
"System.keychain", "login.keychain-db", "login.keychain"
) and not process.args : ("find-certificate",
"add-trusted-cert", "set-keychain-settings",
"delete-certificate",
"/Users/*/Library/Keychains/openvpn.keychain-db",
"show-keychain-info", "lock-keychain",
"set-key-partition-list", "import",
"find-identity") and not process.parent.executable : (
"/Applications/OpenVPN Connect/OpenVPN
Connect.app/Contents/MacOS/OpenVPN Connect",
"/Applications/Microsoft Defender.app/Contents/MacOS/wdavdaemon_enterp
rise.app/Contents/MacOS/wdavdaemon_enterprise",
"/opt/jc/bin/jumpcloud-agent" ) and not process.executable :
"/opt/jc/bin/jumpcloud-agent"

Threat mapping

edit

Framework: MITRE ATT&CKTM

Rule version history

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

    process where event.type in ("start", "process_started") and
    process.args : ( "/Users/*/Library/Keychains/*",
    "/Library/Keychains/*", "/Network/Library/Keychains/*",
    "System.keychain", "login.keychain-db", "login.keychain"
    ) and not process.args : ("find-certificate",
    "add-trusted-cert", "set-keychain-settings",
    "delete-certificate",
    "/Users/*/Library/Keychains/openvpn.keychain-db",
    "show-keychain-info", "lock-keychain",
    "set-key-partition-list", "import",
    "find-identity") and not process.parent.executable :
    "/Applications/OpenVPN Connect/OpenVPN
    Connect.app/Contents/MacOS/OpenVPN Connect"
Version 6 (8.2.0 release)
  • Formatting only
Version 5 (7.13.0 release)
  • Updated query, changed from:

    process where event.type in ("start", "process_started") and
    process.args : ( "/Users/*/Library/Keychains/*",
    "/Library/Keychains/*", "/Network/Library/Keychains/*",
    "System.keychain", "login.keychain-db", "login.keychain"
    )
Version 4 (7.12.0 release)
  • Rule name changed from: Compression of Keychain Credentials Directories
  • Updated query, changed from:

    event.category:process and event.type:(start or process_started) and
    process.name:(zip or tar or gzip or 7za or hdiutil) and
    process.args:("/Library/Keychains/" or "/Network/Library/Keychains/"
    or "~/Library/Keychains/")
Version 3 (7.11.2 release)
  • Formatting only
Version 2 (7.11.0 release)
  • Formatting only