Enumeration of Users or Groups via Built-in Commandsedit

Identifies the execution of macOS built-in commands related to account or group enumeration.

Rule type: eql

Rule indices:

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

Severity: low

Risk score: 21

Runs every: 5 minutes

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

Maximum alerts per execution: 100

Tags:

  • Elastic
  • Host
  • macOS
  • Threat Detection
  • Discovery

Version: 3 (version history)

Added (Elastic Stack release): 7.12.0

Last modified (Elastic Stack release): 8.2.0

Rule authors: Elastic

Rule license: Elastic License v2

Investigation guideedit

## Config

If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2, events will not define `event.ingested` and default fallback for EQL rules was not added until 8.2, so you will need to add a custom pipeline to populate `event.ingested` to @timestamp for this rule to work.

Rule queryedit

process where event.type in ("start", "process_started") and not
process.parent.executable :
("/Applications/NoMAD.app/Contents/MacOS/NoMAD",
"/Applications/ZoomPresence.app/Contents/MacOS/ZoomPresence",
"/Applications/Sourcetree.app/Contents/MacOS/Sourcetree",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.
app/Contents/MacOS/JamfDaemon", "/Applications/Jamf
Connect.app/Contents/MacOS/Jamf Connect",
"/usr/local/jamf/bin/jamf" ) and process.name : ("ldapsearch",
"dsmemberutil") or (process.name : "dscl" and process.args :
("read", "-read", "list", "-list", "ls", "search", "-search") and
process.args : ("/Active Directory/*", "/Users*", "/Groups*"))

Threat mappingedit

Framework: MITRE ATT&CKTM

Rule version historyedit

Version 3 (8.2.0 release)
  • Updated query, changed from:

    process where event.type in ("start", "process_started") and not
    process.parent.executable :
    ("/Applications/NoMAD.app/Contents/MacOS/NoMAD",
    "/Applications/ZoomPresence.app/Contents/MacOS/ZoomPresence",
    "/Applications/Sourcetree.app/Contents/MacOS/Sourcetree",
    "/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.
    app/Contents/MacOS/JamfDaemon", "/usr/local/jamf/bin/jamf" )
    and process.name : ("ldapsearch", "dsmemberutil") or
    (process.name : "dscl" and process.args : ("read", "-read",
    "list", "-list", "ls", "search", "-search") and process.args :
    ("/Active Directory/*", "/Users*", "/Groups*"))
Version 2 (7.13.0 release)
  • Updated query, changed from:

    process where event.type in ("start", "process_started") and not
    process.parent.executable :
    ("/Applications/NoMAD.app/Contents/MacOS/NoMAD",
    "/Applications/ZoomPresence.app/Contents/MacOS/ZoomPresence") and
    process.name : ("ldapsearch", "dsmemberutil") or (process.name :
    "dscl" and process.args : ("read", "-read", "list", "-list",
    "ls", "search", "-search") and process.args : ("/Active
    Directory/*", "/Users*", "/Groups*"))