|
1 | 1 | name: Excessive Usage Of Cacls App
|
2 | 2 | id: 0bdf6092-af17-11eb-939a-acde48001122
|
3 |
| -version: 8 |
4 |
| -date: '2025-05-02' |
| 3 | +version: 9 |
| 4 | +date: '2025-06-17' |
5 | 5 | author: Teoderick Contreras, Splunk
|
6 | 6 | status: production
|
7 | 7 | type: Anomaly
|
8 |
| -description: The following analytic identifies excessive usage of `cacls.exe`, `xcacls.exe`, |
9 |
| - or `icacls.exe` to change file or folder permissions. It leverages data from Endpoint |
10 |
| - Detection and Response (EDR) agents, focusing on process names and command-line |
11 |
| - executions. This activity is significant as it may indicate an adversary attempting |
12 |
| - to restrict access to malware components or artifacts on a compromised system. If |
13 |
| - confirmed malicious, this behavior could prevent users from deleting or accessing |
| 8 | +description: | |
| 9 | + The following analytic identifies excessive usage of `cacls.exe`, `xcacls.exe`, |
| 10 | + or `icacls.exe` to change file or folder permissions. |
| 11 | + It looks for 10 or more execution of the aforementioned processes in the span of 1 minute. |
| 12 | + It leverages data from Endpoint Detection and Response (EDR) agents, |
| 13 | + focusing on process names and command-line executions. |
| 14 | + This activity is significant as it may indicate an adversary attempting |
| 15 | + to restrict access to malware components or artifacts on a compromised system. |
| 16 | + If confirmed malicious, this behavior could prevent users from deleting or accessing |
14 | 17 | critical files, aiding in the persistence and concealment of malicious activities.
|
15 | 18 | data_source:
|
16 | 19 | - Sysmon EventID 1
|
17 | 20 | - Windows Event Log Security 4688
|
18 | 21 | - CrowdStrike ProcessRollup2
|
19 |
| -search: '| tstats `security_content_summariesonly` values(Processes.dest) as dest |
20 |
| - values(Processes.user) as user min(_time) as firstTime max(_time) as lastTime values(Processes.action) |
21 |
| - as action values(Processes.original_file_name) as original_file_name values(Processes.parent_process_exec) |
22 |
| - as parent_process_exec values(Processes.parent_process_guid) as parent_process_guid |
23 |
| - values(Processes.parent_process_id) as parent_process_id values(Processes.parent_process_path) |
24 |
| - as parent_process_path values(Processes.process) as process values(Processes.process_exec) |
25 |
| - as process_exec values(Processes.process_guid) as process_guid values(Processes.process_hash) |
26 |
| - as process_hash values(Processes.process_id) as process_id values(Processes.process_integrity_level) |
27 |
| - as process_integrity_level values(Processes.process_name) as process_name values(Processes.process_path) |
28 |
| - as process_path values(Processes.user_id) as user_id values(Processes.vendor_product) |
29 |
| - as vendor_product count from datamodel=Endpoint.Processes where Processes.process_name |
30 |
| - = "cacls.exe" OR Processes.process_name = "icacls.exe" OR Processes.process_name |
31 |
| - = "XCACLS.exe" by Processes.parent_process_name Processes.parent_process Processes.dest |
32 |
| - Processes.user _time span=1m | where count >=10 | `drop_dm_object_name(Processes)` |
33 |
| - | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `excessive_usage_of_cacls_app_filter`' |
34 |
| -how_to_implement: The detection is based on data that originates from Endpoint Detection |
| 22 | +search: | |
| 23 | + | tstats `security_content_summariesonly` |
| 24 | + min(_time) as firstTime |
| 25 | + max(_time) as lastTime |
| 26 | + values(Processes.dest) as dest |
| 27 | + values(Processes.user) as user |
| 28 | + values(Processes.action) as action |
| 29 | + values(Processes.original_file_name) as original_file_name |
| 30 | + values(Processes.parent_process_exec) as parent_process_exec |
| 31 | + values(Processes.parent_process_guid) as parent_process_guid |
| 32 | + values(Processes.parent_process_id) as parent_process_id |
| 33 | + values(Processes.parent_process_path) as parent_process_path |
| 34 | + values(Processes.process) as process |
| 35 | + values(Processes.process_exec) as process_exec |
| 36 | + values(Processes.process_guid) as process_guid |
| 37 | + values(Processes.process_hash) as process_hash |
| 38 | + values(Processes.process_id) as process_id |
| 39 | + values(Processes.process_integrity_level) as process_integrity_level |
| 40 | + values(Processes.process_name) as process_name |
| 41 | + values(Processes.process_path) as process_path |
| 42 | + values(Processes.user_id) as user_id |
| 43 | + values(Processes.vendor_product) as vendor_product count |
| 44 | + from datamodel=Endpoint.Processes where |
| 45 | + Processes.process_name IN( "icacls.exe", "cacls.exe", "xcacls.exe") |
| 46 | + by Processes.parent_process_name Processes.parent_process Processes.dest Processes.user _time span=1m |
| 47 | + | where count >=10 |
| 48 | + | `drop_dm_object_name(Processes)` |
| 49 | + | `security_content_ctime(firstTime)` |
| 50 | + | `security_content_ctime(lastTime)` |
| 51 | + | `excessive_usage_of_cacls_app_filter` |
| 52 | +how_to_implement: | |
| 53 | + The detection is based on data that originates from Endpoint Detection |
35 | 54 | and Response (EDR) agents. These agents are designed to provide security-related
|
36 | 55 | telemetry from the endpoints where the agent is installed. To implement this search,
|
37 | 56 | you must ingest logs that contain the process GUID, process name, and parent process.
|
|
0 commit comments