Elastic Defend high stable eql
Initial Access via macOS Installer Package
Identifies when a macOS installer package is executed followed by the execution of a utility that's commonly used by attackers when downloading a payload, establishing persistence, profiling an endpoint, or decompressing/decoding a file before execution. An attacker may configure an installer package to download an additional payload or malware for execution to gain initial access or establish persistence on an endpoint.
Detection Logic
sequence with maxspan=1m
[process where event.action == "exec" and process.name in ("installer", "package_script_service") and not
process.args like~
("/Library/Application Support/JAMF/Downloads/*",
"/tmp/KSInstallAction.*",
"/tmp/FLEXnet",
"./Epson Scanner Monitor.pkg",
"./Epson Event Manager.pkg",
"./Epson Scanner ICA Driver.pkg",
"/tmp/PKInstallSandbox.*/Scripts/com.epson.pkg.eventmanager.*/Epson Scanner Monitor.pkg",
"/Library/Addigy/ansible/packages/TeamViewer Host */TeamViewer_Host.pkg") and not
process.parent.executable like~ ("/usr/local/ltechagent/ltupdate",
"/sbin/launchd",
"/Users/*/Library/Caches/*",
"/Library/PrivilegedHelperTools/*",
"/Applications/Epson Software/EPSON Software Updater.app/Contents/MacOS/EPSON Software Updater",
"/private/var/folders/*/download/ARMDCHammer") and not
process.Ext.effective_parent.executable in ("/usr/local/jamf/bin/jamf",
"/Library/Intune/Microsoft Intune Agent.app/Contents/MacOS/IntuneMdmDaemon",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.app/Contents/MacOS/JamfDaemon",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfManagementService.app/Contents/MacOS/JamfManagementService",
"/Volumes/Fiery Software Manager/Fiery Software Manager.app/Contents/MacOS/Fiery Software Manager")]
[process where event.action in ("exec", "fork") and
// Descendant of macOS installer process
descendant of [
process where event.action == "exec" and
process.name in ("Installer", "package_script_service") and not
process.args like~
("/Library/Application Support/JAMF/Downloads/*",
"/tmp/KSInstallAction.*",
"/tmp/PKInstallSandbox.*/Scripts/com.epson.pkg.eventmanager.*/Epson Scanner Monitor.pkg",
"./Epson Scanner Monitor.pkg",
"/tmp/FLEXnet",
"/Library/Preferences/com.epson.Epson Scan OCR Component Pro.XmlType.UnInstallList.plist",
"./Epson Event Manager.pkg",
"./Epson Scanner ICA Driver.pkg",
"/Library/Addigy/ansible/packages/TeamViewer Host */TeamViewer_Host.pkg") and not
process.parent.executable like~
("/usr/local/ltechagent/ltupdate",
"/sbin/launchd",
"/Users/*/Library/Caches/*",
"/Applications/Epson Software/EPSON Software Updater.app/Contents/MacOS/EPSON Software Updater",
"/Library/PrivilegedHelperTools/*",
"/private/var/folders/*/download/ARMDCHammer") and not
process.Ext.effective_parent.executable in ("/usr/local/jamf/bin/jamf",
"/Library/Intune/Microsoft Intune Agent.app/Contents/MacOS/IntuneMdmDaemon",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.app/Contents/MacOS/JamfDaemon",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfManagementService.app/Contents/MacOS/JamfManagementService",
"/Volumes/Mac_User_SW/Fiery Master Installer.app/Contents/MacOS/Fiery Master Installer",
"/Volumes/Fiery Software Manager/Fiery Software Manager.app/Contents/MacOS/Fiery Software Manager")
] and
(
// curl scope limited to silver-sparrows to reduce noise
(process.name in ("curl", "nscurl") and process.command_line : ("*.amazonaws.com*",
"*.cloudfront.net*",
"*raw.githubusercontent.com*")) or
// No hang up executed with a bash command
(process.name == "nohup" and process.command_line : "* &") or
// Open SSL used to encrypt or encode/decode data
(process.name == "openssl" and process.args : ("-base64", "-enc")) or
// Base64 used to decode data
(process.name == "base64" and process.args : "-d") or
// chmod used to make files readable, writable and executable by all users
(process.name == "chmod" and process.args : ("+x", "a+x", "0777", "755", "777") and process.args : "/tmp/*" and
not process.args : ("/tmp/com.adobe.acrobat.DC", "/tmp/FLEXnet")) or
// xattr used to change extended attributes for a file
(process.name == "xattr" and ((process.args : "com.apple.quarantine" and
process.args : ("-d", "-w", "-?d", "-?w")) or
(process.args == "-c")) and process.args : "/tmp/*") or
(process.name == "touch" and process.args : "/tmp/*") or
(process.name in ("bash", "sh", "zsh") and process.args == "-c" and process.args : ("*/bin/curl*.amazonaws.com*",
"*/bin/curl*.cloudfront.net*",
"*/bin/curl*raw.githubusercontent.com*",
"*/bin/osascript*",
"*/bin/wget*",
"*/bin/chmod +x*",
"*/bin/plutil*-convert*",
"*/bin/openssl*-enc*",
"*/bin/openssl*-base64*",
"*/bin/base64*-d*",
"*/bin/xattr*com.apple.quarantine*",
"*/bin/touch /tmp/*"))
) and
not process.parent.executable : ("/sbin/launchd",
"/Users/*/Library/Caches/*",
"/Library/PrivilegedHelperTools/*",
"/private/var/folders/*/download/ARMDCHammer") and not
process.Ext.effective_parent.executable in ("/Applications/Epson Software/EPSON Software Updater.app/Contents/MacOS/EPSON Software Updater",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.app/Contents/MacOS/JamfDaemon",
"/Volumes/Mac_User_SW/Fiery Master Installer.app/Contents/MacOS/Fiery Master Installer",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfManagementService.app/Contents/MacOS/JamfManagementService",
"/Volumes/Fiery Software Manager/Fiery Software Manager.app/Contents/MacOS/Fiery Software Manager",
"/usr/local/jamf/bin/jamf")] Field Validations
Loading…
Comments (0)
Loading comments...