From 5d1a8826b14cce12d70f865332375a8b7926c0c6 Mon Sep 17 00:00:00 2001 From: d1vious Date: Sat, 11 Dec 2021 12:02:37 -0500 Subject: [PATCH 01/53] added story --- stories/log4shell_cve_2021_44228.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 stories/log4shell_cve_2021_44228.yml diff --git a/stories/log4shell_cve_2021_44228.yml b/stories/log4shell_cve_2021_44228.yml new file mode 100644 index 0000000000..6cddc8063c --- /dev/null +++ b/stories/log4shell_cve_2021_44228.yml @@ -0,0 +1,23 @@ +name: Log4Shell CVE-2021-44228 +id: b4453928-5a98-11ec-afcd-8de10b48fc52 +version: 1 +date: '2021-12-11' +author: Jose Hernandez +description: Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and extremely uibiquitous logging framework for Java. The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker-controlled servers — and we anticipate that most apps using the Log4j library will meet this condition. +narrative: In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat tak by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user-input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system. +references: +- https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/ +- https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j +- https://www.crowdstrike.com/blog/log4j2-vulnerability-analysis-and-mitigation-recommendations/ +- https://www.lunasec.io/docs/blog/log4j-zero-day/ +- https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + category: + - Adversary Tactics + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + usecase: Application Security From f4de314e4e495be95b182946004222a3456c25a2 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 07:11:07 -0700 Subject: [PATCH 02/53] wget curl --- .../curl_download_and_bash_execution.yml | 74 +++++++++++++++++++ .../wget_download_and_bash_execution.yml | 74 +++++++++++++++++++ stories/log4shell_cve_2021_44228.yml | 17 +++-- .../curl_download_and_bash_execution.test.yml | 12 +++ .../wget_download_and_bash_execution.test.yml | 12 +++ 5 files changed, 181 insertions(+), 8 deletions(-) create mode 100644 detections/endpoint/curl_download_and_bash_execution.yml create mode 100644 detections/endpoint/wget_download_and_bash_execution.yml create mode 100644 tests/endpoint/curl_download_and_bash_execution.test.yml create mode 100644 tests/endpoint/wget_download_and_bash_execution.test.yml diff --git a/detections/endpoint/curl_download_and_bash_execution.yml b/detections/endpoint/curl_download_and_bash_execution.yml new file mode 100644 index 0000000000..6a4bd2b3cf --- /dev/null +++ b/detections/endpoint/curl_download_and_bash_execution.yml @@ -0,0 +1,74 @@ +name: Curl Download and Bash Execution +id: 900bc324-59f3-11ec-9fb4-acde48001122 +version: 1 +date: '2021-12-10' +author: Michael Haag, Splunk +type: TTP +datamodel: +- Endpoint +description: The following analytic identifies the use of curl on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) + as lastTime from datamodel=Endpoint.Processes where Processes.process_name=curl + (Processes.process="*-s *") OR (Processes.process="*|*" AND Processes.process="*bash*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name + Processes.process Processes.process_id Processes.parent_process_id + | `drop_dm_object_name(Processes)` + | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` + | `curl_download_and_bash_execution_filter`' +how_to_implement: To successfully implement this search, you need to be ingesting + logs with the process name, parent process, and command-line executions from your + endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. + If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. + Add parent process name (Processes.parent_process_name) as needed to filter. +known_false_positives: False positives should be limited, however filtering may be required. +references: + - https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java + - https://www.lunasec.io/docs/blog/log4j-zero-day/ + - https://gist.github.com/nathanqthai/01808c569903f41a52e7e7b575caa890 +tags: + analytic_story: + - Ingress Tool Transfer + - Log4Shell CVE-2021-44228 + dataset: [] + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1105 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - Processes.dest + - Processes.user + - Processes.parent_process_name #parent process name + - Processes.parent_process #parent cmdline + - Processes.process_name #process name + - Processes.process #process cmdline + - Processes.process_id + - Processes.parent_process_path + - Processes.process_path + - Processes.parent_process_id + security_domain: endpoint + impact: 80 + confidence: 100 + # (impact * confidence)/100 + risk_score: 80 + context: + - Source:Endpoint + - Stage:Defense Evasion + message: An instance of $process_name$ was identified on endpoint $dest$ attempting to download a remote file and run it with bash. + observable: + - name: user + type: User + role: + - Victim + - name: dest + type: Hostname + role: + - Victim + - name: process_name + type: Process + role: + - Child Process \ No newline at end of file diff --git a/detections/endpoint/wget_download_and_bash_execution.yml b/detections/endpoint/wget_download_and_bash_execution.yml new file mode 100644 index 0000000000..cf509f2f11 --- /dev/null +++ b/detections/endpoint/wget_download_and_bash_execution.yml @@ -0,0 +1,74 @@ +name: Wget Download and Bash Execution +id: 35682718-5a85-11ec-b8f7-acde48001122 +version: 1 +date: '2021-12-11' +author: Michael Haag, Splunk +type: TTP +datamodel: +- Endpoint +description: The following analytic identifies the use of wget on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) + as lastTime from datamodel=Endpoint.Processes where Processes.process_name=wget + (Processes.process="*-q *" OR Processes.process="*--quiet*" AND Processes.process="*-O- *") OR (Processes.process="*|*" AND Processes.process="*bash*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name + Processes.process Processes.process_id Processes.parent_process_id + | `drop_dm_object_name(Processes)` + | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` + | `wget_download_and_bash_execution_filter`' +how_to_implement: To successfully implement this search, you need to be ingesting + logs with the process name, parent process, and command-line executions from your + endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. + If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. + Add parent process name (Processes.parent_process_name) as needed to filter. +known_false_positives: False positives should be limited, however filtering may be required. +references: + - https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java + - https://www.lunasec.io/docs/blog/log4j-zero-day/ + - https://gist.github.com/nathanqthai/01808c569903f41a52e7e7b575caa890 +tags: + analytic_story: + - Ingress Tool Transfer + - Log4Shell CVE-2021-44228 + dataset: [] + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1105 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - Processes.dest + - Processes.user + - Processes.parent_process_name #parent process name + - Processes.parent_process #parent cmdline + - Processes.process_name #process name + - Processes.process #process cmdline + - Processes.process_id + - Processes.parent_process_path + - Processes.process_path + - Processes.parent_process_id + security_domain: endpoint + impact: 80 + confidence: 100 + # (impact * confidence)/100 + risk_score: 80 + context: + - Source:Endpoint + - Stage:Defense Evasion + message: An instance of $process_name$ was identified on endpoint $dest$ attempting to download a remote file and run it with bash. + observable: + - name: user + type: User + role: + - Victim + - name: dest + type: Hostname + role: + - Victim + - name: process_name + type: Process + role: + - Child Process \ No newline at end of file diff --git a/stories/log4shell_cve_2021_44228.yml b/stories/log4shell_cve_2021_44228.yml index 6cddc8063c..231bc37335 100644 --- a/stories/log4shell_cve_2021_44228.yml +++ b/stories/log4shell_cve_2021_44228.yml @@ -3,16 +3,17 @@ id: b4453928-5a98-11ec-afcd-8de10b48fc52 version: 1 date: '2021-12-11' author: Jose Hernandez -description: Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and extremely uibiquitous logging framework for Java. The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker-controlled servers — and we anticipate that most apps using the Log4j library will meet this condition. -narrative: In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat tak by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user-input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system. +description: 'Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and extremely uibiquitous logging framework for Java. + The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker controlled servers and we anticipate that most apps using the Log4j library will meet this condition.' +narrative: 'In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat tak by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user-input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system.' references: -- https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/ -- https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j -- https://www.crowdstrike.com/blog/log4j2-vulnerability-analysis-and-mitigation-recommendations/ -- https://www.lunasec.io/docs/blog/log4j-zero-day/ -- https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html + - https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/ + - https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j + - https://www.crowdstrike.com/blog/log4j2-vulnerability-analysis-and-mitigation-recommendations/ + - https://www.lunasec.io/docs/blog/log4j-zero-day/ + - https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html tags: - analytic_story: + analytic_story: - Log4Shell CVE-2021-44228 category: - Adversary Tactics diff --git a/tests/endpoint/curl_download_and_bash_execution.test.yml b/tests/endpoint/curl_download_and_bash_execution.test.yml new file mode 100644 index 0000000000..73fd93dabf --- /dev/null +++ b/tests/endpoint/curl_download_and_bash_execution.test.yml @@ -0,0 +1,12 @@ +name: Curl Download and Bash Execution Unit Test +tests: +- name: Curl Download and Bash Execution + file: endpoint/curl_download_and_bash_execution.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: linux-sysmon_curlwget.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log + source: Syslog:Linux-Sysmon/Operational + sourcetype: sysmon_linux \ No newline at end of file diff --git a/tests/endpoint/wget_download_and_bash_execution.test.yml b/tests/endpoint/wget_download_and_bash_execution.test.yml new file mode 100644 index 0000000000..d261532861 --- /dev/null +++ b/tests/endpoint/wget_download_and_bash_execution.test.yml @@ -0,0 +1,12 @@ +name: Wget Download and Bash Execution Unit Test +tests: +- name: Wget Download and Bash Execution + file: endpoint/wget_download_and_bash_execution.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: linux-sysmon_curlwget.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log + source: Syslog:Linux-Sysmon/Operational + sourcetype: sysmon_linux \ No newline at end of file From d64ce21b4887a079700826f8fb3da3727931ce2f Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 07:20:33 -0700 Subject: [PATCH 03/53] bagged and tagged --- .../endpoint/any_powershell_downloadfile.yml | 1 + ...cmd_carry_out_string_command_parameter.yml | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/detections/endpoint/any_powershell_downloadfile.yml b/detections/endpoint/any_powershell_downloadfile.yml index c033e1f993..924efa5169 100644 --- a/detections/endpoint/any_powershell_downloadfile.yml +++ b/detections/endpoint/any_powershell_downloadfile.yml @@ -33,6 +33,7 @@ tags: analytic_story: - Malicious PowerShell - Ingress Tool Transfer + - Log4Shell CVE-2021-44228 automated_detection_testing: passed confidence: 70 context: diff --git a/detections/endpoint/cmd_carry_out_string_command_parameter.yml b/detections/endpoint/cmd_carry_out_string_command_parameter.yml index 04dee0f6bd..6a8f99d82f 100644 --- a/detections/endpoint/cmd_carry_out_string_command_parameter.yml +++ b/detections/endpoint/cmd_carry_out_string_command_parameter.yml @@ -1,16 +1,17 @@ name: CMD Carry Out String Command Parameter id: 54a6ed00-3256-11ec-b031-acde48001122 -version: 1 -date: '2021-10-21' +version: 2 +date: '2021-12-13' author: Teoderick Contreras, Splunk, Bhavin Patel, Splunk type: Hunting datamodel: - Endpoint -description: This search looks for command-line arguments where `cmd.exe /c` is used - to execute a program. This technique is commonly seen in adversaries and malware - to execute batch command using different shell like powershell or different process - other than cmd.exe. This is a good hunting query for suspicious commandline made - by a script or relative process execute it. +description: 'The following analytic identifies command-line arguments where `cmd.exe /c` is used + to execute a program. `cmd /c` is used to run commands in MS-DOS and terminate after + command or process completion. This technique is commonly seen in adversaries and malware + to execute batch command using different shell like PowerShell or different process + other than `cmd.exe`. This is a good hunting query for suspicious command-line made + by a script or relative process execute it.' search: '| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where `process_cmd` AND Processes.process="* /c *" by Processes.dest Processes.user Processes.parent_process Processes.process_name @@ -21,12 +22,14 @@ how_to_implement: To successfully implement this search, you need to be ingestin logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA. -known_false_positives: unknown +known_false_positives: False positives may be high based on legitimate scripted code in any environment. + Filter as needed. references: - https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/ tags: analytic_story: - IcedID + - Log4Shell CVE-2021-44228 automated_detection_testing: passed confidence: 50 context: @@ -37,7 +40,7 @@ tags: impact: 60 kill_chain_phases: - Exploitation - message: $process_name$ with commandline $process$ in $dest$ + message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ attempting spawn a new process. mitre_attack_id: - T1059.003 - T1059 @@ -66,4 +69,4 @@ tags: - Processes.process_id - Processes.parent_process_id risk_score: 30 - security_domain: endpoint + security_domain: endpoint \ No newline at end of file From 2f2e16b8a65e509c5c34e230a4f43d6c0a76c56a Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 11:37:49 -0700 Subject: [PATCH 04/53] Update malicious_powershell_process___connect_to_internet_with_hidden_window.yml --- ...rocess___connect_to_internet_with_hidden_window.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml b/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml index 85b83513f3..7d6560e222 100644 --- a/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml +++ b/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml @@ -29,15 +29,17 @@ how_to_implement: You must be ingesting data that records process activity from known_false_positives: Legitimate process can have this combination of command-line options, but it's not common. references: -- https://regexr.com/663rr -- https://github.com/redcanaryco/AtomicTestHarnesses/blob/master/TestHarnesses/T1059.001_PowerShell/OutPowerShellCommandLineParameter.ps1 -- https://ss64.com/ps/powershell.html -- https://twitter.com/M_haggis/status/1440758396534214658?s=20 + - https://regexr.com/663rr + - https://github.com/redcanaryco/AtomicTestHarnesses/blob/master/TestHarnesses/T1059.001_PowerShell/OutPowerShellCommandLineParameter.ps1 + - https://ss64.com/ps/powershell.html + - https://twitter.com/M_haggis/status/1440758396534214658?s=20 + - https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/ tags: analytic_story: - Malicious PowerShell - Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns - HAFNIUM Group + - Log4Shell CVE-2021-44228 asset_type: Endpoint automated_detection_testing: passed cis20: From f3b31c113b87f8292ae6d7c684b8b9502ad6c261 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 11:54:59 -0700 Subject: [PATCH 05/53] java Shells --- .../endpoint/linux_java_spawning_shell.yml | 74 +++++++++++++++++++ macros/linux_shells.yml | 4 + 2 files changed, 78 insertions(+) create mode 100644 detections/experimental/endpoint/linux_java_spawning_shell.yml create mode 100644 macros/linux_shells.yml diff --git a/detections/experimental/endpoint/linux_java_spawning_shell.yml b/detections/experimental/endpoint/linux_java_spawning_shell.yml new file mode 100644 index 0000000000..045f7dfbce --- /dev/null +++ b/detections/experimental/endpoint/linux_java_spawning_shell.yml @@ -0,0 +1,74 @@ +name: Linux Java Spawning Shell +id: 7b09db8a-5c20-11ec-9945-acde48001122 +version: 1 +date: '2021-12-13' +author: Michael Haag, Splunk +type: TTP +datamodel: +- Endpoint +description: The following analytic identifies the process name of Java spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). + The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". + Upon triage, review parallel processes and command-line arguments to determine legitimacy. +search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) + as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java + `linux_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name + Processes.process Processes.process_id Processes.parent_process_id + | `drop_dm_object_name(Processes)` + | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` + | `linux_java_spawning_shell_filter`' +how_to_implement: To successfully implement this search, you need to be ingesting + logs with the process name, parent process, and command-line executions from your + endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. + Ensure EDR product is mapping OS Linux to the datamodel properly. + Add any additional java process names for your environment to the analytic as needed. +known_false_positives: Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +references: + - https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/ +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + dataset: [] + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1190 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - Processes.dest + - Processes.user + - Processes.parent_process_name + - Processes.parent_process + - Processes.original_file_name + - Processes.process_name + - Processes.process + - Processes.process_id + - Processes.parent_process_path + - Processes.process_path + - Processes.parent_process_id + security_domain: endpoint + impact: 80 + confidence: 50 + # (impact * confidence)/100 + risk_score: 40 + context: + - Source:Endpoint + - Stage:Defense Evasion + message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ spawning a Linux shell, potentially indicative of exploitation. + observable: + - name: dest + type: Hostname + role: + - Victim + - name: parent_process_name + type: Parent Process + role: + - Parent Process + - name: process_name + type: Process + role: + - Child Process \ No newline at end of file diff --git a/macros/linux_shells.yml b/macros/linux_shells.yml new file mode 100644 index 0000000000..ac059e8c01 --- /dev/null +++ b/macros/linux_shells.yml @@ -0,0 +1,4 @@ +definition: (Processes.process_name IN ("sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell")) +description: customer specific splunk configurations(eg- index, source, sourcetype). + Replace the macro definition with configurations for your Splunk Environmnent. +name: linux_shells \ No newline at end of file From 71295432e3149717a04dff202a09d8affba030a8 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 13:01:45 -0700 Subject: [PATCH 06/53] Windows shells --- .../endpoint/linux_java_spawning_shell.yml | 7 +- .../endpoint/windows_java_spawning_shells.yml | 73 +++++++++++++++++++ macros/windows_shells.yml | 4 + 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 detections/experimental/endpoint/windows_java_spawning_shells.yml create mode 100644 macros/windows_shells.yml diff --git a/detections/experimental/endpoint/linux_java_spawning_shell.yml b/detections/experimental/endpoint/linux_java_spawning_shell.yml index 045f7dfbce..1e53542119 100644 --- a/detections/experimental/endpoint/linux_java_spawning_shell.yml +++ b/detections/experimental/endpoint/linux_java_spawning_shell.yml @@ -6,11 +6,11 @@ author: Michael Haag, Splunk type: TTP datamodel: - Endpoint -description: The following analytic identifies the process name of Java spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). +description: The following analytic identifies the process name of Java, Apache, or Tomcat spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". Upon triage, review parallel processes and command-line arguments to determine legitimacy. search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) - as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java + as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java OR Processes.parent_process_name=apache OR Processes.parent_process_name=tomcat `linux_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` @@ -24,7 +24,8 @@ how_to_implement: To successfully implement this search, you need to be ingestin Add any additional java process names for your environment to the analytic as needed. known_false_positives: Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. references: - - https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/ + - https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/ + - https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72 tags: analytic_story: - Log4Shell CVE-2021-44228 diff --git a/detections/experimental/endpoint/windows_java_spawning_shells.yml b/detections/experimental/endpoint/windows_java_spawning_shells.yml new file mode 100644 index 0000000000..3750566d38 --- /dev/null +++ b/detections/experimental/endpoint/windows_java_spawning_shells.yml @@ -0,0 +1,73 @@ +name: Windows Java Spawning Shells +id: 28c81306-5c47-11ec-bfea-acde48001122 +version: 1 +date: '2021-12-13' +author: Michael Haag, Splunk +type: TTP +datamodel: +- Endpoint +description: The following analytic identifies the process name of java.exe and w3wp.exe spawning a Windows shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). + The shells included in the macro are "cmd.exe", "powershell.exe". + Upon triage, review parallel processes and command-line arguments to determine legitimacy. +search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) + as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java.exe OR Processes.parent_process_name=w3wp.exe + `windows_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name + Processes.process Processes.process_id Processes.parent_process_id + | `drop_dm_object_name(Processes)` + | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` + | `windows_java_spawning_shells_filter`' +how_to_implement: To successfully implement this search, you need to be ingesting + logs with the process name, parent process, and command-line executions from your + endpoints. Restrict the analytic to publicly facing endpoints to reduce false positives. Add any additional identified web application process name to the query. Add any further Windows process names to the macro (ex. LOLBins) to further expand this query. +known_false_positives: Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +references: + - https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/ + - https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72 +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + dataset: [] + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1190 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - Processes.dest + - Processes.user + - Processes.parent_process_name + - Processes.parent_process + - Processes.original_file_name + - Processes.process_name + - Processes.process + - Processes.process_id + - Processes.parent_process_path + - Processes.process_path + - Processes.parent_process_id + security_domain: endpoint + impact: 80 + confidence: 50 + # (impact * confidence)/100 + risk_score: 40 + context: + - Source:Endpoint + - Stage:Defense Evasion + message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ spawning a Windows shell, potentially indicative of exploitation. + observable: + - name: dest + type: Hostname + role: + - Victim + - name: parent_process_name + type: Parent Process + role: + - Parent Process + - name: process_name + type: Process + role: + - Child Process \ No newline at end of file diff --git a/macros/windows_shells.yml b/macros/windows_shells.yml new file mode 100644 index 0000000000..956e4f12ab --- /dev/null +++ b/macros/windows_shells.yml @@ -0,0 +1,4 @@ +definition: (Processes.process_name=cmd.exe OR Processes.original_file_name=Cmd.Exe) +description: customer specific splunk configurations(eg- index, source, sourcetype). + Replace the macro definition with configurations for your Splunk Environmnent. +name: windows_shells \ No newline at end of file From 050bc8d8861da7a458a9dade4f758455bff14a13 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 13:32:27 -0700 Subject: [PATCH 07/53] :coffee: --- ...class_file_download_by_java_user_agent.yml | 65 +++++++++++++++++++ ..._file_download_by_java_user_agent.test.yml | 13 ++++ 2 files changed, 78 insertions(+) create mode 100644 detections/endpoint/java_class_file_download_by_java_user_agent.yml create mode 100644 tests/endpoint/java_class_file_download_by_java_user_agent.test.yml diff --git a/detections/endpoint/java_class_file_download_by_java_user_agent.yml b/detections/endpoint/java_class_file_download_by_java_user_agent.yml new file mode 100644 index 0000000000..f42d899148 --- /dev/null +++ b/detections/endpoint/java_class_file_download_by_java_user_agent.yml @@ -0,0 +1,65 @@ +name: Java Class File download by Java User Agent +id: 8281ce42-5c50-11ec-82d2-acde48001122 +version: 1 +date: '2021-12-13' +author: Michael Haag, Splunk +type: TTP +datamodel: + - Web +description: The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). +search: '| tstats count from datamodel=Web where + Web.http_user_agent="*Java*" Web.http_method="GET" Web.url="*.class*" + by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest + | `drop_dm_object_name("Web")` + | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` + | `java_class_file_download_by_java_user_agent_filter`' +how_to_implement: To successfully implement this search, you need to be ingesting + logs with the process name, parent process, and command-line executions from your + endpoints. Restrict the analytic to publicly facing endpoints to reduce false positives. Add any additional identified web application process name to the query. Add any further Windows process names to the macro (ex. LOLBins) to further expand this query. +known_false_positives: Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +references: + - https://arstechnica.com/information-technology/2021/12/as-log4shell-wreaks-havoc-payroll-service-reports-ransomware-attack/ +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + asset_type: Web Server + dataset: [] + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1190 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - Web.http_method + - Web.url + - Web.url_length + - Web.src + - Web.dest + - Web.http_user_agent + security_domain: network + impact: 80 + confidence: 50 + # (impact * confidence)/100 + risk_score: 40 + context: + - Source:Endpoint + - Stage:Defense Evasion + message: A Java user agent $http_user_agent$ was performing a $http_method$ to retrieve a remote class file. + observable: + - name: dest + type: Hostname + role: + - Victim + - name: http_user_agent + type: Other + role: + - other + - name: http_method + type: Other + role: + - other \ No newline at end of file diff --git a/tests/endpoint/java_class_file_download_by_java_user_agent.test.yml b/tests/endpoint/java_class_file_download_by_java_user_agent.test.yml new file mode 100644 index 0000000000..6d6ee22ffc --- /dev/null +++ b/tests/endpoint/java_class_file_download_by_java_user_agent.test.yml @@ -0,0 +1,13 @@ +name: Java Class File download by Java User Agent Unit Test +tests: +- name: Java Class File download by Java User Agent + file: endpoint/java_class_file_download_by_java_user_agent.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: java.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/java.log + source: stream:http + sourcetype: stream:http + From 28633f099aac7fafb7054e2a9713d8aa02823eba Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 13:35:20 -0700 Subject: [PATCH 08/53] Update java_class_file_download_by_java_user_agent.yml --- .../java_class_file_download_by_java_user_agent.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/detections/endpoint/java_class_file_download_by_java_user_agent.yml b/detections/endpoint/java_class_file_download_by_java_user_agent.yml index f42d899148..2c8d028096 100644 --- a/detections/endpoint/java_class_file_download_by_java_user_agent.yml +++ b/detections/endpoint/java_class_file_download_by_java_user_agent.yml @@ -14,10 +14,9 @@ search: '| tstats count from datamodel=Web where | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `java_class_file_download_by_java_user_agent_filter`' -how_to_implement: To successfully implement this search, you need to be ingesting - logs with the process name, parent process, and command-line executions from your - endpoints. Restrict the analytic to publicly facing endpoints to reduce false positives. Add any additional identified web application process name to the query. Add any further Windows process names to the macro (ex. LOLBins) to further expand this query. -known_false_positives: Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +how_to_implement: To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. + For additional filtering, allow list private IP space or restrict by known good. +known_false_positives: Filtering may be required in some instances, filter as needed. references: - https://arstechnica.com/information-technology/2021/12/as-log4shell-wreaks-havoc-payroll-service-reports-ransomware-attack/ tags: @@ -47,8 +46,7 @@ tags: # (impact * confidence)/100 risk_score: 40 context: - - Source:Endpoint - - Stage:Defense Evasion + - Source:network message: A Java user agent $http_user_agent$ was performing a $http_method$ to retrieve a remote class file. observable: - name: dest From 2c62039a03b17aa0968c0629c21a3252e9f9ee11 Mon Sep 17 00:00:00 2001 From: mvelazco Date: Mon, 13 Dec 2021 15:51:43 -0500 Subject: [PATCH 09/53] adding detection --- ...nnection_from_java_using_default_ports.yml | 61 +++++++++++++++++++ ...ion_from_java_using_default_ports.test.yml | 12 ++++ 2 files changed, 73 insertions(+) create mode 100644 detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml create mode 100644 tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml diff --git a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml new file mode 100644 index 0000000000..218bef8e53 --- /dev/null +++ b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml @@ -0,0 +1,61 @@ +name: Outbound Network Connection from Java Using Default Ports +id: d2c14d28-5c47-11ec-9892-acde48001122 +version: 1 +date: '2021-12-13' +author: Mauricio Velazco, Splunk +type: TTP +datamodel: +- Endpoint +description: A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform + outbound connections to attacker-controlled infrastrucutre. This is required as part of the JNDI lookup as well as + for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by + the LDAP and RMI protocols. This behavior could represent successfull exploitation. +search: ' `sysmon` EventCode=3 (process_name=java OR process_name=java.exe) + (DestinationPort=389 OR DestinationPort=1389 OR DestinationPort = 1099 ) | rename Computer as dest + | stats count min(_time) as firstTime max(_time) as lastTime by dest, process_name, DestinationPort + | `security_content_ctime(firstTime)` + | `outbound_network_connection_from_java_using_default_ports_filter`' +how_to_implement: To successfully implement this search you need to be ingesting information + on process that include the name of the process responsible for the changes from + your endpoints into the `Endpoint` datamodel in the `Processes` node. +known_false_positives: Legitimate Java applications may use perform outbound connections to these ports. Filter as needed +references: +- https://www.lunasec.io/docs/blog/log4j-zero-day/ +- https://www.govcert.admin.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/ +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + dataset: + - UPDATE_DATASET_URL + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1190 + cve: + - CVE-2021-44228 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - process_name + - EventID + - CommandLine + - Computer + - DestinationPort + - DestinationIp + security_domain: endpoint + impact: 90 + confidence: 60 + risk_score: 54 + context: + - Source:Endpoint + - Stage:Execution + message: Java performed outbound connections to default ports of LDAP or RMI on $dest$ + observable: + - name: dest + type: Hostname + role: + - Victim + \ No newline at end of file diff --git a/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml b/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml new file mode 100644 index 0000000000..21597273b4 --- /dev/null +++ b/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml @@ -0,0 +1,12 @@ +name: Outbound Network Connection from Java Using Default Ports Unit Test +tests: +- name: Outbound Network Connection from Java Using Default Ports + file: endpoint/outbound_network_connection_from_java_using_default_ports.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: linux-sysmon.log + data: UPDATE_DATASET_URL + source: Syslog:Linux-Sysmon/Operational + sourcetype: sysmon_linux \ No newline at end of file From cb4d003f4eb19a85f13f1bae4ab6f9bfc9df0422 Mon Sep 17 00:00:00 2001 From: mvelazco Date: Mon, 13 Dec 2021 16:24:39 -0500 Subject: [PATCH 10/53] updating dataset tag --- ...utbound_network_connection_from_java_using_default_ports.yml | 2 +- ...nd_network_connection_from_java_using_default_ports.test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml index 218bef8e53..1615e626e5 100644 --- a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml +++ b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml @@ -26,7 +26,7 @@ tags: analytic_story: - Log4Shell CVE-2021-44228 dataset: - - UPDATE_DATASET_URL + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_java/linux-sysmon.log kill_chain_phases: - Exploitation mitre_attack_id: diff --git a/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml b/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml index 21597273b4..09e3797d54 100644 --- a/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml +++ b/tests/endpoint/outbound_network_connection_from_java_using_default_ports.test.yml @@ -7,6 +7,6 @@ tests: latest_time: 'now' attack_data: - file_name: linux-sysmon.log - data: UPDATE_DATASET_URL + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_java/linux-sysmon.log source: Syslog:Linux-Sysmon/Operational sourcetype: sysmon_linux \ No newline at end of file From 2565ad2bbfcbcfbaf75462d01571b444127486be Mon Sep 17 00:00:00 2001 From: Michael Haag <5632822+MHaggis@users.noreply.github.com> Date: Mon, 13 Dec 2021 14:37:40 -0700 Subject: [PATCH 11/53] Update windows_shells.yml --- macros/windows_shells.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macros/windows_shells.yml b/macros/windows_shells.yml index 956e4f12ab..847a67a5d5 100644 --- a/macros/windows_shells.yml +++ b/macros/windows_shells.yml @@ -1,4 +1,4 @@ -definition: (Processes.process_name=cmd.exe OR Processes.original_file_name=Cmd.Exe) +definition: (Processes.process_name=cmd.exe OR Processes.process_name=powershell.exe) description: customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. -name: windows_shells \ No newline at end of file +name: windows_shells From 52692732cd1755e6deff90f77680a462a1413fb9 Mon Sep 17 00:00:00 2001 From: mvelazco Date: Mon, 13 Dec 2021 17:07:02 -0500 Subject: [PATCH 12/53] fixing minor issue --- ...und_network_connection_from_java_using_default_ports.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml index 1615e626e5..c351148e77 100644 --- a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml +++ b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml @@ -55,7 +55,7 @@ tags: message: Java performed outbound connections to default ports of LDAP or RMI on $dest$ observable: - name: dest - type: Hostname - role: - - Victim + type: Hostname + role: + - Victim \ No newline at end of file From 8f1408ba426dd45798ce901f90621b86ae235320 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Dec 2021 22:45:11 +0000 Subject: [PATCH 13/53] Added detection testing service results inJava Class File download by Java User Agent --- ...class_file_download_by_java_user_agent.yml | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/detections/endpoint/java_class_file_download_by_java_user_agent.yml b/detections/endpoint/java_class_file_download_by_java_user_agent.yml index 2c8d028096..3a8cf7def2 100644 --- a/detections/endpoint/java_class_file_download_by_java_user_agent.yml +++ b/detections/endpoint/java_class_file_download_by_java_user_agent.yml @@ -5,25 +5,28 @@ date: '2021-12-13' author: Michael Haag, Splunk type: TTP datamodel: - - Web -description: The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). -search: '| tstats count from datamodel=Web where - Web.http_user_agent="*Java*" Web.http_method="GET" Web.url="*.class*" - by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest - | `drop_dm_object_name("Web")` - | `security_content_ctime(firstTime)` - | `security_content_ctime(lastTime)` - | `java_class_file_download_by_java_user_agent_filter`' -how_to_implement: To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. - For additional filtering, allow list private IP space or restrict by known good. +- Web +description: The following analytic identifies a Java user agent performing a GET + request for a .class file from the remote site. This is potentially indicative of + exploitation of the Java application and may be related to current event CVE-2021-44228 + (Log4Shell). +search: '| tstats count from datamodel=Web where Web.http_user_agent="*Java*" Web.http_method="GET" + Web.url="*.class*" by Web.http_user_agent Web.http_method, Web.url,Web.url_length + Web.src, Web.dest | `drop_dm_object_name("Web")` | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` | `java_class_file_download_by_java_user_agent_filter`' +how_to_implement: To successfully implement this search, you need to be ingesting + web or proxy logs, or ensure it is being filled by a proxy like device, into the + Web Datamodel. For additional filtering, allow list private IP space or restrict + by known good. known_false_positives: Filtering may be required in some instances, filter as needed. references: - - https://arstechnica.com/information-technology/2021/12/as-log4shell-wreaks-havoc-payroll-service-reports-ransomware-attack/ +- https://arstechnica.com/information-technology/2021/12/as-log4shell-wreaks-havoc-payroll-service-reports-ransomware-attack/ tags: analytic_story: - Log4Shell CVE-2021-44228 asset_type: Web Server - dataset: [] + dataset: + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/java.log kill_chain_phases: - Exploitation mitre_attack_id: @@ -43,11 +46,11 @@ tags: security_domain: network impact: 80 confidence: 50 - # (impact * confidence)/100 risk_score: 40 context: - Source:network - message: A Java user agent $http_user_agent$ was performing a $http_method$ to retrieve a remote class file. + message: A Java user agent $http_user_agent$ was performing a $http_method$ to retrieve + a remote class file. observable: - name: dest type: Hostname @@ -60,4 +63,5 @@ tags: - name: http_method type: Other role: - - other \ No newline at end of file + - other + automated_detection_testing: passed From 19bd2fd7362dd286c6da6393dfd64b493804b2bb Mon Sep 17 00:00:00 2001 From: mvelazco Date: Mon, 13 Dec 2021 18:00:14 -0500 Subject: [PATCH 14/53] updating sysmon macro --- macros/sysmon.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/sysmon.yml b/macros/sysmon.yml index fb5503662c..17fdbd53e0 100644 --- a/macros/sysmon.yml +++ b/macros/sysmon.yml @@ -1,4 +1,4 @@ -definition: sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational +definition: sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=Syslog:Linux-Sysmon/Operational description: customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. name: sysmon From c1dac05e2b6e89f73f02d389a052aad99e235540 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Dec 2021 23:19:25 +0000 Subject: [PATCH 15/53] Added detection testing service results inOutbound Network Connection from Java Using Default Ports --- ...nnection_from_java_using_default_ports.yml | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml index c351148e77..434e5cc748 100644 --- a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml +++ b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml @@ -6,21 +6,23 @@ author: Mauricio Velazco, Splunk type: TTP datamodel: - Endpoint -description: A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform - outbound connections to attacker-controlled infrastrucutre. This is required as part of the JNDI lookup as well as - for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by - the LDAP and RMI protocols. This behavior could represent successfull exploitation. -search: ' `sysmon` EventCode=3 (process_name=java OR process_name=java.exe) - (DestinationPort=389 OR DestinationPort=1389 OR DestinationPort = 1099 ) | rename Computer as dest - | stats count min(_time) as firstTime max(_time) as lastTime by dest, process_name, DestinationPort - | `security_content_ctime(firstTime)` - | `outbound_network_connection_from_java_using_default_ports_filter`' +description: A required step while exploiting the CVE-2021-44228-Log4j vulnerability + is that the victim server will perform outbound connections to attacker-controlled + infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving + the second stage .class payload. The following analytic identifies the Java process + reaching out to default ports used by the LDAP and RMI protocols. This behavior + could represent successfull exploitation. +search: ' `sysmon` EventCode=3 (process_name=java OR process_name=java.exe) (DestinationPort=389 + OR DestinationPort=1389 OR DestinationPort = 1099 ) | rename Computer as dest | stats + count min(_time) as firstTime max(_time) as lastTime by dest, process_name, DestinationPort + | `security_content_ctime(firstTime)` | `outbound_network_connection_from_java_using_default_ports_filter`' how_to_implement: To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. -known_false_positives: Legitimate Java applications may use perform outbound connections to these ports. Filter as needed +known_false_positives: Legitimate Java applications may use perform outbound connections + to these ports. Filter as needed references: -- https://www.lunasec.io/docs/blog/log4j-zero-day/ +- https://www.lunasec.io/docs/blog/log4j-zero-day/ - https://www.govcert.admin.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/ tags: analytic_story: @@ -47,15 +49,16 @@ tags: - DestinationIp security_domain: endpoint impact: 90 - confidence: 60 + confidence: 60 risk_score: 54 context: - Source:Endpoint - Stage:Execution - message: Java performed outbound connections to default ports of LDAP or RMI on $dest$ + message: Java performed outbound connections to default ports of LDAP or RMI on + $dest$ observable: - name: dest type: Hostname role: - Victim - \ No newline at end of file + automated_detection_testing: passed From 10418d295aeb359cd9ba891f72be7b6a6f1c724a Mon Sep 17 00:00:00 2001 From: mvelazco Date: Mon, 13 Dec 2021 20:22:14 -0500 Subject: [PATCH 16/53] Update outbound_network_connection_from_java_using_default_ports.yml --- ...tbound_network_connection_from_java_using_default_ports.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml index 434e5cc748..4c30dd09a2 100644 --- a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml +++ b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml @@ -11,7 +11,8 @@ description: A required step while exploiting the CVE-2021-44228-Log4j vulnerabi infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior - could represent successfull exploitation. + could represent successfull exploitation. Note that adversaries can easily decide to use + arbitrary ports for these protocols and potentially bypass this detection. search: ' `sysmon` EventCode=3 (process_name=java OR process_name=java.exe) (DestinationPort=389 OR DestinationPort=1389 OR DestinationPort = 1099 ) | rename Computer as dest | stats count min(_time) as firstTime max(_time) as lastTime by dest, process_name, DestinationPort From 946503dc76e7f57fc040b4c81485ce07e7907eac Mon Sep 17 00:00:00 2001 From: d1vious Date: Tue, 14 Dec 2021 00:54:37 -0500 Subject: [PATCH 17/53] added two new detections, ymls are not finished --- bin/jinja2_templates/detection.j2 | 4 ++ ...g4shell_jndi_payload_injection_attempt.yml | 51 +++++++++++++++++++ ...oad_injection_with_outbound_connection.yml | 48 +++++++++++++++++ ...ll_jndi_payload_injection_attempt.test.yml | 12 +++++ ...njection_with_outbound_connection.test.yml | 12 +++++ 5 files changed, 127 insertions(+) create mode 100644 detections/web/log4shell_jndi_payload_injection_attempt.yml create mode 100644 detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml create mode 100644 tests/web/log4shell_jndi_payload_injection_attempt.test.yml create mode 100644 tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml diff --git a/bin/jinja2_templates/detection.j2 b/bin/jinja2_templates/detection.j2 index 2d49429a83..42384d52b1 100644 --- a/bin/jinja2_templates/detection.j2 +++ b/bin/jinja2_templates/detection.j2 @@ -49,3 +49,7 @@ tags: {% for observable in observables -%} - {{observable}} {% endfor -%} + nist: + - + cis20: + - diff --git a/detections/web/log4shell_jndi_payload_injection_attempt.yml b/detections/web/log4shell_jndi_payload_injection_attempt.yml new file mode 100644 index 0000000000..ff41701612 --- /dev/null +++ b/detections/web/log4shell_jndi_payload_injection_attempt.yml @@ -0,0 +1,51 @@ +name: Log4Shell JNDI Payload Injection Attempt +id: c184f12e-5c90-11ec-bf1f-497c9a704a72 +version: 1 +date: '2021-12-13' +author: Jose Hernandez +type: Anomaly +datamodel: +- Web +description: + CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. + The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. + In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. + If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. +search: '| from datamodel Web.Web | regex _raw="[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)\w+(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?" | `log4shell_jndi_payload_injection_attempt_filter`' +how_to_implement: This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +known_false_positives: If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives.ATE_KNOWN_FALSE_POSITIVES +references: +- +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + dataset: + - UPDATE_DATASET_URL + kill_chain_phases: + - Reconnaissance + - Exploitation + mitre_attack_id: + - T1190 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - http_referrer + - http_user_agent + - url + security_domain: threat + impact: 50 + confidence: 30 + # (impact * confidence)/100 + risk_score: 15 + context: + message: + observable: + nist: + - + cis20: + - + cve: + - CVE-2021-44228 diff --git a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml new file mode 100644 index 0000000000..8b0f63f4b5 --- /dev/null +++ b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml @@ -0,0 +1,48 @@ +name: Log4Shell JNDI Payload Injection with Outbound Connection +id: 69afee44-5c91-11ec-bf1f-497c9a704a72 +version: 1 +date: '2021-12-13' +author: Jose Hernandez +type: Anomaly +datamodel: +- Network_Traffic +- Web +description: + UPDATE_DESCRIPTION + WHAT IS THIS? + WHAT DOES IT LOOK LIKE? + HOW DO YOU TRIAGE IT? +search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" | join affected_host type=inner [| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) + as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest | `drop_dm_object_name(All_Traffic)` + | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | rename dest AS affected_host] | `log4shell_jndi_payload_injection_with_outbound_connection_filter`' +how_to_implement: UPDATE_HOW_TO_IMPLEMENT +known_false_positives: UPDATE_KNOWN_FALSE_POSITIVES +references: +- +tags: + analytic_story: + - UPDATE_STORY_NAME + dataset: + - UPDATE_DATASET_URL + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1190 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + security_domain: threat + impact: + confidence: + # (impact * confidence)/100 + risk_score: + context: + message: + observable: + nist: + - + cis20: + - \ No newline at end of file diff --git a/tests/web/log4shell_jndi_payload_injection_attempt.test.yml b/tests/web/log4shell_jndi_payload_injection_attempt.test.yml new file mode 100644 index 0000000000..9811a5196d --- /dev/null +++ b/tests/web/log4shell_jndi_payload_injection_attempt.test.yml @@ -0,0 +1,12 @@ +name: Log4Shell JNDI Payload Injection Attempt Unit Test +tests: +- name: Log4Shell JNDI Payload Injection Attempt + file: web/log4shell_jndi_payload_injection_attempt.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: UPDATE_FILE_NAME + data: UPDATE_DATASET_URL + source: UPDATE_SPLUNK_SOURCE + sourcetype: UPDATE_SPLUNK_SOURCETYPE \ No newline at end of file diff --git a/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml b/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml new file mode 100644 index 0000000000..851d8449fa --- /dev/null +++ b/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml @@ -0,0 +1,12 @@ +name: Log4Shell JNDI Payload Injection with Outbound Connection Unit Test +tests: +- name: Log4Shell JNDI Payload Injection with Outbound Connection + file: web/log4shell_jndi_payload_injection_with_outbound_connection.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: UPDATE_FILE_NAME + data: UPDATE_DATASET_URL + source: UPDATE_SPLUNK_SOURCE + sourcetype: UPDATE_SPLUNK_SOURCETYPE \ No newline at end of file From f84b61357c133b47d3b96df982f849f4e288f786 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Tue, 14 Dec 2021 16:35:31 +0100 Subject: [PATCH 18/53] Improved Proxy detection --- ...g4shell_jndi_payload_injection_attempt.yml | 43 ++++++++++++++----- ...ll_jndi_payload_injection_attempt.test.yml | 8 ++-- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/detections/web/log4shell_jndi_payload_injection_attempt.yml b/detections/web/log4shell_jndi_payload_injection_attempt.yml index ff41701612..362fa9e928 100644 --- a/detections/web/log4shell_jndi_payload_injection_attempt.yml +++ b/detections/web/log4shell_jndi_payload_injection_attempt.yml @@ -6,21 +6,23 @@ author: Jose Hernandez type: Anomaly datamodel: - Web -description: - CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. +description: CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. -search: '| from datamodel Web.Web | regex _raw="[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)\w+(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?" | `log4shell_jndi_payload_injection_attempt_filter`' +search: '| from datamodel Web.Web | regex _raw="[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)\w+(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?" + | fillnull + | stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user + | `log4shell_jndi_payload_injection_attempt_filter`' how_to_implement: This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. -known_false_positives: If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives.ATE_KNOWN_FALSE_POSITIVES +known_false_positives: If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. references: -- +- https://www.lunasec.io/docs/blog/log4j-zero-day/ tags: analytic_story: - Log4Shell CVE-2021-44228 dataset: - - UPDATE_DATASET_URL + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log kill_chain_phases: - Reconnaissance - Exploitation @@ -31,21 +33,40 @@ tags: - Splunk Enterprise Security - Splunk Cloud required_fields: - - _time + - action + - category + - dest + - dest_port + - http_content_type + - http_method - http_referrer - http_user_agent + - site + - src - url + - url_domain + - user security_domain: threat impact: 50 confidence: 30 # (impact * confidence)/100 risk_score: 15 - context: - message: + context: + message: CVE-2021-44228 Log4Shell triggered for host $dest$ observable: + - name: user + type: User + role: + - Victim + - name: dest + type: Hostname + role: + - Victim nist: - - + - DE.CM cis20: - - + - CIS 3 + - CIS 5 + - CIS 16 cve: - CVE-2021-44228 diff --git a/tests/web/log4shell_jndi_payload_injection_attempt.test.yml b/tests/web/log4shell_jndi_payload_injection_attempt.test.yml index 9811a5196d..5c8e598561 100644 --- a/tests/web/log4shell_jndi_payload_injection_attempt.test.yml +++ b/tests/web/log4shell_jndi_payload_injection_attempt.test.yml @@ -6,7 +6,7 @@ tests: earliest_time: '-24h' latest_time: 'now' attack_data: - - file_name: UPDATE_FILE_NAME - data: UPDATE_DATASET_URL - source: UPDATE_SPLUNK_SOURCE - sourcetype: UPDATE_SPLUNK_SOURCETYPE \ No newline at end of file + - file_name: nginx.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log + source: nginx + sourcetype: nginx:plus:kv \ No newline at end of file From b33a05700c7be223b7c2e9ff9445b402e08312f8 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 09:55:34 -0600 Subject: [PATCH 19/53] initial commit of playbook yamls --- playbooks/internal_host_splunk_investigate.yml | 0 playbooks/internal_host_ssh_investigate.yml | 0 playbooks/internal_host_ssh_log4j_investigate.yml | 0 playbooks/internal_host_winrm_investigate.yml | 0 playbooks/internal_host_winrm_log4j_investigate.yml | 0 playbooks/internal_host_winrm_log4j_respond.yml | 0 playbooks/log4j_investigate_and_respond.yml | 0 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 playbooks/internal_host_splunk_investigate.yml create mode 100644 playbooks/internal_host_ssh_investigate.yml create mode 100644 playbooks/internal_host_ssh_log4j_investigate.yml create mode 100644 playbooks/internal_host_winrm_investigate.yml create mode 100644 playbooks/internal_host_winrm_log4j_investigate.yml create mode 100644 playbooks/internal_host_winrm_log4j_respond.yml create mode 100644 playbooks/log4j_investigate_and_respond.yml diff --git a/playbooks/internal_host_splunk_investigate.yml b/playbooks/internal_host_splunk_investigate.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/internal_host_ssh_investigate.yml b/playbooks/internal_host_ssh_investigate.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/internal_host_ssh_log4j_investigate.yml b/playbooks/internal_host_ssh_log4j_investigate.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/internal_host_winrm_investigate.yml b/playbooks/internal_host_winrm_investigate.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/internal_host_winrm_log4j_investigate.yml b/playbooks/internal_host_winrm_log4j_investigate.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/internal_host_winrm_log4j_respond.yml b/playbooks/internal_host_winrm_log4j_respond.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml new file mode 100644 index 0000000000..e69de29bb2 From 50ef5d4193f0aa86df5db96a78c2f50be4d8f701 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 09:58:17 -0600 Subject: [PATCH 20/53] Renamed splunk investigation playbook --- ...investigate.yml => internal_host_splunk_investigate_log4j.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename playbooks/{internal_host_splunk_investigate.yml => internal_host_splunk_investigate_log4j.yml} (100%) diff --git a/playbooks/internal_host_splunk_investigate.yml b/playbooks/internal_host_splunk_investigate_log4j.yml similarity index 100% rename from playbooks/internal_host_splunk_investigate.yml rename to playbooks/internal_host_splunk_investigate_log4j.yml From 3dc854e68e20f03c67dee086736167c27ae59b5f Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Tue, 14 Dec 2021 17:43:19 +0100 Subject: [PATCH 21/53] log4j --- ...oad_injection_with_outbound_connection.yml | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml index 8b0f63f4b5..2d1e653656 100644 --- a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml +++ b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml @@ -7,8 +7,7 @@ type: Anomaly datamodel: - Network_Traffic - Web -description: - UPDATE_DESCRIPTION +description: UPDATE_DESCRIPTION WHAT IS THIS? WHAT DOES IT LOOK LIKE? HOW DO YOU TRIAGE IT? @@ -18,7 +17,7 @@ search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\: how_to_implement: UPDATE_HOW_TO_IMPLEMENT known_false_positives: UPDATE_KNOWN_FALSE_POSITIVES references: -- +- todo tags: analytic_story: - UPDATE_STORY_NAME @@ -35,14 +34,26 @@ tags: required_fields: - _time security_domain: threat - impact: - confidence: + impact: 50 + confidence: 30 # (impact * confidence)/100 - risk_score: - context: - message: + risk_score: 15 + context: + message: CVE-2021-44228 Log4Shell triggered for host $dest$ observable: + - name: user + type: User + role: + - Victim + - name: dest + type: Hostname + role: + - Victim nist: - - + - DE.CM cis20: - - \ No newline at end of file + - CIS 3 + - CIS 5 + - CIS 16 + cve: + - CVE-2021-44228 \ No newline at end of file From a9edbc20bd85eeddb0ddd06afbaf3fab4adcbd48 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Tue, 14 Dec 2021 17:49:26 +0100 Subject: [PATCH 22/53] log4j --- ...ell_jndi_payload_injection_with_outbound_connection.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml index 2d1e653656..1ba011a3b7 100644 --- a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml +++ b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml @@ -7,17 +7,14 @@ type: Anomaly datamodel: - Network_Traffic - Web -description: UPDATE_DESCRIPTION - WHAT IS THIS? - WHAT DOES IT LOOK LIKE? - HOW DO YOU TRIAGE IT? +description: description search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" | join affected_host type=inner [| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest | `drop_dm_object_name(All_Traffic)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | rename dest AS affected_host] | `log4shell_jndi_payload_injection_with_outbound_connection_filter`' how_to_implement: UPDATE_HOW_TO_IMPLEMENT known_false_positives: UPDATE_KNOWN_FALSE_POSITIVES references: -- todo +- todo tags: analytic_story: - UPDATE_STORY_NAME From 3bf46de4c73ebbc6a32339591b3e94074595dbf1 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 11:20:13 -0600 Subject: [PATCH 23/53] removed files causing generate to break --- playbooks/internal_host_splunk_investigate_log4j.yml | 0 playbooks/internal_host_ssh_investigate.yml | 0 playbooks/internal_host_ssh_log4j_investigate.yml | 0 playbooks/internal_host_winrm_investigate.yml | 0 playbooks/internal_host_winrm_log4j_investigate.yml | 0 playbooks/internal_host_winrm_log4j_respond.yml | 0 playbooks/log4j_investigate_and_respond.yml | 0 7 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 playbooks/internal_host_splunk_investigate_log4j.yml delete mode 100644 playbooks/internal_host_ssh_investigate.yml delete mode 100644 playbooks/internal_host_ssh_log4j_investigate.yml delete mode 100644 playbooks/internal_host_winrm_investigate.yml delete mode 100644 playbooks/internal_host_winrm_log4j_investigate.yml delete mode 100644 playbooks/internal_host_winrm_log4j_respond.yml delete mode 100644 playbooks/log4j_investigate_and_respond.yml diff --git a/playbooks/internal_host_splunk_investigate_log4j.yml b/playbooks/internal_host_splunk_investigate_log4j.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/playbooks/internal_host_ssh_investigate.yml b/playbooks/internal_host_ssh_investigate.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/playbooks/internal_host_ssh_log4j_investigate.yml b/playbooks/internal_host_ssh_log4j_investigate.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/playbooks/internal_host_winrm_investigate.yml b/playbooks/internal_host_winrm_investigate.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/playbooks/internal_host_winrm_log4j_investigate.yml b/playbooks/internal_host_winrm_log4j_investigate.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/playbooks/internal_host_winrm_log4j_respond.yml b/playbooks/internal_host_winrm_log4j_respond.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml deleted file mode 100644 index e69de29bb2..0000000000 From 3f59f79b93dd0af946665a3526fa693e21dcd853 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Tue, 14 Dec 2021 18:21:58 +0100 Subject: [PATCH 24/53] log4j --- ...oad_injection_with_outbound_connection.yml | 41 +- dist/escu/default/analyticstories.conf | 197 ++++- dist/escu/default/collections.conf | 2 +- dist/escu/default/es_investigations.conf | 15 +- dist/escu/default/macros.conf | 68 +- dist/escu/default/savedsearches.conf | 807 ++++++++++++++++-- dist/escu/default/transforms.conf | 2 +- ...njection_with_outbound_connection.test.yml | 14 +- 8 files changed, 1013 insertions(+), 133 deletions(-) diff --git a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml index 1ba011a3b7..1ca70888e7 100644 --- a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml +++ b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml @@ -7,19 +7,28 @@ type: Anomaly datamodel: - Network_Traffic - Web -description: description -search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" | join affected_host type=inner [| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) - as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest | `drop_dm_object_name(All_Traffic)` - | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | rename dest AS affected_host] | `log4shell_jndi_payload_injection_with_outbound_connection_filter`' -how_to_implement: UPDATE_HOW_TO_IMPLEMENT -known_false_positives: UPDATE_KNOWN_FALSE_POSITIVES +description: CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. + Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. + The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. + Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. + In this detection we match the invocation function with a network connection to a malicious ip address. +search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" + | join affected_host type=inner + [| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest + | `drop_dm_object_name(All_Traffic)` + | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | rename dest AS affected_host] + | fillnull + | stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user | `log4shell_jndi_payload_injection_with_outbound_connection_filter`' +how_to_implement: This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +known_false_positives: If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. references: -- todo +- https://www.lunasec.io/docs/blog/log4j-zero-day/ tags: analytic_story: - - UPDATE_STORY_NAME + - Log4Shell CVE-2021-44228 dataset: - - UPDATE_DATASET_URL + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_network_logs/log4j_network_logs.log kill_chain_phases: - Exploitation mitre_attack_id: @@ -29,7 +38,19 @@ tags: - Splunk Enterprise Security - Splunk Cloud required_fields: - - _time + - action + - category + - dest + - dest_port + - http_content_type + - http_method + - http_referrer + - http_user_agent + - site + - src + - url + - url_domain + - user security_domain: threat impact: 50 confidence: 30 diff --git a/dist/escu/default/analyticstories.conf b/dist/escu/default/analyticstories.conf index ca4918113c..2deb1c5e89 100644 --- a/dist/escu/default/analyticstories.conf +++ b/dist/escu/default/analyticstories.conf @@ -1,6 +1,6 @@ ############# # Automatically generated by generator.py in splunk/security_content -# On Date: 2021-12-02T18:37:19 UTC +# On Date: 2021-12-14T17:20:44 UTC # Author: Splunk Security Research # Contact: research@splunk.com ############# @@ -80,6 +80,21 @@ description = Monitor for activities and techniques associated with Discovery an narrative = Discovery consists of techniques an adversay uses to gain knowledge about an internal environment or network. These techniques provide adversaries with situational awareness and allows them to have the necessary information before deciding how to act or who/what to target next.\ Once an attacker obtains an initial foothold in an Active Directory environment, she is forced to engage in Discovery techniques in the initial phases of a breach to better understand and navigate the target network. Some examples include but are not limited to enumerating domain users, domain admins, computers, domain controllers, network shares, group policy objects, domain trusts, etc. +[analytic_story://Active Directory Lateral Movement] +category = Adversary Tactics +last_updated = 2021-12-09 +version = 3 +references = ["https://www.fireeye.com/blog/executive-perspective/2015/08/malware_lateral_move.html", "http://www.irongeek.com/i.php?page=videos/derbycon7/t405-hunting-lateral-movement-for-fun-and-profit-mauricio-velazco"] +maintainers = [{"company": "Mauricio Velazco Splunk", "email": "-", "name": "David Dorsey"}] +spec_version = 3 +searches = ["ESCU - Detect Activity Related to Pass the Hash Attacks - Rule", "ESCU - Detect PsExec With accepteula Flag - Rule", "ESCU - Detect Renamed PSExec - Rule", "ESCU - Executable File Written in Administrative SMB Share - Rule", "ESCU - Impacket Lateral Movement Commandline Parameters - Rule", "ESCU - Interactive Session on Remote Endpoint with PowerShell - Rule", "ESCU - Mmc LOLBAS Execution Process Spawn - Rule", "ESCU - Possible Lateral Movement PowerShell Spawn - Rule", "ESCU - Randomly Generated Scheduled Task Name - Rule", "ESCU - Randomly Generated Windows Service Name - Rule", "ESCU - Remote Desktop Network Traffic - Rule", "ESCU - Remote Desktop Process Running On System - Rule", "ESCU - Remote Process Instantiation via DCOM and PowerShell - Rule", "ESCU - Remote Process Instantiation via DCOM and PowerShell Script Block - Rule", "ESCU - Remote Process Instantiation via WMI - Rule", "ESCU - Remote Process Instantiation via WMI and PowerShell - Rule", "ESCU - Remote Process Instantiation via WMI and PowerShell Script Block - Rule", "ESCU - Remote Process Instantiation via WinRM and PowerShell - Rule", "ESCU - Remote Process Instantiation via WinRM and PowerShell Script Block - Rule", "ESCU - Remote Process Instantiation via WinRM and Winrs - Rule", "ESCU - Scheduled Task Creation on Remote Endpoint using At - Rule", "ESCU - Scheduled Task Initiation on Remote Endpoint - Rule", "ESCU - Schtasks scheduling job on remote system - Rule", "ESCU - Services LOLBAS Execution Process Spawn - Rule", "ESCU - Short Lived Scheduled Task - Rule", "ESCU - Svchost LOLBAS Execution Process Spawn - Rule", "ESCU - Unusual Number of Computer Service Tickets Requested - Rule", "ESCU - Unusual Number of Remote Endpoint Authentication Events - Rule", "ESCU - WinEvent Scheduled Task Created Within Public Path - Rule", "ESCU - Windows Service Created With Suspicious Service Path - Rule", "ESCU - Windows Service Created Within Public Path - Rule", "ESCU - Windows Service Creation on Remote Endpoint - Rule", "ESCU - Windows Service Initiation on Remote Endpoint - Rule", "ESCU - Wmiprsve LOLBAS Execution Process Spawn - Rule", "ESCU - Wsmprovhost LOLBAS Execution Process Spawn - Rule", "ESCU - Investigate Successful Remote Desktop Authentications - Response Task"] +description = Detect and investigate tactics, techniques, and procedures around how attackers move laterally within an Active Directory environment. Since lateral movement is often a necessary step in a breach, it is important for cyber defenders to deploy detection coverage. /n**SOAR:** The following Splunk SOAR playbooks can be used in the response to this story's analytics: 'Delete Detected Files' +narrative = Once attackers gain a foothold within an enterprise, they will seek to expand their accesses and leverage techniques that facilitate lateral movement. Attackers will often spend quite a bit of time and effort moving laterally. Because lateral movement renders an attacker the most vulnerable to detection, it's an excellent focus for detection and investigation.\ +Indications of lateral movement in an Active Directory network can include the abuse of system utilities (such as `psexec.exe`), unauthorized use of remote desktop services, `file/admin$` shares, WMI, PowerShell, Service Control Manager, the DCOM protocol, WinRM or the abuse of scheduled tasks. Organizations must be extra vigilant in detecting lateral movement techniques and look for suspicious activity in and around high-value strategic network assets, such as Active Directory, which are often considered the primary target or "crown jewels" to a persistent threat actor.\ +An adversary can use lateral movement for multiple purposes, including remote execution of tools, pivoting to additional systems, obtaining access to specific information or files, access to additional credentials, exfiltrating data, or delivering a secondary effect. Adversaries may use legitimate credentials alongside inherent network and operating-system functionality to remotely connect to other systems and remain under the radar of network defenders.\ +If there is evidence of lateral movement, it is imperative for analysts to collect evidence of the associated offending hosts. For example, an attacker might leverage host A to gain access to host B. From there, the attacker may try to move laterally to host C. In this example, the analyst should gather as much information as possible from all three hosts. \ + It is also important to collect authentication logs for each host, to ensure that the offending accounts are well-documented. Analysts should account for all processes to ensure that the attackers did not install unauthorized software. + [analytic_story://Active Directory Password Spraying] category = Adversary Tactics last_updated = 2021-04-07 @@ -529,7 +544,7 @@ version = 1 references = ["https://attack.mitre.org/techniques/T1105/"] maintainers = [{"company": "Splunk", "email": "-", "name": "Michael Haag"}] spec_version = 3 -searches = ["ESCU - Any Powershell DownloadFile - Rule", "ESCU - Any Powershell DownloadString - Rule", "ESCU - BITSAdmin Download File - Rule", "ESCU - CertUtil Download With URLCache and Split Arguments - Rule", "ESCU - CertUtil Download With VerifyCtl and Split Arguments - Rule", "ESCU - Suspicious Curl Network Connection - Rule", "ESCU - Windows Curl Download to Suspicious Path - Rule", "ESCU - Windows Curl Upload to Remote Destination - Rule"] +searches = ["ESCU - Any Powershell DownloadFile - Rule", "ESCU - Any Powershell DownloadString - Rule", "ESCU - BITSAdmin Download File - Rule", "ESCU - CertUtil Download With URLCache and Split Arguments - Rule", "ESCU - CertUtil Download With VerifyCtl and Split Arguments - Rule", "ESCU - Curl Download and Bash Execution - Rule", "ESCU - Suspicious Curl Network Connection - Rule", "ESCU - Wget Download and Bash Execution - Rule", "ESCU - Windows Curl Download to Suspicious Path - Rule", "ESCU - Windows Curl Upload to Remote Destination - Rule"] description = Adversaries may transfer tools or other files from an external system into a compromised environment. Files may be copied from an external adversary controlled system through the command and control channel to bring tools into the victim network or through alternate protocols with another tool such as FTP. narrative = Ingress tool transfer is a Technique under tactic Command and Control. Behaviors will include the use of living off the land binaries to download implants or binaries over alternate communication ports. It is imperative to baseline applications on endpoints to understand what generates network activity, to where, and what is its native behavior. These utilities, when abused, will write files to disk in world writeable paths.\ During triage, review the reputation of the remote public destination IP or domain. Capture any files written to disk and perform analysis. Review other parrallel processes for additional behaviors. @@ -580,20 +595,16 @@ searches = ["ESCU - AWS EKS Kubernetes cluster sensitive object access - Rule", description = This story addresses detection and response of accounts acccesing Kubernetes cluster sensitive objects such as configmaps or secrets providing information on items such as user user, group. object, namespace and authorization reason. narrative = Kubernetes is the most used container orchestration platform, this orchestration platform contains sensitive objects within its architecture, specifically configmaps and secrets, if accessed by an attacker can lead to further compromise. These searches allow operator to detect suspicious requests against Kubernetes sensitive objects. -[analytic_story://Lateral Movement] +[analytic_story://Log4Shell CVE-2021-44228] category = Adversary Tactics -last_updated = 2021-11-23 -version = 2 -references = ["https://www.fireeye.com/blog/executive-perspective/2015/08/malware_lateral_move.html", "https://www.youtube.com/watch?v=hVTkkkM9XDg"] -maintainers = [{"company": "Mauricio Velazco Splunk", "email": "-", "name": "David Dorsey"}] +last_updated = 2021-12-11 +version = 1 +references = ["https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/", "https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j", "https://www.crowdstrike.com/blog/log4j2-vulnerability-analysis-and-mitigation-recommendations/", "https://www.lunasec.io/docs/blog/log4j-zero-day/", "https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html"] +maintainers = [{"company": "no", "email": "-", "name": "Jose Hernandez"}] spec_version = 3 -searches = ["ESCU - Detect Activity Related to Pass the Hash Attacks - Rule", "ESCU - Detect PsExec With accepteula Flag - Rule", "ESCU - Detect Renamed PSExec - Rule", "ESCU - Executable File Written in Administrative SMB Share - Rule", "ESCU - Get DomainUser with PowerShell Script Block - Rule", "ESCU - Impacket Lateral Movement Commandline Parameters - Rule", "ESCU - Interactive Session on Remote Endpoint with PowerShell - Rule", "ESCU - Mmc LOLBAS Execution Process Spawn - Rule", "ESCU - Remote Desktop Network Traffic - Rule", "ESCU - Remote Desktop Process Running On System - Rule", "ESCU - Remote Process Instantiation via DCOM and PowerShell - Rule", "ESCU - Remote Process Instantiation via DCOM and PowerShell Script Block - Rule", "ESCU - Remote Process Instantiation via WMI - Rule", "ESCU - Remote Process Instantiation via WMI and PowerShell - Rule", "ESCU - Remote Process Instantiation via WMI and PowerShell Script Block - Rule", "ESCU - Remote Process Instantiation via WinRM and PowerShell - Rule", "ESCU - Remote Process Instantiation via WinRM and PowerShell Script Block - Rule", "ESCU - Remote Process Instantiation via WinRM and Winrs - Rule", "ESCU - Scheduled Task Creation on Remote Endpoint using At - Rule", "ESCU - Scheduled Task Initiation on Remote Endpoint - Rule", "ESCU - Schtasks scheduling job on remote system - Rule", "ESCU - Services LOLBAS Execution Process Spawn - Rule", "ESCU - Svchost LOLBAS Execution Process Spawn - Rule", "ESCU - WinEvent Scheduled Task Created Within Public Path - Rule", "ESCU - Windows Service Created With Suspicious Service Path - Rule", "ESCU - Windows Service Created Within Public Path - Rule", "ESCU - Windows Service Creation on Remote Endpoint - Rule", "ESCU - Windows Service Initiation on Remote Endpoint - Rule", "ESCU - Wmiprsve LOLBAS Execution Process Spawn - Rule", "ESCU - Wsmprovhost LOLBAS Execution Process Spawn - Rule", "ESCU - Get History Of Email Sources - Response Task", "ESCU - Get Notable History - Response Task", "ESCU - Get Parent Process Info - Response Task", "ESCU - Get Process Info - Response Task", "ESCU - Get Process Information For Port Activity - Response Task", "ESCU - Investigate Successful Remote Desktop Authentications - Response Task"] -description = Detect and investigate tactics, techniques, and procedures around how attackers move laterally within the enterprise. Because lateral movement can expose the adversary to detection, it should be an important focus for security analysts. -narrative = Once attackers gain a foothold within an enterprise, they will seek to expand their accesses and leverage techniques that facilitate lateral movement. Attackers will often spend quite a bit of time and effort moving laterally. Because lateral movement renders an attacker the most vulnerable to detection, it's an excellent focus for detection and investigation.\ -Indications of lateral movement can include the abuse of system utilities (such as `psexec.exe`), unauthorized use of remote desktop services, `file/admin$` shares, WMI, PowerShell, pass-the-hash, or the abuse of scheduled tasks. Organizations must be extra vigilant in detecting lateral movement techniques and look for suspicious activity in and around high-value strategic network assets, such as Active Directory, which are often considered the primary target or "crown jewels" to a persistent threat actor.\ -An adversary can use lateral movement for multiple purposes, including remote execution of tools, pivoting to additional systems, obtaining access to specific information or files, access to additional credentials, exfiltrating data, or delivering a secondary effect. Adversaries may use legitimate credentials alongside inherent network and operating-system functionality to remotely connect to other systems and remain under the radar of network defenders.\ -If there is evidence of lateral movement, it is imperative for analysts to collect evidence of the associated offending hosts. For example, an attacker might leverage host A to gain access to host B. From there, the attacker may try to move laterally to host C. In this example, the analyst should gather as much information as possible from all three hosts. \ - It is also important to collect authentication logs for each host, to ensure that the offending accounts are well-documented. Analysts should account for all processes to ensure that the attackers did not install unauthorized software. +searches = ["ESCU - Any Powershell DownloadFile - Rule", "ESCU - CMD Carry Out String Command Parameter - Rule", "ESCU - Curl Download and Bash Execution - Rule", "ESCU - Java Class File download by Java User Agent - Rule", "ESCU - Linux Java Spawning Shell - Rule", "ESCU - Log4Shell JNDI Payload Injection Attempt - Rule", "ESCU - Log4Shell JNDI Payload Injection with Outbound Connection - Rule", "ESCU - Malicious PowerShell Process - Connect To Internet With Hidden Window - Rule", "ESCU - Outbound Network Connection from Java Using Default Ports - Rule", "ESCU - Wget Download and Bash Execution - Rule", "ESCU - Windows Java Spawning Shells - Rule"] +description = Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and extremely uibiquitous logging framework for Java. The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker controlled servers and we anticipate that most apps using the Log4j library will meet this condition. +narrative = In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat tak by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user-input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system. [analytic_story://Malicious PowerShell] category = Adversary Tactics @@ -602,7 +613,7 @@ version = 5 references = ["https://blogs.mcafee.com/mcafee-labs/malware-employs-powershell-to-infect-systems/", "https://www.crowdstrike.com/blog/bears-midst-intrusion-democratic-national-committee/"] maintainers = [{"company": "Splunk", "email": "-", "name": "David Dorsey"}] spec_version = 3 -searches = ["ESCU - Any Powershell DownloadFile - Rule", "ESCU - Any Powershell DownloadString - Rule", "ESCU - Detect Empire with PowerShell Script Block Logging - Rule", "ESCU - Detect Mimikatz With PowerShell Script Block Logging - Rule", "ESCU - Get DomainUser with PowerShell Script Block - Rule", "ESCU - Malicious PowerShell Process - Connect To Internet With Hidden Window - Rule", "ESCU - Malicious PowerShell Process - Encoded Command - Rule", "ESCU - Malicious PowerShell Process - Multiple Suspicious Command-Line Arguments - Rule", "ESCU - Malicious PowerShell Process With Obfuscation Techniques - Rule", "ESCU - PowerShell 4104 Hunting - Rule", "ESCU - PowerShell Domain Enumeration - Rule", "ESCU - PowerShell Loading DotNET into Memory via System Reflection Assembly - Rule", "ESCU - Powershell Creating Thread Mutex - Rule", "ESCU - Powershell Enable SMB1Protocol Feature - Rule", "ESCU - Powershell Execute COM Object - Rule", "ESCU - Powershell Fileless Process Injection via GetProcAddress - Rule", "ESCU - Powershell Fileless Script Contains Base64 Encoded Content - Rule", "ESCU - Powershell Processing Stream Of Data - Rule", "ESCU - Powershell Using memory As Backing Store - Rule", "ESCU - Recon AVProduct Through Pwh or WMI - Rule", "ESCU - Recon Using WMI Class - Rule", "ESCU - Set Default PowerShell Execution Policy To Unrestricted or Bypass - Rule", "ESCU - Unloading AMSI via Reflection - Rule", "ESCU - WMI Recon Running Process Or Services - Rule", "ESCU - Get History Of Email Sources - Response Task", "ESCU - Get Notable History - Response Task", "ESCU - Get Parent Process Info - Response Task", "ESCU - Get Process Info - Response Task"] +searches = ["ESCU - Any Powershell DownloadFile - Rule", "ESCU - Any Powershell DownloadString - Rule", "ESCU - Detect Empire with PowerShell Script Block Logging - Rule", "ESCU - Detect Mimikatz With PowerShell Script Block Logging - Rule", "ESCU - Get DomainUser with PowerShell Script Block - Rule", "ESCU - Malicious PowerShell Process - Connect To Internet With Hidden Window - Rule", "ESCU - Malicious PowerShell Process - Encoded Command - Rule", "ESCU - Malicious PowerShell Process - Multiple Suspicious Command-Line Arguments - Rule", "ESCU - Malicious PowerShell Process With Obfuscation Techniques - Rule", "ESCU - Possible Lateral Movement PowerShell Spawn - Rule", "ESCU - PowerShell 4104 Hunting - Rule", "ESCU - PowerShell Domain Enumeration - Rule", "ESCU - PowerShell Loading DotNET into Memory via System Reflection Assembly - Rule", "ESCU - Powershell Creating Thread Mutex - Rule", "ESCU - Powershell Enable SMB1Protocol Feature - Rule", "ESCU - Powershell Execute COM Object - Rule", "ESCU - Powershell Fileless Process Injection via GetProcAddress - Rule", "ESCU - Powershell Fileless Script Contains Base64 Encoded Content - Rule", "ESCU - Powershell Processing Stream Of Data - Rule", "ESCU - Powershell Using memory As Backing Store - Rule", "ESCU - Recon AVProduct Through Pwh or WMI - Rule", "ESCU - Recon Using WMI Class - Rule", "ESCU - Set Default PowerShell Execution Policy To Unrestricted or Bypass - Rule", "ESCU - Unloading AMSI via Reflection - Rule", "ESCU - WMI Recon Running Process Or Services - Rule", "ESCU - Get History Of Email Sources - Response Task", "ESCU - Get Notable History - Response Task", "ESCU - Get Parent Process Info - Response Task", "ESCU - Get Process Info - Response Task"] description = Attackers are finding stealthy ways "live off the land," leveraging utilities and tools that come standard on the endpoint--such as PowerShell--to achieve their goals without downloading binary files. These searches can help you detect and investigate PowerShell command-line options that may be indicative of malicious intent. narrative = The searches in this Analytic Story monitor for parameters often used for malicious purposes. It is helpful to understand how often the notable events generated by this story occur, as well as the commonalities between some of these events. These factors may provide clues about whether this is a common occurrence of minimal concern or a rare event that may require more extensive investigation. Likewise, it is important to determine whether the issue is restricted to a single user/system or is broader in scope. \ The following factors may assist you in determining whether the event is malicious: \ @@ -2015,10 +2026,10 @@ providing_technologies = [] type = detection asset_type = confidence = medium -explanation = This search looks for command-line arguments where `cmd.exe /c` is used to execute a program. This technique is commonly seen in adversaries and malware to execute batch command using different shell like powershell or different process other than cmd.exe. This is a good hunting query for suspicious commandline made by a script or relative process execute it. +explanation = The following analytic identifies command-line arguments where `cmd.exe /c` is used to execute a program. `cmd /c` is used to run commands in MS-DOS and terminate after command or process completion. This technique is commonly seen in adversaries and malware to execute batch command using different shell like PowerShell or different process other than `cmd.exe`. This is a good hunting query for suspicious command-line made by a script or relative process execute it. how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA. annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059.003", "T1059"]} -known_false_positives = unknown +known_false_positives = False positives may be high based on legitimate scripted code in any environment. Filter as needed. providing_technologies = [] [savedsearch://ESCU - CMD Echo Pipe - Escalation - Rule] @@ -2482,6 +2493,16 @@ annotations = {"cis20": ["CIS 8", "CIS 16"], "kill_chain_phases": ["Actions on O known_false_positives = unknown providing_technologies = [] +[savedsearch://ESCU - Curl Download and Bash Execution - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following analytic identifies the use of curl on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. Add parent process name (Processes.parent_process_name) as needed to filter. +annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1105"]} +known_false_positives = False positives should be limited, however filtering may be required. +providing_technologies = [] + [savedsearch://ESCU - DLLHost with no Command Line Arguments with Network - Rule] type = detection asset_type = @@ -4348,8 +4369,8 @@ providing_technologies = [] type = detection asset_type = confidence = medium -explanation = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly user by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. -how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 5145 EventCode enabled. The Windows TA is also required. Also enable the object Audit access success/failure in your group policy. +explanation = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly used by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. +how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 5145 EventCode enabled. The Windows TA is also required. Also enable the object Audit access success/failure in your group policy. The following Splunk SOAR playbook can be used to respond to this detection: Delete Detected Files annotations = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.002"]} known_false_positives = System Administrators may use looks like PsExec for troubleshooting or administrations tasks. However, this will typically come only from certain users and certain systems that can be added to an allow list. providing_technologies = [] @@ -5214,6 +5235,16 @@ annotations = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T102 known_false_positives = Administrators may leverage WinRM and `Enter-PSSession` for administrative and troubleshooting tasks. This activity is usually limited to a small set of hosts or users. In certain environments, tuning may not be possible. providing_technologies = [] +[savedsearch://ESCU - Java Class File download by Java User Agent - Rule] +type = detection +asset_type = Web Server +confidence = medium +explanation = The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). +how_to_implement = To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. For additional filtering, allow list private IP space or restrict by known good. +annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +known_false_positives = Filtering may be required in some instances, filter as needed. +providing_technologies = [] + [savedsearch://ESCU - Jscript Execution Using Cscript App - Rule] type = detection asset_type = @@ -5474,6 +5505,16 @@ annotations = {"cis20": ["CIS 11", "CIS 12"], "kill_chain_phases": ["Actions on known_false_positives = Legitimate ANY requests may trigger this search, however it is unusual to see a large volume of them under typical circumstances. You may modify the threshold in the search to better suit your environment. providing_technologies = [] +[savedsearch://ESCU - Linux Java Spawning Shell - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following analytic identifies the process name of Java, Apache, or Tomcat spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. Ensure EDR product is mapping OS Linux to the datamodel properly. Add any additional java process names for your environment to the analytic as needed. +annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +known_false_positives = Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +providing_technologies = [] + [savedsearch://ESCU - Loading Of Dynwrapx Module - Rule] type = detection asset_type = @@ -5504,6 +5545,26 @@ annotations = {"kill_chain_phases": ["Reconnaissance"], "mitre_attack": ["T1087" known_false_positives = Administrators or power users may use this command for troubleshooting. providing_technologies = [] +[savedsearch://ESCU - Log4Shell JNDI Payload Injection Attempt - Rule] +type = detection +asset_type = +confidence = medium +explanation = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. +how_to_implement = This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +annotations = {"cis20": ["CIS 3", "CIS 5", "CIS 16"], "kill_chain_phases": ["Reconnaissance", "Exploitation"], "mitre_attack": ["T1190"], "nist": ["DE.CM"]} +known_false_positives = If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. +providing_technologies = [] + +[savedsearch://ESCU - Log4Shell JNDI Payload Injection with Outbound Connection - Rule] +type = detection +asset_type = +confidence = medium +explanation = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we match the invocation function with a network connection to a malicious ip address. +how_to_implement = This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +annotations = {"cis20": ["CIS 3", "CIS 5", "CIS 16"], "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "nist": ["DE.CM"]} +known_false_positives = If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. +providing_technologies = [] + [savedsearch://ESCU - Logon Script Event Trigger Execution - Rule] type = detection asset_type = @@ -6293,6 +6354,16 @@ annotations = {"cis20": ["CIS 4", "CIS 8"], "kill_chain_phases": ["Installation" known_false_positives = There are no known false positives. providing_technologies = [] +[savedsearch://ESCU - Outbound Network Connection from Java Using Default Ports - Rule] +type = detection +asset_type = +confidence = medium +explanation = A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform outbound connections to attacker-controlled infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior could represent successfull exploitation. Note that adversaries can easily decide to use arbitrary ports for these protocols and potentially bypass this detection. +how_to_implement = To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. +annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +known_false_positives = Legitimate Java applications may use perform outbound connections to these ports. Filter as needed +providing_technologies = [] + [savedsearch://ESCU - Overwriting Accessibility Binaries - Rule] type = detection asset_type = Endpoint @@ -6366,6 +6437,16 @@ annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1555.00 known_false_positives = False positive is quite limited. Filter is needed providing_technologies = [] +[savedsearch://ESCU - Possible Lateral Movement PowerShell Spawn - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following analytic assists with identifying a PowerShell process spawned as a child or grand child process of commonly abused processes during lateral movement techniques including `services.exe`, `wmiprsve.exe`, `svchost.exe`, `wsmprovhost.exe` and `mmc.exe`. Legitimate Windows features such as the Service Control Manager, Windows Management Instrumentation, Task Scheduler, Windows Remote Management and the DCOM protocol can be abused to start a process on a remote endpoint. Looking for PowerShell spawned out of this processes may reveal a lateral movement attack. Red Teams and adversaries alike may abuse these services during a breach for lateral movement and remote code execution. +how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. +annotations = {"kill_chain_phases": ["Lateral Movement", "Malicious PowerShell"], "mitre_attack": ["T1021", "T1021.003", "T1021.006", "T1047", "T1053.005", "T1543.003", "T1059.001"]} +known_false_positives = Legitimate applications may spawn PowerShell as a child process of the the identified processes. Filter as needed. +providing_technologies = [] + [savedsearch://ESCU - PowerShell 4104 Hunting - Rule] type = detection asset_type = @@ -6703,6 +6784,26 @@ annotations = {"cis20": ["CIS 9", "CIS 14"], "kill_chain_phases": ["Reconnaissan known_false_positives = Some networks may use kerberized FTP or telnet servers, however, this is rare. providing_technologies = [] +[savedsearch://ESCU - Randomly Generated Scheduled Task Name - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following hunting analytic leverages Event ID 4698, `A scheduled task was created`, to identify the creation of a Scheduled Task with a suspicious, high entropy, Task Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Task Scheduler to create and start a remote Scheduled Task and obtain remote code execution. To achieve this goal, tools like Impacket or Crapmapexec, typically create a Scheduled Task with a random task name on the victim host. This hunting analytic may help defenders identify Scheduled Tasks created as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Command field can be used to determine if the task has malicious intent or not. +how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 4698 EventCode enabled. The Windows TA as well as the URL ToolBox application are also required. +annotations = {"kill_chain_phases": ["Privilege Escalation", "Lateral Movement", "Persistence"], "mitre_attack": ["T1053", "T1053.005"]} +known_false_positives = Legitimate applications may use random Scheduled Task names. +providing_technologies = [] + +[savedsearch://ESCU - Randomly Generated Windows Service Name - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following hunting analytic leverages Event ID 7045, `A new service was installed in the system`, to identify the installation of a Windows Service with a suspicious, high entropy, Service Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Service Control Manager to create and start a remote Windows Service and obtain remote code execution. To achieve this goal, some tools like Metasploit, Cobalt Strike and Impacket, typically create a Windows Service with a random service name on the victim host. This hunting analytic may help defenders identify Windows Services installed as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Service_File_Name field can be used to determine if the Windows Service has malicious intent or not. +how_to_implement = To successfully implement this search, you need to be ingesting logs with the Service name, Service File Name Service Start type, and Service Type from your endpoints. The Windows TA as well as the URL ToolBox application are also required. +annotations = {"kill_chain_phases": ["Privilege Escalation", "Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"]} +known_false_positives = Legitimate applications may use random Windows Service names. +providing_technologies = [] + [savedsearch://ESCU - Ransomware Notes bulk creation - Rule] type = detection asset_type = @@ -7441,7 +7542,7 @@ providing_technologies = [] type = detection asset_type = confidence = medium -explanation = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child processs of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +explanation = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child process of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. annotations = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"]} known_false_positives = Legitimate applications may trigger this behavior, filter as needed. @@ -7477,6 +7578,16 @@ annotations = {"cis20": ["CIS 8"], "kill_chain_phases": ["Actions on Objectives" known_false_positives = None identified providing_technologies = [] +[savedsearch://ESCU - Short Lived Scheduled Task - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following analytic leverages Windows Security EventCode 4698, `A scheduled task was created` and Windows Security EventCode 4699, `A scheduled task was deleted` to identify scheduled tasks created and deleted in less than 30 seconds. This behavior may represent a lateral movement attack abusing the Task Scheduler to obtain code execution. Red Teams and adversaries alike may abuse the Task Scheduler for lateral movement and remote code execution. +how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 4698 EventCode enabled. The Windows TA is also required. +annotations = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053.005"]} +known_false_positives = Although uncommon, legitimate applications may create and delete a Scheduled Task within 30 seconds. Filter as needed. +providing_technologies = [] + [savedsearch://ESCU - Short Lived Windows Accounts - Rule] type = detection asset_type = Windows @@ -8027,7 +8138,7 @@ providing_technologies = [] type = detection asset_type = confidence = medium -explanation = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child processs of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +explanation = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child process of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. annotations = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.005"]} known_false_positives = Legitimate applications may trigger this behavior, filter as needed. @@ -8217,6 +8328,28 @@ annotations = {"cis20": ["CIS 10"], "nist": ["PR.IP"]} known_false_positives = None identified providing_technologies = [] +[savedsearch://ESCU - Unusual Number of Computer Service Tickets Requested - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following hunting analytic leverages Event ID 4769, `A Kerberos service ticket was requested`, to identify an unusual number of computer service ticket requests from one source. When a domain joined endpoint connects to a remote endpoint, it first will request a Kerberos Ticket with the computer name as the Service Name. An endpoint requesting a large number of computer service tickets for different endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual number of service requests. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +how_to_implement = To successfully implement this search, you need to be ingesting Domain Controller and Kerberos events. The Advanced Security Audit policy setting `Audit Kerberos Authentication Service` within `Account Logon` needs to be enabled. +annotations = {"kill_chain_phases": ["Reconnaissance", "Exploitation", "Lateral Movement"], "mitre_attack": ["T1078"]} +known_false_positives = An single endpoint requesting a large number of computer service tickets is not common behavior. Possible false positive scenarios include but are not limited to vulnerability scanners, administration systeams and missconfigured systems. +providing_technologies = [] + +[savedsearch://ESCU - Unusual Number of Remote Endpoint Authentication Events - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following hunting analytic leverages Event ID 4624, `An account was successfully logged on`, to identify an unusual number of remote authentication attempts coming from one source. An endpoint authenticating to a large number of remote endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual high number of authentication events. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +how_to_implement = To successfully implement this search, you need to be ingesting Windows Event Logs from domain controllers aas well as member servers and workstations. The Advanced Security Audit policy setting `Audit Logon` within `Logon/Logoff` needs to be enabled. +annotations = {"kill_chain_phases": ["Reconnaissance", "Lateral Movement"], "mitre_attack": ["T1078"]} +known_false_positives = An single endpoint authenticating to a large number of hosts is not common behavior. Possible false positive scenarios include but are not limited to vulnerability scanners, jump servers and missconfigured systems. +providing_technologies = [] + [savedsearch://ESCU - Unusually Long Command Line - Rule] type = detection asset_type = Endpoint @@ -8452,6 +8585,16 @@ annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059"]} known_false_positives = unknown providing_technologies = [] +[savedsearch://ESCU - Wget Download and Bash Execution - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following analytic identifies the use of wget on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. Add parent process name (Processes.parent_process_name) as needed to filter. +annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1105"]} +known_false_positives = False positives should be limited, however filtering may be required. +providing_technologies = [] + [savedsearch://ESCU - WinEvent Scheduled Task Created Within Public Path - Rule] type = detection asset_type = @@ -8643,6 +8786,16 @@ annotations = {"kill_chain_phases": ["Exploitation", "Privilege Escalation"], "m known_false_positives = Limited false positives should be present as InstallUtil is not typically used to download remote files. Filter as needed based on Developers requirements. providing_technologies = [] +[savedsearch://ESCU - Windows Java Spawning Shells - Rule] +type = detection +asset_type = +confidence = medium +explanation = The following analytic identifies the process name of java.exe and w3wp.exe spawning a Windows shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "cmd.exe", "powershell.exe". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. Restrict the analytic to publicly facing endpoints to reduce false positives. Add any additional identified web application process name to the query. Add any further Windows process names to the macro (ex. LOLBins) to further expand this query. +annotations = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +known_false_positives = Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +providing_technologies = [] + [savedsearch://ESCU - Windows Security Account Manager Stopped - Rule] type = detection asset_type = Endpoint @@ -8779,7 +8932,7 @@ providing_technologies = [] type = detection asset_type = confidence = medium -explanation = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumention (WMI), the executed command is spawned as a child processs of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +explanation = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumentation (WMI), the executed command is spawned as a child process of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. annotations = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"]} known_false_positives = Legitimate applications may trigger this behavior, filter as needed. diff --git a/dist/escu/default/collections.conf b/dist/escu/default/collections.conf index c6112ff9fb..9863e6aeb1 100644 --- a/dist/escu/default/collections.conf +++ b/dist/escu/default/collections.conf @@ -1,6 +1,6 @@ ############# # Automatically generated by generator.py in splunk/security_content -# On Date: 2021-12-02T18:37:19 UTC +# On Date: 2021-12-14T17:20:43 UTC # Author: Splunk Security Research # Contact: research@splunk.com ############# diff --git a/dist/escu/default/es_investigations.conf b/dist/escu/default/es_investigations.conf index 14f57a2146..782820e6de 100644 --- a/dist/escu/default/es_investigations.conf +++ b/dist/escu/default/es_investigations.conf @@ -41,6 +41,13 @@ disabled = 0 panels = ["panel://workbench_panel_get_notable_history___response_task"] +[panel_group://workbench_panel_group_active_directory_lateral_movement] +label = Active Directory Lateral Movement +description = Detect and investigate tactics, techniques, and procedures around how attackers move laterally within an Active Directory environment. Since lateral movement is often a necessary step in a breach, it is important for cyber defenders to deploy detection coverage. /n**SOAR:** The following Splunk SOAR playbooks can be used in the response to this story's analytics: 'Delete Detected Files' +disabled = 0 + +panels = ["panel://workbench_panel_investigate_successful_remote_desktop_authentications___response_task"] + [panel_group://workbench_panel_group_active_directory_password_spraying] label = Active Directory Password Spraying description = Monitor for activities and techniques associated with Password Spraying attacks within Active Directory environments. @@ -314,12 +321,12 @@ disabled = 0 panels = ["panel://workbench_panel_get_notable_history___response_task"] -[panel_group://workbench_panel_group_lateral_movement] -label = Lateral Movement -description = Detect and investigate tactics, techniques, and procedures around how attackers move laterally within the enterprise. Because lateral movement can expose the adversary to detection, it should be an important focus for security analysts. +[panel_group://workbench_panel_group_log4shell_cve_2021_44228] +label = Log4Shell CVE-2021-44228 +description = Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and extremely uibiquitous logging framework for Java. The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker controlled servers and we anticipate that most apps using the Log4j library will meet this condition. disabled = 0 -panels = ["panel://workbench_panel_get_history_of_email_sources___response_task", "panel://workbench_panel_get_notable_history___response_task", "panel://workbench_panel_get_parent_process_info___response_task", "panel://workbench_panel_get_process_info___response_task", "panel://workbench_panel_get_process_information_for_port_activity___response_task", "panel://workbench_panel_investigate_successful_remote_desktop_authentications___response_task"] +panels = ["panel://workbench_panel_get_notable_history___response_task"] [panel_group://workbench_panel_group_malicious_powershell] label = Malicious PowerShell diff --git a/dist/escu/default/macros.conf b/dist/escu/default/macros.conf index 70703b2abf..f410daaee3 100644 --- a/dist/escu/default/macros.conf +++ b/dist/escu/default/macros.conf @@ -1,6 +1,6 @@ ############# # Automatically generated by generator.py in splunk/security_content -# On Date: 2021-12-02T18:37:19 UTC +# On Date: 2021-12-14T17:20:44 UTC # Author: Splunk Security Research # Contact: research@splunk.com ############# @@ -174,6 +174,10 @@ description = customer specific splunk configurations(eg- index, source, sourcet definition = index=* description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. +[linux_shells] +definition = (Processes.process_name IN ("sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell")) +description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. + [netbackup] definition = sourcetype="netbackup_logs" description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. @@ -484,7 +488,7 @@ definition = lookup suspicious_writes_lookup file as file_name OUTPUT note as "R description = This macro limites the output to file names that have been marked as suspicious [sysmon] -definition = sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational +definition = sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=Syslog:Linux-Sysmon/Operational description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. [system_network_configuration_discovery_tools] @@ -495,6 +499,10 @@ description = This macro is a list of process that can be used to discover the n definition = lookup update=true lookup_uncommon_processes_default process_name as process_name outputnew uncommon_default,category_default,analytic_story_default,kill_chain_phase_default,mitre_attack_default | lookup update=true lookup_uncommon_processes_local process_name as process_name outputnew uncommon_local,category_local,analytic_story_local,kill_chain_phase_local,mitre_attack_local | eval uncommon = coalesce(uncommon_default, uncommon_local), analytic_story = coalesce(analytic_story_default, analytic_story_local), category=coalesce(category_default, category_local), kill_chain_phase=coalesce(kill_chain_phase_default, kill_chain_phase_local), mitre_attack=coalesce(mitre_attack_default, mitre_attack_local) | fields - analytic_story_default, analytic_story_local, category_default, category_local, kill_chain_phase_default, kill_chain_phase_local, mitre_attack_default, mitre_attack_local, uncommon_default, uncommon_local | search uncommon=true description = This macro limits the output to processes that have been marked as uncommon +[windows_shells] +definition = (Processes.process_name=cmd.exe OR Processes.process_name=powershell.exe) +description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. + [wineventlog_security] definition = eventtype=wineventlog_security description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent. @@ -1063,6 +1071,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[curl_download_and_bash_execution_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [dllhost_with_no_command_line_arguments_with_network_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -2299,6 +2311,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[java_class_file_download_by_java_user_agent_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [jscript_execution_using_cscript_app_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -2403,6 +2419,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[linux_java_spawning_shell_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [loading_of_dynwrapx_module_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -2415,6 +2435,14 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[log4shell_jndi_payload_injection_attempt_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + +[log4shell_jndi_payload_injection_with_outbound_connection_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [logon_script_event_trigger_execution_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -2727,6 +2755,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[outbound_network_connection_from_java_using_default_ports_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [overwriting_accessibility_binaries_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -2755,6 +2787,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[possible_lateral_movement_powershell_spawn_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [powershell_4104_hunting_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -3015,6 +3051,14 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[randomly_generated_scheduled_task_name_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + +[randomly_generated_windows_service_name_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [ransomware_notes_bulk_creation_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -3323,6 +3367,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[short_lived_scheduled_task_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [short_lived_windows_accounts_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -3615,6 +3663,14 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[unusual_number_of_computer_service_tickets_requested_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + +[unusual_number_of_remote_endpoint_authentication_events_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [unusually_long_command_line_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -3711,6 +3767,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[wget_download_and_bash_execution_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [winevent_scheduled_task_created_within_public_path_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. @@ -3775,6 +3835,10 @@ description = Update this macro to limit the output results to filter out false definition = search * description = Update this macro to limit the output results to filter out false positives. +[windows_java_spawning_shells_filter] +definition = search * +description = Update this macro to limit the output results to filter out false positives. + [windows_security_account_manager_stopped_filter] definition = search * description = Update this macro to limit the output results to filter out false positives. diff --git a/dist/escu/default/savedsearches.conf b/dist/escu/default/savedsearches.conf index c100ca0eee..4faad5aa74 100644 --- a/dist/escu/default/savedsearches.conf +++ b/dist/escu/default/savedsearches.conf @@ -1,6 +1,6 @@ ############# # Automatically generated by generator.py in splunk/security_content -# On Date: 2021-12-02T18:37:19 UTC +# On Date: 2021-12-14T17:20:43 UTC # Author: Splunk Security Research # Contact: research@splunk.com ############# @@ -2138,7 +2138,7 @@ action.escu.full_search_name = ESCU - Any Powershell DownloadFile - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Malicious PowerShell", "Ingress Tool Transfer"] +action.escu.analytic_story = ["Malicious PowerShell", "Ingress Tool Transfer", "Log4Shell CVE-2021-44228"] action.risk = 1 action.risk.param._risk_message = An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$. This behavior identifies the use of DownloadFile within PowerShell. action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 56}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 56}, {"threat_object_field": "parent_process_name", "threat_object_type": "parent process"}, {"threat_object_field": "process_name", "threat_object_type": "process"}] @@ -2148,7 +2148,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Any Powershell DownloadFile - Rule -action.correlationsearch.annotations = {"analytic_story": ["Malicious PowerShell", "Ingress Tool Transfer"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Exploitation"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059", "T1059.001"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +action.correlationsearch.annotations = {"analytic_story": ["Malicious PowerShell", "Ingress Tool Transfer", "Log4Shell CVE-2021-44228"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Exploitation"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059", "T1059.001"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -2710,22 +2710,22 @@ search = | tstats `security_content_summariesonly` count min(_time) as firstTime [ESCU - CMD Carry Out String Command Parameter - Rule] action.escu = 0 action.escu.enabled = 1 -description = This search looks for command-line arguments where `cmd.exe /c` is used to execute a program. This technique is commonly seen in adversaries and malware to execute batch command using different shell like powershell or different process other than cmd.exe. This is a good hunting query for suspicious commandline made by a script or relative process execute it. +description = The following analytic identifies command-line arguments where `cmd.exe /c` is used to execute a program. `cmd /c` is used to run commands in MS-DOS and terminate after command or process completion. This technique is commonly seen in adversaries and malware to execute batch command using different shell like PowerShell or different process other than `cmd.exe`. This is a good hunting query for suspicious command-line made by a script or relative process execute it. action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059.003", "T1059"]} action.escu.data_models = ["Endpoint"] -action.escu.eli5 = This search looks for command-line arguments where `cmd.exe /c` is used to execute a program. This technique is commonly seen in adversaries and malware to execute batch command using different shell like powershell or different process other than cmd.exe. This is a good hunting query for suspicious commandline made by a script or relative process execute it. +action.escu.eli5 = The following analytic identifies command-line arguments where `cmd.exe /c` is used to execute a program. `cmd /c` is used to run commands in MS-DOS and terminate after command or process completion. This technique is commonly seen in adversaries and malware to execute batch command using different shell like PowerShell or different process other than `cmd.exe`. This is a good hunting query for suspicious command-line made by a script or relative process execute it. action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA. -action.escu.known_false_positives = unknown -action.escu.creation_date = 2021-10-21 -action.escu.modification_date = 2021-10-21 +action.escu.known_false_positives = False positives may be high based on legitimate scripted code in any environment. Filter as needed. +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 action.escu.confidence = high action.escu.full_search_name = ESCU - CMD Carry Out String Command Parameter - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["IcedID"] +action.escu.analytic_story = ["IcedID", "Log4Shell CVE-2021-44228"] action.risk = 1 -action.risk.param._risk_message = $process_name$ with commandline $process$ in $dest$ +action.risk.param._risk_message = An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ attempting spawn a new process. action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 30}, {"risk_object_field": "user", "risk_object_type": "user", "risk_score": 30}] action.risk.param.verbose = 0 cron_schedule = 0 * * * * @@ -2733,11 +2733,11 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - CMD Carry Out String Command Parameter - Rule -action.correlationsearch.annotations = {"analytic_story": ["IcedID"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Execution"], "impact": 60, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059.003", "T1059"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "user", "role": ["Victim"], "type": "User"}]} +action.correlationsearch.annotations = {"analytic_story": ["IcedID", "Log4Shell CVE-2021-44228"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Execution"], "impact": 60, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1059.003", "T1059"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "user", "role": ["Victim"], "type": "User"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] -action.notable.param.rule_description = This search looks for command-line arguments where `cmd.exe /c` is used to execute a program. This technique is commonly seen in adversaries and malware to execute batch command using different shell like powershell or different process other than cmd.exe. This is a good hunting query for suspicious commandline made by a script or relative process execute it. +action.notable.param.rule_description = The following analytic identifies command-line arguments where `cmd.exe /c` is used to execute a program. `cmd /c` is used to run commands in MS-DOS and terminate after command or process completion. This technique is commonly seen in adversaries and malware to execute batch command using different shell like PowerShell or different process other than `cmd.exe`. This is a good hunting query for suspicious command-line made by a script or relative process execute it. action.notable.param.rule_title = CMD Carry Out String Command Parameter action.notable.param.security_domain = endpoint action.notable.param.severity = high @@ -4715,6 +4715,51 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where `process_cmd` Processes.process=*mklink* Processes.process=*HarddiskVolumeShadowCopy* by Processes.dest Processes.user Processes.process_name Processes.process Processes.parent_process Processes.original_file_name Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `credential_dumping_via_symlink_to_shadow_copy_filter` +[ESCU - Curl Download and Bash Execution - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic identifies the use of curl on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1105"]} +action.escu.data_models = ["Endpoint"] +action.escu.eli5 = The following analytic identifies the use of curl on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. Add parent process name (Processes.parent_process_name) as needed to filter. +action.escu.known_false_positives = False positives should be limited, however filtering may be required. +action.escu.creation_date = 2021-12-10 +action.escu.modification_date = 2021-12-10 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Curl Download and Bash Execution - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Ingress Tool Transfer", "Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = An instance of $process_name$ was identified on endpoint $dest$ attempting to download a remote file and run it with bash. +action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 80}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 80}, {"threat_object_field": "process_name", "threat_object_type": "process"}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Curl Download and Bash Execution - Rule +action.correlationsearch.annotations = {"analytic_story": ["Ingress Tool Transfer", "Log4Shell CVE-2021-44228"], "confidence": 100, "context": ["Source:Endpoint", "Stage:Defense Evasion"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1105"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user', 'dest'] +action.notable.param.rule_description = The following analytic identifies the use of curl on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +action.notable.param.rule_title = Curl Download and Bash Execution +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name=curl (Processes.process="*-s *") OR (Processes.process="*|*" AND Processes.process="*bash*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `curl_download_and_bash_execution_filter` + [ESCU - DLLHost with no Command Line Arguments with Network - Rule] action.escu = 0 action.escu.enabled = 1 @@ -5491,7 +5536,7 @@ action.escu.full_search_name = ESCU - Detect Activity Related to Pass the Hash A action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = The following $EventCode$ occurred on $dest$ by $user$ with Logon Type 3, which may be indicative of the pass the hash technique. action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 49}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 49}, {"threat_object_field": "EventCode", "threat_object_type": "other"}] @@ -5501,7 +5546,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Detect Activity Related to Pass the Hash Attacks - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "cis20": ["CIS 3", "CIS 5", "CIS 16"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1550", "T1550.002"], "nist": ["PR.PT", "PR.AT", "PR.AC", "PR.IP"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "EventCode", "role": ["Other"], "type": "Other"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "cis20": ["CIS 3", "CIS 5", "CIS 16"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1550", "T1550.002"], "nist": ["PR.PT", "PR.AT", "PR.AC", "PR.IP"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "EventCode", "role": ["Other"], "type": "Other"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['dest'] @@ -7097,7 +7142,7 @@ action.escu.full_search_name = ESCU - Detect PsExec With accepteula Flag - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Lateral Movement"] +action.escu.analytic_story = ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ running the utility for possibly the first time. action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 35}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 35}, {"threat_object_field": "parent_process_name", "threat_object_type": "parent process"}, {"threat_object_field": "process_name", "threat_object_type": "process"}] @@ -7107,7 +7152,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Detect PsExec With accepteula Flag - Rule -action.correlationsearch.annotations = {"analytic_story": ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Lateral Movement"], "cis20": ["CIS 8"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Execution"], "impact": 50, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1021", "T1021.002"], "nist": ["PR.PT", "DE.CM"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +action.correlationsearch.annotations = {"analytic_story": ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Active Directory Lateral Movement"], "cis20": ["CIS 8"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Execution"], "impact": 50, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1021", "T1021.002"], "nist": ["PR.PT", "DE.CM"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -7591,7 +7636,7 @@ action.escu.full_search_name = ESCU - Detect Renamed PSExec - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Lateral Movement"] +action.escu.analytic_story = ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = The following $process_name$ has been identified as renamed, spawning from $parent_process_name$ on $dest$ by $user$. action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 27}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 27}, {"threat_object_field": "parent_process_name", "threat_object_type": "parent process"}, {"threat_object_field": "process_name", "threat_object_type": "process"}] @@ -7601,7 +7646,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Detect Renamed PSExec - Rule -action.correlationsearch.annotations = {"analytic_story": ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Lateral Movement"], "confidence": 90, "context": ["Source:Endpoint", "Stage:Collection"], "impact": 30, "kill_chain_phases": ["Exploitation", "Lateral Movement", "Execution"], "mitre_attack": ["T1569", "T1569.002"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +action.correlationsearch.annotations = {"analytic_story": ["SamSam Ransomware", "DHS Report TA18-074A", "HAFNIUM Group", "DarkSide Ransomware", "Active Directory Lateral Movement"], "confidence": 90, "context": ["Source:Endpoint", "Stage:Collection"], "impact": 30, "kill_chain_phases": ["Exploitation", "Lateral Movement", "Execution"], "mitre_attack": ["T1569", "T1569.002"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -12626,11 +12671,11 @@ search = `powershell` EventCode=4104 Message IN ("*New-MailboxExportRequest*", " [ESCU - Executable File Written in Administrative SMB Share - Rule] action.escu = 0 action.escu.enabled = 1 -description = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly user by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. +description = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly used by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. action.escu.mappings = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.002"]} action.escu.data_models = [] -action.escu.eli5 = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly user by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. -action.escu.how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 5145 EventCode enabled. The Windows TA is also required. Also enable the object Audit access success/failure in your group policy. +action.escu.eli5 = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly used by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 5145 EventCode enabled. The Windows TA is also required. Also enable the object Audit access success/failure in your group policy. The following Splunk SOAR playbook can be used to respond to this detection: Delete Detected Files action.escu.known_false_positives = System Administrators may use looks like PsExec for troubleshooting or administrations tasks. However, this will typically come only from certain users and certain systems that can be added to an allow list. action.escu.creation_date = 2021-11-18 action.escu.modification_date = 2021-11-18 @@ -12639,7 +12684,7 @@ action.escu.full_search_name = ESCU - Executable File Written in Administrative action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement", "Trickbot"] +action.escu.analytic_story = ["Active Directory Lateral Movement", "Trickbot"] action.risk = 1 action.risk.param._risk_message = $user$ dropped or created an executable file in known sensitive SMB share. Share name=$Share_Name$, Target name=$Relative_Target_Name$, and Access mask=$Access_Mask$ action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 70}] @@ -12649,11 +12694,11 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Executable File Written in Administrative SMB Share - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement", "Trickbot"], "confidence": 100, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.002"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement", "Trickbot"], "confidence": 100, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.002"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user'] -action.notable.param.rule_description = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly user by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. +action.notable.param.rule_description = The following analytic identifies executable files (.exe or .dll) being written to Windows administrative SMB shares (Admin$, IPC$, C$). This represents suspicious behavior as its commonly used by tools like like PsExec/PaExec and others to stage service binaries before creating and starting a Windows service on remote endpoints. Red Teams and adversaries alike may abuse administrative shares for lateral movement and remote code execution. The Trickbot malware family also implements this behavior to try to infect other machines in the infected network. action.notable.param.rule_title = Executable File Written in Administrative SMB Share action.notable.param.security_domain = endpoint action.notable.param.severity = high @@ -16353,7 +16398,7 @@ action.escu.full_search_name = ESCU - Impacket Lateral Movement Commandline Para action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = Suspicious command line parameters on $dest may represent a lateral movement attack with Impackets tools action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 63}] @@ -16363,7 +16408,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Impacket Lateral Movement Commandline Parameters - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.002", "T1021.003", "T1047", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.002", "T1021.003", "T1047", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -16398,7 +16443,7 @@ action.escu.full_search_name = ESCU - Interactive Session on Remote Endpoint wit action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = An interactive session was opened on a remote endpoint from $ComputerName action.risk.param._risk = [{"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 45}] @@ -16408,7 +16453,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Interactive Session on Remote Endpoint with PowerShell - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following analytic utilizes PowerShell Script Block Logging (EventCode=4104) to identify the usage of the `Enter-PSSession`. This commandlet can be used to open an interactive session on a remote endpoint leveraging the WinRM protocol. Red Teams and adversaries alike may abuse WinRM and `Enter-PSSession` for lateral movement and remote code execution. @@ -16426,6 +16471,51 @@ realtime_schedule = 0 is_visible = false search = powershell` EventCode=4104 (Message="*Enter-PSSession*" AND Message="*-ComputerName*") | stats count min(_time) as firstTime max(_time) as lastTime by EventCode Message ComputerName User | `security_content_ctime(firstTime)` | `interactive_session_on_remote_endpoint_with_powershell_filter` +[ESCU - Java Class File download by Java User Agent - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). +action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +action.escu.data_models = ["Web"] +action.escu.eli5 = The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. For additional filtering, allow list private IP space or restrict by known good. +action.escu.known_false_positives = Filtering may be required in some instances, filter as needed. +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Java Class File download by Java User Agent - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = A Java user agent $http_user_agent$ was performing a $http_method$ to retrieve a remote class file. +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 40}, {"threat_object_field": "http_user_agent", "threat_object_type": "other"}, {"threat_object_field": "http_method", "threat_object_type": "other"}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Java Class File download by Java User Agent - Rule +action.correlationsearch.annotations = {"analytic_story": ["Log4Shell CVE-2021-44228"], "confidence": 50, "context": ["Source:network"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "http_user_agent", "role": ["other"], "type": "Other"}, {"name": "http_method", "role": ["other"], "type": "Other"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['dest'] +action.notable.param.rule_description = The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). +action.notable.param.rule_title = Java Class File download by Java User Agent +action.notable.param.security_domain = network +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | tstats count from datamodel=Web where Web.http_user_agent="*Java*" Web.http_method="GET" Web.url="*.class*" by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest | `drop_dm_object_name("Web")` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `java_class_file_download_by_java_user_agent_filter` + [ESCU - Jscript Execution Using Cscript App - Rule] action.escu = 0 action.escu.enabled = 1 @@ -17499,6 +17589,51 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` count from datamodel=Network_Resolution where nodename=DNS "DNS.message_type"="QUERY" "DNS.record_type"="ANY" by "DNS.dest" | `drop_dm_object_name("DNS")` | where count>200 | `large_volume_of_dns_any_queries_filter` +[ESCU - Linux Java Spawning Shell - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic identifies the process name of Java, Apache, or Tomcat spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +action.escu.data_models = ["Endpoint"] +action.escu.eli5 = The following analytic identifies the process name of Java, Apache, or Tomcat spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. Ensure EDR product is mapping OS Linux to the datamodel properly. Add any additional java process names for your environment to the analytic as needed. +action.escu.known_false_positives = Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Linux Java Spawning Shell - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ spawning a Linux shell, potentially indicative of exploitation. +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 40}, {"threat_object_field": "parent_process_name", "threat_object_type": "parent process"}, {"threat_object_field": "process_name", "threat_object_type": "process"}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Linux Java Spawning Shell - Rule +action.correlationsearch.annotations = {"analytic_story": ["Log4Shell CVE-2021-44228"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Defense Evasion"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user', 'dest'] +action.notable.param.rule_description = The following analytic identifies the process name of Java, Apache, or Tomcat spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +action.notable.param.rule_title = Linux Java Spawning Shell +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java OR Processes.parent_process_name=apache OR Processes.parent_process_name=tomcat `linux_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `linux_java_spawning_shell_filter` + [ESCU - Loading Of Dynwrapx Module - Rule] action.escu = 0 action.escu.enabled = 1 @@ -17633,6 +17768,96 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where `process_net` (Processes.process=*user OR Processes.process=*users) by Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `local_account_discovery_with_net_filter` +[ESCU - Log4Shell JNDI Payload Injection Attempt - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. +action.escu.mappings = {"cis20": ["CIS 3", "CIS 5", "CIS 16"], "kill_chain_phases": ["Reconnaissance", "Exploitation"], "mitre_attack": ["T1190"], "nist": ["DE.CM"]} +action.escu.data_models = [] +action.escu.eli5 = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. +action.escu.how_to_implement = This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +action.escu.known_false_positives = If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Log4Shell JNDI Payload Injection Attempt - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = CVE-2021-44228 Log4Shell triggered for host $dest$ +action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 15}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 15}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Log4Shell JNDI Payload Injection Attempt - Rule +action.correlationsearch.annotations = {"analytic_story": ["Log4Shell CVE-2021-44228"], "cis20": ["CIS 3", "CIS 5", "CIS 16"], "confidence": 30, "context": null, "cve": ["CVE-2021-44228"], "impact": 50, "kill_chain_phases": ["Reconnaissance", "Exploitation"], "mitre_attack": ["T1190"], "nist": ["DE.CM"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user'] +action.notable.param.rule_description = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. +action.notable.param.rule_title = Log4Shell JNDI Payload Injection Attempt +action.notable.param.security_domain = threat +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | from datamodel Web.Web | regex _raw="[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)\w+(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?" | fillnull | stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user | `log4shell_jndi_payload_injection_attempt_filter` + +[ESCU - Log4Shell JNDI Payload Injection with Outbound Connection - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we match the invocation function with a network connection to a malicious ip address. +action.escu.mappings = {"cis20": ["CIS 3", "CIS 5", "CIS 16"], "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "nist": ["DE.CM"]} +action.escu.data_models = ["Network_Traffic"] +action.escu.eli5 = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we match the invocation function with a network connection to a malicious ip address. +action.escu.how_to_implement = This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +action.escu.known_false_positives = If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Log4Shell JNDI Payload Injection with Outbound Connection - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = CVE-2021-44228 Log4Shell triggered for host $dest$ +action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 15}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 15}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Log4Shell JNDI Payload Injection with Outbound Connection - Rule +action.correlationsearch.annotations = {"analytic_story": ["Log4Shell CVE-2021-44228"], "cis20": ["CIS 3", "CIS 5", "CIS 16"], "confidence": 30, "context": null, "cve": ["CVE-2021-44228"], "impact": 50, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "nist": ["DE.CM"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user', 'dest'] +action.notable.param.rule_description = CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we match the invocation function with a network connection to a malicious ip address. +action.notable.param.rule_title = Log4Shell JNDI Payload Injection with Outbound Connection +action.notable.param.security_domain = threat +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" | join affected_host type=inner [| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest | `drop_dm_object_name(All_Traffic)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | rename dest AS affected_host] | fillnull | stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user | `log4shell_jndi_payload_injection_with_outbound_connection_filter` + [ESCU - Logon Script Event Trigger Execution - Rule] action.escu = 0 action.escu.enabled = 1 @@ -18002,7 +18227,7 @@ action.escu.full_search_name = ESCU - Malicious PowerShell Process - Connect To action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Malicious PowerShell", "Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns", "HAFNIUM Group"] +action.escu.analytic_story = ["Malicious PowerShell", "Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns", "HAFNIUM Group", "Log4Shell CVE-2021-44228"] action.risk = 1 action.risk.param._risk_message = PowerShell processes $process$ started with parameters to modify the execution policy of the run, run in a hidden window, and connect to the Internet on host $dest$ executed by user $user$. action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 81}, {"risk_object_field": "user", "risk_object_type": "user", "risk_score": 81}, {"threat_object_field": "process", "threat_object_type": "process"}] @@ -18012,7 +18237,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Malicious PowerShell Process - Connect To Internet With Hidden Window - Rule -action.correlationsearch.annotations = {"analytic_story": ["Malicious PowerShell", "Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns", "HAFNIUM Group"], "cis20": ["CIS 3", "CIS 7", "CIS 8"], "confidence": 90, "context": ["Source:Endpoint", "Stage:Execution", "Stage:Command And Control"], "impact": 90, "kill_chain_phases": ["Command and Control", "Actions on Objectives"], "mitre_attack": ["T1059.001", "T1059"], "nist": ["PR.PT", "DE.CM", "PR.IP"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "user", "role": ["Victim"], "type": "User"}, {"name": "process", "role": ["Attacker"], "type": "Process"}]} +action.correlationsearch.annotations = {"analytic_story": ["Malicious PowerShell", "Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns", "HAFNIUM Group", "Log4Shell CVE-2021-44228"], "cis20": ["CIS 3", "CIS 7", "CIS 8"], "confidence": 90, "context": ["Source:Endpoint", "Stage:Execution", "Stage:Command And Control"], "impact": 90, "kill_chain_phases": ["Command and Control", "Actions on Objectives"], "mitre_attack": ["T1059.001", "T1059"], "nist": ["PR.PT", "DE.CM", "PR.IP"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "user", "role": ["Victim"], "type": "User"}, {"name": "process", "role": ["Attacker"], "type": "Process"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -18277,7 +18502,7 @@ action.escu.full_search_name = ESCU - Mmc LOLBAS Execution Process Spawn - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = Mmc.exe spawned a LOLBAS process on $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -18287,7 +18512,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Mmc LOLBAS Execution Process Spawn - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Privilege Escalation"], "mitre_attack": ["T1021", "T1021.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Privilege Escalation"], "mitre_attack": ["T1021", "T1021.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -19261,7 +19486,7 @@ action.escu.full_search_name = ESCU - Net Localgroup Discovery - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Active Directory Discovery"] +action.escu.analytic_story = ["Active Directory Discovery", "Windows Discovery Techniques"] action.risk = 1 action.risk.param._risk_message = Local group discovery on $dest$ by $user$. action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 15}, {"risk_object_field": "user", "risk_object_type": "user", "risk_score": 15}] @@ -19271,7 +19496,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Net Localgroup Discovery - Rule -action.correlationsearch.annotations = {"analytic_story": ["Active Directory Discovery"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Discovery", "Stage:Recon"], "impact": 30, "kill_chain_phases": ["Reconnaissance"], "mitre_attack": ["T1069", "T1069.001"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "user", "role": ["Victim"], "type": "User"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Discovery", "Windows Discovery Techniques"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Discovery", "Stage:Recon"], "impact": 30, "kill_chain_phases": ["Reconnaissance"], "mitre_attack": ["T1069", "T1069.001"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "user", "role": ["Victim"], "type": "User"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -20996,6 +21221,51 @@ realtime_schedule = 0 is_visible = false search = | from datamodel Alerts.Alerts | search app=osquery:results (name=pack_osx-attacks_OSX_ColdRoot_RAT_Launchd OR name=pack_osx-attacks_OSX_ColdRoot_RAT_Files) | rename columns.path as path | bucket _time span=30s | stats count(path) by _time, host, user, path | `osquery_pack___coldroot_detection_filter` +[ESCU - Outbound Network Connection from Java Using Default Ports - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform outbound connections to attacker-controlled infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior could represent successfull exploitation. Note that adversaries can easily decide to use arbitrary ports for these protocols and potentially bypass this detection. +action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +action.escu.data_models = [] +action.escu.eli5 = A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform outbound connections to attacker-controlled infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior could represent successfull exploitation. Note that adversaries can easily decide to use arbitrary ports for these protocols and potentially bypass this detection. +action.escu.how_to_implement = To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. +action.escu.known_false_positives = Legitimate Java applications may use perform outbound connections to these ports. Filter as needed +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Outbound Network Connection from Java Using Default Ports - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = Java performed outbound connections to default ports of LDAP or RMI on $dest$ +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Outbound Network Connection from Java Using Default Ports - Rule +action.correlationsearch.annotations = {"analytic_story": ["Log4Shell CVE-2021-44228"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Execution"], "cve": ["CVE-2021-44228"], "impact": 90, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Hostname"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['dest'] +action.notable.param.rule_description = A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform outbound connections to attacker-controlled infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior could represent successfull exploitation. Note that adversaries can easily decide to use arbitrary ports for these protocols and potentially bypass this detection. +action.notable.param.rule_title = Outbound Network Connection from Java Using Default Ports +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = `sysmon` EventCode=3 (process_name=java OR process_name=java.exe) (DestinationPort=389 OR DestinationPort=1389 OR DestinationPort = 1099 ) | rename Computer as dest | stats count min(_time) as firstTime max(_time) as lastTime by dest, process_name, DestinationPort | `security_content_ctime(firstTime)` | `outbound_network_connection_from_java_using_default_ports_filter` + [ESCU - Overwriting Accessibility Binaries - Rule] action.escu = 0 action.escu.enabled = 1 @@ -21317,6 +21587,51 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process IN ("*/stext *", "*/shtml *", "*/LoadPasswordsIE*", "*/LoadPasswordsFirefox*", "*/LoadPasswordsChrome*", "*/LoadPasswordsOpera*", "*/LoadPasswordsSafari*" , "*/UseOperaPasswordFile*", "*/OperaPasswordFile*","*/stab*", "*/scomma*", "*/stabular*", "*/shtml*", "*/sverhtml*", "*/sxml*", "*/skeepass*" ) AND Processes.process IN ("*\\temp\\*", "*\\users\\public\\*", "*\\programdata\\*") by Processes.dest Processes.user Processes.parent_process_name Processes.parent_process Processes.process_name Processes.process Processes.process_id Processes.parent_process_id Processes.original_file_name | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `possible_browser_pass_view_parameter_filter` +[ESCU - Possible Lateral Movement PowerShell Spawn - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic assists with identifying a PowerShell process spawned as a child or grand child process of commonly abused processes during lateral movement techniques including `services.exe`, `wmiprsve.exe`, `svchost.exe`, `wsmprovhost.exe` and `mmc.exe`. Legitimate Windows features such as the Service Control Manager, Windows Management Instrumentation, Task Scheduler, Windows Remote Management and the DCOM protocol can be abused to start a process on a remote endpoint. Looking for PowerShell spawned out of this processes may reveal a lateral movement attack. Red Teams and adversaries alike may abuse these services during a breach for lateral movement and remote code execution. +action.escu.mappings = {"kill_chain_phases": ["Lateral Movement", "Malicious PowerShell"], "mitre_attack": ["T1021", "T1021.003", "T1021.006", "T1047", "T1053.005", "T1543.003", "T1059.001"]} +action.escu.data_models = ["Endpoint"] +action.escu.eli5 = The following analytic assists with identifying a PowerShell process spawned as a child or grand child process of commonly abused processes during lateral movement techniques including `services.exe`, `wmiprsve.exe`, `svchost.exe`, `wsmprovhost.exe` and `mmc.exe`. Legitimate Windows features such as the Service Control Manager, Windows Management Instrumentation, Task Scheduler, Windows Remote Management and the DCOM protocol can be abused to start a process on a remote endpoint. Looking for PowerShell spawned out of this processes may reveal a lateral movement attack. Red Teams and adversaries alike may abuse these services during a breach for lateral movement and remote code execution. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. +action.escu.known_false_positives = Legitimate applications may spawn PowerShell as a child process of the the identified processes. Filter as needed. +action.escu.creation_date = 2021-11-29 +action.escu.modification_date = 2021-11-29 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Possible Lateral Movement PowerShell Spawn - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Active Directory Lateral Movement", "Malicious PowerShell"] +action.risk = 1 +action.risk.param._risk_message = A PowerShell process was spawned as a child process of typically abused processes on $dest$ +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 45}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Possible Lateral Movement PowerShell Spawn - Rule +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement", "Malicious PowerShell"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement", "Malicious PowerShell"], "mitre_attack": ["T1021", "T1021.003", "T1021.006", "T1047", "T1053.005", "T1543.003", "T1059.001"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user', 'dest'] +action.notable.param.rule_description = The following analytic assists with identifying a PowerShell process spawned as a child or grand child process of commonly abused processes during lateral movement techniques including `services.exe`, `wmiprsve.exe`, `svchost.exe`, `wsmprovhost.exe` and `mmc.exe`. Legitimate Windows features such as the Service Control Manager, Windows Management Instrumentation, Task Scheduler, Windows Remote Management and the DCOM protocol can be abused to start a process on a remote endpoint. Looking for PowerShell spawned out of this processes may reveal a lateral movement attack. Red Teams and adversaries alike may abuse these services during a breach for lateral movement and remote code execution. +action.notable.param.rule_title = Possible Lateral Movement PowerShell Spawn +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where (Processes.parent_process_name=wmiprvse.exe OR Processes.parent_process_name=services.exe OR Processes.parent_process_name=svchost.exe OR Processes.parent_process_name=wsmprovhost.exe OR Processes.parent_process_name=mmc.exe) (Processes.process_name=powershell.exe OR (Processes.process_name=cmd.exe AND Processes.process=*powershell.exe*) OR Processes.process_name=pwsh.exe OR (Processes.process_name=cmd.exe AND Processes.process=*pwsh.exe*)) by Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `possible_lateral_movement_powershell_spawn_filter` + [ESCU - PowerShell 4104 Hunting - Rule] action.escu = 0 action.escu.enabled = 1 @@ -22758,6 +23073,94 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic where All_Traffic.action!=blocked AND All_Traffic.transport="tcp" AND (All_Traffic.dest_port="23" OR All_Traffic.dest_port="143" OR All_Traffic.dest_port="110" OR (All_Traffic.dest_port="21" AND All_Traffic.user != "anonymous")) by All_Traffic.user All_Traffic.src All_Traffic.dest All_Traffic.dest_port | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `drop_dm_object_name("All_Traffic")` | `protocols_passing_authentication_in_cleartext_filter` +[ESCU - Randomly Generated Scheduled Task Name - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following hunting analytic leverages Event ID 4698, `A scheduled task was created`, to identify the creation of a Scheduled Task with a suspicious, high entropy, Task Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Task Scheduler to create and start a remote Scheduled Task and obtain remote code execution. To achieve this goal, tools like Impacket or Crapmapexec, typically create a Scheduled Task with a random task name on the victim host. This hunting analytic may help defenders identify Scheduled Tasks created as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Command field can be used to determine if the task has malicious intent or not. +action.escu.mappings = {"kill_chain_phases": ["Privilege Escalation", "Lateral Movement", "Persistence"], "mitre_attack": ["T1053", "T1053.005"]} +action.escu.data_models = [] +action.escu.eli5 = The following hunting analytic leverages Event ID 4698, `A scheduled task was created`, to identify the creation of a Scheduled Task with a suspicious, high entropy, Task Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Task Scheduler to create and start a remote Scheduled Task and obtain remote code execution. To achieve this goal, tools like Impacket or Crapmapexec, typically create a Scheduled Task with a random task name on the victim host. This hunting analytic may help defenders identify Scheduled Tasks created as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Command field can be used to determine if the task has malicious intent or not. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 4698 EventCode enabled. The Windows TA as well as the URL ToolBox application are also required. +action.escu.known_false_positives = Legitimate applications may use random Scheduled Task names. +action.escu.creation_date = 2021-11-29 +action.escu.modification_date = 2021-11-29 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Randomly Generated Scheduled Task Name - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Active Directory Lateral Movement"] +action.risk = 1 +action.risk.param._risk_message = A windows scheduled task with a suspicious task name was created on $dest$ +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 45}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Randomly Generated Scheduled Task Name - Rule +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Persistence", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Privilege Escalation", "Lateral Movement", "Persistence"], "mitre_attack": ["T1053", "T1053.005"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.rule_description = The following hunting analytic leverages Event ID 4698, `A scheduled task was created`, to identify the creation of a Scheduled Task with a suspicious, high entropy, Task Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Task Scheduler to create and start a remote Scheduled Task and obtain remote code execution. To achieve this goal, tools like Impacket or Crapmapexec, typically create a Scheduled Task with a random task name on the victim host. This hunting analytic may help defenders identify Scheduled Tasks created as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Command field can be used to determine if the task has malicious intent or not. +action.notable.param.rule_title = Randomly Generated Scheduled Task Name +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = `wineventlog_security` EventCode=4698 | xmlkv Message | lookup ut_shannon_lookup word as Task_Name | where ut_shannon > 3 | table _time, dest, Task_Name, ut_shannon, Command, Author, Enabled, Hidden | `randomly_generated_scheduled_task_name_filter` + +[ESCU - Randomly Generated Windows Service Name - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following hunting analytic leverages Event ID 7045, `A new service was installed in the system`, to identify the installation of a Windows Service with a suspicious, high entropy, Service Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Service Control Manager to create and start a remote Windows Service and obtain remote code execution. To achieve this goal, some tools like Metasploit, Cobalt Strike and Impacket, typically create a Windows Service with a random service name on the victim host. This hunting analytic may help defenders identify Windows Services installed as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Service_File_Name field can be used to determine if the Windows Service has malicious intent or not. +action.escu.mappings = {"kill_chain_phases": ["Privilege Escalation", "Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"]} +action.escu.data_models = [] +action.escu.eli5 = The following hunting analytic leverages Event ID 7045, `A new service was installed in the system`, to identify the installation of a Windows Service with a suspicious, high entropy, Service Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Service Control Manager to create and start a remote Windows Service and obtain remote code execution. To achieve this goal, some tools like Metasploit, Cobalt Strike and Impacket, typically create a Windows Service with a random service name on the victim host. This hunting analytic may help defenders identify Windows Services installed as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Service_File_Name field can be used to determine if the Windows Service has malicious intent or not. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the Service name, Service File Name Service Start type, and Service Type from your endpoints. The Windows TA as well as the URL ToolBox application are also required. +action.escu.known_false_positives = Legitimate applications may use random Windows Service names. +action.escu.creation_date = 2021-11-29 +action.escu.modification_date = 2021-11-29 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Randomly Generated Windows Service Name - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Active Directory Lateral Movement"] +action.risk = 1 +action.risk.param._risk_message = A Windows Service with a suspicious service name was installed on $ComputerName$ +action.risk.param._risk = [{"threat_object_field": "Service_File_Name", "threat_object_type": "other"}, {"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 45}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Randomly Generated Windows Service Name - Rule +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Privilege Escalation", "Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "Service_File_Name", "role": ["Other"], "type": "Other"}, {"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.rule_description = The following hunting analytic leverages Event ID 7045, `A new service was installed in the system`, to identify the installation of a Windows Service with a suspicious, high entropy, Service Name. To achieve this, this analytic also leverages the `ut_shannon` function from the URL ToolBox Splunk application. Red teams and adversaries alike may abuse the Service Control Manager to create and start a remote Windows Service and obtain remote code execution. To achieve this goal, some tools like Metasploit, Cobalt Strike and Impacket, typically create a Windows Service with a random service name on the victim host. This hunting analytic may help defenders identify Windows Services installed as part of a lateral movement attack. The entropy threshold `ut_shannon > 3` should be customized by users. The Service_File_Name field can be used to determine if the Windows Service has malicious intent or not. +action.notable.param.rule_title = Randomly Generated Windows Service Name +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = `wineventlog_system` EventCode=7045 | lookup ut_shannon_lookup word as Service_Name | where ut_shannon > 3 | table EventCode ComputerName Service_Name ut_shannon Service_Start_Type Service_Type Service_File_Name | `randomly_generated_windows_service_name_filter` + [ESCU - Ransomware Notes bulk creation - Rule] action.escu = 0 action.escu.enabled = 1 @@ -23389,13 +23792,13 @@ action.escu.full_search_name = ESCU - Remote Desktop Network Traffic - Rule action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["SamSam Ransomware", "Ryuk Ransomware", "Hidden Cobra Malware", "Lateral Movement"] +action.escu.analytic_story = ["SamSam Ransomware", "Ryuk Ransomware", "Hidden Cobra Malware", "Active Directory Lateral Movement"] cron_schedule = 0 * * * * dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Desktop Network Traffic - Rule -action.correlationsearch.annotations = {"analytic_story": ["SamSam Ransomware", "Ryuk Ransomware", "Hidden Cobra Malware", "Lateral Movement"], "cis20": ["CIS 3", "CIS 9", "CIS 16"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1021.001", "T1021"], "nist": ["DE.AE", "PR.AC", "PR.IP"]} +action.correlationsearch.annotations = {"analytic_story": ["SamSam Ransomware", "Ryuk Ransomware", "Hidden Cobra Malware", "Active Directory Lateral Movement"], "cis20": ["CIS 3", "CIS 9", "CIS 16"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1021.001", "T1021"], "nist": ["DE.AE", "PR.AC", "PR.IP"]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['dest', 'src'] @@ -23430,13 +23833,13 @@ action.escu.full_search_name = ESCU - Remote Desktop Process Running On System - action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Hidden Cobra Malware", "Lateral Movement"] +action.escu.analytic_story = ["Hidden Cobra Malware", "Active Directory Lateral Movement"] cron_schedule = 0 * * * * dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Desktop Process Running On System - Rule -action.correlationsearch.annotations = {"analytic_story": ["Hidden Cobra Malware", "Lateral Movement"], "cis20": ["CIS 3", "CIS 9", "CIS 16"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1021.001", "T1021"], "nist": ["DE.AE", "PR.AC", "PR.IP"]} +action.correlationsearch.annotations = {"analytic_story": ["Hidden Cobra Malware", "Active Directory Lateral Movement"], "cis20": ["CIS 3", "CIS 9", "CIS 16"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1021.001", "T1021"], "nist": ["DE.AE", "PR.AC", "PR.IP"]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -23471,7 +23874,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via DCOM and action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $dest by abusing DCOM using PowerShell.exe action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 63}] @@ -23481,7 +23884,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via DCOM and PowerShell - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -23516,7 +23919,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via DCOM and action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $ComputerName by abusing WMI using PowerShell.exe action.risk.param._risk = [{"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 63}] @@ -23526,7 +23929,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via DCOM and PowerShell Script Block - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.003"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.003"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following analytic utilizes PowerShell Script Block Logging (EventCode=4104) to identify the execution of PowerShell with arguments utilized to start a process on a remote endpoint by abusing the DCOM protocol. Specifically, this search looks for the abuse of ShellExecute and ExecuteShellCommand. Red Teams and adversaries alike may abuse DCOM for lateral movement and remote code execution. @@ -23560,7 +23963,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via WMI - Rul action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Ransomware", "Suspicious WMI Use", "Lateral Movement"] +action.escu.analytic_story = ["Ransomware", "Suspicious WMI Use", "Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A wmic.exe process $process$ contain process spawn commandline $process$ in host $dest$ action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 49}, {"risk_object_field": "user", "risk_object_type": "user", "risk_score": 49}] @@ -23570,7 +23973,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via WMI - Rule -action.correlationsearch.annotations = {"analytic_story": ["Ransomware", "Suspicious WMI Use", "Lateral Movement"], "cis20": ["CIS 3", "CIS 5"], "confidence": 70, "context": ["source:endpoint", {"stage": "Execution"}], "impact": 70, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1047"], "nist": ["PR.PT", "PR.AT", "PR.AC", "PR.IP"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "user", "role": ["Victim"], "type": "user"}]} +action.correlationsearch.annotations = {"analytic_story": ["Ransomware", "Suspicious WMI Use", "Active Directory Lateral Movement"], "cis20": ["CIS 3", "CIS 5"], "confidence": 70, "context": ["source:endpoint", {"stage": "Execution"}], "impact": 70, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1047"], "nist": ["PR.PT", "PR.AT", "PR.AC", "PR.IP"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "user", "role": ["Victim"], "type": "user"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -23605,7 +24008,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via WMI and P action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $dest by abusing WMI using PowerShell.exe action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 63}] @@ -23615,7 +24018,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via WMI and PowerShell - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -23650,7 +24053,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via WMI and P action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $ComputerName by abusing WMI using PowerShell.exe action.risk.param._risk = [{"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 63}] @@ -23660,7 +24063,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via WMI and PowerShell Script Block - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 70, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following analytic utilizes PowerShell Script Block Logging (EventCode=4104) to identify the execution of the `Invoke-WmiMethod` commandlet with arguments utilized to start a process on a remote endpoint by abusing WMI. Red Teams and adversaries alike may abuse WMI and this commandlet for lateral movement and remote code execution. @@ -23694,7 +24097,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via WinRM and action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $dest by abusing WinRM using PowerShell.exe action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 45}] @@ -23704,7 +24107,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via WinRM and PowerShell - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -23739,7 +24142,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via WinRM and action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $ComputerName by abusing WinRM using PowerShell.exe action.risk.param._risk = [{"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 45}] @@ -23749,7 +24152,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via WinRM and PowerShell Script Block - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following analytic utilizes PowerShell Script Block Logging (EventCode=4104) to identify the execution of PowerShell with arguments utilized to start a process on a remote endpoint by abusing the WinRM protocol. Specifically, this search looks for the abuse of the `Invoke-Command` commandlet. Red Teams and adversaries alike may abuse WinRM for lateral movement and remote code execution. @@ -23783,7 +24186,7 @@ action.escu.full_search_name = ESCU - Remote Process Instantiation via WinRM and action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A process was started on a remote endpoint from $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -23793,7 +24196,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Remote Process Instantiation via WinRM and Winrs - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -25247,7 +25650,7 @@ action.escu.full_search_name = ESCU - Scheduled Task Creation on Remote Endpoint action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A Windows Scheduled Task was created on a remote endpoint from $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -25257,7 +25660,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Scheduled Task Creation on Remote Endpoint using At - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.002"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.002"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -25337,7 +25740,7 @@ action.escu.full_search_name = ESCU - Scheduled Task Initiation on Remote Endpoi action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A Windows Scheduled Task was ran on a remote endpoint from $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -25347,7 +25750,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Scheduled Task Initiation on Remote Endpoint - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.005"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.005"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -25468,7 +25871,7 @@ action.escu.full_search_name = ESCU - Schtasks scheduling job on remote system - action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement", "NOBELIUM Group"] +action.escu.analytic_story = ["Active Directory Lateral Movement", "NOBELIUM Group"] action.risk = 1 action.risk.param._risk_message = A schedule task process $process_name$ with remote job commandline $process$ in host $dest$ action.risk.param._risk = [{"risk_object_field": "Processes.dest", "risk_object_type": "system", "risk_score": 63}, {"risk_object_field": "Processes.user", "risk_object_type": "user", "risk_score": 63}] @@ -25478,7 +25881,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Schtasks scheduling job on remote system - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement", "NOBELIUM Group"], "cis20": ["CIS 3"], "confidence": 90, "context": ["source:endpoint", {"stage": "Execution"}, "Persistence", "Privilege Escalation"], "impact": 70, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1053.005", "T1053"], "nist": ["PR.IP"], "observable": [{"name": "Processes.dest", "role": ["Victim"], "type": "Hostname"}, {"name": "Processes.user", "role": ["Victim"], "type": "user"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement", "NOBELIUM Group"], "cis20": ["CIS 3"], "confidence": 90, "context": ["source:endpoint", {"stage": "Execution"}, "Persistence", "Privilege Escalation"], "impact": 70, "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1053.005", "T1053"], "nist": ["PR.IP"], "observable": [{"name": "Processes.dest", "role": ["Victim"], "type": "Hostname"}, {"name": "Processes.user", "role": ["Victim"], "type": "user"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -25982,10 +26385,10 @@ search = | tstats `security_content_summariesonly` count min(_time) as firstTime [ESCU - Services LOLBAS Execution Process Spawn - Rule] action.escu = 0 action.escu.enabled = 1 -description = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child processs of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +description = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child process of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.escu.mappings = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"]} action.escu.data_models = ["Endpoint"] -action.escu.eli5 = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child processs of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +action.escu.eli5 = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child process of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. action.escu.known_false_positives = Legitimate applications may trigger this behavior, filter as needed. action.escu.creation_date = 2021-11-22 @@ -25995,7 +26398,7 @@ action.escu.full_search_name = ESCU - Services LOLBAS Execution Process Spawn - action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = Services.exe spawned a LOLBAS process on $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -26005,11 +26408,11 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Services LOLBAS Execution Process Spawn - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] -action.notable.param.rule_description = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child processs of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +action.notable.param.rule_description = The following analytic identifies `services.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Service Control Manager and creating a remote malicious service, the executed command is spawned as a child process of `services.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of services.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.notable.param.rule_title = Services LOLBAS Execution Process Spawn action.notable.param.security_domain = endpoint action.notable.param.severity = high @@ -26159,6 +26562,50 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name = sdbinst.exe by Processes.process_name Processes.parent_process_name Processes.dest Processes.user | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `shim_database_installation_with_suspicious_parameters_filter` +[ESCU - Short Lived Scheduled Task - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic leverages Windows Security EventCode 4698, `A scheduled task was created` and Windows Security EventCode 4699, `A scheduled task was deleted` to identify scheduled tasks created and deleted in less than 30 seconds. This behavior may represent a lateral movement attack abusing the Task Scheduler to obtain code execution. Red Teams and adversaries alike may abuse the Task Scheduler for lateral movement and remote code execution. +action.escu.mappings = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053.005"]} +action.escu.data_models = [] +action.escu.eli5 = The following analytic leverages Windows Security EventCode 4698, `A scheduled task was created` and Windows Security EventCode 4699, `A scheduled task was deleted` to identify scheduled tasks created and deleted in less than 30 seconds. This behavior may represent a lateral movement attack abusing the Task Scheduler to obtain code execution. Red Teams and adversaries alike may abuse the Task Scheduler for lateral movement and remote code execution. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting Windows Security Event Logs with 4698 EventCode enabled. The Windows TA is also required. +action.escu.known_false_positives = Although uncommon, legitimate applications may create and delete a Scheduled Task within 30 seconds. Filter as needed. +action.escu.creation_date = 2021-12-03 +action.escu.modification_date = 2021-12-03 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Short Lived Scheduled Task - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Active Directory Lateral Movement"] +action.risk = 1 +action.risk.param._risk_message = A windows scheduled task was created and deleted in 30 seconds on $ComputerName$ +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 81}, {"threat_object_field": "Command", "threat_object_type": "command"}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Short Lived Scheduled Task - Rule +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 90, "context": ["Source:Endpoint", "Stage:Execution", "Stage:Persistence", "Stage:Privilege Escalation", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053.005"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "Command", "role": ["Target"], "type": "Command"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.rule_description = The following analytic leverages Windows Security EventCode 4698, `A scheduled task was created` and Windows Security EventCode 4699, `A scheduled task was deleted` to identify scheduled tasks created and deleted in less than 30 seconds. This behavior may represent a lateral movement attack abusing the Task Scheduler to obtain code execution. Red Teams and adversaries alike may abuse the Task Scheduler for lateral movement and remote code execution. +action.notable.param.rule_title = Short Lived Scheduled Task +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = `wineventlog_security` EventCode=4698 OR EventCode=4699 | xmlkv Message | transaction Task_Name startswith=(EventCode=4698) endswith=(EventCode=4699) | eval short_lived=case((duration<30),"TRUE") | search short_lived = TRUE | table _time, ComputerName, Account_Name, Command, Task_Name, short_lived | `short_lived_scheduled_task_filter` + [ESCU - Short Lived Windows Accounts - Rule] action.escu = 0 action.escu.enabled = 1 @@ -28521,10 +28968,10 @@ search = | tstats `security_content_summariesonly` count min(_time) as firstTime [ESCU - Svchost LOLBAS Execution Process Spawn - Rule] action.escu = 0 action.escu.enabled = 1 -description = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child processs of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +description = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child process of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.escu.mappings = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.005"]} action.escu.data_models = ["Endpoint"] -action.escu.eli5 = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child processs of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +action.escu.eli5 = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child process of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. action.escu.known_false_positives = Legitimate applications may trigger this behavior, filter as needed. action.escu.creation_date = 2021-11-22 @@ -28534,7 +28981,7 @@ action.escu.full_search_name = ESCU - Svchost LOLBAS Execution Process Spawn - R action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = Svchost.exe spawned a LOLBAS process on $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -28544,11 +28991,11 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Svchost LOLBAS Execution Process Spawn - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.005"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1053", "T1053.005"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] -action.notable.param.rule_description = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child processs of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +action.notable.param.rule_description = The following analytic identifies `svchost.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing the Task Scheduler and creating a malicious remote scheduled task, the executed command is spawned as a child process of `svchost.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of svchost.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.notable.param.rule_title = Svchost LOLBAS Execution Process Spawn action.notable.param.security_domain = endpoint action.notable.param.severity = high @@ -29363,6 +29810,100 @@ realtime_schedule = 0 is_visible = false search = `netbackup` | stats latest(_time) as latestTime by COMPUTERNAME, MESSAGE | search MESSAGE="An error occurred, failed to backup." | `security_content_ctime(latestTime)` | rename COMPUTERNAME as dest, MESSAGE as signature | table latestTime, dest, signature | `unsuccessful_netbackup_backups_filter` +[ESCU - Unusual Number of Computer Service Tickets Requested - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following hunting analytic leverages Event ID 4769, `A Kerberos service ticket was requested`, to identify an unusual number of computer service ticket requests from one source. When a domain joined endpoint connects to a remote endpoint, it first will request a Kerberos Ticket with the computer name as the Service Name. An endpoint requesting a large number of computer service tickets for different endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual number of service requests. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +action.escu.mappings = {"kill_chain_phases": ["Reconnaissance", "Exploitation", "Lateral Movement"], "mitre_attack": ["T1078"]} +action.escu.data_models = [] +action.escu.eli5 = The following hunting analytic leverages Event ID 4769, `A Kerberos service ticket was requested`, to identify an unusual number of computer service ticket requests from one source. When a domain joined endpoint connects to a remote endpoint, it first will request a Kerberos Ticket with the computer name as the Service Name. An endpoint requesting a large number of computer service tickets for different endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual number of service requests. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting Domain Controller and Kerberos events. The Advanced Security Audit policy setting `Audit Kerberos Authentication Service` within `Account Logon` needs to be enabled. +action.escu.known_false_positives = An single endpoint requesting a large number of computer service tickets is not common behavior. Possible false positive scenarios include but are not limited to vulnerability scanners, administration systeams and missconfigured systems. +action.escu.creation_date = 2021-12-01 +action.escu.modification_date = 2021-12-01 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Unusual Number of Computer Service Tickets Requested - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Active Directory Lateral Movement"] +action.risk = 1 +action.risk.param._risk_message = None +action.risk.param._risk = [{"risk_object_field": "Client_Address", "risk_object_type": "system", "risk_score": 42}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Unusual Number of Computer Service Tickets Requested - Rule +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Reconnaissance", "Exploitation", "Lateral Movement"], "mitre_attack": ["T1078"], "observable": [{"name": "Client_Address", "role": ["Victim"], "type": "Endpoint"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.rule_description = The following hunting analytic leverages Event ID 4769, `A Kerberos service ticket was requested`, to identify an unusual number of computer service ticket requests from one source. When a domain joined endpoint connects to a remote endpoint, it first will request a Kerberos Ticket with the computer name as the Service Name. An endpoint requesting a large number of computer service tickets for different endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual number of service requests. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +action.notable.param.rule_title = Unusual Number of Computer Service Tickets Requested +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = `wineventlog_security` EventCode=4769 Service_Name="*$" Account_Name!="*$*" | bucket span=2m _time | stats dc(Service_Name) AS unique_targets values(Service_Name) as host_targets by _time, Client_Address, Account_Name | eventstats avg(unique_targets) as comp_avg , stdev(unique_targets) as comp_std by Client_Address, Account_Name | eval upperBound=(comp_avg+comp_std*3) | eval isOutlier=if(unique_targets >10 and unique_targets >= upperBound, 1, 0) | `unusual_number_of_computer_service_tickets_requested_filter` + +[ESCU - Unusual Number of Remote Endpoint Authentication Events - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following hunting analytic leverages Event ID 4624, `An account was successfully logged on`, to identify an unusual number of remote authentication attempts coming from one source. An endpoint authenticating to a large number of remote endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual high number of authentication events. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +action.escu.mappings = {"kill_chain_phases": ["Reconnaissance", "Lateral Movement"], "mitre_attack": ["T1078"]} +action.escu.data_models = [] +action.escu.eli5 = The following hunting analytic leverages Event ID 4624, `An account was successfully logged on`, to identify an unusual number of remote authentication attempts coming from one source. An endpoint authenticating to a large number of remote endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual high number of authentication events. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting Windows Event Logs from domain controllers aas well as member servers and workstations. The Advanced Security Audit policy setting `Audit Logon` within `Logon/Logoff` needs to be enabled. +action.escu.known_false_positives = An single endpoint authenticating to a large number of hosts is not common behavior. Possible false positive scenarios include but are not limited to vulnerability scanners, jump servers and missconfigured systems. +action.escu.creation_date = 2021-12-01 +action.escu.modification_date = 2021-12-01 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Unusual Number of Remote Endpoint Authentication Events - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Active Directory Lateral Movement"] +action.risk = 1 +action.risk.param._risk_message = None +action.risk.param._risk = [{"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 42}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Unusual Number of Remote Endpoint Authentication Events - Rule +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Reconnaissance", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Reconnaissance", "Lateral Movement"], "mitre_attack": ["T1078"], "observable": [{"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.rule_description = The following hunting analytic leverages Event ID 4624, `An account was successfully logged on`, to identify an unusual number of remote authentication attempts coming from one source. An endpoint authenticating to a large number of remote endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc.\ +The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual high number of authentication events. To customize this analytic, users can try different combinations of the `bucket` span time, the calculation of the `upperBound` field as well as the Outlier calculation. This logic can be used for real time security monitoring as well as threat hunting exercises.\ +action.notable.param.rule_title = Unusual Number of Remote Endpoint Authentication Events +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = `wineventlog_security` EventCode=4624 Logon_Type=3 Account_Name!="*$" | eval Source_Account = mvindex(Account_Name, 1) | bucket span=2m _time | stats dc(ComputerName) AS unique_targets values(ComputerName) as target_hosts by _time, Source_Network_Address, Source_Account | eventstats avg(unique_targets) as comp_avg , stdev(unique_targets) as comp_std by Source_Network_Address, Source_Account | eval upperBound=(comp_avg+comp_std*3) | eval isOutlier=if(unique_targets >10 and unique_targets >= upperBound, 1, 0) `unusual_number_of_remote_endpoint_authentication_events_filter` + [ESCU - Unusually Long Command Line - Rule] action.escu = 0 action.escu.enabled = 1 @@ -30374,6 +30915,51 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` values(Processes.process) as cmdline min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name = "wermgr.exe" `process_cmd` OR `process_powershell` by Processes.parent_process_name Processes.original_file_name Processes.parent_process_id Processes.process_name Processes.process Processes.process_id Processes.process_guid Processes.dest Processes.user | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `wermgr_process_spawned_cmd_or_powershell_process_filter` +[ESCU - Wget Download and Bash Execution - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic identifies the use of wget on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1105"]} +action.escu.data_models = ["Endpoint"] +action.escu.eli5 = The following analytic identifies the use of wget on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. Add parent process name (Processes.parent_process_name) as needed to filter. +action.escu.known_false_positives = False positives should be limited, however filtering may be required. +action.escu.creation_date = 2021-12-11 +action.escu.modification_date = 2021-12-11 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Wget Download and Bash Execution - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Ingress Tool Transfer", "Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = An instance of $process_name$ was identified on endpoint $dest$ attempting to download a remote file and run it with bash. +action.risk.param._risk = [{"risk_object_field": "user", "risk_object_type": "user", "risk_score": 80}, {"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 80}, {"threat_object_field": "process_name", "threat_object_type": "process"}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Wget Download and Bash Execution - Rule +action.correlationsearch.annotations = {"analytic_story": ["Ingress Tool Transfer", "Log4Shell CVE-2021-44228"], "confidence": 100, "context": ["Source:Endpoint", "Stage:Defense Evasion"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1105"], "observable": [{"name": "user", "role": ["Victim"], "type": "User"}, {"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user', 'dest'] +action.notable.param.rule_description = The following analytic identifies the use of wget on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. +action.notable.param.rule_title = Wget Download and Bash Execution +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name=wget (Processes.process="*-q *" OR Processes.process="*--quiet*" AND Processes.process="*-O- *") OR (Processes.process="*|*" AND Processes.process="*bash*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `wget_download_and_bash_execution_filter` + [ESCU - WinEvent Scheduled Task Created Within Public Path - Rule] action.escu = 0 action.escu.enabled = 1 @@ -30398,7 +30984,7 @@ action.escu.full_search_name = ESCU - WinEvent Scheduled Task Created Within Pub action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Windows Persistence Techniques", "Ransomware", "Ryuk Ransomware", "IcedID", "Lateral Movement"] +action.escu.analytic_story = ["Windows Persistence Techniques", "Ransomware", "Ryuk Ransomware", "IcedID", "Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A windows scheduled task was created (task name=$Task_Name$) on $dest$ by the following command: $Command$ action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 70}, {"threat_object_field": "Command", "threat_object_type": "command"}] @@ -30408,7 +30994,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - WinEvent Scheduled Task Created Within Public Path - Rule -action.correlationsearch.annotations = {"analytic_story": ["Windows Persistence Techniques", "Ransomware", "Ryuk Ransomware", "IcedID", "Lateral Movement"], "confidence": 100, "context": ["Source:Endpoint", "Stage:Execution", "Stage:Persistence", "Stage:Privilege Escalation"], "impact": 70, "kill_chain_phases": ["Privilege Escalation"], "mitre_attack": ["T1053.005", "T1053"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "Command", "role": ["Target"], "type": "Command"}]} +action.correlationsearch.annotations = {"analytic_story": ["Windows Persistence Techniques", "Ransomware", "Ryuk Ransomware", "IcedID", "Active Directory Lateral Movement"], "confidence": 100, "context": ["Source:Endpoint", "Stage:Execution", "Stage:Persistence", "Stage:Privilege Escalation"], "impact": 70, "kill_chain_phases": ["Privilege Escalation"], "mitre_attack": ["T1053.005", "T1053"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}, {"name": "Command", "role": ["Target"], "type": "Command"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following query utilizes Windows Security EventCode 4698, `A scheduled task was created`, to identify suspicious tasks registered on Windows either via schtasks.exe OR TaskService with a command to be executed from a user writeable file path.\ @@ -31177,6 +31763,51 @@ realtime_schedule = 0 is_visible = false search = | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes where `process_installutil` Processes.process IN ("*/u*", "*uninstall*") by _time span=1h Processes.process_guid Processes.process_name Processes.dest Processes.process_path Processes.process Processes.parent_process_name | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Ports where Ports.dest_port !="0" by Ports.process_guid Ports.dest Ports.dest_port | `drop_dm_object_name(Ports)` | rename dest as connection_to_CNC] | table _time dest parent_process_name process_name original_file_name process_path process process_guid connection_to_CNC dest_port | `windows_installutil_uninstall_option_with_network_filter` +[ESCU - Windows Java Spawning Shells - Rule] +action.escu = 0 +action.escu.enabled = 1 +description = The following analytic identifies the process name of java.exe and w3wp.exe spawning a Windows shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "cmd.exe", "powershell.exe". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +action.escu.mappings = {"kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"]} +action.escu.data_models = ["Endpoint"] +action.escu.eli5 = The following analytic identifies the process name of java.exe and w3wp.exe spawning a Windows shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "cmd.exe", "powershell.exe". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. Restrict the analytic to publicly facing endpoints to reduce false positives. Add any additional identified web application process name to the query. Add any further Windows process names to the macro (ex. LOLBins) to further expand this query. +action.escu.known_false_positives = Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. +action.escu.creation_date = 2021-12-13 +action.escu.modification_date = 2021-12-13 +action.escu.confidence = high +action.escu.full_search_name = ESCU - Windows Java Spawning Shells - Rule +action.escu.search_type = detection +action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] +action.escu.providing_technologies = [] +action.escu.analytic_story = ["Log4Shell CVE-2021-44228"] +action.risk = 1 +action.risk.param._risk_message = An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ spawning a Windows shell, potentially indicative of exploitation. +action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 40}, {"threat_object_field": "parent_process_name", "threat_object_type": "parent process"}, {"threat_object_field": "process_name", "threat_object_type": "process"}] +action.risk.param.verbose = 0 +cron_schedule = 0 * * * * +dispatch.earliest_time = -70m@m +dispatch.latest_time = -10m@m +action.correlationsearch.enabled = 1 +action.correlationsearch.label = ESCU - Windows Java Spawning Shells - Rule +action.correlationsearch.annotations = {"analytic_story": ["Log4Shell CVE-2021-44228"], "confidence": 50, "context": ["Source:Endpoint", "Stage:Defense Evasion"], "impact": 80, "kill_chain_phases": ["Exploitation"], "mitre_attack": ["T1190"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Hostname"}, {"name": "parent_process_name", "role": ["Parent Process"], "type": "Parent Process"}, {"name": "process_name", "role": ["Child Process"], "type": "Process"}]} +schedule_window = auto +action.notable = 1 +action.notable.param.nes_fields = ['user', 'dest'] +action.notable.param.rule_description = The following analytic identifies the process name of java.exe and w3wp.exe spawning a Windows shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "cmd.exe", "powershell.exe". Upon triage, review parallel processes and command-line arguments to determine legitimacy. +action.notable.param.rule_title = Windows Java Spawning Shells +action.notable.param.security_domain = endpoint +action.notable.param.severity = high +alert.digest_mode = 1 +disabled = true +enableSched = 1 +allow_skew = 100% +counttype = number of events +relation = greater than +quantity = 0 +realtime_schedule = 0 +is_visible = false +search = | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java.exe OR Processes.parent_process_name=w3wp.exe `windows_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_java_spawning_shells_filter` + [ESCU - Windows Security Account Manager Stopped - Rule] action.escu = 0 action.escu.enabled = 1 @@ -31237,7 +31868,7 @@ action.escu.full_search_name = ESCU - Windows Service Created With Suspicious Se action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Clop Ransomware", "Lateral Movement"] +action.escu.analytic_story = ["Clop Ransomware", "Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A service $Service_File_Name$ was created from a non-standard path using $Service_Name$ action.risk.param._risk = [{"threat_object_field": "Service_File_Name", "threat_object_type": "other"}, {"threat_object_field": "Service_Name", "threat_object_type": "other"}] @@ -31247,7 +31878,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Windows Service Created With Suspicious Service Path - Rule -action.correlationsearch.annotations = {"analytic_story": ["Clop Ransomware", "Lateral Movement"], "confidence": 80, "context": ["Source:Endpoint", "Stage:Privilege Escalation", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Privilege Escalation", "Lateral Movement"], "mitre_attack": ["T1569", "T1569.002"], "observable": [{"name": "Service_File_Name", "role": ["Other"], "type": "Other"}, {"name": "Service_Name", "role": ["Other"], "type": "Other"}]} +action.correlationsearch.annotations = {"analytic_story": ["Clop Ransomware", "Active Directory Lateral Movement"], "confidence": 80, "context": ["Source:Endpoint", "Stage:Privilege Escalation", "Stage:Lateral Movement"], "impact": 70, "kill_chain_phases": ["Privilege Escalation", "Lateral Movement"], "mitre_attack": ["T1569", "T1569.002"], "observable": [{"name": "Service_File_Name", "role": ["Other"], "type": "Other"}, {"name": "Service_Name", "role": ["Other"], "type": "Other"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following analytc uses Windows Event Id 7045, `New Service Was Installed`, to identify the creation of a Windows Service where the service binary path path is located in a non-common Service folder in Windows. Red Teams and adversaries alike may create malicious Services for lateral movement or remote code execution as well as persistence and execution. The Clop ransomware has also been seen in the wild abusing Windows services. @@ -31281,7 +31912,7 @@ action.escu.full_search_name = ESCU - Windows Service Created Within Public Path action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A Windows Service $Service_File_Name$ with a public path was created on $ComputerName action.risk.param._risk = [{"threat_object_field": "Service_File_Name", "threat_object_type": "other"}, {"risk_object_field": "ComputerName", "risk_object_type": "system", "risk_score": 54}] @@ -31291,7 +31922,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Windows Service Created Within Public Path - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "Service_File_Name", "role": ["Other"], "type": "Other"}, {"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "Service_File_Name", "role": ["Other"], "type": "Other"}, {"name": "ComputerName", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.rule_description = The following analytc uses Windows Event Id 7045, `New Service Was Installed`, to identify the creation of a Windows Service where the service binary path is located in public paths. This behavior could represent the installation of a malicious service. Red Teams and adversaries alike may create malicious Services for lateral movement or remote code execution @@ -31325,7 +31956,7 @@ action.escu.full_search_name = ESCU - Windows Service Creation on Remote Endpoin action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A Windows Service was created on a remote endpoint from $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -31335,7 +31966,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Windows Service Creation on Remote Endpoint - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -31370,7 +32001,7 @@ action.escu.full_search_name = ESCU - Windows Service Initiation on Remote Endpo action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = A Windows Service was started on a remote endpoint from $dest action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -31380,7 +32011,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Windows Service Initiation on Remote Endpoint - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1543", "T1543.003"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -31760,10 +32391,10 @@ search = | tstats `security_content_summariesonly` count min(_time) as firstTime [ESCU - Wmiprsve LOLBAS Execution Process Spawn - Rule] action.escu = 0 action.escu.enabled = 1 -description = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumention (WMI), the executed command is spawned as a child processs of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +description = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumentation (WMI), the executed command is spawned as a child process of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.escu.mappings = {"kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"]} action.escu.data_models = ["Endpoint"] -action.escu.eli5 = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumention (WMI), the executed command is spawned as a child processs of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +action.escu.eli5 = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumentation (WMI), the executed command is spawned as a child process of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.escu.how_to_implement = To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. action.escu.known_false_positives = Legitimate applications may trigger this behavior, filter as needed. action.escu.creation_date = 2021-11-22 @@ -31773,7 +32404,7 @@ action.escu.full_search_name = ESCU - Wmiprsve LOLBAS Execution Process Spawn - action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = Wmiprsve.exe spawned a LOLBAS process on $dest$. action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -31783,11 +32414,11 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Wmiprsve LOLBAS Execution Process Spawn - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1047"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] -action.notable.param.rule_description = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumention (WMI), the executed command is spawned as a child processs of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. +action.notable.param.rule_description = The following analytic identifies `wmiprsve.exe` spawning a LOLBAS execution process. When adversaries execute code on remote endpoints abusing Windows Management Instrumentation (WMI), the executed command is spawned as a child process of `wmiprvse.exe`. The LOLBAS project documents Windows native binaries that can be abused by threat actors to perform tasks like executing malicious code. Looking for child processes of wmiprvse.exe that are part of the LOLBAS project can help defenders identify lateral movement activity. action.notable.param.rule_title = Wmiprsve LOLBAS Execution Process Spawn action.notable.param.security_domain = endpoint action.notable.param.severity = high @@ -31863,7 +32494,7 @@ action.escu.full_search_name = ESCU - Wsmprovhost LOLBAS Execution Process Spawn action.escu.search_type = detection action.escu.product = ["Splunk Enterprise", "Splunk Enterprise Security", "Splunk Cloud"] action.escu.providing_technologies = [] -action.escu.analytic_story = ["Lateral Movement"] +action.escu.analytic_story = ["Active Directory Lateral Movement"] action.risk = 1 action.risk.param._risk_message = Wsmprovhost.exe spawned a LOLBAS process on $dest$. action.risk.param._risk = [{"risk_object_field": "dest", "risk_object_type": "system", "risk_score": 54}] @@ -31873,7 +32504,7 @@ dispatch.earliest_time = -70m@m dispatch.latest_time = -10m@m action.correlationsearch.enabled = 1 action.correlationsearch.label = ESCU - Wsmprovhost LOLBAS Execution Process Spawn - Rule -action.correlationsearch.annotations = {"analytic_story": ["Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} +action.correlationsearch.annotations = {"analytic_story": ["Active Directory Lateral Movement"], "confidence": 60, "context": ["Source:Endpoint", "Stage:Lateral Movement"], "impact": 90, "kill_chain_phases": ["Lateral Movement"], "mitre_attack": ["T1021", "T1021.006"], "observable": [{"name": "dest", "role": ["Victim"], "type": "Endpoint"}]} schedule_window = auto action.notable = 1 action.notable.param.nes_fields = ['user', 'dest'] @@ -34511,7 +35142,7 @@ action.escu.full_search_name = ESCU - Investigate Successful Remote Desktop Auth description = This search returns the source, destination, and user for all successful remote-desktop authentications. A successful authentication after a brute-force attack on a destination machine is suspicious behavior. action.escu.creation_date = 2018-12-14 action.escu.modification_date = 2018-12-14 -action.escu.analytic_story = ["Hidden Cobra Malware", "Lateral Movement", "SamSam Ransomware"] +action.escu.analytic_story = ["Hidden Cobra Malware", "Active Directory Lateral Movement", "SamSam Ransomware"] action.escu.earliest_time_offset = 3600 action.escu.latest_time_offset = 86400 action.escu.providing_technologies = [] diff --git a/dist/escu/default/transforms.conf b/dist/escu/default/transforms.conf index e6683f1cca..20a0b3dcda 100644 --- a/dist/escu/default/transforms.conf +++ b/dist/escu/default/transforms.conf @@ -1,6 +1,6 @@ ############# # Automatically generated by generator.py in splunk/security_content -# On Date: 2021-12-02T18:37:19 UTC +# On Date: 2021-12-14T17:20:43 UTC # Author: Splunk Security Research # Contact: research@splunk.com ############# diff --git a/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml b/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml index 851d8449fa..1eebe1dbaf 100644 --- a/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml +++ b/tests/web/log4shell_jndi_payload_injection_with_outbound_connection.test.yml @@ -3,10 +3,14 @@ tests: - name: Log4Shell JNDI Payload Injection with Outbound Connection file: web/log4shell_jndi_payload_injection_with_outbound_connection.yml pass_condition: '| stats count | where count > 0' - earliest_time: '-24h' + earliest_time: '-360d' latest_time: 'now' attack_data: - - file_name: UPDATE_FILE_NAME - data: UPDATE_DATASET_URL - source: UPDATE_SPLUNK_SOURCE - sourcetype: UPDATE_SPLUNK_SOURCETYPE \ No newline at end of file + - file_name: nginx.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log + source: nginx + sourcetype: nginx:plus:kv + - file_name: stream.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_network_logs/log4j_network_logs.log + source: stream:Splunk_IP + sourcetype: stream:ip \ No newline at end of file From f03ab2f7210aa8fa6b437aaac35d514d0ca072ab Mon Sep 17 00:00:00 2001 From: root Date: Tue, 14 Dec 2021 17:42:22 +0000 Subject: [PATCH 25/53] Added detection testing service results inLog4Shell JNDI Payload Injection Attempt --- ...g4shell_jndi_payload_injection_attempt.yml | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/detections/web/log4shell_jndi_payload_injection_attempt.yml b/detections/web/log4shell_jndi_payload_injection_attempt.yml index 362fa9e928..da16fe3636 100644 --- a/detections/web/log4shell_jndi_payload_injection_attempt.yml +++ b/detections/web/log4shell_jndi_payload_injection_attempt.yml @@ -6,16 +6,31 @@ author: Jose Hernandez type: Anomaly datamodel: - Web -description: CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. - The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. - In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. - If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. +description: CVE-2021-44228 Log4Shell payloads can be injected via various methods, + but on of the most common vectors injection is via Web calls. Many of the vulnerable + java web applications that are using log4j have a web component to them are specially + targets of this injection, specifically projects like Apache Struts, Flink, Druid, + and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, + its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against + vulnerable web applications the invocation can be seen in various part of web logs. + Specifically it has been successfully exploited via headers like X-Forwarded-For, + User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope + of our search to the Web Datamodel and use the `| from datamodel` function to benefit + from schema accelerated searching capabilities, mainly because the second part of + the detection is pretty heavy, it runs a regex across all _raw events that looks + for `${jndi:ldap://` pattern across all potential web fields available to the raw + data, like http headers for example. If you see results for this detection, it means + that there was a attempt at a injection, which could be a reconnaissance activity + or a valid expliotation attempt, but this does not exactly mean that the host was + indeed successfully exploited. search: '| from datamodel Web.Web | regex _raw="[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)\w+(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?" - | fillnull - | stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user - | `log4shell_jndi_payload_injection_attempt_filter`' -how_to_implement: This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. -known_false_positives: If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. + | fillnull | stats count by action, category, dest, dest_port, http_content_type, + http_method, http_referrer, http_user_agent, site, src, url, url_domain, user | + `log4shell_jndi_payload_injection_attempt_filter`' +how_to_implement: This detection requires the Web datamodel to be populated from a + supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +known_false_positives: If there is a vulnerablility scannner looking for log4shells + this will trigger, otherwise likely to have low false positives. references: - https://www.lunasec.io/docs/blog/log4j-zero-day/ tags: @@ -49,9 +64,8 @@ tags: security_domain: threat impact: 50 confidence: 30 - # (impact * confidence)/100 risk_score: 15 - context: + context: null message: CVE-2021-44228 Log4Shell triggered for host $dest$ observable: - name: user @@ -70,3 +84,4 @@ tags: - CIS 16 cve: - CVE-2021-44228 + automated_detection_testing: passed From b278b439784be1119f09bb9e54b9abbf30bea5bb Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Tue, 14 Dec 2021 18:43:02 +0100 Subject: [PATCH 26/53] log4j --- detections/web/log4shell_jndi_payload_injection_attempt.yml | 2 ++ ...og4shell_jndi_payload_injection_with_outbound_connection.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/detections/web/log4shell_jndi_payload_injection_attempt.yml b/detections/web/log4shell_jndi_payload_injection_attempt.yml index 362fa9e928..cf3452f58e 100644 --- a/detections/web/log4shell_jndi_payload_injection_attempt.yml +++ b/detections/web/log4shell_jndi_payload_injection_attempt.yml @@ -52,6 +52,8 @@ tags: # (impact * confidence)/100 risk_score: 15 context: + - Source:Application Log + - Stage:Execution message: CVE-2021-44228 Log4Shell triggered for host $dest$ observable: - name: user diff --git a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml index 1ca70888e7..a4737c1abe 100644 --- a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml +++ b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml @@ -57,6 +57,8 @@ tags: # (impact * confidence)/100 risk_score: 15 context: + - Source:Application Log + - Stage:Execution message: CVE-2021-44228 Log4Shell triggered for host $dest$ observable: - name: user From 66a72dff7a335d5590db8a78b29817e04918a16e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 14 Dec 2021 18:05:07 +0000 Subject: [PATCH 27/53] Added detection testing service results inLog4Shell JNDI Payload Injection with Outbound Connection --- ...oad_injection_with_outbound_connection.yml | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml index a4737c1abe..6374b1bff4 100644 --- a/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml +++ b/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml @@ -7,20 +7,27 @@ type: Anomaly datamodel: - Network_Traffic - Web -description: CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. - Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. - The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. - Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. - In this detection we match the invocation function with a network connection to a malicious ip address. -search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" - | join affected_host type=inner - [| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest - | `drop_dm_object_name(All_Traffic)` - | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | rename dest AS affected_host] - | fillnull - | stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user | `log4shell_jndi_payload_injection_with_outbound_connection_filter`' -how_to_implement: This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. -known_false_positives: If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. +description: CVE-2021-44228 Log4Shell payloads can be injected via various methods, + but on of the most common vectors injection is via Web calls. Many of the vulnerable + java web applications that are using log4j have a web component to them are specially + targets of this injection, specifically projects like Apache Struts, Flink, Druid, + and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, + its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against + vulnerable web applications the invocation can be seen in various part of web logs. + Specifically it has been successfully exploited via headers like X-Forwarded-For, + User-Agent, Referer, and X-Api-Version. In this detection we match the invocation + function with a network connection to a malicious ip address. +search: '| from datamodel Web.Web | rex field=_raw max_match=0 "[jJnNdDiI]{4}(\:|\%3A|\/|\%2F)(?\w+)(\:\/\/|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" + | join affected_host type=inner [| tstats `security_content_summariesonly` count + min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic.All_Traffic + by All_Traffic.dest | `drop_dm_object_name(All_Traffic)` | `security_content_ctime(firstTime)` + | `security_content_ctime(lastTime)` | rename dest AS affected_host] | fillnull + | stats count by action, category, dest, dest_port, http_content_type, http_method, + http_referrer, http_user_agent, site, src, url, url_domain, user | `log4shell_jndi_payload_injection_with_outbound_connection_filter`' +how_to_implement: This detection requires the Web datamodel to be populated from a + supported Technology Add-On like Splunk for Apache or Splunk for Nginx. +known_false_positives: If there is a vulnerablility scannner looking for log4shells + this will trigger, otherwise likely to have low false positives. references: - https://www.lunasec.io/docs/blog/log4j-zero-day/ tags: @@ -53,10 +60,9 @@ tags: - user security_domain: threat impact: 50 - confidence: 30 - # (impact * confidence)/100 + confidence: 30 risk_score: 15 - context: + context: - Source:Application Log - Stage:Execution message: CVE-2021-44228 Log4Shell triggered for host $dest$ @@ -76,4 +82,5 @@ tags: - CIS 5 - CIS 16 cve: - - CVE-2021-44228 \ No newline at end of file + - CVE-2021-44228 + automated_detection_testing: passed From 05b189232dd2b0a71a21c40be76ae09ad94f1fc3 Mon Sep 17 00:00:00 2001 From: patel-bhavin Date: Tue, 14 Dec 2021 10:10:23 -0800 Subject: [PATCH 28/53] ldap outbound --- .../network/detect_outbound_ldap_traffic.yml | 63 +++++++++++++++++++ .../detect_outbound_ldap_traffic.test.yml | 12 ++++ 2 files changed, 75 insertions(+) create mode 100644 detections/network/detect_outbound_ldap_traffic.yml create mode 100644 tests/network/detect_outbound_ldap_traffic.test.yml diff --git a/detections/network/detect_outbound_ldap_traffic.yml b/detections/network/detect_outbound_ldap_traffic.yml new file mode 100644 index 0000000000..8ec6171cf9 --- /dev/null +++ b/detections/network/detect_outbound_ldap_traffic.yml @@ -0,0 +1,63 @@ +name: Detect Outbound LDAP Traffic +id: c77162d3-f91c-45cc-80c8-22f6v546119f +version: 1 +date: '2021-12-13' +author: Bhavin Patel, Johan Bjerke, Splunk +type: Hunting +datamodel: +- Network_Traffic +description: Malicious actors often abuse misconfigured LDAP servers or applications that use the LDAP servers in organizations. Outbound LDAP traffic should not be allowed outbound through your perimeter firewall. This search will help determine if you have any LDAP connections to IP addresses outside of private (RFC1918) address space. +search: '| tstats earliest(_time) as earliest_time latest(_time) as latest_time values(All_Traffic.dest_ip) as dest_ip from datamodel=Network_Traffic.All_Traffic where All_Traffic.dest_port = 389 OR All_Traffic.dest_port = 636 AND NOT (All_Traffic.dest_ip = 10.0.0.0/8 OR All_Traffic.dest_ip=192.168.0.0/16 OR All_Traffic.dest_ip = 172.16.0.0/12) by All_Traffic.src_ip All_Traffic.dest_ip |`drop_dm_object_name("All_Traffic")` | where src_ip != dest_ip | `security_content_ctime(latest_time)` | `security_content_ctime(earliest_time)` +|`detect_outbound_ldap_traffic_filter`' +how_to_implement: 'You must be ingesting Zeek DNS and Zeek Conn data into Splunk. Zeek + data should also be getting ingested in JSON format and should be mapped to the Network Traffic datamodels that are in use for this search.' +known_false_positives: Unknown at this moment. Outbound LDAP traffic should not be allowed outbound through your perimeter firewall. Please check those servers to verify if the activity is legitimate. +references: + - https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/ +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + asset_type: Endpoint + cis20: + - CIS 12 + - CIS 13 + confidence: 80 + context: + - Source:Endpoint + - Stage:Initial Access + dataset: + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_ldap/bro_conn.json + impact: 70 + kill_chain_phases: + - Command and Control + - Actions on Objectives + message: An outbound LDAP connection from $src_ip$ in your infrastructure connecting to dest ip $dest_ip$ + mitre_attack_id: + - T1190 + - T1059 + nist: + - PR.DS + - PR.PT + - DE.AE + - DE.CM + observable: + - name: src_ip + type: IP Address + role: + - Victim + - name: dest_ip + type: IP Address + role: + - Attacker + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - All_Traffic.dest_ip + - All_Traffic.dest_port + - All_Traffic.src_ip + risk_score: 56 + security_domain: network + automated_detection_testing: passed diff --git a/tests/network/detect_outbound_ldap_traffic.test.yml b/tests/network/detect_outbound_ldap_traffic.test.yml new file mode 100644 index 0000000000..ab5157a405 --- /dev/null +++ b/tests/network/detect_outbound_ldap_traffic.test.yml @@ -0,0 +1,12 @@ +name: Detect Outbound LDAP Traffic Unit Test +tests: +- name: Detect Outbound LDAP Traffic + file: network/detect_outbound_ldap_traffic.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-30d' + latest_time: 'now' + attack_data: + - file_name: stream_http_events.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_ldap/bro_conn.json + sourcetype: bro:conn:json + source: /opt/malware/conn.log \ No newline at end of file From 9ba2c45a244f41ca7bb59460b4fa77936e0e2e10 Mon Sep 17 00:00:00 2001 From: Bhavin Patel Date: Tue, 14 Dec 2021 12:17:08 -0800 Subject: [PATCH 29/53] Update cmd_carry_out_string_command_parameter.yml --- .../cmd_carry_out_string_command_parameter.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/detections/endpoint/cmd_carry_out_string_command_parameter.yml b/detections/endpoint/cmd_carry_out_string_command_parameter.yml index 6a8f99d82f..043a3ddf01 100644 --- a/detections/endpoint/cmd_carry_out_string_command_parameter.yml +++ b/detections/endpoint/cmd_carry_out_string_command_parameter.yml @@ -2,7 +2,7 @@ name: CMD Carry Out String Command Parameter id: 54a6ed00-3256-11ec-b031-acde48001122 version: 2 date: '2021-12-13' -author: Teoderick Contreras, Splunk, Bhavin Patel, Splunk +author: Teoderick Contreras, Bhavin Patel, Splunk type: Hunting datamodel: - Endpoint @@ -18,10 +18,11 @@ search: '| tstats `security_content_summariesonly` min(_time) as firstTime max(_ Processes.original_file_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `cmd_carry_out_string_command_parameter_filter`' -how_to_implement: To successfully implement this search, you need to be ingesting - logs with the process name, parent process, and command-line executions from your - endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the - Sysmon TA. +how_to_implement: To successfully implement this search you need to be ingesting information + on process that include the name of the process responsible for the changes from + your endpoints into the `Endpoint` datamodel in the `Processes` node. In addition, + confirm the latest CIM App 4.20 or higher is installed and the latest TA for the + endpoint product. known_false_positives: False positives may be high based on legitimate scripted code in any environment. Filter as needed. references: @@ -69,4 +70,4 @@ tags: - Processes.process_id - Processes.parent_process_id risk_score: 30 - security_domain: endpoint \ No newline at end of file + security_domain: endpoint From a4aaf03206ff041be6a9ff313665f9cd959cc5cf Mon Sep 17 00:00:00 2001 From: Bhavin Patel Date: Tue, 14 Dec 2021 12:18:58 -0800 Subject: [PATCH 30/53] Update outbound_network_connection_from_java_using_default_ports.yml --- ...ound_network_connection_from_java_using_default_ports.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml index 4c30dd09a2..22f2e44f70 100644 --- a/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml +++ b/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml @@ -4,11 +4,10 @@ version: 1 date: '2021-12-13' author: Mauricio Velazco, Splunk type: TTP -datamodel: -- Endpoint +datamodel: [] description: A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform outbound connections to attacker-controlled - infrastrucutre. This is required as part of the JNDI lookup as well as for retrieving + infrastructure. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior could represent successfull exploitation. Note that adversaries can easily decide to use From 303d082e431f2c3d320f074938f3d3ac1422f3e3 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Tue, 14 Dec 2021 13:20:22 -0700 Subject: [PATCH 31/53] Create hunting_for_log4shell.yml --- detections/endpoint/hunting_for_log4shell.yml | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 detections/endpoint/hunting_for_log4shell.yml diff --git a/detections/endpoint/hunting_for_log4shell.yml b/detections/endpoint/hunting_for_log4shell.yml new file mode 100644 index 0000000000..95f6cd521f --- /dev/null +++ b/detections/endpoint/hunting_for_log4shell.yml @@ -0,0 +1,96 @@ +name: Hunting for Log4Shell +id: 158b68fa-5d1a-11ec-aac8-acde48001122 +version: 1 +date: '2021-12-14' +author: Michael Haag, Splunk +type: Hunting +datamodel: + - Web +description: 'The following hunting query assists with quickly assessing CVE-2021-44228, or Log4Shell, activity mapped to the Web Datamodel. This is a combination query attempting to identify, score and dashboard. Because the Log4Shell vulnerability requires the string to be in the logs, this will work to identify the activity anywhere in the HTTP headers using _raw. Modify the first line to use the same pattern matching against other log sources. Scoring is based on a simple rubric of 0-5. 5 being the best match, and less than 5 meant to identify additional patterns that will equate to a higher total score. \ + + The first jndi match identifies the standard pattern of `{jndi:` \ + + jndi_fastmatch is meant to identify any jndi in the logs. The score is set low and is meant to be the "base" score used later. \ + + jndi_proto is a protocol match that identifies `jndi` and one of `ldap, ldaps, rmi, dns, nis, iiop, corba, nds, http, https.` \ + + all_match is a very well written regex by https://gist.github.com/Schvenn that identifies nearly all patterns of this attack behavior. \ + + env works to identify environment variables in the header, meant to capture `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and `env`. \ + + uri_detect is string match looking for the common uri paths currently being scanned/abused in the wild. \ + + keywords matches on enumerated values that, like `$ctx:loginId`, that may be found in the header used by the adversary. \ + + lower and upper matching is meant to catch some basic obfuscation that has been identified. \ + + Scoring will then occur based on any findings. The base score is meant to be 2 , created by jndi_fastmatch. Everything else is meant to increase that score. \ + + Finally, a simple table is created to show the scoring and the _raw field. Sort based on score or columns of interest.' +search: '| from datamodel Web.Web + | eval jndi=if(match(_raw, "(\{|%7B)[jJnNdDiI]{4}:"),4,0) + | eval jndi_fastmatch=if(match(_raw, "[jJnNdDiI]{4}"),2,0) + | eval jndi_proto=if(match(_raw,"(?i)jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http|https):"),5,0) + | eval all_match = if(match(_raw, "(?i)(%(25){0,}20|\s)*(%(25){0,}24|\$)(%(25){0,}20|\s)*(%(25){0,}7B|{)(%(25){0,}20|\s)*(%(25){0,}(6A|4A)|J)(%(25){0,}(6E|4E)|N)(%(25){0,}(64|44)|D)(%(25){0,}(69|49)|I)(%(25){0,}20|\s)*(%(25){0,}3A|:)[\w\%]+(%(25){1,}3A|:)(%(25){1,}2F|\/)[^\n]+"),5,0) + | eval env_var = if(match(_raw, "env:") OR match(_raw, "env:AWS_ACCESS_KEY_ID") OR match(_raw, "env:AWS_SECRET_ACCESS_KEY"),5,0) + | eval uridetect = if(match(_raw, "(?i)Basic\/Command\/Base64|Basic\/ReverseShell|Basic\/TomcatMemshell|Basic\/JBossMemshell|Basic\/WebsphereMemshell|Basic\/SpringMemshell|Basic\/Command|Deserialization\/CommonsCollectionsK|Deserialization\/CommonsBeanutils|Deserialization\/Jre8u20\/TomcatMemshell|Deserialization\/CVE_2020_2555\/WeblogicMemshell|TomcatBypass|GroovyBypass|WebsphereBypass"),4,0) + | eval keywords = if(match(_raw,"(?i)\$\{ctx\:loginId\}|\$\{map\:type\}|\$\{filename\}|\$\{date\:MM-dd-yyyy\}|\$\{docker\:containerId\}|\$\{docker\:containerName\}|\$\{docker\:imageName\}|\$\{env\:USER\}|\$\{event\:Marker\}|\$\{mdc\:UserId\}|\$\{java\:runtime\}|\$\{java\:vm\}|\$\{java\:os\}|\$\{jndi\:logging/context-name\}|\$\{hostName\}|\$\{docker\:containerId\}|\$\{k8s\:accountName\}|\$\{k8s\:clusterName\}|\$\{k8s\:containerId\}|\$\{k8s\:containerName\}|\$\{k8s\:host\}|\$\{k8s\:labels.app\}|\$\{k8s\:labels.podTemplateHash\}|\$\{k8s\:masterUrl\}|\$\{k8s\:namespaceId\}|\$\{k8s\:namespaceName\}|\$\{k8s\:podId\}|\$\{k8s\:podIp\}|\$\{k8s\:podName\}|\$\{k8s\:imageId\}|\$\{k8s\:imageName\}|\$\{log4j\:configLocation\}|\$\{log4j\:configParentLocation\}|\$\{spring\:spring.application.name\}|\$\{main\:myString\}|\$\{main\:0\}|\$\{main\:1\}|\$\{main\:2\}|\$\{main\:3\}|\$\{main\:4\}|\$\{main\:bar\}|\$\{name\}|\$\{marker\}|\$\{marker\:name\}|\$\{spring\:profiles.active[0]|\$\{sys\:logPath\}|\$\{web\:rootDir\}"),4,0) + | eval lower = if(match(_raw, "lower:"),2,0) + | eval upper = if(match(_raw, "upper:"),2,0) + | addtotals + fieldname=Score, jndi, jndi_proto, env_var, uridetect, all_match, lower, upper, jndi_fastmatch, keywords + | where Score > 2 + | stats values(Score) by jndi, jndi_proto, env_var, uridetect, all_match, lower,upper, jndi_fastmatch, keywords _raw + | `hunting_for_log4shell_filter`' +how_to_implement: Out of the box, the Web datamodel is required to be pre-filled. However, tested was performed against raw httpd access logs. Change the first line to any dataset to pass the regex's against. +known_false_positives: It is highly possible you will find false positives, however, the base score is set to 2 for _any_ jndi found in raw logs. tune and change as needed, include any filtering. +references: + - https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72 + - https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b#gistcomment-3994449 + - https://regex101.com/r/OSrm0q/1/ + - https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar + - https://news.sophos.com/en-us/2021/12/12/log4shell-hell-anatomy-of-an-exploit-outbreak/ + - https://gist.github.com/MHaggis/1899b8554f38c8692a9fb0ceba60b44c + - https://twitter.com/sasi2103/status/1469764719850442760?s=20 +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + asset_type: Web Server + dataset: [] + kill_chain_phases: + - Exploitation + mitre_attack_id: + - T1190 + product: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + required_fields: + - _time + - Web.http_method + - Web.url + - Web.url_length + - Web.src + - Web.dest + - Web.http_user_agent + - _raw + security_domain: network + impact: 80 + confidence: 50 + risk_score: 40 + context: + - Source:network + message: Hunting for Log4Shell exploitation has occurred. + observable: + - name: dest + type: Hostname + role: + - Victim + - name: http_method + type: Other + role: + - other + - name: src + type: Other + role: + - other From 918e73d4145271718434c4d32c0df3e309878848 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Tue, 14 Dec 2021 14:35:25 -0700 Subject: [PATCH 32/53] Update hunting_for_log4shell.yml --- detections/endpoint/hunting_for_log4shell.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/detections/endpoint/hunting_for_log4shell.yml b/detections/endpoint/hunting_for_log4shell.yml index 95f6cd521f..7ad19281a4 100644 --- a/detections/endpoint/hunting_for_log4shell.yml +++ b/detections/endpoint/hunting_for_log4shell.yml @@ -22,7 +22,7 @@ description: 'The following hunting query assists with quickly assessing CVE-202 keywords matches on enumerated values that, like `$ctx:loginId`, that may be found in the header used by the adversary. \ - lower and upper matching is meant to catch some basic obfuscation that has been identified. \ + lookup matching is meant to catch some basic obfuscation that has been identified using upper, lower and date. \ Scoring will then occur based on any findings. The base score is meant to be 2 , created by jndi_fastmatch. Everything else is meant to increase that score. \ @@ -34,13 +34,13 @@ search: '| from datamodel Web.Web | eval all_match = if(match(_raw, "(?i)(%(25){0,}20|\s)*(%(25){0,}24|\$)(%(25){0,}20|\s)*(%(25){0,}7B|{)(%(25){0,}20|\s)*(%(25){0,}(6A|4A)|J)(%(25){0,}(6E|4E)|N)(%(25){0,}(64|44)|D)(%(25){0,}(69|49)|I)(%(25){0,}20|\s)*(%(25){0,}3A|:)[\w\%]+(%(25){1,}3A|:)(%(25){1,}2F|\/)[^\n]+"),5,0) | eval env_var = if(match(_raw, "env:") OR match(_raw, "env:AWS_ACCESS_KEY_ID") OR match(_raw, "env:AWS_SECRET_ACCESS_KEY"),5,0) | eval uridetect = if(match(_raw, "(?i)Basic\/Command\/Base64|Basic\/ReverseShell|Basic\/TomcatMemshell|Basic\/JBossMemshell|Basic\/WebsphereMemshell|Basic\/SpringMemshell|Basic\/Command|Deserialization\/CommonsCollectionsK|Deserialization\/CommonsBeanutils|Deserialization\/Jre8u20\/TomcatMemshell|Deserialization\/CVE_2020_2555\/WeblogicMemshell|TomcatBypass|GroovyBypass|WebsphereBypass"),4,0) - | eval keywords = if(match(_raw,"(?i)\$\{ctx\:loginId\}|\$\{map\:type\}|\$\{filename\}|\$\{date\:MM-dd-yyyy\}|\$\{docker\:containerId\}|\$\{docker\:containerName\}|\$\{docker\:imageName\}|\$\{env\:USER\}|\$\{event\:Marker\}|\$\{mdc\:UserId\}|\$\{java\:runtime\}|\$\{java\:vm\}|\$\{java\:os\}|\$\{jndi\:logging/context-name\}|\$\{hostName\}|\$\{docker\:containerId\}|\$\{k8s\:accountName\}|\$\{k8s\:clusterName\}|\$\{k8s\:containerId\}|\$\{k8s\:containerName\}|\$\{k8s\:host\}|\$\{k8s\:labels.app\}|\$\{k8s\:labels.podTemplateHash\}|\$\{k8s\:masterUrl\}|\$\{k8s\:namespaceId\}|\$\{k8s\:namespaceName\}|\$\{k8s\:podId\}|\$\{k8s\:podIp\}|\$\{k8s\:podName\}|\$\{k8s\:imageId\}|\$\{k8s\:imageName\}|\$\{log4j\:configLocation\}|\$\{log4j\:configParentLocation\}|\$\{spring\:spring.application.name\}|\$\{main\:myString\}|\$\{main\:0\}|\$\{main\:1\}|\$\{main\:2\}|\$\{main\:3\}|\$\{main\:4\}|\$\{main\:bar\}|\$\{name\}|\$\{marker\}|\$\{marker\:name\}|\$\{spring\:profiles.active[0]|\$\{sys\:logPath\}|\$\{web\:rootDir\}"),4,0) - | eval lower = if(match(_raw, "lower:"),2,0) - | eval upper = if(match(_raw, "upper:"),2,0) + | eval keywords = if(match(_raw,"(?i)\$\{ctx\:loginId\}|\$\{map\:type\}|\$\{filename\}|\$\{date\:MM-dd-yyyy\}|\$\{docker\:containerId\}|\$\{docker\:containerName\}|\$\{docker\:imageName\}|\$\{env\:USER\}|\$\{event\:Marker\}|\$\{mdc\:UserId\}|\$\{java\:runtime\}|\$\{java\:vm\}|\$\{java\:os\}|\$\{jndi\:logging/context-name\}|\$\{hostName\}|\$\{docker\:containerId\}|\$\{k8s\:accountName\}|\$\{k8s\:clusterName\}|\$\{k8s\:containerId\}|\$\{k8s\:containerName\}|\$\{k8s\:host\}|\$\{k8s\:labels.app\}|\$\{k8s\:labels.podTemplateHash\}|\$\{k8s\:masterUrl\}|\$\{k8s\:namespaceId\}|\$\{k8s\:namespaceName\}|\$\{k8s\:podId\}|\$\{k8s\:podIp\}|\$\{k8s\:podName\}|\$\{k8s\:imageId\}|\$\{k8s\:imageName\}|\$\{log4j\:configLocation\}|\$\{log4j\:configParentLocation\}|\$\{spring\:spring.application.name\}|\$\{main\:myString\}|\$\{main\:0\}|\$\{main\:1\}|\$\{main\:2\}|\$\{main\:3\}|\$\{main\:4\}|\$\{main\:bar\}|\$\{name\}|\$\{marker\}|\$\{marker\:name\}|\$\{spring\:profiles.active[0]|\$\{sys\:logPath\}|\$\{web\:rootDir\}|\$\{sys\:user.name\}"),4,0) + | eval obf = if(match(_raw, "(\$|%24)[^ /]*({|%7b)[^ /]*(j|%6a)[^ /]*(n|%6e)[^ /]*(d|%64)[^ /]*(i|%69)[^ /]*(:|%3a)[^ /]*(:|%3a)[^ /]*(/|%2f)"),5,0) + | eval lookups = if(match(_raw, "date:") OR match(_raw, "upper:") OR match(_raw, "lower:"),4,0) | addtotals - fieldname=Score, jndi, jndi_proto, env_var, uridetect, all_match, lower, upper, jndi_fastmatch, keywords + fieldname=Score, jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, obf, lookups | where Score > 2 - | stats values(Score) by jndi, jndi_proto, env_var, uridetect, all_match, lower,upper, jndi_fastmatch, keywords _raw + | stats values(Score) by jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, lookups, obf, _raw | `hunting_for_log4shell_filter`' how_to_implement: Out of the box, the Web datamodel is required to be pre-filled. However, tested was performed against raw httpd access logs. Change the first line to any dataset to pass the regex's against. known_false_positives: It is highly possible you will find false positives, however, the base score is set to 2 for _any_ jndi found in raw logs. tune and change as needed, include any filtering. From 62e14b678a094510ebf3c03e543f47959240f413 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 18:01:14 -0600 Subject: [PATCH 33/53] Initial YAML commit --- ...internal_host_splunk_investigate_log4j.yml | 23 +++++++++++++ playbooks/log4j_investigate_and_respond.yml | 33 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 playbooks/internal_host_splunk_investigate_log4j.yml create mode 100644 playbooks/log4j_investigate_and_respond.yml diff --git a/playbooks/internal_host_splunk_investigate_log4j.yml b/playbooks/internal_host_splunk_investigate_log4j.yml new file mode 100644 index 0000000000..cc9bb56c5a --- /dev/null +++ b/playbooks/internal_host_splunk_investigate_log4j.yml @@ -0,0 +1,23 @@ +name: Log4J Investigate And Respond +id: fc0adc66-ff2b-48b0-9a6f-63da6783fd63 +version: 1 +date: '2021-12-14' +author: Lou Stella, Splunk +type: Investigation +description: This input playbook is part of the +playbook: log4j_investigate_and_respond +how_to_implement: This playbook reads and then deletes files stored with artifact:*.cef.filePath from hosts stored in artifact:*.cef.destinationAddress. Windows Remote Management must be enabled on the remote computer. +references: +- https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html +app_list: +- "Splunk" +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + platform_tags: + - Response + playbook_fields: + - hostName + - destinationAddress + product: + - Splunk SOAR diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml new file mode 100644 index 0000000000..1725d2a734 --- /dev/null +++ b/playbooks/log4j_investigate_and_respond.yml @@ -0,0 +1,33 @@ +name: Log4j Investigate And Respond +id: fc0adc96-ff2b-48b0-9a6f-63da6783fd63 +version: 1 +date: '2021-12-14' +author: Philip Royer, Splunk +type: Response +description: Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. +playbook: log4j_investigate_and_respond +how_to_implement: This playbook reads and then deletes files stored with artifact:*.cef.filePath from hosts stored in artifact:*.cef.destinationAddress. Windows Remote Management must be enabled on the remote computer. +references: +- https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html +app_list: +- "" +tags: + analytic_story: + - Log4Shell CVE-2021-44228 + detections: + - Curl Download and Bash Execution + - Wget Download and Bash Execution + - Linux Java Spawning Shell + - Windows Java Spawning Shell + - Java Class File download by Java User Agent + - Outbound Network Connection from Java Using Default Ports + - Log4Shell JNDI Payload Injection Attempt + - Log4Shell JNDI Payload Injection with Outbound Connection + - Detect Outbound LDAP Traffic + platform_tags: + - Response + playbook_fields: + - hostName + - destinationAddress + product: + - Splunk SOAR From 672609671b2f3f73e874e29d4e4cfc62057cb42d Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 18:20:29 -0600 Subject: [PATCH 34/53] Add screenshot & updated description text --- .../internal_host_splunk_investigate_log4j.png | Bin 0 -> 51007 bytes .../internal_host_splunk_investigate_log4j.yml | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 playbooks/internal_host_splunk_investigate_log4j.png diff --git a/playbooks/internal_host_splunk_investigate_log4j.png b/playbooks/internal_host_splunk_investigate_log4j.png new file mode 100644 index 0000000000000000000000000000000000000000..2d674ea010289815f3b7413dbcb2107acab81b91 GIT binary patch literal 51007 zcmeEucT`hbw=W<~P!J0!h#)G6lqg7-CL$uzQF=m0YNSKxA|lchgwTsf??gZ#A=v0e zdJibQcOnTPZ^v^i=X{>;mhr~B?~m&k!JW1DDtoS3ezUBEYN#n4remceBO^PkeCvi5 z85xxt85u<)Ej7^cx&6I585#La8wCXoWd#LJ4QHs8jlCrq*~RDPCMHLf`7bt^nwpq2 zwe#`PIeTb5c@nN=;@?vLzP_=(nX`#AIo`-<;^dKu13K@>GBw{;*&Pb!#FYy+6&A&g zPCGE@he&RnL0~G0(u~^DbQ8Cg1=Og!{R70MtJ8BI1qNQBYPu%~;w3AS3b239m7W=} zB*Ez}`3Ob+LG58_R6yS&N{ItQVgdGnQ{gw#Plba5>{HI4Uw1t(+6z81vF)TwyM6GW z^C7IO(}f9ew7jyd;=w2G9iUwPmOGsnH6Ktu*2;fq4K7cOeE2-@`Pl;pF1DS`mmMby zxsZ91=6a!Ac;H(zYK^tC*ZI%Pg)BQCI<)6YdqpJOp9*>MB*O~dE&kh&qypC2RGbpa zm>#vGQUU|rhKab~_%|E*X-=w+jyShG*1c5v}JOn+21)QM3q>+cs#PRUPBttN0J`nOX8eGlXy zssG_+$yEXZwdo(7|NU|~fmbd09gRqB^+$8<&I}2C9F9|sbcDhmKc-gp@UX5r>=x{M zSd9UMv?m82t9&9A0Uv4X_}I$ql(X)PAFTEq;##>1cI1#^0U3TsX=q(GpZ#JP_NK?P z+IPtaY0u=r3aW}q34;rKQJb9JDRYULx(gMP5gQxs=T5kDvqmd#v|Yi#8WLpwo*rZv zF!1R6bL-`bqc+G<8FxYOe{Isy^Ij6x$*|1qXtkU$p~)A%Lm))J)g5xVd!k_GTXIKB z$T<1fK=kK1Lv_iX#YVuXjz0UqN7mHR&`NRe)|V4x7M7Eift2Uh>B!2<*URN7qCKg| z^oKn4Imwlg6aj_yNd9L579UWy4eqX16p3=8|3K+y7s=~RU(y^?HD~(mE^~$h+i3dY zV$i=b6^T1S0lvHXzrFuXy8l_K$r*1p#qkEy{S*(DOGjZ+csf-}x-Y?SfqJ`l|6Q^8 z!S0UH$c5#G*=)m+;qx)gw{$PX)_UDqT(Wy$@A=u1el4-|zbO_!WijbIXf|9M+N;w& z@2Y8)Tn@rpGCymO`7esVdGNoJsPH$s?SqjWcjS&W-TVjrc=SR&T;W1~tquS0CFl_o zAOYb=Eq|}*I5hzU%Kg8+|864wXQ}qhfMjXB?OI;${`84+er4sl;&rGsBqQ&RJaVm^ z%2Rdlzh*6dh{aDUpc<`<8v8oxYG;^aA#`f~c9ydkqfLtM;mE`P_e|7uveQCD;%&(k z!Ip6C9ZPf@MfV`hzgU5PF9QGGs4!vkNvP%EeTt#KZ{eRfL+&NzSLfUtZekINzm=fC z%YXzt)_i&B_u_N@c0gdy|Mvbn>HdeQ=GK1BF#Gr=@fwsdD=X{yu`%P^TXV}xd{<+6 zpRj-{$x06Xr$E$i#NsC+Q{Kq0VoOVMbg+xL!+p*;PiJN3Y!Ra5ZQ1AlTPEr#@@7S4 z;uTH6jFdcj)ieLHP23W))5^~o;rri)RKF9ZQ>G=3&^xcK?3Jv!(+^sl`v)W)dUT>S z<7nU5Rp#GA+jq2=AF$pG75crP0YHsf?b!eJ{<{P8KTEaVTDl0p38|}-0W`eP$LrH& zB^q~zu6tVYUN4$B@s!t)wuE0X_XP6#6-)Zhv01bg4|OkQ+n*gN$j-iLYipZTS;=k4 zz0{H$r`ZjkkGY@{_sIA5Tj!+$PF2hyviS3oJA)2O ze1$sx68~hXaNv%>p8iVFW(y(3Qvl1mv;4E4LlV(>qY@krX5(PzA$yjyN^RjWijjC^ zsTEF(eWEMQBap?xa5W-#GWptheaB?l-4_o(4(iG$B2RfvTk^hPDtUO-OL(oNRqMey zFqO@Q)kG{jYog)2SD#3feS((8JGQH;IX%%UD}s9GU8(;q1g*LOUe0VBRN{(|i>0%8 zm6M|$CtxVKw-YNI#F6C8Bz!$0_5j(_?&OOi1^VBAZ74P9N314bZN@5rs_`gc_H zNR=J$m|lzFr{7%}9i0GBNd84x8l^wfZ(s(kXO*a>Jf{0#0;Mq~EI(zZc%WcjsiK5Yei$+uhcysBr7L5BT4|7=XZ+2YXo@)R$<# ztBEH8a^~iU@Ke$^VXa>;NREx!D7(2SL$W~>6guSJA0mzL^lW{-&6VRrG=DDp#?AD+ zyyo7l;&6mqQqs-aQ1vK&1LQ>^1|7;@yFKQq&%(XmocwO$k6a04I(Jhi`=&_py}Q(@ znZJYvG+4I~2!2jSaHUP%H;mu~Qoq==9_LQD1PqJK|sGey$ux`zqnW| zrCd2^JMwZVD&>Pp`f>j#q%JL%wO%GU20{mdaE+b=e@@=h^4vZ8`OG@q>=gVRNgbSY z1I^akd_%MeFApV`mplNSL>~v&-FTyfd?&G+wYG8Lo%ELz9nGL%IEZP5spNs0AMbd< z$pbn2GK5A6j<(qMQP=K?j{6Af`)>CsTBrMM9OK}dub(HU@wqOuzD`i2QGvwcUcQ10 z#C#0X?GPVxE)d89ROK+zrTqChLu9^Hxv&=7&8tm=W#*P$FBQx0uXCYK@wJ3*?QGqu zkrFt!pmYl%c5$SyLc`Y1*0QLg{{;?*v#)lQ6hNV*hh`C4V-)-28ds>Lh6X0UeE;OC zsz$?sjr#nMszOuGXY%>FvRhW0+;m(Xh4FLS ztfPzn82Qq~=6{Qq6~9hX^YHK%K2bxMDm??d|JSv5t;`c5rvDNJGo&jS9yYMCw=ZY3 z?3NVP-ZXCQkXpSMBQ`20v+>-`BHCjJS2%>QQ0};+?z=K$XwS{&SXwvgvpH^D+cM(@ zT8(prKAxS3W8Hlvw&>a}GVrX#XII5}Er%gGLD;%^YrY5ND*!);sW0ldF_&DB%bqOld}#nBQ5s+*Fwc1yVCrC?)g8@;n5DtvDH zv(lNE5l8fUBjwj0nUj+A3t_ux8KT;%JLTqVCx=l5uQ5}gBh-g?IlXA%N?lNrsirbGx8@Keklthc6qN< zYj5q4NqNK9h}#Wp?PNLq^43u^f>mR%u-C6&KLI}^?&DXJ$OlG!j0f=97{5mL9V=*q zSwn53O;K-Op9{3-uIu10I=%ijU>9`_N+18Jp${JagilQM>X#_*i!(fQpCH^R!$U;k zQ^`l3rVN^fuun~u_zf+&>(~|CS*v?-8{Vkfb~QzG8O=>7BVc28`cRaVD+Iat0UY1dp_yUb+>MZ}&G zN9_!=O~so>zL<={Bl*Edas1w8zS%VYj6I7M#&-U@D3N+}>Yf-78J+kgGWtwBFtLn1 zCE-IwBK4mpNUo4-VR135qDUIb)(~N+x`1l^WE=*LD}ew?Zh^(FDqrnH? z+qG?~bf$e(!wjo3nd5ED5U2jZB>_AWe!ApL-@j`FQ*@#)-`(P&3uAaBs9*j;{{;K! zYZ`GlmLEQyH{CH?Eu@WMxl{J5#g#J!c9(wS+4tb@-Afvwts4a|qOH#UVo zo;sO*tb2$0`Y*)sPyjE6WPA(`Q1(OF8IgJE)4+&zU7_1h`321)uI=mJmz;l(%ah%Q#S}P}pYoMF4><$-@FGpdH}RF0aYmZT+dT@S#I*6?qVMu5S4|o3 zWFTl0`CZyC95V^X6MubfVKJ-D@6pf@55w0tg@}&f3=iZ?qMb$BNOw0EJxd28!HDh` z^?O8-yx1Yv0lb^jfD@i^|+JXU0BFxe@-QArh2;Oxf78sKcDUC|XWf|RIf$;7qA5_tO%Bhs&-VS{ zr&cWo^nYP8&JGF@b16w-Cr2{3KRr(1RW26Szll`aZF;qhkXl|k&6DG|xmeyVYG_&2 zo-CmP;4TWU-B?}3h*g`X?n&`>=hBDY6)Wcv7eIBIV*+(JzLVr)r5s>6T*DV%gdQ7U zEwy8p>-&i2mlbotAQ>%S9rk^r*ZRM+AkgPYCW+=tA`9W)$9y55UQwaSt!kjo%9==b zrl{6C;nZc-tQxwwvj@IU0w_drKs;C*!I>RD=$=67x|7EMFrk+$CX?aif=M33i|ig7 z!FG_g?1Pg(NEo<5-}@~vFjty6GJ=YkBqeYEli8`rL|rJfgkQhr#`zu|z;70Ewg_uW zmDa}iVjYA%7aUdhM{_H>N-k{w&I>{Mgg%J!40hR2`8=)i$om5y;OJah0B`##Zb~n- zJ^UjAS+^wbU=9iTB7~4EWrQ{?@*!j6eiL(;zvwL@DpJG8Atct~Ftx{L!2|m^*ZA-J zIOR3gzG2&j8!5tSsG~DS3(fuuk;t&6EcpClxHjsJzaI9gfHP_0hhEpFn@BTqN)+4#}Pt3;K6AL33% z5m)~q)UE~icwt3+;oeCGqUV3|M!tG_B`)zs*e??Lml(xoK=LH7$)^60)}IQNbanS4 zASfr?FRA{}SbrHP@PE7i&yh}?Mop=zO2yD_aV@g+%Mjq-hX0d)`z>0ZxzsoKX|C9( zY4l>%bC>aFDRU<>Io=!EDF0LZk-ND7A`b`F=|o!u0(FaT zuEBay3yDgVcX$U6K|fthQB$d@tu=Z6>C}ImtdM*MK73e}q(uOWIMX0fcIiN`pd0+gL<#1o_t4%2!-!f z{4X*=PDuwO01U_;w|`fv-<9$oqV>!O(DpGS*w?3jD&k+S{7nV2&w!mEczx*_jNsP&3}`oHRIc|kE^<)|49P>due3X7bw=Gr@{|dr$wDt7X5r@ zX1b%QS>G;tQn5|P)${3|^JFhE$s9fEIc-Z>GI_%Og&{==AZy#Xu!s%r=mjs+Zxtj| zNuN*L`cDS$zm-)*mg*`f#Dt$7;>y#3?>dQnc+U2jw17D=sW89S|3O8F>myVR>Pi>M zgFfX!{~ghjI9$%+%LfruT7^YJxCbf?%lQkYO3$ZC#)=m$#Px{(B5J?NRXQmiKxH!c z1LAOA)<`caBc91ADsng=eCr32qvZr#WB|vT=5(L`K34j1iv55**#Lv5=B4W28v*Hk z$px4<9oR$IA4~=?9uxB?d2NF8MdK|eBPHucb}D_pEaGIH9AVAl?U|oV`I_lv0Mtje zZn}NaK_9=(LNL2%oc5+6ksB1daFk&B>njeEatoDbROP(4+DBT_b|_!RbN>Ojj~ouH z%0~0L%(h>Ny%LneN3ETyDPfA#(YbnnVt~jekS|D(@?hZ5yJs!dlmCRSH+*@n z?Z#_I9r{3W3dzOkb20s!)T*cW*~t_rzA2QzqX*~MM0|s?Td%ENSw@*|vJlYrGEMe9 zDqr1Fh@EwZqyErPFSO){vgn-!z61Lp_=e{aTi|*6%MTK#Fj4v=JnEPaNZ!ry4^B2F zZIaIxxB}!fDW3!@np*JCavnKG&YnK-aa8a+l=1TzM7NVFN6lA|TOd6V7`T3o>Phf> zF$+f8Lw5sIwnHv8Znj)Xhsb3J>uco&Zw%X&yx1N*eF#|Tlc!{5moG`nO9P>GBZ__g z+1DOnw1iKiXxuFtt?DYrYFOYT;E-nl4xblGt!z}1L&sldLEU*qatdzc z1B2vAtJgBg$x*pZm^6fA4?Si`E+_4*@^MaP?y>-S$lM17Fg-2jGYfJv(`fIsO1L2qXK@a5x%La6{$#i#Pmq8d zJYVIy1g!ga24i|7C9|P^iN6Pg#loFKa1j)K~=dOhyh#wAWE9h5S39 z@wZCP|ENfTRR2;&e(T&3k-+83ks+P=`JA*T27S4Vq}>t)h(DAoafE{QhF*Z)$YKyuKi$2*faphn83 z;_wk&fX63?UG9QcyUZmwDnDWNXI>9%#+jcZ(e^Nfd)wxS1(b&wCv*+aA0l*vS304Y zs1&`q)-`~O`!1R^UPDLhxSM5w-k+oR$TXov_#$2o=c0R6+p~f3hN?gyB`zhxR>;LR zo?|3^fdJ&E1En;^B$uuSEWu2Mqu!;r7iEd>y`r19Bn-vO8@xMwgaEfF z@D2SD`bkVsFW_rGJuAo0|CkH^ORH=#DX35}n~%icLWkQDgy}jYEh}we(PZ}lsXj?= zcJ^E8w%jAVrUDZB<75V^s?)Vd_U3l#BsJX|8BOy_8%_=?K$YDF^yJ;{=T`xT`|$-i z{?p7H>Lh)_1n3iGrS5P&Qp}@Z<@P;G`gTE+N}F;p&1>esSHSXO_UY0Iw4CV_AFhLG zNE=u7Y=Dd+_6V?(M;A^Dzm}_0?~Qk0O^kX7Q1=2rfJ^hY5`k@cf0UD%AuNjLT!36G z?GgHdSLbYQ+Ef04s&z*GD3Y7-eK+z;5s)sLNOXopingR=Zw34-_`6CbbI#q19=}Gu@JS*3)cYu86}C-B*gW z8@y!qyN8FlW4McW@`?o$q@a;#{olr2={C5St@7G#KO3m;UOE1^Wi^HAiEHpT*_qgQ zJoWucfjHZgBLC@&%u^zzucbcL0cGDn9c(h-)N5)h=kzEhIJML*!S&@N-|pZ#P4>PX zEZ@hmDcjlA_VyK>9*5f7M*~Sri>>%F>dR92t8c;NC9n2|Jf}T)U!N$sF0@-U89Sc! zshUh))8Nw1CUg41;f zmt=rPJz|%~##$|KTQ**xaY)u>Hb7Mb#seH+-mR$v2+ZwE0H5=Mq?CTPB5X;PaJV?a z`hDe~ncZq#jp|Sfhtr1)=XdLAo!QnM$rn5@ZdIcX-m4BdNP0@TEw~I_S9x$iHn93CW1fC;**Lu`%_y8@rFixC~OIJY|u>J%81WS5g(Mbb}A z>w-lrXWH@gZPx_8QVRViR+~>{TTtV6RZx@ywi}4)?1j`3mZ7);FAknNddAMJuC9eM z(r5vwz93mLqYpOD?m^0w($-S-T2;WT>;o}gJtQ{F*^}#0|`a*yg5Fq zt|nLScL^EvLr#isU+}yEXbCz%OANd8vH@Cx7oc7?H~#w1*4jUzT+zcFdsJUshT(I= zxWJxI_Q!#qCuye|s?rx`;w~^#+dK!TbOdr-5HDl4nWrQ7Va(YFmMfsIuL&gbBgylwz$#tc|OxMh{54G?B52Q+b0 z`Vzy>*7-}vZ?(Y{`uh7r845*2#B@!?0Ob3U@6*5lkF>OOxoh*$`NhQuN5x}W!e*w| zB@?Y~s?~pZH{EJE-<|d09qkrF*=33pxf4fu>%B~0*QDs3EZR>OZDyK4UIzQ7JPGXi zR#arT`%z(ify*{b&W(0XHsoWNmer98NrU6)djO>dtb5jn>Y<@&hM=COVG19yFsPi-j-L{_w+NJ zUTs<6TDlDnSGa9#yrdGc+l?+i9Th}E38s{lr~1w=Zy&Y{3$D=O6Rw3fEvm3Q&O1XY zPY;YHt=id)0eJ8VX_vU!6-5A3$WIY^M!ZkHXS@h)uAlD0xM5+NddF*)N`H7DrZ&M1 zSW-F{MJ9^8Cx+)v+;-y4*zK=Xo&Jyx@2J3@@|P}`0p_|0&{m!mkVsB>fY#i(2%Ae3 zw2zM7+RDO7_PjpY8d=0HlphJQ$$KQ-2=Mw{DpBYu?HzgTqK}S617y z;W|L*+qo`x0JEG(HXE$D$g}{YBVzx8O|Lw~UmBR+-6gAq#m$afTXM)$iej!4a32g` zO21B_8Gh{c^GC3|FIz_zlsv1bn_f(P`tUBgw7f^?;Q6yNH_9TCS>ooYI!uqy@*epp zo^eHESWidI{hlI)@)HS7Xy&FCfmA~03AL@&$}>eTy{suQ6)Oyv8uTCc zwVX|%!5F01)*5!mV6W*z$K0mpG9!-=M|jhGSE#DDD@QDVB!3KQXH?p-wc2I21t{(S zL6N(UmtIdsZUC9?*kF2=mS7fR{&6B^-s;mfsXAvKin@?#U@&EvvtQ!162vIY#VEa3 z8qOgLuG`2uhQPNPOKe(Ot3VP~P9%97^%p2{<~wm6+!q4(4UC0@JPQZK1Yo zA>EKz7(-d9*2d{7BMQxkW6HU@)wnk&8_#~zx;OMW4_@I}aB%GqH-2Lh=;{?@`%w>g zJG0kCqjCCs6$OJ4C3t8`#dB`zK2mJ-kiF&Y6zyH4@GUi%Fb@kDJkH) zkSOLjDlW0~Nj=HI4_qsTc+;1pZ{Mjic7HMgp*mtQ8PNulOo@P)cP+{gL#1nV?7eg!RSIPJ!x8eLN(sgLw5 zGlC7RTBMFSS$~MJn$^-4H32T8DNFE z;-|8~dV1@E=@b`^{;>rry;&E=1jQUe{KOo^3A>N zn85{y>ggFF({~Hm1ft)9jj*B4F_)PR;gP+!-Cda@hyytVB{JZhA#bSg{d{4CS(v3; z{aqGOcv0@|HyjNH;lZZKD zy(VPStz@G@`<~O4c&AzX`qr8fiecz_%+v&Xp7eUHvqaX`F`qI)%-G8WEY^=9) zhUDVrz5yovVk`%MT22aJQd(DvyTGJRNt0rzbjSkpPna~=9ID-E_LmhP)&JyqMTzC^ zK6mRET}+vjY@2*^@L1cV&uTf$KVfHlexu(I>WxstZdt({&tb=~0cjUH(Q6NpgpS&o za{S?bNT>a{52C#-v%`Mdx~dqxUo$lOEnB8z09f<+GZSBd$O9GNupNg5O8ycTh?3i; zyF7XIv2U%+6(XENG>FZIKO>!8c!NA3&af9YF zDk)nk8KQ&f{sB7lZIDlv8#O2buJvY&*wq5;7%_d+X+mG!a{fA^vhtX73GYyOt7vy=GcM9P z)D^vv&F^PFot}kQ;}k-S>qC9LeIbxEBM$-u&_WE@x(|6hOY1|ksc@ifh}#YZADtDH zM7WN=aVp=3Ew(N(%FK0^?})v_f61w=yw^2UC^?wl`pT{Ud4yOhf0AQ)=(Y6{|83c* zaUixp3pg%imzhAWtf6uwcS7&v+R?LYfj0n*7#bYvnbC8L(wXwx5yQqw=Stnah4?Z8 zymTaDxX2foT)h*wGh;tY%z2iId)$WJ16g@5p2gqRuCJdLf=={u+;3lLGuRze!Kz3i zHe@pI?L3Rg98prS?RrU$z0AJR;mJjD;Yd8uln9THH5phEk^>xUvKyilmOxY{j%h^l zc-bf5#H$bY|!0B<=wzn^tV-0e_uTzSE5kp~7Xk_afNG*&j)>>`5$ zhk~^Hnc=Q?(qVchJ3_Vkcz_U&Q5v9ytUI4Gl>%c`-rDW{@NPrjz!Q_d9@{>9 zCMR}#cJBAS@DX|P6(`nDyyj|>KK0TnY+}jhw^PiMJ8z?LkoknF4YuW!;O1{=j1xd( z@;sV~fWfQ=BxCBsX%a^Jr8N-<(JTzdZ2y?jG+@GS0ldT|U(WWIRuftPAWDAfE>VX|$bPNZ>PSix5LsNb z{xd5b4NQFJI;iI+WM`RsQszB{_qAJ{Wx&X3U zZhzIQ+-PfYyy-Pjjjzvi5JXW%!rIvdE%&+rk7z1D-N&dQk{u9ge88O~wL*S28Jhff zfJAA2I;|I77>0q`cwg*LW7q-n>Fgxva||XG>5CZm!#4*4g`+FD*)iu?V~^&qeGRQ= zyq8i1@FhHHFFY__JV_nKL#{ol7Cow>Cv+1=H>SZn%yEXvlZx`3`DLZgRDoo9_{lCJ zMt_nSKp&i!PXb=Zf!7A^LpPValmj#|J> z`|^~^Xs7w#%tmilp5B}9q>SsM&^2DS9s>08R2NX37*n@#*K6r{h{e{N`;hBq5k;Cm zt_m#x`TDMGqZ*XV*?DdAj)@oht5NS&>1jC2-fcl5frI)5u|JQ-4b9*nn$a`|e_7}KZA0aaUj&ydW}FYbN$-jOGPa$4q} zr_m@K_b~^!JtK;^f2jJa7`$bCe;>P4`KEYpf1}j`9<_2U9S6MDUFQ|A*~5czAg585 zI?f#bS;L{i$VdhWe6kC|=H8Lqdx5VSt}k~gb0nOH@6T}Qo41RU&t`b9pwP+7DM^v6 zA}z_nZf*i?Bir~D1bhiitm9UvQNwO_Sfc$K=7-ABbzhHGPj&BARpYvqdAw%p@bQcY z5MkMJX!eGw<;AkK)vD3+Y>sc_D{&s3eBg%Sd1^cu&m(&xjht3 zi1gVDI57QaGD=vMo!uO<~>@F>3(cYa}D5gpbwzpy`ZYcQK&F{Yj;1SDakD+4OyS_8* z!U#A&F=FG%+#G&iGp?Y z7q_}O$!kqA^er(&KU=vv?q2OQ?B|e8gfQR3a3$EzWJ3ho<)oK+c|%`AEy{&M`dsU( z#<^G1Uhg1eYwx9jw9d8037(L-V4S5gs9_d(zVUjR`_2+0aO$ElIX-Q-hj$~&f7Etg zO$0qKQhY_%ToZwxD8+BmDq4SVhlK8 zFDWHu+0b@sXv~IPO>&(wX8&`PA6M0wUx;gt?tW*N54(xiVoDX_iV)rcVDU1!X!DHJ z*-@XK!+?FY`0|k9JaDihIrhXm9;mb)yM;;AgrU0?hrMWlAh5v3*=cz$ywt2ykH?kbo1hZ|bE|iQo=du%TU2sN(*3mE!<Cq+ExE=_QM*(gwl_1ta@*WIQ=&~9BOBJ~|Jf5d zqG%}pM+m0!_2}Hk- z6z@hh`|oDWBD`y+zCaS((1QMZ@2AT*)ugO82}6bZk4uQ115>@wRI_O8I59nWZyOrl zI_1`2EjhM)I2m^V&#|4>Br;$$-_ANVx~E{Yf@+ri90rNYN%Ml4ynV(i-L>Ppm(xpl zrRMmx6>?_-5yH-`?Y9?nA}Ga-TGWlYxK)p+zrgbZ*Qo(dO$G0E%#RDh^Q3p?f`#HaiWwPwprVo7BeH4xF7hhs&Ov_s3#K`bU;7n`n$Ky@1fZ0Al%JC z1wrH-m)F*3n)alzb5Yl{{JsXQvU*8hQ3GoB$9I96eajNxotW!RS~SP|A^rz;CpiRT z)K=dg_un0zRli)e_!^pWsgVQgbjJTcCZhqMcnr17MG!LUcO?^Fi9oz36(z5nPskJo`movlHPqm#yEuQzTN zHJDb${Hk-KC5Wi?BHwhbWmnInkoo3MKYUiB+RA z#bV?a#+lR3n*vp$S0J7ABBHCv)|HLc%}$q8h_y!(9fji2CkFgmN!vwGf8A6VY#P6n z;xRn5mon$w_dZG-roj<++I=v?stR|uOA>QF6@|s9tW?jQnUxp-Ab#{>G0M4~hD(Wk zTY^-Aj;S^enX`BCpIIawS0JZ3!|%OPmXz$>(MjO87!ONzSpiJ}MVK$H&-xAVkem`r zra#hcVm$oDXRV4U`$Y5cbom|&ao#k?yZn#iv{w{m*|FnDwPbO5LFAf`HdV^ohjF z^YHzZK3zidp~McLrVyyCZ#y{Wp@xs!>l9OC@5 zXC%FLr*&WDl_|@(%;mK6^Q4$AfJ88Ib1LBd>?C`8YHyDbH!&{&>Fh1tJ<};ZSxc(< ze*%{D#AM>Q0e6tGfR9?-U~tz{QK2Je#x z@DK^FLRr!z=j6HuLiYI$UN_a!K#1Y0y2*Q=8SAX6RYmG#wzqmPOI_1K?~}YL-ZMxw zv8ao8e0Vr+yic?Hg(V6egWj>M9;$_!D7>cybTmhuk@whk_j0?q?_`A79rcvC_WfSN zu(^quaa2MnYwJoacK;em{EaHiE0LkY_D~N#-fx&q+-vH&(sYT~7*`0)30xxnW_||k zg#Zg<9Q0F>^ud>x8p0+ty0r^}Dc?dR)Tr`kR{HH7 z)tb3j@!(>E?vub-(JSj;NGB{t7v}Q|N<@MfVB=p$TYHQSRmeS`{K&UT=3mp>$ z{94EN9nHGGt`~%=v3~O0EEbdUp9xPmI)l_Gfh7V5GRiTq#gji zRE@YxbyY5UWiZUm$vw!}TpU7JA1SH(z`6~&dM66ssiUmhGrHx zBbbUDGN*QDQ=_Xf_$u`1gG?iz<_km4!S{B?tf4V(bsl`xVMy#)$mu;^;Rg$nv$%P6 zKMQJAH!GCC%-4>mtE+Ej^7-1*=if8R+EPDoBeHnMr24JB=SaeKrb+GG-}ES2&2sbF z>T0}Ujaor;f@c(t;YT}64MYkz-tIX-CNaK6kTmMxe}MVQgG6NuTchu zhqas9qEtTc+==I0RNGL)i0X|?1r9ghr+f`Jsqe{3%MRkF!0NfKLkUQA)jrLffj2l=^FTe~$)vX`T3mn)}1O>_xYOUkb#4w&cR&>dxzgOVg9TDRdAnr9}o3uPVp@5Se+iNVU zN?H!_-_a;hXS}*7`N?2eMQ8HH(S;N6fqPkIp99nO9+6JTs227y24$-zS(yc|x+jXY zn&R1IFO5r0;=eqNf#ty)9E`6%UTDJ+3H?=VS!-$6Cdd!~vQ>+ez+LQWt#=)2Pl_n! zIASx}r>`EuzH>@g!M7oNU+g0hR_^Z}+z|I(X7d!Z-c&n5!tN_He*69DlrC7Nm_~jp z5G1;QK#F~l#dSrs*B3eByP~q=w*bF1HRW)@feRsL+}~h>{fXUNn2Gu4GtVKPsYrW1 z+^~ky8H%2c43@l~6UH!j!eFZ|FlTSI>dp>eZ|%-(*JZ&R-6mBD9HT5S$CVvp_j%bI zF$=_i?y9jPp~2}#gu#Z=#7;sQ6J^j68<5OI>Gsh|XP$+UwWRJ|o6v8J6SdZ0Md zz|fhowgm_FUN)_qmn%q3OL222`X)z7&)m1>H?mYZD>ml<*^)ZszT+5EvE6T&WL-3y z614bI*KGdfI`PPA5T9{zZ5{DxZu+L3wsVp*L&8Y#vVs@=tQKDBbU zBtP$bu+^(p;5?v3-Tm7%CYu6o7=CVJAlMMs-tTWzQ+UNGV#)XVb`q0Y7k+3?8bY`* z+3rq@IPKG9S{@;G+_HCe*dA*+HS%a>xFMG)Jy&e~N`tmpQKJsW6y zIDL6*{QlP{6o%~9%1fS&>aY&co}pY^1VTXIoa*=@r+WqHkHESS*f92KFbv9%;z{cm zCO+5?Iq=3+ZgWR!rOA>0X^f<{HXO%vfJh}KwmojEXby4Y_aDP^T336dp<{@%$9Hi= zpT62&e`(>x`EC_Kp`eORX>4IKHjI9%>70z6jNXV%4*OIg!tWAK>ejS<%H#4cjbmHo zu~?AXveGzmR&YP*@V4oxWVxeeYC0q0Z&LG(=A9egi6J)&+1&@h?t^|(E<~IULd~u8 zWrYZ_+W2gq<@~-2st>h!$$z~wc29}@PFvOBtRlds1V)sbmA$d?XL%E8OvvUvzceFSZj1Pwe4Ido;0BeE#I+N%)4c68tl0HN;1OVk^9xsXJ1a= zZ4rX7)F!(csCD3LX4x!!mYBx-a&^{~xn?nW5zeyTB2{I#R-8Pl(BK81SqwR?4S_W$ zP2&cZyx$U$xO{BN34#-}e`#pwz1^Msk`nd@pt}Rrke$%N^Vff*JNi_%!kiN7>Jl?+ zO2i3SyFo!j*q$lq3GtoLm!fU|;o4qp8jjNF zbMr^ED7;Ed&({s1N<+C7-Qm+XpuPshH;%W3Rx{V(Q)8=?Jr{vs^Cqb7>-8>Zb-((C zYd>5Nw%V_miL*X@?Tc}L>3t{S9gP_M4-lNXj_hu2Yb`ng<8d4A)(>vH#w=8~T)F@D z1z*Y6Opo~`*>*U2TY}U8{`wyRE{*0M+atVX{`!?a z(?^SWN6XgaK@Ib$wIz9Nw^mO?p9_m_axdCEvwAjbFxP zo!yT;fIuc>!lH|@CcyCvW6ON(+ZYbEie$mXqT1BZAXehu5X17>VrGdiYwuOB_4(ev z(?3`Bn&E|24=q>ik0Iv=7-P3&^7(^~{gFJO8PJXuFz(RH9k(j+ z?_}jm-B}6r8DOt!j_^mF-MT9i{0i(-Mr?h#wZowc*|lDER}YCde0blBK(@=_kCu>9 z8OJn6U*JQ>-`;%c3-(+^VG|SfVfyGw?AB_sRerj#X-JI^(R*Cju?B5?&!}j7j~*01 zHV=5-DJJsdaui)(jmcVBsYOc!MIs$zE*fa%u>vTFNnCXFXzEfQt6gwxzp zU3^_%Q3SIc9g_j5l*X$R9u&7JzJ^1j)#)7r>(*(0E3BXFKw`VcJTSZI`#u&?(2dMgL-~*#$340+LbFj8@N1Vr5yzNz~y2XCKGgDV*SHp zI{~+Kb6>LHb6I0rlONOFvydAc-r?>s5}gEHzEdIGiMf4Rpc>`#;EA{R}NY62^$jI(g@c|^Kt$+Ci4Vw zZJJqieB~Rpr?=Sd3ll3A6x?3|_1wtp_tg2;=el zSlfsXv6^||r~ecagCSDiN4rVd*hIlM>tn|gyrRFLxdW;4wAzl z*NyK<+(n3rchVOzzIoTH3H`i9znXk+vZzuQ8oRMaudPUjU z*1+06V!zpr#BKz463W#{C-z#nG=wWNT^?AATjt$!ViW>?D+$BC(k}z(6Up7WpmzO3i8x-bIz?0+sDLHme{*;1#AVUv`%|akUw{cM+Pj+MaEh z7Y-yN#!;WfZFpfHPw)_6{NUG~v1llJ_$RT&*0{sTnpszL&}*HTVyC>1NnVgh@sm@p z+~&6g<%=GJxDVPcKG+Bie&5B0aS073`1u`TUGmBxB7Ms2a-}n8D^)Qx`_=ef@mwr{ z-?d{-@?Kdd{dTk`d%ZxzE<$$DKCKnEd}r|p;o5|L(= zt>e~pjXn-70=i9li^jPt)t%S@^x~MxUF+Nh`$qth?YI{cAP@S-Y;2(Q%6qI46 zbxSE_R*M;eagLa$P7bsxYESR6-Vpn|H+w^m1P_wd#26@67QAyvD}d6IX~zcoa)EB@_zv4H`NDky22Iw-rKyYzz6M8yCk zhG&19GALVuyD&~|;(0J)I&${_y0p+$$*_9Xo4F%;S9%vZQdWMP^kWWkUX{%@y~ z1MdU%IwzO+Gu(l4O~1e!I?*dUrZ{Mx2xx3rrXbqtW&mw6qrB7=}+C#@8>A z3Rxe}J^;_vp9N|Rj-CUGfXr$V9|NVjw1GDu`5f;;xPG59eI^Iw*^Uj)Up)nk@JmrL zX+YA~Q6OZwUz&uaiR)s*g% zs=pra|78_bKnm88!};ey$Y0mT83-(lyR^qf==X!ap;|B=0?xH&m6WL0Xz}WnX?SUl z>E^a5z0!F9gxcoh6|>l3R}e&SthH8msN?^z_vZ0Xw(s9~Ng<)gQq~r!go^Bpl2o#E ztL!Er>sYccW172=gi^>lO4)Y?*>8#vl4Xp2?9130%$S+qIhE@E-re8t^ZZ_)KYqXG z_59;C&g;6)^SsXGINs-RypQABML&FO?^iR(hbi=hQy|yrbQv5Er9gfC z6JDW4;@{{p8OCtqCnI~AgI|4AetqgY4~9YOTLRYomP1nMq{mBwk4%c;YyIk7`sOS? z1#ilcvwBdtWYadWBrzDnG8N{wuV7GPsei%rY#M;?72ms;d}oP0BF0&o)m7pF=1 zTdyKA!h)Uo?wEmuQtB_ho{|Ru_Lu^hv>p?PLDQ9wyQxQPb9b`Yl@#q_3TKVG;S6y0h>Wt1;5YtolYDMpDg6gTv7mD>_Q7T^z z2sg8p#p|3O`G3%{5WLPs!-C$t@jFsJlw2G{Y`^3N^&<~2y}T+GuBO4omO59cECG{a6Q@#sx$*t z27ai24*d2%sNNuPfviMln7&DxR%kVnf!})96}RVpaviYZfyn1gfJ`U!bPuTEEHV1l z;rsWE?(0ty4uN{Z0Tcb&B}n^K`bIH8UVrx?*tNV5`A0k~y=ndMY-~Sm2W$~oe@|-_ zp<84Jym`-6%>ABFDBSI9_6HTA20$n{x~2>RfeTR3mD-8fbx6%0PB8fu0L@$Q}E&^hO}qXlG{Y z73Rt%lh38}&_v%Npj&(>u+RoH9VmFjmlPTUDCs{-bN>MGK))oL`L7$C2asp#CjCEm zb_(;tq_CT#8SZv=c9qTcw1CU>tAGS_v;T_uUX|OAz}tPxNRoOIG<4HVB;>qMIM~~l z@{N}CrjZPS;SIbFPa!TJx&V8x;mcc%ILnVT3dis%AR}GouX_O47YQJNemI`t*V5rb zG?*jF5thzc5ouoMzK7hP2#C~=Po4%51#10*3d}$O?{QSSLVr~ZEGD!Qj?BSKOR%Ey z4oKrME~uB{9o$vst}VXSkh1cctQ+ZRFc{I_NHeDWAonmbUJERxUj*b2X;ux^L|Sj) zukoqBNVCg{U(;*j_M^e|$TAXL_vO{E-QlmM2lo4f^V&_95^<@b?EI zS;vLI16RN8-94S>_XFm1{#IL4w^@PL` ztE(+%hEG}xYpMtl>H4P}0FiKAvO8(;i*;8nx-;1S$RqzYJil$kQRJL!Pq2S*c*p2v zbi{JaWjBV1E4hHP8Zqk&Xu~tDZTl8>%1W#Vza~wV*W0*eD3!#xNf>oeAEpZ)7Kmeh zyYG0hihM<3U*M>x9B7C$@3a+f##c=*g$N!~Z=&0zUdH$H?nnt3F zE4?rHA09NReC*Ejb&&JyoW``pMb!r~%Z1{l73Z7xrv8Bh=_n0~EP_^6R&LlZkF;e* za-U=bZusyxee&y*)b;1$;u5VuyBQqSR> z=I7wi(baVYmNlUMr?4#@EvABnB_!Dp*ixVI`Fy(Ga?%vu?6!oWmfJRh2f@=je@hzJS7w*YL6cluoz6O2<36&$Cy_*MR)>7cBrhPs_dsp;u4s zVNW+!&da?=c&m6eFZV_1he40ScjLzMS65db%WQ-Q-=PDsnqLN#rHwL9Kq$y-FLS*? zq76&(D(3k}C^f&q*1_S~#xi6-zl!DgZOGeTOXpq}z6!J%Aa6gXZP~l?9Lz~riH>w{ zu+7@=Mt97lNdAVx+Cuw4e3of(UCxJ*I=8!`@WvBRWyUk7rQmWiX2mT}=6!S+e-DBGW`Z<#=7 zyQFVjQIdc3Uc7@#WG@@&O#XRr=~7c!8K))-YR__Nl_Oo;W!d%kfVJ z57LvB)uX(Ym3carkJCiN{~*z?Z~|GBrX-l>p7MtY_F%skrXRbS7y+S7H6|V&rKQ9A z&iP6`4&p0xz&Ktob_eklTcy?!wD^iKe!i&jF^X;pl@fTNS-vwmO{ULDwgI03ux)?Sn<&^#7kuRNRDeG)YLqx32G42KQtu8auINy40q zJjm*omXXoQnjo%Uq63m0tPhH3?MOycEZ&uy$)q;1#<+tRT#TvD+x&>H{6UpxpiZ?v zEo6YCvjdZuSr*m^TKZACM>Ua_M))pI>qHvk{+qPux?_%oK~hpuEZsSN&l4eKQZlLx znkm|-WACEQjE)!3GG+cxLvob1GFIk8p8*Ej-pbmQDJ==%!JA7AB&stwkES;f})%l()7GX}DqXn7`@`=I%v z5sm$dZ`=syWTngB^X6)6^za^ypCN-7pS#5%FY*s>tAKgGwHX=7iuNh6iJP5_m_YyPs@J&PPMCV@hGi*LMn+I zbX_%C#}yd1(^+!oaz(-eR>HO+wHWo86<*=_=r43{LvGtnN6)xd2#|$;{SmqQa-8_8 z&f))3{Po8B3R)&Re)A0D-bXw8oDT*c2c!M>+Q4HvUfYA(8=-XD{@E7oxuaU<`z(Lg zk&_Za&W0Nr+y2(Otvd4VzqdK{`r1DlQ@O7)2C5WAFm3xyS5$59-^=A#@bz3S?<9~Yc_KczSJ7#`r2FwMJfcldv2dHiM#-DVmm`DGw*5S{FZZ2Itro|>GzrXiCyUdC1p&_mH+ZyQ` zk2!%HrQ;^0xPY0au5;u=V8ZL^GyVCK+z->yUp;kO?9}4u zeA527mq+<`lgG&kCU5dRuk`OOHiLx}+xzHu6Qpw;tm(&ELsf~Q;#v0biHX|xqoc$98QvfsG4DSm zgTsT`YXez7NN0%K*;%@ldw!tH4*Fk^-amKEKSjKua86~s`N;B_`)85)OvWzFXs;-T z5*#t#O%nkG&*wAS?ab;^;~#B9vNP*5YbeTwx=5Xx(-9;%N1Yr(GF8r>}|J&fd52;YJY`?Pn!Ak*w zy%&cL$mk& z*axY@bPcVtStTL3-^t_uV}$jtn81sSnPJtRhjdDY{tP~tu(=qe?A$;J6d2$>CL$7v z*9DkIMFL?ea1Bdz?|Y1cgesr$|=c?ggE38cg1UC@?HYeFT5&}VV*v+O8Z^}dP>5L9Je zgq4b3Ab`r?yL<|%VaoSTf9haQO`EO$i=39r0~BVdDVXL}U2A~C3eSU|yDn-1akmO) zJR5ak$K)SCK8eSdn9jQsc+oo;2r?Bj9sS7_emi*tx6?)6M}KysK`pyib~Hg0eSghA zdk5Xj5h3SN<+&C^6`@t$a~`o=+iv)8LniFaA~b#T0^n9C*6v%jvak4!?zjL`b^-F(p@z1yQw8Q&uqd^&v@fXHL2!gb5UNT+AmxA ziykcN$urD}oJ&>L?OcmbNML@&Ry{TncDShnlZE6d$rR|+PyCW~Ng#&yQ-0P`Oi@WRz6b&zUlAo=CB1LU_YvkusXcPU>`kO1tUfs_;>42t*iCAP zp-B$bWM}#Gg%5s9C&zE(e8>>Lju*+fqqSXMA?N-`lK0ZN4$i;5SX> zwA0C>DD*<1;l7-9bbC(W-wqvIi}_p$w?v2CO5KSOMYMabnv!FS?cqLqa&;0=Z0+ss zXtqNM2HogsZki~_IjyM3?ml~vZDhpCpF%o!>r*RTs}U+HgQU{mHJD6XqeX8)YQLMH$uuQmi5 z1#{tMED$cS_tCk%cdsFs_Ubclx5F8x+CEn~gIwWH`Ou>itkO%LKbWXAwj^5n`E#-` zEHrF>ca*WOS$7q+x`u*pY3EmPfB3vWBx(R&s#D8M6ILmpK7|R*9Hzb2IpAkSg5eRB zLkJGs{{0j2f?$vLd6g!P?%Yn-FAjDi;Xnt1j=ty6Z87`6*V16)xr5zS+?q)7 zD7&w|O500e3;+6M2}I-bn)%HZgpGXZDI~GCiab~gD@G{fJXb10v?_VXWJ!RX zgLK#jP;=9@DUt1Tb|-F&8Ecrpz^)JjyTT#*1Q~CMWT{Y;HJ=ec;ujx$K-mz-WvEy4 zmnRZ@wDgUw?D3hKO>e>(nAm{~83oUTYd@U>LV6$QmHNy0hqR;y0IVpVFV#B$wpZgd zw|5Msc9``G4AlNA(%YxPmyBQr@tF?rCW;xbG^r%U(gsY?hp2U5r3{Fq+3*fl@a6#H zYo_c^WoO@F@xyt0SXsqZDAO6)#-9DtABIcWQ?d%*GwnTI28JFl`33n&7{%XAS4D} zhTWQyDLFtO>4HkMG-2SCvS=d`FGrp`hivqf>!_|)=`Odl`{>sLCLyl6ug~}+g)dhA z;9V;#1&=#cw#T35_{ZAW;V#*ksR}7DWj<4>_P2#!H2kKZEpVV_vmhNf226edRzRlOryn052aP;LJMrf*{wM^d2&%?kh9wl2LTmxaUu(U3R7)w`a4uM9KK;nkiYrA~sOswKx>bdDk{m+0LZ2PQjC1wFxWQ9_r7rCH z;zMxUz2{nUi7Zc84NZ1^e^8L2GP7`qB3fEIq^15lEV==7 zPZLDl`||HD2JYM??_2pL-eElsciL~mvz~YkaZlNon!)xEJ0c?Qt_8ryeHBsUqDWXE zuD>=b9WCZ}&s$p2yA^kOaR^t0PCEqFOk5gx9jlX*o^a_jkPD#)M~*Kd8PUe|T^SD=jdnk~JO^e}1g>J-*- zN1n~*h&ISsv%`PMTX>@fIf3_H(pQ&w<^w@MOIC9nm_?HB%6prN909kQLS4>M&xW>< zYVxVgpR3ZDUO2~p98biM#^7e1l;i`B*qz?+=7!BC<+{-%;tvgStFCBQu>;=oi&TN) zJa)n#8;y0(wSAzX{q_0#J{8c|A~rWgo0xZVm3KV|wcxaI^z)3JmUQ3Owk9v!IGWo+ zXK5^QHr#YRYR!Mf7pI_vyqt)^#Mzfv3Yss4(vC=Kx<$l02YO>-C)ur~ z`Vm+nc%@eYu~f8>`xN#CY0ox2}?$leC8#$AU z&Lz7fe`sO6Vb*+Nga>m^$<}Sm6WV?Ca`|IgC-S{gFI07ncrRBvDRsmb@Y1K}j=z9E zX?Sm=AkdZrePjvC7^rgC@al}v^Vg$JhK=^a>jkS6@IKaq7ckKEKe-=TDUM8^E{7Ra z&W9?@?MX^HVzxHt!adyq?elGtsSyED01Ld1a2L29WqGvWIgU!sqQ;4sBIc}21;tAz zYka9IE3TevsB#(nU=?JO7>f|oPWBsmAh_G3Z*g`(kXqYYlc3~Nt1w7T5Qd%DtDmM~ zfC)OeV)xbsJ+PYPKclpxr7Du{roKy~d>uLtgSPH9Ea6J;ITifvzKl~Cl{P?t}Y7O7dJw85BBU9yOC+oZ35mkWCnk`#QHd>NKxy-VSUTMc- zv5Lx4Qv3agBG6)|O8f^jT3#9~`OLukXxd0W2R=Y1edZ?VBSh8v)!sDqs@gBdbVFUp ztKPt+$ULXNBS*l1Q~mYXf>d78Dhp-glA~sPpotbI(|KJiOamT)B}|6zA64 zrOWgskf6i|;BNq4yvx3~(%gq4S@yuq!9iScImT+#k_vv@l(EK>I zO@@wMUKnVx7lq4vQ?mgc=Wd3R+cu-4Im~QrPtI>}pw`z7hYPFBlU|}AZs{96!Fa6> zD<$3GLi2U4i}zK4?sq)|fVvR9-Kz|mB0e|g)!L*c62UAcbSo;-OHZ*F8zbhe} zeApyWrD%aNis>gu!?b;RbeB<9M1*>%Ky$1tDXw5i;&IPr_mPc2R;ALlNQ ziJ26+R{Y2ZZ~40JDj+5ym4Fwfnc?J3JZX!&wHV5x;PRU>5RYBk!mm(UuS{XXfg}bE z92o|Om%}y0Spn`ld8o7mg*`%8g^g6Jc=qV#FdjKlyOHhEs+1DxTX7N*55L|4XgyF8 z&wZq#vXT-%WjIG!2jYsG(3I&9uTt)xzVH!%L~s3S!xGnfS^gSIFBosA(f&#P%|EVX zDuXR~iwUh>v)yuCP6;hOb#n`uGD;a{nb?+MW3rvu#OKfjHa6drzH>+ksf@0BRP_N* z6InUQ-uwaElNL~}2;s}xfB;Vj+{I9Pdp0-)ph&%T&icLj#}+1!FhtE3BuN4^)2U#@ ztmioKu@3yM6OZq<6Em*JM?0;$huQ`Z7o=ckK=*uqmb#E&aU zxG&G@vxYvl+=`D^YKweh(={^{ec(!aix#S2-|-3n##VISJOHRl1x(3yixi+0S3qlD zw4brE3poVA|<7EL|uG#eS|1FnVt?#mHLtZn8&o)zTAcsX9p;? z?JYJwYbzIk#nef#{*M8~Drv~VA*92;9m?8y=kQXiWPhPj&g!Q{yCwCN`RH;P3Fuj0 z=Mpa>@5aoBRfhqDhO87^c5t3bJJm7M1!H7sr{vT#dxdfjg63>H_`u0E2dpa}*rkxb zZO9j3vtAJK!4JLVE|&I%sU>Y1HO&l_`%GOa%(YD|h^Y%2So6*K zQnEHzBW*AJ_i)yOj{X)nsK)3t%^f7?$WV&|&Q(@Y0~8I2(G1E_RK<3QU|Uai1>m{R zp#ylD>DYO0FeVfd^Z^-Dy3V~%WlhEu2PM6r6t(NvsEd|ivsNI~k%q->!Azw$ zmn^aieZCB)@A3y_I{I`l;FcqNdwj6WR~Mn@Zax}x`p`xrwsV*G}(*%Gcu`iJ%B z1AI)`!@@dNZ_n4wbLrBhWek?087n=JLn1LOd1G5y;JjR>Y?$$TB!Vu~_2$Z(vey21 zl%vzg?SYmwLeXeWf%Nn&hIGTx!@~0@zEAF!gm_02F?vBXQw8+snYgqcS%)8N7kPgLurMWwC_c4mtiYR!k~EKNkxKj$1? zZqEz_cXs1@auIG@D%C2E^`{N3^nj`B4TE08jt`twn|(W=`s?|roPy;wJL>A|Yq=rR z=*?8sK(@e!pa!SEc1{GsNdmheWFm?MMZ$~JCWR>J()2ZWiU)X~ldo2&D=7PID&)%v z^@vmD8-rBa%6Wys4F}oz@_w_Kt}NUU!3uF>@2R)Ar4&WE@@12GrmE#ZgvTo?V(r;X zjS*r5*5J3B5cv&u%v{SpYWE7ga4lP~UYt9%CPugGj5sP}*eBD!t7cd)I7W@Wu~h5E zE2!FdiUB{kGZ%|CqfT$ZFNLq3p<}jJO5N=N1micKxyY*?rZsk@4sUEAt*j9vAb0Pm z@2VY@N7`OrJ_H`t|L$E0v^StQpm%=VJ%JH1=aLQcnwSzKA`LYk{$j8<#u> zNmRu_YAyPxeUZ{ckKji{<#POd3xZfR&G^DC9w5llv6BT~Ps0<@Uyhtwok z5gSnmPG#b=umCLfIj$yHe9uH2Tq~hN>4rwnAi1Ka1hDVwYj}71)HK1TsIH~C}Yp$-w zm+n{%bwnueLEII?W_>1K3A@delIDONV5YZk(|ElHQ+Y6f)He|@NUa!b@IY*GpfUr= zK-H_L0tu+f1%zShOCZJWa5$9EGfM5x<&w6@0~l1A@#wrPOqCR)zXQ2p_}Y1~$Z@ce zcJ3;I^>SsCJ_d3NxIvAr-sV&-_m?fH4p1wp{K|`YGfPKpDngWe2;&ktq{+bA-T`7H z5%fky5a8tU&B7l3tR1}CV`DjG4mRN)cgNq?oLS|j&hV!QG$E#Sb3S@h%$Url1#bSY zbntRq(RSyG*pKXy2r`mw90dhiFf0RprDLj0Zen6Q%GFW%l$ZpQ_{q&!#B%axQ*uB+ zKn*}7%j#1zILIc7DjFy2d^iqHFgQedo&KS>m0H7F3*ZHNe(Mc5jyXZlbaR;7Uj(vo zB{*Z0Y@DBTs{~iayVPpmOqho_3E{D2BH1+WIr7bY^y!8pm+z~n0nNY}ZC!g*MF<#v zt}THyQ@M0VniJ~7SsPL7Li?K@9hHYF+uR2v-2<&ErVK(Z*j3ISaV!^)i;ITMcm?bV zynvW(BNELwX03fKETpbo<70&qhbNXLyuGoarkrzCRLWC$!c-9sr`R>ANG9(DOU?CLZXQhO<3S&|ve*8;-_xjqN zdczXpyL_(fftF`9d>UdRp9eOex1}9!dX^6ha8-BrTMnNr{|vpNUv6s5$5_QhS|029 z95xj_)f4!#=+!GVO^Yk-my8I!<#+QkDGkpH%<>6ichrjT!ReG)3F;rFZZxQ>Fz7X% zM?PGit_nsBRL?^rI_Ri@MaXH@|B?xi7&868vI9gpQ(cD(31f3JMJzDhJ-T6qYoYCE zzE2R+1oiNfC!qlhg7(xSE6^%jz(NjUF{*Z;#|k|F$C!xC>zFh-+s3MJ?hF-7Cx5Zz zFB%C9D<-#)&;kKyr!0T8_H8n--kfr96g%bc_88KEW1%v4{fPl{uu<9-fGkduQz;)e zl5nplO!l_GiSNv;EmDsxdrl72;*bbmA;tAhhT2azVjbCLKQhKWtd3^#+=KhH*)lqL zH_QUoQ+dLeIIK~-0m)U^!|HKYEKXjQbB^2x$IWRE!jGxmJB7>!o`medj&nxLz*bcy z=R7{W8=USO=VG(`fmvrTPS(W@48m9f>8gmo)tkh zGOeqdk(0}@yrZi#&wx288yq9ZxvXZTPrQKdCJUKpE*9v(3zp_FyF98EfXR2Jl*Z%;7iv=LELN4c$+HdST)dv_a z$0ck}Q2ibIV^R|dj96AyWfQ$KKFen%Ptv8(-@WU5sK?usxj;lKb7Cq!b{jCUC8wkq zWF`R%&&;Fw4tg#oV4q_&=Qs6+matB0T}ecOD=a!!i!#`Qbh+;|WXt!bC8&_gFyk{4 z>FPQG`&ut|y)Zkt0$ek0Tnm*>@gmhzOdW%);PGtCpP~>f+`*Qhp8mD^Fd($;x>kxX^jdK*S#-N<+~RM|Gh-qK z8<-vfL*j{Sx_M@eGc5Agowv_3myOU(_R2|{Qsbc>E9-l_-+@C{x9sV?L|X`KjGd_PvIXc|j>ZqIW?*f0PQ?J;QLqQWx2vYbyI4LJog49)_yO27tOkQ5jR5AvM%JOOt#x}`sTJK22ILY%|aUPc;b1alU5&{RwU zWhG2Y(h|!ww{JX2?6L9rt#GjN|wl!9$(EIAs5zYaI$}>;SBGK%!p0}wN+QFA( zp{L3nR)^bBMEr$_hM*vS%-8c3FOWd}vUbF4z+C`-&T@4M0Cxd!?&0eU+9yo+PY#w_ z&h+{?->&O0p%c+g*rVW%X9Rj^V}vN86~_pIZ!GWa#r7u)R?Llf#Yabv;1Yc1wYs=z z3LOh7v_u^u12@h;iFG+Af!MhjJry1%Nm8eoaPU2Dw+7mK9mlQ@#P%lr5$)6`N_$ogCa(#e1wUcCI)NwH1ONnlqfPsiz&`NovmiX$49E`uJd+WP zIb{>Yx`u{YT#JGuw7kg<7zbD407RQe?zj(*tNuXXb6T?=Qc0WuJyDW*yQ@PO44ui@ z>o;fb62erASlGfI{`KnBX*s!P)U@5TJ8 zGKC;nW;|@Ij(s+~T}trR#-f5HynOxEY$9dR|Mk$CSjnY4zZ1ffu!^@MpRL#z4vxMn ze(McfaVK+q4)1MWrbr@6xTnD;hsG^4S@&(HwO2-X{Q}HM3UGDah=#R(|89xpO*GcXcO8u=i~<)r!kf2WK8tiJ7}*D7rf zg>8Sq^g?qe#xA?L%(a#U6P0BLtkm0(p)~XCrP+(XJgYx+4nim`_YkD?vb`vY0-UOC zNHizV(=a$%EAcCl&|4VtJNN)T(E%0+jR*jIpZ{Dvmw~Hs@AIp_V@}<;0lKdQxiChg)sx&lO51h|$V)mwMh3(pcU0l-T*@*koo{U6SrU5F9%F&QXhqs}s1?b9#;7Q^bE z-2mbiRT_%ua9{STv#AJ2{cfS|O$`T@(TKaffF$$JrE~l!U~)gYA`G;_Kdz?JuD!)d z-}>Ff-AtF`xbFNB^c~&<6Ds)r1n~l)9_-BT%lv}fm-606!4dlPDU&X?t(E~j;c{H0@1L$=Ta_oi ztM1C`t@-%Tnn&P3ny^MxCAwK4>)@myV{CwQ;B2o)0L>-weiV1wdEF^N2R4xYlk|)1 z@wvkIvsb0pZ<9jvP8YeH0&E4&X+L+F=`=`e?O!_>Y8FT8ck`$G*yKRFfek7*e`$-M zIcbZ`%QG?a-Ng4yyv*J_LQ)SX4y5$Nr!o*Ae96h7?&t?CKX`AM@%P_P^ED*ymQYgRKa&q&c!&o>o zUw2j2s8WX#=vHQh3b_K;gK9Xycta1!$x@fWn@3P_aUV$vvN!Nef~B@j@)|%${|S)O zpE~KQnSh9a=q`oz<}Zez(4sW^2rfvwq|j_hN+aFWwQZ-FE9o*%k5tL%I+7A%HnXrK z9d+Z6;~~}H^A2%qmbSL(Qt&VPK*O$vw=vzGevSB%yY`?PS+p@F+E!@Nty=t*ZIVJk zTI&|X(75M%Kzo$gmb$vL&`YzxvitcVh8Qr)wyprXj(=qRay|$O-Sd0`4y~0@e

$7gL)jGq^hztUrP6kV^&Rz^zl@D#=6D`5Xd$hT-R1{7_lFJ0D|RmyFZhUtwFF*9 z%LydgHFV(H9^xmGUul~8`6+`%a(yREtXO*%7xBeFUp3%fK39vc!HIPJ!<~4j8xtGwr zc3(;X6?Z{0x{l;^&fTV{`0Dr2qL>3&o>fJ+F4bk^>A7Q?;ynfu7-l?5Ed243&G}+w z8Kc)^U|H9m{u8O8()0+)o~NslRys^tcI@D_3#%RE75Dj~yYvQ5h79FXJu?t5E|#jN zyv~@#6!pYs#oBqqCl}!tH#5n2rSpX48s?UqitPS#y`yKy-bQSSPKfUH?h)dEcE`;x z5Iu#k5W~(}-%r{$`*EF@-)<qR?#*?XK0cK^! zdf;ICCYO-5Oj4z_Qa*(hl%`KwHh8{X&KBjFzT}i(NV{ucVb^5ZbyRWT5 zS?v+9#Lp>Z;NsspFS%N`59N=fB!`OkT7f{Ut@jzViW}ZCVFAw__ebR>Dbk;Ht3CM= zV$GFDt(TMEqFm&4%Z?B#NtJ@Em^&fh291QfMqDUm<$^aPEVmZFlD9>J^3JU)X=K;; zX)`~yq8eR$d$V9P^tx(Bs-m2;tUa#)tC6&$iLAUvK-cpmW`!i~=3#6UZ{bK&;_LPk zKTzw+eZU;_xy{b96&#fax*YO9pAI!$mrs-Y(^NhpKbXvf&(lQTzAKf*+svw@hI;LZd>o5 za~P;YcFln7A38KsOGqQ}E&?c$t)d>`p{7?o!fE_J=kMo5?@K__StWl_`EmO%Kdhqw z&iYEI-g@UBbADf?6&N@PpKcud2||9Xx$Shb;Jg5fdgJ~}Wj~etfnN@cO}GDt1LM8u z3SjO35--6cw#-wpCMFw%wjIwaxq0jPKV=K;xCu^REbkvcjRgb_FfA`Ho87s0Z*lHs z1+Zv!(`;p54O3tFynjE9S`rTSbR@jDiLRfla3m6q`ObyWjCkXnJ=V@FrvLs^yiAWe zE@m`1;L3x3GX;oPFB76|4BtAb82P6yJ^pVZAja6eEInSbuCR?F0LYx3sLQo%>H;{4 zKU7mw?0vpGSj^YL?3@cPnj80J_3-Z)Ac=3cxjxiMcYOEqV->^wUg&L)YswElh zyZ`!h4&xiOXL`(u$BplOqa|OD;@px!^o$Qvlvk$#I33>^gm?I4Khu<-8V18wK41`J zUF&o4fJgm;v%N0}Z5&8ZI&7We5GF3BR2A0y6fYurJP7>9QM9r|Mz8^$i4GmzuUA!yJ?(_`Hz59{ZoMEq+d(3 zEq(0*GJqy+f@M&!zm=Nq2ga!n2Ir1_zpwfrnIVYPcNdzKowz_}=B) zA@pEx)O?6CJ{SG z!jGyLU6WM4?Vk{SjMY}3kpyN7lnr2O8+g?kd|4sS`*_HLb$T$t+SAhrd{e?I5Lh>} z6}@@}fdktGW1}igqpEycR;AZ&t46KrdHg8o(z(6JecsX|rl=?X&2;SGrYLhKh#7!- z&H`rp){r=WP~BO;^9ID2uYFVD-3gds>5f>d7-?_CDgo%Gq(*`%<%P&t*)9f|PJv}X z13p5`&zaHN{R<^!7YLE~Z-c8a?RL&JlBC0_5%zkDZc|ZL-iDgAo|%qXTT8PO3VnCW z{9hxrK@heUeDBRu3;JHbR{)k+U{FKDv2%~-yKXsWWFGq$!-L&aCkDd}Sca;pWaFtK zubHk*cuU9Ph^UgQ0ol|h12LlVGDbc;%&|2=3D=I=z~|>l_ntX(CeH~U88e$VQXg}Z zrDC|#^*&mqw@%+jqB0T@_=mYQXM4`A3mPNkk=}(T7j1aj$74)H75PT6dYFwsI+z zJg^pkZ?!FcVVC3i*1kus?udG5z`N%nx+$W3Mj2IM{tBPpy!JbXw8@Xv<9KoBeA81z;WpJzFwu?`1|1@F?XRw|8q3 z_R|wd&)J$YjjG~aRvR+ecjq3m@75vd@8;cFUm$4ssMa^LA8na}_<~!D&yr{5(e8|y zvDE=AqSRA^ZZnx2Tjy$T6|lh=j_#sX~&1^KKTz&K) z-M6N5E9u~W9qE`+*wLc(Qv{LeDh*zdlMTNM;;!qrm&a*gGh$}9Z=0)oKZEyf07WJ% z?IsoXQmO5ki#*fTi+~0Ho%h-Dy;WD8+snzCW+Tsz{^q~v8Ww8d;+gF#SxXqv*l zAI~At+zY9c9$tkV--JozxFJ;*ih!}k>;WnTUvK56j7e->5Fk|ylBs~5lweqM&VJJ959k*D1{EU- zU^LrISkDW{0ChO3 z{8ah$%^ZXOTBYZWDy2}vtz$^0;m}_UYYzqeHbi*^AaY(u2O%;tf<#i(ph*mzHT@@I z2E73)uW0Z_@OQD?uv5HhxB&-qgg51zQo0b799)snynYcP%OlQXU~VBO%%s>UhPqCm zTH)L_hiM0ik@~O+kNCS`t7{nLiH=`(jS6XJc-XX~AV15I+FF=g#=i%FTOX(}CDckZ zmu;*GQUi6UE+d*UGS`ypMht?N0$6x!)VNJb7Od9ZO$3~VU{-E854MQPT=U^ko*}r zY^jHst#!suo&DpS$im}Gw%hmnd#MSDJuWxgrekR46 zTL`tF%2?KEGt&fzDxZ$PwGL24m`Okl4$Ctmr7PAUP$C4^5CzFHvlFD0RTr+d>t5=$f(MwApX}hXBgOzO=P1WOY zFq|%m_~`;VElC$=E=axT>C`%q>oKTm)?1W?JD>;UR9<=Ymg$rKj@R5^Bi4NS_h_ZsRyI<-(xCvhw+`ZH4A^d!5efmFx^2c_6bKq#(J=!`s zHVU6UeR^+z`Xyd>TTFIAjS6DvRm?(06*1X~=9ibL+JLe2esr&-us}HdMmZ&z9oM5# zj)qpwLm%6Y;66SJ`cPJW?DH*TLr^U`%B>WYiiBY-YTj ziVEGT5y%T2*6ki~k>&y`e||$OleyI_G6VblCOrHg7SP?R7{mr;0YvE;X?Q=@X*!HEDg= zsW;2xAwEp(;o{<=)4<$vO%O*ruBbOE#+X=A?_XKTg3B(OKe@A0m>bH+%BRQ!nBy94 zg7H6u-K5xdlyi^KvW?VtS-{O?>^622NA>G9;`UZ7aX!77LS2Z(#TB#~bYmL0TfN66 zYbD6TRl6lTDK0fP^-SO4JHAE=G(js@TKX&_0dw^4@ElqN?ITqi&nu$fx@y&ryHF}vxBUH>#o-wEj>;@lg3|_rQsU=PqXU_Ew(jI5JLxO5B0_{7ThpEnndRbYXKM zpslT~d{bl|4)q*DGF(7VRXoYsJ#Yz|j>o6CBySeGo+ zFfT1dRr}Ou`{5N5WL0vj|60Nb%@u z0hL5q6J$gXDG;OMRnzLG2eN&8bZcos4I~ifE}HKapbQ~4uY-sQ%5%VK6jb)^Pjj*I z$Oobu$^xjaGPSXO8&Ne23r_3Pdek#tl~4JydteTHb_PI6vOUj1zTJ>z$($UxarHa1 zyLXTI5+za0GJT%rew8L=?*6Fk5Li87*6hxm!@yS|zVbDs_50eL1*jZWoJ!bId9b}a z2m5&3@!k8BH_}=k&iA`$uVZD(l@-_IFacH6?s~hRx@Fs-20edX$5OdI&yi*vZ3|95 zOWH7i>T2jGAShnA9LV}B;IkQDNEh@{lXV)pz23Nr354|)byDnE=6%;t51SI!-!Hrt z^gX}csF%$KK0HQV2=%B`*jz@Duuc;ml^oz(9+(2t^jpB5H7rQpE__ z;K*TV^%-!f0dX8C5%;RK3ZLa}UQ?>BSxHxYCd3MLPQVX;E{D~l-_1kTbzNtD13@V8 z8eTJ*_j2rp&&lD`O*fYO2^BwfiqK~V+ExLE`Yq4uEwS7c12R6eZKjIYx$s$)&A)fP zGw?plr>yv_Dtizc!~gO_K1BUk z*r~$j6`o(7i)X}BUoC_|bI|V)h>vr(#qyQBC)-Y&l*LN%*7{Ia$T*|o0j^N3_^X?D zJy3Up2I`^SHarIoumCF#?lqtk$I3V|8Jr~~A*hSFR;>>>S2?-5FW^Idbw2Q<*eq~4TrHPFekGb^zR&Vbo*m^pP z`X`~G9dq_dDTKW3Ruiaq-a|uw<>pC`+Z)B5GQsOY!hW%=^awi<`|ZmNX@SMxW!NF4 zlF!=Ms_DuDiA-TtnE*lWHnwpOGc8R`;jk(Y>Ab8yj2ObUntDoA`l%2OyupCjCNp2( za`%*RHFT>)#ZljRpS6x!7}=|ye~{G*qs+0ovlZbtTX0o^5q$g0g}Z04z{;^Cm0*yL zHF?c#`m+B_sn?-fi0f3@``&UIueGjS>v{~wxj@%1tPce$zo2?8{KcRed97u-3jbE3 zq4$$=l-p#UI(4R=^otE6o=$nBFg~Vd3#(_U40Y$FZ7!dO0+iGMnU~bqL-_!uxYcrL z4MrWP@t7w%%r36;(gNyK4}r)D$_gC8HJ1i&nPh;h;1=o-8_S1CXOr!llvP(;P}B>Q z(vQ@vQSlaha6*gHT3?S<4n>6`LaIr|YoPLH!FQ~8x0a7j;hL)mqFyyF-rn8~{DsZL zaHUczGlc4bi$Y9sFP}7E-zcW`B3hwV(%2|fOW0kHguAe=xh7cG3-S+1Pv3Gm5hMaB z@rbp$IC=ZqtR%M6VUwnTVZF+}a29Z@cv9g7zA43c=9o}Exz$JHtF7@$uM?D#QNjXx z`IhyT&=S|BQG895TxZyzJ_yLmCZr;`X5LHRAO(=98IhSvH%L!9z_Ar#B5O&oyj~wB z2tCdXf3}LK4XEtlFDYOa6xD%9m-(y$Bk$@ROFu0wK2zz|hy&%wEd(%dFl&9N}d55B0Zq4RdPgC#Ei~iOXmBlU=^kR%p&d`w5Gls?n8X|Wd75;Km=0U(QrQx zYMv#jXI%Q6x7gC593w>iP<W{IOi8-D0}Neo{lm zk3!3}s{_vRif6+ST%GSN2#3g4MK*Spe*a=$&GyIK7(O$LcTp{H3>BQ5@AJ6bk`R~C zzhO|JUSIG|*=YzYrv#6&d%H6~460MJbnLUS+%D;u;hRy%3D5P;qp|52i^C)@QuaOuCG%@RhrfWKi&(9&jA3GTrp*YQJ;* z5vN^rm3-5C7WlR}HTwQ46A5NUY7>0FONq1%xk`()Vso4LX?V@OfZW*N6iAfc5=7Mp z0Qn(dAL_w3vl)0q)@y0hJFZKP38a8AXKH^Zham&5W5M?&d6SmPZ2A+g%-0Gg?;tmN zvOGkzKDjS4y2e-UrYBx_spNdv0#mUCQdJUN=yt>_L`ZI_q#lveZY!60`1p47GBDHv zPde#f7dw)j=~H|hGaxJik4GB&>ec^e;jlz{RRFZ0_+9w*t243}BRm4@2?JLTE&xvN za67F;>fk|Ip1^9+p%kxL9R{88#0CsgV7F_tR_pid)drz)6S0rEAx<|zoejaUHgEM4Qvv?ELZqR` zqr1buMn!7__ia#T@to>=i?yk~hk?US(eEs-hSkj6sR;)Y#(!s{x9!^-c@(tXw4lJi=lmIy)j`0OI9$O`MJw^lZ{sM@;RzkSlo@#B7W2mk z;?vvR-46ZvQ!``6oR~e;q3eOO^k!7bQQ^SzS)#6)`1t#8f7%zEdvtnax6yCl$R#O> z8gIFubaF3vT4%dNlL1DF3Myl@Kr14&$S!i#9|jjOFfe<2x;Tc6k9*#_Fg5#8S3 z*LLvWK?7Uk%WJ$I{>3-4jAi9NW}=5HB6IZ!DY@&UwO@ARWdmE=yVI=wwu;85>7IHM zjXZ)+X+BW>{tDPsw!5FiaR^)OFR)@tgMRy}LDW)t@SnXvLDKq!%&ja2An Date: Tue, 14 Dec 2021 18:34:37 -0600 Subject: [PATCH 35/53] Some playbooks --- .../internal_host_ssh_log4j_respond.json | 1070 +++++++++++++++++ playbooks/internal_host_ssh_log4j_respond.png | Bin 0 -> 187655 bytes playbooks/internal_host_ssh_log4j_respond.py | 690 +++++++++++ .../internal_host_winrm_investigate.json | 413 +++++++ playbooks/internal_host_winrm_investigate.png | Bin 0 -> 94212 bytes playbooks/internal_host_winrm_investigate.py | 364 ++++++ ...internal_host_winrm_log4j_investigate.json | 315 +++++ .../internal_host_winrm_log4j_investigate.png | Bin 0 -> 56459 bytes .../internal_host_winrm_log4j_investigate.py | 160 +++ .../internal_host_winrm_log4j_respond.json | 1053 ++++++++++++++++ .../internal_host_winrm_log4j_respond.png | Bin 0 -> 187655 bytes .../internal_host_winrm_log4j_respond.py | 665 ++++++++++ 12 files changed, 4730 insertions(+) create mode 100644 playbooks/internal_host_ssh_log4j_respond.json create mode 100644 playbooks/internal_host_ssh_log4j_respond.png create mode 100644 playbooks/internal_host_ssh_log4j_respond.py create mode 100644 playbooks/internal_host_winrm_investigate.json create mode 100644 playbooks/internal_host_winrm_investigate.png create mode 100644 playbooks/internal_host_winrm_investigate.py create mode 100644 playbooks/internal_host_winrm_log4j_investigate.json create mode 100644 playbooks/internal_host_winrm_log4j_investigate.png create mode 100644 playbooks/internal_host_winrm_log4j_investigate.py create mode 100644 playbooks/internal_host_winrm_log4j_respond.json create mode 100644 playbooks/internal_host_winrm_log4j_respond.png create mode 100644 playbooks/internal_host_winrm_log4j_respond.py diff --git a/playbooks/internal_host_ssh_log4j_respond.json b/playbooks/internal_host_ssh_log4j_respond.json new file mode 100644 index 0000000000..f09405827d --- /dev/null +++ b/playbooks/internal_host_ssh_log4j_respond.json @@ -0,0 +1,1070 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Use Cases", + "coa": { + "data": { + "description": "Published in response to CVE-2021-44228, this playbook accepts a list of hosts and filenames to remediate on the endpoint. If filenames are provided, the endpoints will be searched and then the user can approve deletion. Then the user is prompted to quarantine the endpoint.", + "edges": [ + { + "id": "port_25_to_port_26", + "sourceNode": "25", + "sourcePort": "25_out", + "targetNode": "26", + "targetPort": "26_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_9_to_port_10", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "10", + "targetPort": "10_in" + }, + { + "id": "port_10_to_port_12", + "sourceNode": "10", + "sourcePort": "10_out", + "targetNode": "12", + "targetPort": "12_in" + }, + { + "id": "port_12_to_port_13", + "sourceNode": "12", + "sourcePort": "12_out", + "targetNode": "13", + "targetPort": "13_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_13_to_port_14", + "sourceNode": "13", + "sourcePort": "13_out", + "targetNode": "14", + "targetPort": "14_in" + }, + { + "id": "port_0_to_port_15", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "15", + "targetPort": "15_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_15_to_port_4", + "sourceNode": "15", + "sourcePort": "15_out", + "targetNode": "4", + "targetPort": "4_in" + }, + { + "id": "port_17_to_port_20", + "sourceNode": "17", + "sourcePort": "17_out", + "targetNode": "20", + "targetPort": "20_in" + }, + { + "id": "port_20_to_port_23", + "sourceNode": "20", + "sourcePort": "20_out", + "targetNode": "23", + "targetPort": "23_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_23_to_port_24", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "24", + "targetPort": "24_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_23_to_port_25", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "25", + "targetPort": "25_in" + }, + { + "conditions": [ + { + "index": 2 + } + ], + "id": "port_23_to_port_26", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "26", + "targetPort": "26_in" + }, + { + "id": "port_27_to_port_1", + "sourceNode": "27", + "sourcePort": "27_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_14_to_port_28", + "sourceNode": "14", + "sourcePort": "14_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "id": "port_28_to_port_17", + "sourceNode": "28", + "sourcePort": "28_out", + "targetNode": "17", + "targetPort": "17_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_13_to_port_28", + "sourceNode": "13", + "sourcePort": "13_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_9_to_port_28", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_15_to_port_28", + "sourceNode": "15", + "sourcePort": "15_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "id": "port_25_to_port_32", + "sourceNode": "25", + "sourcePort": "25_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "id": "port_32_to_port_27", + "sourceNode": "32", + "sourcePort": "32_out", + "targetNode": "27", + "targetPort": "27_in" + }, + { + "id": "port_26_to_port_32", + "sourceNode": "26", + "sourcePort": "26_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "id": "port_24_to_port_32", + "sourceNode": "24", + "sourcePort": "24_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "conditions": [ + { + "index": 3 + } + ], + "id": "port_23_to_port_32", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "id": "port_4_to_port_9", + "sourceNode": "4", + "sourcePort": "4_out", + "targetNode": "9", + "targetPort": "9_in" + } + ], + "hash": "2a0cfc5974aa54de43e828455cf51d6e6b67031a", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 370, + "y": -8.526512829121202e-14 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 450, + "y": 2845 + }, + "10": { + "data": { + "advanced": { + "customName": "generate deletion commands", + "customNameId": 0, + "description": "Generate a prompt along with one deletion command per host.", + "join": [], + "note": "Generate a prompt along with one deletion command per host." + }, + "functionId": 3, + "functionName": "generate_deletion_commands", + "id": "10", + "inputParameters": [ + "locate_files:action_result.parameter.ip_hostname", + "locate_files:action_result.data.*.output" + ], + "outputVariables": [ + "prompt_content", + "deletion_command", + "host" + ], + "type": "code" + }, + "errors": {}, + "id": "10", + "type": "code", + "userCode": " \n generate_deletion_commands__prompt_content = \"\"\n generate_deletion_commands__host = []\n generate_deletion_commands__deletion_command = []\n \n # Retrieve previously saved key\n host_dictionary = json.loads(phantom.get_run_data(key=\"host_dictionary\"))\n # Iterate through the paired host and locate files action result\n for hostname, action_result in zip(locate_files_parameter_ip_hostname, locate_files_result_item_1):\n\n # Ensure at least one file was found for that host\n if \"true\" in action_result.split(' '):\n \n # Attach this host to list of deletion hosts\n generate_deletion_commands__host.append(hostname)\n \n # Begin building deletion powershell script and prompt message\n deletion_string = f'''for i in '''\n generate_deletion_commands__prompt_content += f\"### {hostname}\\n\\n\"\n for filepath, result in zip(host_dictionary[hostname], action_result.split(' ')):\n if result == \"true\":\n generate_deletion_commands__prompt_content += f\"- {filepath}\\n\"\n deletion_string += f'\"{filepath}\" '\n \n # Remove trailing comma and attach one deletion command\n deletion_string = deletion_string.rstrip(',')\n deletion_string += '; do rm -v $i; done;'\n generate_deletion_commands__deletion_command.append(deletion_string)\n\n", + "x": 260, + "y": 691 + }, + "12": { + "data": { + "advanced": { + "customName": "deletion confirmation", + "customNameId": 0, + "description": "Prompt the user to confirm deletion", + "join": [], + "note": "Prompt the user to confirm deletion" + }, + "approver": "admin", + "functionId": 3, + "functionName": "deletion_confirmation", + "id": "12", + "message": "SOAR found results for the following files. Please review the returned list and confirm if they should be deleted.\n\n{0}", + "parameters": [ + "generate_deletion_commands:custom_function:prompt_content" + ], + "responseTime": 30, + "responses": [ + { + "responseOptions": [], + "responsePrompt": "Type 'confirm' to delete", + "responseType": "message" + } + ], + "type": "prompt" + }, + "errors": {}, + "id": "12", + "type": "prompt", + "x": 340, + "y": 889 + }, + "13": { + "data": { + "advanced": { + "customName": "deletion decision", + "customNameId": 0, + "description": "Determine if user wants to delete files", + "join": [], + "note": "Determine if user wants to delete files" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "deletion_confirmation:action_result.summary.responses.0", + "value": "confirm" + } + ], + "conditionIndex": 0, + "customName": "delete", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "do not delete", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 2, + "functionName": "deletion_decision", + "id": "13", + "type": "decision" + }, + "errors": {}, + "id": "13", + "type": "decision", + "x": 340, + "y": 1069 + }, + "14": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "delete files", + "customNameId": 0, + "description": "Iterate through host and deletion command. Contains custom code.", + "join": [], + "note": "Iterate through host and deletion command. Contains custom code." + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 2, + "functionName": "delete_files", + "id": "14", + "parameters": { + "command": "generate_deletion_commands:custom_function:deletion_command", + "ip_hostname": "generate_deletion_commands:custom_function:host" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "14", + "type": "action", + "userCode": "\n parameters = []\n for del_cmd, host in zip(generate_deletion_commands__deletion_command, generate_deletion_commands__host):\n parameters.append({\n \"command\": del_cmd,\n \"ip_hostname\": host,\n })\n \n", + "x": 170, + "y": 1249 + }, + "15": { + "data": { + "advanced": { + "customName": "filepath decision", + "customNameId": 0, + "description": "Determine if filepath is present in playbook inputs", + "join": [], + "note": "Determine if filepath is present in playbook inputs" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "playbook_input:filepath", + "value": "" + } + ], + "conditionIndex": 0, + "customName": "filepath exists", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "filepath does not exist", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 3, + "functionName": "filepath_decision", + "id": "15", + "type": "decision" + }, + "errors": {}, + "id": "15", + "type": "decision", + "x": 430, + "y": 150 + }, + "17": { + "data": { + "advanced": { + "customName": "format host list prompt", + "customNameId": 0, + "description": "Format a list of the hosts. This will feed both env var prompt and shut down prompts.", + "join": [], + "notRequiredJoins": [ + "delete_files", + "deletion_confirmation", + "locate_files" + ], + "note": "Format a list of the hosts. This will feed both env var prompt and shut down prompts." + }, + "functionId": 1, + "functionName": "format_host_list_prompt", + "id": "17", + "parameters": [ + "dedup_hostnames:custom_function_result.data.*.item" + ], + "template": "%%\n- {0}\n%%", + "type": "format" + }, + "errors": {}, + "id": "17", + "type": "format", + "x": 360, + "y": 1580 + }, + "20": { + "data": { + "advanced": { + "customName": "quarantine prompt", + "customNameId": 0, + "description": "Offer the user options to quarantine the affected endpoints", + "join": [], + "notRequiredJoins": [ + "set_env_var", + "env_variable_prompt" + ], + "note": "Offer the user options to quarantine the affected endpoints" + }, + "approver": "admin", + "functionId": 2, + "functionName": "quarantine_prompt", + "id": "20", + "message": "Choose an action you would like to take on the following hosts and then type confirm. The same selected action will be performed on every host.\n\n### Available Actions:\n- Restrict Outbound Traffic\n(Sets a firewall policy to prevent all outbound traffic. This may disrupt domain authentication for all but cached credentials.)\n- Shutdown Host (This is a forced shutdown)\n\n### Target Hosts\n{0}", + "parameters": [ + "format_host_list_prompt:formatted_data" + ], + "responseTime": 30, + "responses": [ + { + "responseOptions": [ + "Restrict Outbound Traffic", + "Shutdown", + "Restrict Outbound Traffic and Shutdown", + "Do Nothing" + ], + "responsePrompt": "Available Actions", + "responseType": "customList" + }, + { + "responsePrompt": "Type \"confirm\"", + "responseType": "message" + } + ], + "type": "prompt" + }, + "errors": {}, + "id": "20", + "type": "prompt", + "x": 440, + "y": 1761 + }, + "23": { + "data": { + "advanced": { + "customName": "quarantine decision", + "customNameId": 0, + "description": "Determine which action the user selected", + "join": [], + "note": "Determine which action the user selected" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.0", + "value": "Restrict Outbound Traffic" + }, + { + "conditionIndex": 0, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.1", + "value": "confirm" + } + ], + "conditionIndex": 0, + "customName": "restrict outbound traffic", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.0", + "value": "Shutdown" + }, + { + "conditionIndex": 1, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.1", + "value": "confirm" + } + ], + "conditionIndex": 1, + "customName": "shutdown", + "display": "Else If", + "logic": "and", + "type": "elif" + }, + { + "comparisons": [ + { + "conditionIndex": 2, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.0", + "value": "Restrict Outbound Traffic and Shutdown" + }, + { + "conditionIndex": 2, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.1", + "value": "confirm" + } + ], + "conditionIndex": 2, + "customName": "restrict outbound and shutdown", + "display": "Else If", + "logic": "and", + "type": "elif" + }, + { + "comparisons": [ + { + "conditionIndex": 3, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 3, + "customName": "do nothing", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 6, + "functionName": "quarantine_decision", + "id": "23", + "type": "decision" + }, + "errors": {}, + "id": "23", + "type": "decision", + "x": 440, + "y": 1941 + }, + "24": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "block outbound traffic", + "customNameId": 0, + "description": "Add firewall rule blocking outbound traffic", + "join": [], + "note": "Add firewall rule blocking outbound traffic" + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 5, + "functionName": "block_outbound_traffic", + "id": "24", + "parameters": { + "command": "sudo -S iptables -I OUTPUT -p all 0.0.0.0/0 -j DROP SPLUNK_SOAR_BLOCK", + "ip_hostname": "dedup_hostnames:custom_function_result.data.*.item" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "24", + "type": "action", + "x": 520, + "y": 2302 + }, + "25": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "shutdown", + "customNameId": 0, + "description": "Shutdown machine", + "join": [], + "note": "Shutdown machine" + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 3, + "functionName": "shutdown", + "id": "25", + "parameters": { + "command": "shutdown now", + "ip_hostname": "dedup_hostnames:custom_function_result.data.*.item" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "25", + "type": "action", + "x": 0, + "y": 2121 + }, + "26": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "block and shutdown", + "customNameId": 0, + "description": "Add firewall rule and then shutdown machine", + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 4, + "functionName": "block_and_shutdown", + "id": "26", + "parameters": { + "command": "sudo -S iptables -I OUTPUT -p all 0.0.0.0/0 -j DROP SPLUNK_SOAR_BLOCK && shutdown now", + "ip_hostname": "dedup_hostnames:custom_function_result.data.*.item" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "26", + "type": "action", + "x": 180, + "y": 2317.5 + }, + "27": { + "data": { + "advanced": { + "customName": "summary note", + "customNameId": 0, + "description": "Leave a summary note", + "join": [], + "notRequiredJoins": [ + "block_and_shutdown", + "quarantine_prompt", + "block_outbound_traffic", + "shutdown" + ], + "note": "Leave a summary note" + }, + "functionId": 1, + "functionName": "summary_note", + "id": "27", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "add_note": { + "description": "", + "fields": [ + { + "description": "", + "label": "title", + "name": "title", + "placeholder": "Enter a note title", + "renderType": "input", + "required": false + }, + { + "description": "", + "label": "content", + "name": "content", + "placeholder": "Enter the note content", + "renderType": "datapath", + "required": false + }, + { + "choices": [ + "markdown", + "html" + ], + "default": "markdown", + "description": "", + "label": "note format", + "name": "note_format", + "placeholder": "Enter the note content", + "renderType": "dropdown", + "required": false + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "default": "general", + "hidden": true, + "name": "note_type", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "event_id", + "required": false + }, + { + "hidden": true, + "name": "task_id", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add note", + "name": "add_note" + } + }, + "utilityType": "api", + "values": { + "add_note": { + "_internal": [ + "container", + "note_type", + "author", + "event_id", + "task_id", + "trace" + ], + "content": "format_custom_note:custom_function:output", + "note_format": "markdown", + "note_type": "general", + "title": "WinRm Log4j Response" + } + } + }, + "errors": {}, + "id": "27", + "type": "utility", + "userCode": "\n\n", + "x": 430, + "y": 2664 + }, + "28": { + "data": { + "advanced": { + "customName": "dedup hostnames", + "customNameId": 0, + "join": [], + "notRequiredJoins": [ + "delete_files", + "deletion_confirmation", + "locate_files" + ] + }, + "customFunction": { + "draftMode": false, + "name": "list_deduplicate", + "repoName": "community" + }, + "functionId": 2, + "functionName": "dedup_hostnames", + "id": "28", + "selectMore": false, + "type": "utility", + "utilities": { + "list_deduplicate": { + "description": "Remove non-unique items from a list.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "A list of items to deduplicate", + "inputType": "list", + "label": "input_list", + "name": "input_list", + "placeholder": "", + "renderType": "datapath", + "required": false + } + ], + "label": "list_deduplicate", + "name": "list_deduplicate" + } + }, + "utilityType": "custom_function", + "values": { + "list_deduplicate": { + "input_list": "playbook_input:ip_or_hostname" + } + } + }, + "errors": {}, + "id": "28", + "type": "utility", + "x": 360, + "y": 1430 + }, + "32": { + "data": { + "advanced": { + "customName": "format custom note", + "customNameId": 0, + "description": "Format a dynamic summary note from playbook.get_summary()", + "join": [], + "notRequiredJoins": [ + "quarantine_prompt", + "block_outbound_traffic", + "shutdown", + "block_and_shutdown" + ], + "note": "Format a dynamic summary note from playbook.get_summary()" + }, + "functionId": 1, + "functionName": "format_custom_note", + "id": "32", + "inputParameters": [], + "outputVariables": [ + "output" + ], + "type": "code" + }, + "errors": {}, + "id": "32", + "type": "code", + "userCode": " format_custom_note__output = \"\"\n playbook_summary = phantom.get_summary()\n if 'result' in playbook_summary.keys() and playbook_summary['result']:\n for result_item in playbook_summary['result']:\n format_custom_note__output += f\"#### Action - {result_item['name']}: {result_item['message']}\\n\"\n # Generate app run summary for each action\n if 'app_runs' in result_item.keys() and result_item['app_runs']:\n for app_run_item in result_item['app_runs']:\n format_custom_note__output += f\"- app_run_id: {app_run_item['app_run_id']}\\n\"\n for k,v in app_run_item['parameter'].items():\n if k != 'context':\n format_custom_note__output += f\" - {k}: {v}\\n\"\n format_custom_note__output += f\"- summary: {app_run_item['summary']}\\n\"\n format_custom_note__output += \"\\n\"\n\n", + "x": 430, + "y": 2483 + }, + "4": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "locate files", + "customNameId": 0, + "description": "Run a search to locate files. Contains custom code.", + "join": [], + "note": "Run a search to locate files. Contains custom code." + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "locate_files", + "id": "4", + "parameters": { + "command": "playbook_input:filepath", + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "4", + "type": "action", + "userCode": "\n parameters = []\n host_search = {}\n \n # Treat ip_or_hostname and filePath as a paired unit and iterate through them,\n # then create a dictionary for each host with a list of its filepaths\n for playbook_input_filepath_item, playbook_input_ip_or_hostname_item in zip(playbook_input_filepath, playbook_input_ip_or_hostname):\n if playbook_input_ip_or_hostname_item[0] in host_search.keys():\n host_search[playbook_input_ip_or_hostname_item[0]].append(playbook_input_filepath_item[0])\n else:\n host_search[playbook_input_ip_or_hostname_item[0]] = [playbook_input_filepath_item[0]]\n \n # Iterate through the host dictionary and generation one search string that checks all filepaths per host.\n # This ensures that we are only connecting to each host once.\n for k,v in host_search.items():\n script_str = f'''RESULT=\"\"; for i in \"{'\" \"'.join(v)}\"; do if [ -f \"$i\" ]; then RESULT=\"${{RESULT}} true\"; else RESULT=\"${{RESULT}} false\"; fi; done; echo $RESULT'''\n parameters.append({\n \"ip_hostname\": k,\n \"command\": script_str\n })\n \n # Save the host_search dictionary into temporary data to access downstream.\n # This makes it easier to compare the results of locate files with the filepaths and hosts\n phantom.save_run_data(value=json.dumps(host_search), key=\"host_dictionary\")\n \n", + "x": 260, + "y": 330 + }, + "9": { + "data": { + "advanced": { + "customName": "file search decision", + "customNameId": 0, + "description": "Determine if at least one file was found", + "join": [], + "note": "Determine if at least one file was found" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "in", + "param": "true", + "value": "locate_files:action_result.data.*.output" + } + ], + "conditionIndex": 0, + "customName": "file exists", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "no files found", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 1, + "functionName": "file_search_decision", + "id": "9", + "type": "decision" + }, + "errors": {}, + "id": "9", + "type": "decision", + "x": 340, + "y": 511 + } + }, + "notes": "" + }, + "input_spec": [ + { + "contains": [ + "ip", + "host name" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + }, + { + "contains": [ + "file path" + ], + "description": "File path to delete", + "name": "filePath" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T00:28:06.769849+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "unix", + "internal_host", + "log4j" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_ssh_log4j_respond.png b/playbooks/internal_host_ssh_log4j_respond.png new file mode 100644 index 0000000000000000000000000000000000000000..12c77212aad4e76476bb3a6025ff713565d83397 GIT binary patch literal 187655 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

%Q?uUeOW|S#Q8|o!|lV)eCOvW*5`=9 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

#OVEk)~< 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 z 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", + "category": "Use Cases", + "coa": { + "data": { + "description": "Performs a general investigation on key aspects of a windows device using windows remote management. Important files related to the endpoint are generated, bundled into a zip, and copied to the container vault.", + "edges": [ + { + "id": "port_6_to_port_1", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_0_to_port_8", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "id": "port_8_to_port_9", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "9", + "targetPort": "9_in" + }, + { + "id": "port_9_to_port_10", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "10", + "targetPort": "10_in" + }, + { + "id": "port_10_to_port_7", + "sourceNode": "10", + "sourcePort": "10_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "id": "port_7_to_port_4", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "4", + "targetPort": "4_in" + }, + { + "id": "port_5_to_port_12", + "sourceNode": "5", + "sourcePort": "5_out", + "targetNode": "12", + "targetPort": "12_in" + }, + { + "id": "port_12_to_port_6", + "sourceNode": "12", + "sourcePort": "12_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_11_to_port_5", + "sourceNode": "11", + "sourcePort": "11_out", + "targetNode": "5", + "targetPort": "5_in" + }, + { + "id": "port_4_to_port_11", + "sourceNode": "4", + "sourcePort": "4_out", + "targetNode": "11", + "targetPort": "11_in" + } + ], + "hash": "36b13ec7d9928057516702e1b9a2a3b6aaf1b7f0", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 20, + "y": -1.1368683772161603e-13 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 20, + "y": 1360 + }, + "10": { + "data": { + "action": "list sessions", + "actionType": "investigate", + "advanced": { + "customName": "list sessions", + "customNameId": 0, + "description": "List active sessions", + "join": [], + "note": "List active sessions" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "list_sessions", + "id": "10", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "10", + "type": "action", + "x": -5.684341886080802e-14, + "y": 380 + }, + "11": { + "data": { + "advanced": { + "customName": "format zip", + "customNameId": 0, + "description": "Format a dynamic string where the ZIP is located.", + "join": [], + "note": "Format a dynamic string where the ZIP is located." + }, + "functionId": 2, + "functionName": "format_zip", + "id": "11", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\n.\\{0}-SOARFetch.zip\n%%", + "type": "format" + }, + "errors": {}, + "id": "11", + "type": "format", + "x": -5.684341886080802e-14, + "y": 780 + }, + "12": { + "data": { + "advanced": { + "customName": "format file removal", + "customNameId": 0, + "description": "Format dynamic string for file removal", + "join": [], + "note": "Format dynamic string for file removal" + }, + "functionId": 3, + "functionName": "format_file_removal", + "id": "12", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\nRemove-Item -Path .\\{0}-SOARFetch*\n%%", + "type": "format" + }, + "errors": {}, + "id": "12", + "type": "format", + "x": -2.842170943040401e-14, + "y": 1060 + }, + "4": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "run data collect script", + "customNameId": 0, + "description": "Enumerates autoruns, installed programs, listening network connections, running processes, registered services, scheduled tasks, local users, and local groups. It then exports to CSV. Finally, all information is exported to zip.", + "join": [], + "note": "Enumerates autoruns, installed programs, listening network connections, running processes, registered services, scheduled tasks, local users, and local groups. It then exports to CSV. Finally, all information is exported to zip." + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 2, + "functionName": "run_data_collect_script", + "id": "4", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname", + "script_str": "format_data_collect_script:formatted_data.*" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "4", + "type": "action", + "userCode": "\n parameters = []\n\n # build parameters list for 'run_data_collect_script' call\n for playbook_input_ip_or_hostname_item, formatted_part in zip(playbook_input_ip_or_hostname, format_data_collect_script__as_list):\n parameters.append({\n \"script_str\": formatted_part,\n \"ip_hostname\": playbook_input_ip_or_hostname_item[0],\n })\n\n\n", + "x": -2.842170943040401e-14, + "y": 640 + }, + "5": { + "data": { + "action": "get file", + "actionType": "investigate", + "advanced": { + "customName": "get zip", + "customNameId": 0, + "description": "Fetches the zip created by the data capture script and uploads to vault.", + "join": [], + "note": "Fetches the zip created by the data capture script and uploads to vault." + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "get_zip", + "id": "5", + "parameters": { + "file_path": "format_zip:formatted_data.*", + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "file_path" + ], + "tab": "byConnector", + "type": "action" + }, + "errors": {}, + "id": "5", + "type": "action", + "userCode": " parameters = []\n\n # build parameters list for 'get_zip' call\n for playbook_input_ip_or_hostname_item, formatted_part in zip(playbook_input_ip_or_hostname, format_zip__as_list):\n parameters.append({\n \"ip_hostname\": playbook_input_ip_or_hostname_item[0],\n \"file_path\": formatted_part,\n })\n\n", + "x": -2.842170943040401e-14, + "y": 920 + }, + "6": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "remove data capture files", + "customNameId": 0, + "description": "Removes the temporary files created by the data collection script", + "join": [], + "note": "Removes the temporary files created by the data collection script" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "remove_data_capture_files", + "id": "6", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname", + "script_str": "format_file_removal:formatted_data.*" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "6", + "type": "action", + "userCode": "\n parameters = []\n\n # build parameters list for 'remove_data_capture_files' call\n for playbook_input_ip_or_hostname_item, formatted_part in zip(playbook_input_ip_or_hostname, format_file_removal__as_list):\n parameters.append({\n \"script_str\": formatted_part,\n \"ip_hostname\": playbook_input_ip_or_hostname_item[0],\n })\n\n", + "x": -9.947598300641403e-14, + "y": 1200 + }, + "7": { + "data": { + "advanced": { + "customName": "format data collect script", + "customNameId": 0, + "join": [] + }, + "functionId": 1, + "functionName": "format_data_collect_script", + "id": "7", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\n$ProgressPreference = 'SilentlyContinue'; Get-CimInstance -ClassName Win32_StartupCommand | Export-Csv -Path .\\{0}-SOARFetch-Autorun.csv -NoType; Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Export-Csv -Path .\\{0}-SOARFetch-InstalledPrograms.csv -NoType; Get-NetTCPConnection -State Listen | Export-Csv -Path .\\{0}-SOARFetch-NetworkConnections.csv -NoType; Get-Process -IncludeUserName | Export-Csv -Path .\\{0}-SOARFetch-Processes.csv -NoType; Get-Service | Export-Csv -Path .\\{0}-SOARFetch-Services.csv -NoType; Get-ScheduledTask | Export-Csv -Path .\\{0}-SOARFetch-ScheduledTasks.csv -NoType; Get-LocalUser | Export-Csv -Path .\\{0}-SOARFetch-Users.csv -NoType; Get-LocalGroup | Export-Csv -Path .\\{0}-SOARFetch-Groups.csv -NoType; Compress-Archive -Path .\\{0}-SOARFetch* .\\{0}-SOARFetch.zip; \n%%", + "type": "format" + }, + "errors": {}, + "id": "7", + "type": "format", + "x": 1.4210854715202004e-14, + "y": 520 + }, + "8": { + "data": { + "action": "list processes", + "actionType": "investigate", + "advanced": { + "customName": "list processes", + "customNameId": 0, + "description": "List running processes", + "join": [], + "note": "List running processes" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "list_processes", + "id": "8", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "8", + "type": "action", + "x": -5.684341886080802e-14, + "y": 99.99999999999994 + }, + "9": { + "data": { + "action": "list connections", + "actionType": "investigate", + "advanced": { + "customName": "list connections", + "customNameId": 0, + "description": "List current connections", + "join": [], + "note": "List current connections" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "list_connections", + "id": "9", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "9", + "type": "action", + "x": -5.684341886080802e-14, + "y": 240 + } + }, + "notes": "" + }, + "input_spec": [ + { + "contains": [ + "host name", + "ip" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T00:19:14.002156+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "windows", + "internal_host" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_winrm_investigate.png b/playbooks/internal_host_winrm_investigate.png new file mode 100644 index 0000000000000000000000000000000000000000..f99ff6e22ac65f98621efb091a031c0a8239cc93 GIT binary patch literal 94212 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�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 literal 0 HcmV?d00001 diff --git a/playbooks/internal_host_winrm_investigate.py b/playbooks/internal_host_winrm_investigate.py new file mode 100644 index 0000000000..38aff058c5 --- /dev/null +++ b/playbooks/internal_host_winrm_investigate.py @@ -0,0 +1,364 @@ +""" +Performs a general investigation on key aspects of a windows device using windows remote management. Important files related to the endpoint are generated, bundled into a zip, and copied to the container vault. +""" + + +import phantom.rules as phantom +import json +from datetime import datetime, timedelta + + +def on_start(container): + phantom.debug('on_start() called') + + # call 'list_processes' block + list_processes(container=container) + + return + +def run_data_collect_script(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_data_collect_script() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # Enumerates autoruns, installed programs, listening network connections, running + # processes, registered services, scheduled tasks, local users, and local groups. + # It then exports to CSV. Finally, all information is exported to zip. + ################################################################################ + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + format_data_collect_script__as_list = phantom.get_format_data(name="format_data_collect_script__as_list") + + parameters = [] + + # build parameters list for 'run_data_collect_script' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + parameters.append({ + "script_str": format_data_collect_script__as_list, + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + parameters = [] + + # build parameters list for 'run_data_collect_script' call + for playbook_input_ip_or_hostname_item, formatted_part in zip(playbook_input_ip_or_hostname, format_data_collect_script__as_list): + parameters.append({ + "script_str": formatted_part, + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run script", parameters=parameters, name="run_data_collect_script", assets=["winrm"], callback=format_zip) + + return + + +def get_zip(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_zip() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # Fetches the zip created by the data capture script and uploads to vault. + ################################################################################ + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + format_zip__as_list = phantom.get_format_data(name="format_zip__as_list") + + parameters = [] + + # build parameters list for 'get_zip' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + if format_zip__as_list is not None: + parameters.append({ + "file_path": format_zip__as_list, + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + parameters = [] + + # build parameters list for 'get_zip' call + for playbook_input_ip_or_hostname_item, formatted_part in zip(playbook_input_ip_or_hostname, format_zip__as_list): + parameters.append({ + "ip_hostname": playbook_input_ip_or_hostname_item[0], + "file_path": formatted_part, + }) + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("get file", parameters=parameters, name="get_zip", assets=["winrm"], callback=format_file_removal) + + return + + +def remove_data_capture_files(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("remove_data_capture_files() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # Removes the temporary files created by the data collection script + ################################################################################ + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + format_file_removal__as_list = phantom.get_format_data(name="format_file_removal__as_list") + + parameters = [] + + # build parameters list for 'remove_data_capture_files' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + parameters.append({ + "script_str": format_file_removal__as_list, + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + parameters = [] + + # build parameters list for 'remove_data_capture_files' call + for playbook_input_ip_or_hostname_item, formatted_part in zip(playbook_input_ip_or_hostname, format_file_removal__as_list): + parameters.append({ + "script_str": formatted_part, + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run script", parameters=parameters, name="remove_data_capture_files", assets=["winrm"]) + + return + + +def format_data_collect_script(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("format_data_collect_script() called") + + template = """%%\n$ProgressPreference = 'SilentlyContinue'; Get-CimInstance -ClassName Win32_StartupCommand | Export-Csv -Path .\\{0}-SOARFetch-Autorun.csv -NoType; Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Export-Csv -Path .\\{0}-SOARFetch-InstalledPrograms.csv -NoType; Get-NetTCPConnection -State Listen | Export-Csv -Path .\\{0}-SOARFetch-NetworkConnections.csv -NoType; Get-Process -IncludeUserName | Export-Csv -Path .\\{0}-SOARFetch-Processes.csv -NoType; Get-Service | Export-Csv -Path .\\{0}-SOARFetch-Services.csv -NoType; Get-ScheduledTask | Export-Csv -Path .\\{0}-SOARFetch-ScheduledTasks.csv -NoType; Get-LocalUser | Export-Csv -Path .\\{0}-SOARFetch-Users.csv -NoType; Get-LocalGroup | Export-Csv -Path .\\{0}-SOARFetch-Groups.csv -NoType; Compress-Archive -Path .\\{0}-SOARFetch* .\\{0}-SOARFetch.zip; \n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="format_data_collect_script") + + run_data_collect_script(container=container) + + return + + +def list_processes(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("list_processes() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # List running processes + ################################################################################ + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + + parameters = [] + + # build parameters list for 'list_processes' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + parameters.append({ + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("list processes", parameters=parameters, name="list_processes", assets=["winrm"], callback=list_connections) + + return + + +def list_connections(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("list_connections() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # List current connections + ################################################################################ + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + + parameters = [] + + # build parameters list for 'list_connections' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + parameters.append({ + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("list connections", parameters=parameters, name="list_connections", assets=["winrm"], callback=list_sessions) + + return + + +def list_sessions(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("list_sessions() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # List active sessions + ################################################################################ + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + + parameters = [] + + # build parameters list for 'list_sessions' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + parameters.append({ + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("list sessions", parameters=parameters, name="list_sessions", assets=["winrm"], callback=format_data_collect_script) + + return + + +def format_zip(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("format_zip() called") + + ################################################################################ + # Format a dynamic string where the ZIP is located. + ################################################################################ + + template = """%%\n.\\{0}-SOARFetch.zip\n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="format_zip") + + get_zip(container=container) + + return + + +def format_file_removal(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("format_file_removal() called") + + ################################################################################ + # Format dynamic string for file removal + ################################################################################ + + template = """%%\nRemove-Item -Path .\\{0}-SOARFetch*\n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="format_file_removal") + + remove_data_capture_files(container=container) + + return + + +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # This function is called after all actions are completed. + # summary of all the action and/or all details of actions + # can be collected here. + + # summary_json = phantom.get_summary() + # if 'result' in summary_json: + # for action_result in summary_json['result']: + # if 'action_run_id' in action_result: + # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False) + # phantom.debug(action_results) + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file diff --git a/playbooks/internal_host_winrm_log4j_investigate.json b/playbooks/internal_host_winrm_log4j_investigate.json new file mode 100644 index 0000000000..15e316bebe --- /dev/null +++ b/playbooks/internal_host_winrm_log4j_investigate.json @@ -0,0 +1,315 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Use Cases", + "coa": { + "data": { + "description": "Published in response to CVE-2021-44228, this playbook scans the endpoint for the presence of \"jndilookup.class\" in all .jar files. The presence of that string could indicate a log4j vulnerability.", + "edges": [ + { + "id": "port_0_to_port_3", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "3", + "targetPort": "3_in" + }, + { + "id": "port_5_to_port_6", + "sourceNode": "5", + "sourcePort": "5_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_6_to_port_1", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_3_to_port_7", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_7_to_port_5", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "5", + "targetPort": "5_in" + } + ], + "hash": "6be22bd4339e81de35e935fd531dd37b71c5e6a6", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 840, + "y": 359.99999999999955 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 840, + "y": 1000 + }, + "3": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "run traversal script", + "customNameId": 0, + "description": "Run a script to locate all drives and traverse them for the presence of the jndilookup.class", + "join": [], + "note": "Run a script to locate all drives and traverse them for the presence of the jndilookup.class" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "run_traversal_script", + "id": "3", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname", + "script_str": "$ProgressPreference = 'SilentlyContinue'; Get-PSDrive -PSProvider FileSystem | foreach {(gci ($_.Root) -rec -force -include ('*.war', '*.jsp', '*.jspx', '*.jar') -ea 0 | foreach {select-string \"JndiLookup.class\" $_} | Select-Object -Property LineNumber, Path )} | ConvertTo-Json" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "3", + "type": "action", + "x": 820, + "y": 480 + }, + "5": { + "data": { + "advanced": { + "customName": "custom format", + "customNameId": 0, + "description": "Parse out the JSON returned by the traversal script", + "join": [], + "note": "Parse out the JSON returned by the traversal script" + }, + "functionId": 1, + "functionName": "custom_format", + "id": "5", + "inputParameters": [ + "run_traversal_script:action_result.data.*.std_out", + "playbook_input:ip_or_hostname" + ], + "outputVariables": [ + "note_content" + ], + "type": "code" + }, + "errors": {}, + "id": "5", + "type": "code", + "userCode": " custom_format__note_content = \"\"\n for script_result_item, ip_hostname in zip(run_traversal_script_result_item_0, playbook_input_ip_or_hostname_values):\n try:\n custom_format__note_content += f\"### Device - {ip_hostname}\\n\"\n custom_format__note_content += \" | Path | LineNumber |\\n\"\n custom_format__note_content += \"| --- | --- |\\n\"\n result_to_json = json.loads(script_result_item)\n for json_result in result_to_json:\n custom_format__note_content += f\"| {json_result['Path']} | {json_result['LineNumber']} |\\n\"\n custom_format__note_content += \"\\n \"\n except:\n phantom.error(\"Unable to parse JSON\")\n", + "x": 820, + "y": 780 + }, + "6": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 2, + "functionName": "add_note_2", + "id": "6", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "add_note": { + "description": "", + "fields": [ + { + "description": "", + "label": "title", + "name": "title", + "placeholder": "Enter a note title", + "renderType": "input", + "required": false + }, + { + "description": "", + "label": "content", + "name": "content", + "placeholder": "Enter the note content", + "renderType": "datapath", + "required": false + }, + { + "choices": [ + "markdown", + "html" + ], + "default": "markdown", + "description": "", + "label": "note format", + "name": "note_format", + "placeholder": "Enter the note content", + "renderType": "dropdown", + "required": false + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "default": "general", + "hidden": true, + "name": "note_type", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "event_id", + "required": false + }, + { + "hidden": true, + "name": "task_id", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add note", + "name": "add_note" + } + }, + "utilityType": "api", + "values": { + "add_note": { + "_internal": [ + "container", + "note_type", + "author", + "event_id", + "task_id", + "trace" + ], + "content": "custom_format:custom_function:note_content", + "note_format": "markdown", + "note_type": "general", + "title": "Evidence of jndilookup.class for CVE-2021-44228" + } + } + }, + "errors": {}, + "id": "6", + "type": "utility", + "x": 820, + "y": 904.5 + }, + "7": { + "data": { + "advanced": { + "customName": "results decision", + "customNameId": 0, + "description": "Only proceed if stdout has results", + "join": [], + "note": "Only proceed if stdout has results" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "run_traversal_script:action_result.data.*.std_out", + "value": "" + } + ], + "conditionIndex": 0, + "customName": "results exist", + "display": "If", + "logic": "and", + "type": "if" + } + ], + "functionId": 1, + "functionName": "results_decision", + "id": "7", + "type": "decision" + }, + "errors": {}, + "id": "7", + "type": "decision", + "x": 900, + "y": 620 + } + }, + "notes": "Based on \"https://twitter.com/CyberRaiju/status/1469505677580124160\"" + }, + "input_spec": [ + { + "contains": [ + "host name", + "ip" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T00:24:05.504834+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "windows", + "internal_host", + "log4j" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_winrm_log4j_investigate.png b/playbooks/internal_host_winrm_log4j_investigate.png new file mode 100644 index 0000000000000000000000000000000000000000..df7bbe93d78964efb4db9f6537898812a1122b23 GIT binary patch literal 56459 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

UqG_`dt35mH8X5d|WD{npByP-@> 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", + "category": "Use Cases", + "coa": { + "data": { + "description": "Published in response to CVE-2021-44228, this playbook accepts a list of hosts and filenames to remediate on the endpoint. If filenames are provided, the endpoints will be searched and then the user can approve deletion. Then the user is prompted to quarantine the endpoint.", + "edges": [ + { + "id": "port_4_to_port_9", + "sourceNode": "4", + "sourcePort": "4_out", + "targetNode": "9", + "targetPort": "9_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_9_to_port_10", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "10", + "targetPort": "10_in" + }, + { + "id": "port_10_to_port_12", + "sourceNode": "10", + "sourcePort": "10_out", + "targetNode": "12", + "targetPort": "12_in" + }, + { + "id": "port_12_to_port_13", + "sourceNode": "12", + "sourcePort": "12_out", + "targetNode": "13", + "targetPort": "13_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_13_to_port_14", + "sourceNode": "13", + "sourcePort": "13_out", + "targetNode": "14", + "targetPort": "14_in" + }, + { + "id": "port_0_to_port_15", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "15", + "targetPort": "15_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_15_to_port_4", + "sourceNode": "15", + "sourcePort": "15_out", + "targetNode": "4", + "targetPort": "4_in" + }, + { + "id": "port_17_to_port_20", + "sourceNode": "17", + "sourcePort": "17_out", + "targetNode": "20", + "targetPort": "20_in" + }, + { + "id": "port_20_to_port_23", + "sourceNode": "20", + "sourcePort": "20_out", + "targetNode": "23", + "targetPort": "23_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_23_to_port_24", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "24", + "targetPort": "24_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_23_to_port_25", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "25", + "targetPort": "25_in" + }, + { + "conditions": [ + { + "index": 2 + } + ], + "id": "port_23_to_port_26", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "26", + "targetPort": "26_in" + }, + { + "id": "port_27_to_port_1", + "sourceNode": "27", + "sourcePort": "27_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_14_to_port_28", + "sourceNode": "14", + "sourcePort": "14_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "id": "port_28_to_port_17", + "sourceNode": "28", + "sourcePort": "28_out", + "targetNode": "17", + "targetPort": "17_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_13_to_port_28", + "sourceNode": "13", + "sourcePort": "13_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_9_to_port_28", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_15_to_port_28", + "sourceNode": "15", + "sourcePort": "15_out", + "targetNode": "28", + "targetPort": "28_in" + }, + { + "id": "port_25_to_port_32", + "sourceNode": "25", + "sourcePort": "25_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "id": "port_32_to_port_27", + "sourceNode": "32", + "sourcePort": "32_out", + "targetNode": "27", + "targetPort": "27_in" + }, + { + "id": "port_26_to_port_32", + "sourceNode": "26", + "sourcePort": "26_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "id": "port_24_to_port_32", + "sourceNode": "24", + "sourcePort": "24_out", + "targetNode": "32", + "targetPort": "32_in" + }, + { + "conditions": [ + { + "index": 3 + } + ], + "id": "port_23_to_port_32", + "sourceNode": "23", + "sourcePort": "23_out", + "targetNode": "32", + "targetPort": "32_in" + } + ], + "hash": "b66aad637ff2a4e0d549f8b7d1b646cb01dbdff4", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 530, + "y": -1.2789769243681803e-13 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 530, + "y": 2707 + }, + "10": { + "data": { + "advanced": { + "customName": "generate deletion commands", + "customNameId": 0, + "description": "Generate a prompt along with one deletion command per host.", + "join": [], + "note": "Generate a prompt along with one deletion command per host." + }, + "functionId": 3, + "functionName": "generate_deletion_commands", + "id": "10", + "inputParameters": [ + "locate_files:action_result.parameter.ip_hostname", + "locate_files:action_result.data.*.std_out" + ], + "outputVariables": [ + "prompt_content", + "deletion_command", + "host" + ], + "type": "code" + }, + "errors": {}, + "id": "10", + "type": "code", + "userCode": " \n generate_deletion_commands__prompt_content = \"\"\n generate_deletion_commands__host = []\n generate_deletion_commands__deletion_command = []\n \n # Retrieve previously saved key\n host_dictionary = json.loads(phantom.get_run_data(key=\"host_dictionary\"))\n \n # Iterate through the paired host and locate files action result\n for hostname, action_result in zip(locate_files_parameter_ip_hostname, locate_files_result_item_1):\n \n # Ensure at least one file was found for that host\n if True in json.loads(action_result):\n \n # Attach this host to list of deletion hosts\n generate_deletion_commands__host.append(hostname)\n \n # Begin building deletion powershell script and prompt message\n deletion_string = \"Remove-Item \"\n generate_deletion_commands__prompt_content += f\"### {hostname}\\n\\n\"\n for filepath, result in zip(host_dictionary[hostname], json.loads(action_result)):\n if result == True:\n generate_deletion_commands__prompt_content += f\"- {filepath}\\n\"\n deletion_string += f\"{filepath},\"\n \n # Remove trailing comma and attach one deletion command\n deletion_string = deletion_string.rstrip(',')\n deletion_string += ' | Write-Output \"Files Deleted\"'\n generate_deletion_commands__deletion_command.append(deletion_string)\n\n", + "x": 330, + "y": 686 + }, + "12": { + "data": { + "advanced": { + "customName": "deletion confirmation", + "customNameId": 0, + "description": "Prompt the user to confirm deletion", + "join": [], + "note": "Prompt the user to confirm deletion" + }, + "approver": "admin", + "functionId": 3, + "functionName": "deletion_confirmation", + "id": "12", + "message": "SOAR found results for the following files. Please review the returned list and confirm if they should be deleted.\n\n{0}", + "parameters": [ + "generate_deletion_commands:custom_function:prompt_content" + ], + "responseTime": 30, + "responses": [ + { + "responseOptions": [], + "responsePrompt": "Type 'confirm' to delete", + "responseType": "message" + } + ], + "type": "prompt" + }, + "errors": {}, + "id": "12", + "type": "prompt", + "x": 410, + "y": 880 + }, + "13": { + "data": { + "advanced": { + "customName": "deletion decision", + "customNameId": 0, + "description": "Determine if user wants to delete files", + "join": [], + "note": "Determine if user wants to delete files" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "deletion_confirmation:action_result.summary.responses.0", + "value": "confirm" + } + ], + "conditionIndex": 0, + "customName": "delete", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "do not delete", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 2, + "functionName": "deletion_decision", + "id": "13", + "type": "decision" + }, + "errors": {}, + "id": "13", + "type": "decision", + "x": 410, + "y": 1060 + }, + "14": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "delete files", + "customNameId": 0, + "description": "Iterate through host and deletion command. Contains custom code.", + "join": [], + "note": "Iterate through host and deletion command. Contains custom code." + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 2, + "functionName": "delete_files", + "id": "14", + "parameters": { + "ip_hostname": "generate_deletion_commands:custom_function:host", + "script_str": "generate_deletion_commands:custom_function:deletion_command" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "14", + "type": "action", + "userCode": "\n parameters = []\n for del_cmd, host in zip(generate_deletion_commands__deletion_command, generate_deletion_commands__host):\n parameters.append({\n \"script_str\": del_cmd,\n \"ip_hostname\": host,\n })\n \n", + "x": 230, + "y": 1240 + }, + "15": { + "data": { + "advanced": { + "customName": "filepath decision", + "customNameId": 0, + "description": "Determine if filepath is present in playbook inputs", + "join": [], + "note": "Determine if filepath is present in playbook inputs" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "playbook_input:filepath", + "value": "" + } + ], + "conditionIndex": 0, + "customName": "filepath exists", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "filepath does not exist", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 3, + "functionName": "filepath_decision", + "id": "15", + "type": "decision" + }, + "errors": {}, + "id": "15", + "type": "decision", + "x": 590, + "y": 148 + }, + "17": { + "data": { + "advanced": { + "customName": "format host list prompt", + "customNameId": 0, + "description": "Format a list of the hosts. This will feed both env var prompt and shut down prompts.", + "join": [], + "notRequiredJoins": [ + "delete_files", + "deletion_confirmation", + "locate_files" + ], + "note": "Format a list of the hosts. This will feed both env var prompt and shut down prompts." + }, + "functionId": 1, + "functionName": "format_host_list_prompt", + "id": "17", + "parameters": [ + "dedup_hostnames:custom_function_result.data.*.item" + ], + "template": "%%\n- {0}\n%%", + "type": "format" + }, + "errors": {}, + "id": "17", + "type": "format", + "x": 510, + "y": 1583 + }, + "20": { + "data": { + "advanced": { + "customName": "quarantine prompt", + "customNameId": 0, + "description": "Offer the user options to quarantine the affected endpoints", + "join": [], + "notRequiredJoins": [ + "set_env_var", + "env_variable_prompt" + ], + "note": "Offer the user options to quarantine the affected endpoints" + }, + "approver": "admin", + "functionId": 2, + "functionName": "quarantine_prompt", + "id": "20", + "message": "Choose an action you would like to take on the following hosts and then type confirm. The same selected action will be performed on every host.\n\n### Available Actions:\n- Restrict Outbound Traffic\n(Sets a firewall policy to prevent all outbound traffic. This may disrupt domain authentication for all but cached credentials.)\n- Shutdown Host (This is a forced shutdown)\n\n### Target Hosts\n{0}", + "parameters": [ + "format_host_list_prompt:formatted_data" + ], + "responseTime": 30, + "responses": [ + { + "responseOptions": [ + "Restrict Outbound Traffic", + "Shutdown", + "Restrict Outbound Traffic and Shutdown", + "Do Nothing" + ], + "responsePrompt": "Available Actions", + "responseType": "customList" + }, + { + "responsePrompt": "Type \"confirm\"", + "responseType": "message" + } + ], + "type": "prompt" + }, + "errors": {}, + "id": "20", + "type": "prompt", + "x": 590, + "y": 1768 + }, + "23": { + "data": { + "advanced": { + "customName": "quarantine decision", + "customNameId": 0, + "description": "Determine which action the user selected", + "join": [], + "note": "Determine which action the user selected" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.0", + "value": "Restrict Outbound Traffic" + }, + { + "conditionIndex": 0, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.1", + "value": "confirm" + } + ], + "conditionIndex": 0, + "customName": "restrict outbound traffic", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.0", + "value": "Shutdown" + }, + { + "conditionIndex": 1, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.1", + "value": "confirm" + } + ], + "conditionIndex": 1, + "customName": "shutdown", + "display": "Else If", + "logic": "and", + "type": "elif" + }, + { + "comparisons": [ + { + "conditionIndex": 2, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.0", + "value": "Restrict Outbound Traffic and Shutdown" + }, + { + "conditionIndex": 2, + "op": "==", + "param": "quarantine_prompt:action_result.summary.responses.1", + "value": "confirm" + } + ], + "conditionIndex": 2, + "customName": "restrict outbound and shutdown", + "display": "Else If", + "logic": "and", + "type": "elif" + }, + { + "comparisons": [ + { + "conditionIndex": 3, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 3, + "customName": "do nothing", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 6, + "functionName": "quarantine_decision", + "id": "23", + "type": "decision" + }, + "errors": {}, + "id": "23", + "type": "decision", + "x": 590, + "y": 1948 + }, + "24": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "block outbound traffic", + "customNameId": 0, + "description": "Add firewall rule blocking outbound traffic", + "join": [], + "note": "Add firewall rule blocking outbound traffic" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 4, + "functionName": "block_outbound_traffic", + "id": "24", + "parameters": { + "ip_hostname": "dedup_hostnames:custom_function_result.data.*.item", + "script_str": "New-NetFirewallRule -DisplayName Splunk_SOAR_Quarantine -Direction Outbound -Enabled True -LocalPort Any -RemoteAddress Any -Action Block" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "24", + "type": "action", + "x": 680, + "y": 2128 + }, + "25": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "shutdown", + "customNameId": 0, + "description": "Shutdown machine", + "join": [], + "note": "Shutdown machine" + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 5, + "functionName": "shutdown", + "id": "25", + "parameters": { + "ip_hostname": "dedup_hostnames:custom_function_result.data.*.item", + "script_str": "shutdown /f" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "25", + "type": "action", + "x": 0, + "y": 2128 + }, + "26": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "block and shutdown", + "customNameId": 0, + "description": "Add firewall rule and then shutdown machine", + "join": [] + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 6, + "functionName": "block_and_shutdown", + "id": "26", + "parameters": { + "ip_hostname": "dedup_hostnames:custom_function_result.data.*.item", + "script_str": "New-NetFirewallRule -DisplayName Splunk_SOAR_Quarantine -Direction Outbound -Enabled True -LocalPort Any -RemoteAddress Any -Action Block; shutdown /f" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "26", + "type": "action", + "x": 340, + "y": 2150.5 + }, + "27": { + "data": { + "advanced": { + "customName": "summary note", + "customNameId": 0, + "description": "Leave a summary note", + "join": [], + "notRequiredJoins": [ + "block_and_shutdown", + "quarantine_prompt", + "block_outbound_traffic", + "shutdown" + ], + "note": "Leave a summary note" + }, + "functionId": 1, + "functionName": "summary_note", + "id": "27", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "add_note": { + "description": "", + "fields": [ + { + "description": "", + "label": "title", + "name": "title", + "placeholder": "Enter a note title", + "renderType": "input", + "required": false + }, + { + "description": "", + "label": "content", + "name": "content", + "placeholder": "Enter the note content", + "renderType": "datapath", + "required": false + }, + { + "choices": [ + "markdown", + "html" + ], + "default": "markdown", + "description": "", + "label": "note format", + "name": "note_format", + "placeholder": "Enter the note content", + "renderType": "dropdown", + "required": false + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "default": "general", + "hidden": true, + "name": "note_type", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "event_id", + "required": false + }, + { + "hidden": true, + "name": "task_id", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add note", + "name": "add_note" + } + }, + "utilityType": "api", + "values": { + "add_note": { + "_internal": [ + "container", + "note_type", + "author", + "event_id", + "task_id", + "trace" + ], + "content": "format_custom_note:custom_function:output", + "note_format": "markdown", + "note_type": "general", + "title": "WinRm Log4j Response" + } + } + }, + "errors": {}, + "id": "27", + "type": "utility", + "userCode": "\n\n", + "x": 510, + "y": 2514 + }, + "28": { + "data": { + "advanced": { + "customName": "dedup hostnames", + "customNameId": 0, + "join": [], + "notRequiredJoins": [ + "delete_files", + "deletion_confirmation", + "locate_files" + ] + }, + "customFunction": { + "draftMode": false, + "name": "list_deduplicate", + "repoName": "community" + }, + "functionId": 2, + "functionName": "dedup_hostnames", + "id": "28", + "selectMore": false, + "type": "utility", + "utilities": { + "list_deduplicate": { + "description": "Remove non-unique items from a list.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "A list of items to deduplicate", + "inputType": "list", + "label": "input_list", + "name": "input_list", + "placeholder": "", + "renderType": "datapath", + "required": false + } + ], + "label": "list_deduplicate", + "name": "list_deduplicate" + } + }, + "utilityType": "custom_function", + "values": { + "list_deduplicate": { + "input_list": "playbook_input:ip_or_hostname" + } + } + }, + "errors": {}, + "id": "28", + "type": "utility", + "x": 510, + "y": 1418 + }, + "32": { + "data": { + "advanced": { + "customName": "format custom note", + "customNameId": 0, + "description": "Format a dynamic summary note from playbook.get_summary()", + "join": [], + "notRequiredJoins": [ + "quarantine_prompt", + "block_outbound_traffic", + "shutdown", + "block_and_shutdown" + ], + "note": "Format a dynamic summary note from playbook.get_summary()" + }, + "functionId": 1, + "functionName": "format_custom_note", + "id": "32", + "inputParameters": [], + "outputVariables": [ + "output" + ], + "type": "code" + }, + "errors": {}, + "id": "32", + "type": "code", + "userCode": " format_custom_note__output = \"\"\n playbook_summary = phantom.get_summary()\n if 'result' in playbook_summary.keys() and playbook_summary['result']:\n for result_item in playbook_summary['result']:\n format_custom_note__output += f\"#### Action - {result_item['name']}: {result_item['message']}\\n\"\n # Generate app run summary for each action\n if 'app_runs' in result_item.keys() and result_item['app_runs']:\n for app_run_item in result_item['app_runs']:\n format_custom_note__output += f\"- app_run_id: {app_run_item['app_run_id']}\\n\"\n for k,v in app_run_item['parameter'].items():\n if k != 'context':\n format_custom_note__output += f\" - {k}: {v}\\n\"\n format_custom_note__output += f\"- summary: {app_run_item['summary']}\\n\"\n format_custom_note__output += \"\\n\"\n\n", + "x": 510, + "y": 2321 + }, + "4": { + "data": { + "action": "run script", + "actionType": "generic", + "advanced": { + "customName": "locate files", + "customNameId": 0, + "description": "Run a search to locate files. Contains custom code.", + "join": [], + "note": "Run a search to locate files. Contains custom code." + }, + "connector": "Windows Remote Management", + "connectorConfigs": [ + "winrm" + ], + "connectorId": "a0222b95-b006-4c9e-9578-1428defcec0f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "locate_files", + "id": "4", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname", + "script_str": "playbook_input:filepath" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "4", + "type": "action", + "userCode": "\n parameters = []\n host_search = {}\n \n # Treat ip_or_hostname and filePath as a paired unit and iterate through them,\n # then create a dictionary for each host with a list of its filepaths\n for playbook_input_filepath_item, playbook_input_ip_or_hostname_item in zip(playbook_input_filepath, playbook_input_ip_or_hostname):\n if playbook_input_ip_or_hostname_item[0] in host_search.keys():\n host_search[playbook_input_ip_or_hostname_item[0]].append(playbook_input_filepath_item[0])\n else:\n host_search[playbook_input_ip_or_hostname_item[0]] = [playbook_input_filepath_item[0]]\n \n # Iterate through the host dictionary and generation one search string that checks all filepaths per host.\n # This ensures that we are only connecting to each host once.\n for k,v in host_search.items():\n script_str = f\"Test-Path {','.join(v)} | ConvertTo-Json\"\n parameters.append({\n \"ip_hostname\": k,\n \"script_str\": script_str\n })\n \n # Save the host_search dictionary into temporary data to access downstream.\n # This makes it easier to compare the results of locate files with the filepaths and hosts\n phantom.save_run_data(value=json.dumps(host_search), key=\"host_dictionary\")\n \n", + "x": 420, + "y": 328 + }, + "9": { + "data": { + "advanced": { + "customName": "file search decision", + "customNameId": 0, + "description": "Determine if at least one file was found", + "join": [], + "note": "Determine if at least one file was found" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "in", + "param": "true", + "value": "locate_files:action_result.data.*.std_out" + } + ], + "conditionIndex": 0, + "customName": "file exists", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "no files found", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 1, + "functionName": "file_search_decision", + "id": "9", + "type": "decision" + }, + "errors": {}, + "id": "9", + "type": "decision", + "x": 500, + "y": 506 + } + }, + "notes": "" + }, + "input_spec": [ + { + "contains": [ + "ip", + "host name" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + }, + { + "contains": [ + "file path" + ], + "description": "File path to delete", + "name": "filePath" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T00:26:33.188209+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "internal_host", + "windows", + "log4j" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_winrm_log4j_respond.png b/playbooks/internal_host_winrm_log4j_respond.png new file mode 100644 index 0000000000000000000000000000000000000000..12c77212aad4e76476bb3a6025ff713565d83397 GIT binary patch literal 187655 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

%Q?uUeOW|S#Q8|o!|lV)eCOvW*5`=9 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

#OVEk)~< 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 z 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 Date: Tue, 14 Dec 2021 18:38:02 -0600 Subject: [PATCH 36/53] Another one --- ...nternal_host_splunk_investigate_log4j.json | 378 ++++++++++++++++++ .../internal_host_splunk_investigate_log4j.py | 300 ++++++++++++++ 2 files changed, 678 insertions(+) create mode 100644 playbooks/internal_host_splunk_investigate_log4j.json create mode 100644 playbooks/internal_host_splunk_investigate_log4j.py diff --git a/playbooks/internal_host_splunk_investigate_log4j.json b/playbooks/internal_host_splunk_investigate_log4j.json new file mode 100644 index 0000000000..3e0cfbebe7 --- /dev/null +++ b/playbooks/internal_host_splunk_investigate_log4j.json @@ -0,0 +1,378 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Threat Response", + "coa": { + "data": { + "description": "Published in response to CVE-2021-44228, this playbook utilizes data already in your Splunk environment to help investigate and remediate impacts caused by this vulnerability in your environment.", + "edges": [ + { + "id": "port_6_to_port_11", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "11", + "targetPort": "11_in" + }, + { + "id": "port_7_to_port_12", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "12", + "targetPort": "12_in" + }, + { + "id": "port_8_to_port_13", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "13", + "targetPort": "13_in" + }, + { + "id": "port_10_to_port_14", + "sourceNode": "10", + "sourcePort": "10_out", + "targetNode": "14", + "targetPort": "14_in" + }, + { + "id": "port_0_to_port_6", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_0_to_port_7", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "id": "port_0_to_port_8", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "id": "port_0_to_port_10", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "10", + "targetPort": "10_in" + }, + { + "id": "port_11_to_port_1", + "sourceNode": "11", + "sourcePort": "11_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_12_to_port_1", + "sourceNode": "12", + "sourcePort": "12_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_13_to_port_1", + "sourceNode": "13", + "sourcePort": "13_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_14_to_port_1", + "sourceNode": "14", + "sourcePort": "14_out", + "targetNode": "1", + "targetPort": "1_in" + } + ], + "hash": "b2bce4ea7e2dbaefba3a2b8403baf8d50fe9c488", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 530, + "y": 0 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 530, + "y": 481 + }, + "10": { + "data": { + "advanced": { + "customName": "ES Assets ", + "customNameId": 0, + "join": [], + "note": "Formatting ES Assets & Identities Search" + }, + "functionId": 1, + "functionName": "es_assets", + "id": "10", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\nasset_lookup_by_str | search asset IN (\"{0}\") | eval category = mvjoin(category, \"; \")\n%%", + "type": "format" + }, + "errors": {}, + "id": "10", + "type": "format", + "x": 1020, + "y": 150 + }, + "11": { + "data": { + "action": "run query", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "Splunk", + "connectorConfigs": [ + "splunk" + ], + "connectorId": "91883aa8-9c81-470b-97a1-5d8f7995f560", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "run_query_1", + "id": "11", + "parameters": { + "command": "search", + "query": "get_notable_history:formatted_data.*" + }, + "requiredParameters": [ + "query" + ], + "type": "action" + }, + "errors": {}, + "id": "11", + "type": "action", + "userCode": "\n parameters = []\n phantom.debug(get_notable_history__as_list)\n for formatted_item in get_notable_history__as_list:\n parameters.append({\n \"query\": formatted_item,\n \"command\": \"search\",\n })\n\n", + "x": 0, + "y": 331 + }, + "12": { + "data": { + "action": "run query", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "Splunk", + "connectorConfigs": [ + "splunk" + ], + "connectorId": "91883aa8-9c81-470b-97a1-5d8f7995f560", + "connectorVersion": "v1", + "functionId": 2, + "functionName": "run_query_2", + "id": "12", + "parameters": { + "command": "tstats", + "query": "get_process_info:formatted_data.*" + }, + "requiredParameters": [ + "query" + ], + "type": "action" + }, + "errors": {}, + "id": "12", + "type": "action", + "userCode": "\n parameters = []\n phantom.debug(get_process_info__as_list)\n for formatted_item in get_process_info__as_list:\n parameters.append({\n \"query\": formatted_item,\n \"command\": \"tstats\",\n })\n \n", + "x": 340, + "y": 331 + }, + "13": { + "data": { + "action": "run query", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "Splunk", + "connectorConfigs": [ + "splunk" + ], + "connectorId": "91883aa8-9c81-470b-97a1-5d8f7995f560", + "connectorVersion": "v1", + "functionId": 3, + "functionName": "run_query_3", + "id": "13", + "parameters": { + "command": "tstats", + "query": "get_children_of_java:formatted_data.*" + }, + "requiredParameters": [ + "query" + ], + "type": "action" + }, + "errors": {}, + "id": "13", + "type": "action", + "userCode": "\n\n parameters = []\n phantom.debug(get_children_of_java__as_list)\n for formatted_item in get_children_of_java__as_list:\n parameters.append({\n \"query\": formatted_item,\n \"command\": \"tstats\",\n })\n \n", + "x": 680, + "y": 331 + }, + "14": { + "data": { + "action": "run query", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "Splunk", + "connectorConfigs": [ + "splunk" + ], + "connectorId": "91883aa8-9c81-470b-97a1-5d8f7995f560", + "connectorVersion": "v1", + "functionId": 4, + "functionName": "run_query_4", + "id": "14", + "parameters": { + "command": "| inputlookup", + "query": "es_assets:formatted_data.*" + }, + "requiredParameters": [ + "query" + ], + "type": "action" + }, + "errors": {}, + "id": "14", + "type": "action", + "userCode": "\n parameters = []\n phantom.debug(es_assets__as_list)\n for formatted_item in es_assets__as_list:\n parameters.append({\n \"query\": formatted_item,\n \"command\": \"| inputlookup\",\n })\n \n", + "x": 1020, + "y": 331 + }, + "6": { + "data": { + "advanced": { + "customName": "Get Notable History", + "customNameId": 0, + "description": "", + "join": [], + "note": "Formatting Notable History search" + }, + "functionId": 2, + "functionName": "get_notable_history", + "id": "6", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\n`notable` | search dest={0} | table _time, dest, rule_name, owner, priority, severity, status_description\n%%", + "type": "format" + }, + "errors": {}, + "id": "6", + "type": "format", + "userCode": "\n # Write your custom code here...\n\n", + "x": 0, + "y": 150 + }, + "7": { + "data": { + "advanced": { + "customName": "Get Process Info", + "customNameId": 0, + "description": "", + "join": [], + "note": "Formatting Process info search" + }, + "functionId": 3, + "functionName": "get_process_info", + "id": "7", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\n`security_content_summariesonly` count values(Processes.process)\n as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes\n by Processes.user Processes.parent_process_name Processes.process_name Processes.dest\n | `drop_dm_object_name(\"Processes\")` | search process_name= \"*java*\" | search\n dest = {0} | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`\n%%", + "type": "format" + }, + "errors": {}, + "id": "7", + "type": "format", + "x": 340, + "y": 150 + }, + "8": { + "data": { + "advanced": { + "customName": "Get Children of Java", + "customNameId": 0, + "join": [], + "note": "Formatting Children of Java search" + }, + "functionId": 4, + "functionName": "get_children_of_java", + "id": "8", + "parameters": [ + "playbook_input:ip_or_hostname" + ], + "template": "%%\n`security_content_summariesonly` count values(Processes.process)\n as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes\n by Processes.user Processes.parent_process_name Processes.process_name Processes.dest\n | `drop_dm_object_name(\"Processes\")` | search parent_process_name= \"*java*\" | search dest = {0} |`security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`\n%%", + "type": "format" + }, + "errors": {}, + "id": "8", + "type": "format", + "x": 680, + "y": 150 + } + }, + "notes": "Deployment Notes: This playbook presumes you have Enterprise Security and have configured Assets and Identities, as well as the Endpoint.Processes datamodel." + }, + "input_spec": [ + { + "contains": [ + "host name", + "ip" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T00:13:52.864984+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "investigate" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_splunk_investigate_log4j.py b/playbooks/internal_host_splunk_investigate_log4j.py new file mode 100644 index 0000000000..1e05b17e9b --- /dev/null +++ b/playbooks/internal_host_splunk_investigate_log4j.py @@ -0,0 +1,300 @@ +""" +Published in response to CVE-2021-44228, this playbook utilizes data already in your Splunk environment to help investigate and remediate impacts caused by this vulnerability in your environment. +""" + + +import phantom.rules as phantom +import json +from datetime import datetime, timedelta + + +def on_start(container): + phantom.debug('on_start() called') + + # call 'get_notable_history' block + get_notable_history(container=container) + # call 'get_process_info' block + get_process_info(container=container) + # call 'get_children_of_java' block + get_children_of_java(container=container) + # call 'es_assets' block + es_assets(container=container) + + return + +def get_notable_history(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_notable_history() called") + + template = """%%\n`notable` | search dest={0} | table _time, dest, rule_name, owner, priority, severity, status_description\n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="get_notable_history") + + run_query_1(container=container) + + return + + +def get_process_info(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_process_info() called") + + template = """%%\n`security_content_summariesonly` count values(Processes.process)\n as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes\n by Processes.user Processes.parent_process_name Processes.process_name Processes.dest\n | `drop_dm_object_name(\"Processes\")` | search process_name= \"*java*\" | search\n dest = {0} | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`\n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="get_process_info") + + run_query_2(container=container) + + return + + +def get_children_of_java(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_children_of_java() called") + + template = """%%\n`security_content_summariesonly` count values(Processes.process)\n as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes\n by Processes.user Processes.parent_process_name Processes.process_name Processes.dest\n | `drop_dm_object_name(\"Processes\")` | search parent_process_name= \"*java*\" | search dest = {0} |`security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`\n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="get_children_of_java") + + run_query_3(container=container) + + return + + +def es_assets(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("es_assets() called") + + template = """%%\nasset_lookup_by_str | search asset IN (\"{0}\") | eval category = mvjoin(category, \"; \")\n%%""" + + # parameter list for template variable replacement + parameters = [ + "playbook_input:ip_or_hostname" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="es_assets") + + run_query_4(container=container) + + return + + +def run_query_1(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_query_1() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + get_notable_history__as_list = phantom.get_format_data(name="get_notable_history__as_list") + + parameters = [] + + if get_notable_history__as_list is not None: + parameters.append({ + "query": get_notable_history__as_list, + "command": "search", + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + parameters = [] + phantom.debug(get_notable_history__as_list) + for formatted_item in get_notable_history__as_list: + parameters.append({ + "query": formatted_item, + "command": "search", + }) + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run query", parameters=parameters, name="run_query_1", assets=["splunk"]) + + return + + +def run_query_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_query_2() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + get_process_info__as_list = phantom.get_format_data(name="get_process_info__as_list") + + parameters = [] + + if get_process_info__as_list is not None: + parameters.append({ + "query": get_process_info__as_list, + "command": "tstats", + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + parameters = [] + phantom.debug(get_process_info__as_list) + for formatted_item in get_process_info__as_list: + parameters.append({ + "query": formatted_item, + "command": "tstats", + }) + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run query", parameters=parameters, name="run_query_2", assets=["splunk"]) + + return + + +def run_query_3(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_query_3() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + get_children_of_java__as_list = phantom.get_format_data(name="get_children_of_java__as_list") + + parameters = [] + + if get_children_of_java__as_list is not None: + parameters.append({ + "query": get_children_of_java__as_list, + "command": "tstats", + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + + parameters = [] + phantom.debug(get_children_of_java__as_list) + for formatted_item in get_children_of_java__as_list: + parameters.append({ + "query": formatted_item, + "command": "tstats", + }) + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run query", parameters=parameters, name="run_query_3", assets=["splunk"]) + + return + + +def run_query_4(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_query_4() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + es_assets__as_list = phantom.get_format_data(name="es_assets__as_list") + + parameters = [] + + if es_assets__as_list is not None: + parameters.append({ + "query": es_assets__as_list, + "command": "| inputlookup", + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + parameters = [] + phantom.debug(es_assets__as_list) + for formatted_item in es_assets__as_list: + parameters.append({ + "query": formatted_item, + "command": "| inputlookup", + }) + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run query", parameters=parameters, name="run_query_4", assets=["splunk"]) + + return + + +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # This function is called after all actions are completed. + # summary of all the action and/or all details of actions + # can be collected here. + + # summary_json = phantom.get_summary() + # if 'result' in summary_json: + # for action_result in summary_json['result']: + # if 'action_run_id' in action_result: + # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False) + # phantom.debug(action_results) + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file From 16b771eae28c34250609aa91aa0a7906a253265f Mon Sep 17 00:00:00 2001 From: d1vious Date: Tue, 14 Dec 2021 19:38:51 -0500 Subject: [PATCH 37/53] adding tags to detections --- detections/endpoint/any_powershell_downloadfile.yml | 2 ++ .../endpoint/cmd_carry_out_string_command_parameter.yml | 2 ++ detections/endpoint/curl_download_and_bash_execution.yml | 7 +++++-- detections/endpoint/hunting_for_log4shell.yml | 2 ++ .../java_class_file_download_by_java_user_agent.yml | 2 ++ ...ll_process___connect_to_internet_with_hidden_window.yml | 2 ++ detections/endpoint/wget_download_and_bash_execution.yml | 7 +++++-- .../experimental/endpoint/linux_java_spawning_shell.yml | 4 +++- .../experimental/endpoint/windows_java_spawning_shells.yml | 4 +++- detections/network/detect_outbound_ldap_traffic.yml | 2 ++ 10 files changed, 28 insertions(+), 6 deletions(-) diff --git a/detections/endpoint/any_powershell_downloadfile.yml b/detections/endpoint/any_powershell_downloadfile.yml index 924efa5169..354572f211 100644 --- a/detections/endpoint/any_powershell_downloadfile.yml +++ b/detections/endpoint/any_powershell_downloadfile.yml @@ -67,6 +67,8 @@ tags: type: Process role: - Child Process + cve: + - CVE-2021-44228 product: - Splunk Enterprise - Splunk Enterprise Security diff --git a/detections/endpoint/cmd_carry_out_string_command_parameter.yml b/detections/endpoint/cmd_carry_out_string_command_parameter.yml index 043a3ddf01..cde3579f54 100644 --- a/detections/endpoint/cmd_carry_out_string_command_parameter.yml +++ b/detections/endpoint/cmd_carry_out_string_command_parameter.yml @@ -54,6 +54,8 @@ tags: type: User role: - Victim + cve: + - CVE-2021-44228 product: - Splunk Enterprise - Splunk Enterprise Security diff --git a/detections/endpoint/curl_download_and_bash_execution.yml b/detections/endpoint/curl_download_and_bash_execution.yml index 6a4bd2b3cf..18feee42a2 100644 --- a/detections/endpoint/curl_download_and_bash_execution.yml +++ b/detections/endpoint/curl_download_and_bash_execution.yml @@ -29,7 +29,8 @@ tags: analytic_story: - Ingress Tool Transfer - Log4Shell CVE-2021-44228 - dataset: [] + dataset: + - "https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log" kill_chain_phases: - Exploitation mitre_attack_id: @@ -71,4 +72,6 @@ tags: - name: process_name type: Process role: - - Child Process \ No newline at end of file + - Child Process + cve: + - CVE-2021-44228 diff --git a/detections/endpoint/hunting_for_log4shell.yml b/detections/endpoint/hunting_for_log4shell.yml index 7ad19281a4..eb70cdded4 100644 --- a/detections/endpoint/hunting_for_log4shell.yml +++ b/detections/endpoint/hunting_for_log4shell.yml @@ -94,3 +94,5 @@ tags: type: Other role: - other + cve: + - CVE-2021-44228 diff --git a/detections/endpoint/java_class_file_download_by_java_user_agent.yml b/detections/endpoint/java_class_file_download_by_java_user_agent.yml index 3a8cf7def2..1e93fb7c6d 100644 --- a/detections/endpoint/java_class_file_download_by_java_user_agent.yml +++ b/detections/endpoint/java_class_file_download_by_java_user_agent.yml @@ -65,3 +65,5 @@ tags: role: - other automated_detection_testing: passed + cve: + - CVE-2021-44228 diff --git a/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml b/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml index 7d6560e222..becf179931 100644 --- a/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml +++ b/detections/endpoint/malicious_powershell_process___connect_to_internet_with_hidden_window.yml @@ -93,3 +93,5 @@ tags: - Processes.dest risk_score: 81 security_domain: endpoint + cve: + - CVE-2021-44228 diff --git a/detections/endpoint/wget_download_and_bash_execution.yml b/detections/endpoint/wget_download_and_bash_execution.yml index cf509f2f11..334aa430de 100644 --- a/detections/endpoint/wget_download_and_bash_execution.yml +++ b/detections/endpoint/wget_download_and_bash_execution.yml @@ -29,7 +29,8 @@ tags: analytic_story: - Ingress Tool Transfer - Log4Shell CVE-2021-44228 - dataset: [] + dataset: + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log kill_chain_phases: - Exploitation mitre_attack_id: @@ -71,4 +72,6 @@ tags: - name: process_name type: Process role: - - Child Process \ No newline at end of file + - Child Process + cve: + - CVE-2021-44228 diff --git a/detections/experimental/endpoint/linux_java_spawning_shell.yml b/detections/experimental/endpoint/linux_java_spawning_shell.yml index 1e53542119..b4d5ff72b5 100644 --- a/detections/experimental/endpoint/linux_java_spawning_shell.yml +++ b/detections/experimental/endpoint/linux_java_spawning_shell.yml @@ -72,4 +72,6 @@ tags: - name: process_name type: Process role: - - Child Process \ No newline at end of file + - Child Process + cve: + - CVE-2021-44228 diff --git a/detections/experimental/endpoint/windows_java_spawning_shells.yml b/detections/experimental/endpoint/windows_java_spawning_shells.yml index 3750566d38..51bbb796cd 100644 --- a/detections/experimental/endpoint/windows_java_spawning_shells.yml +++ b/detections/experimental/endpoint/windows_java_spawning_shells.yml @@ -70,4 +70,6 @@ tags: - name: process_name type: Process role: - - Child Process \ No newline at end of file + - Child Process + cve: + - CVE-2021-44228 diff --git a/detections/network/detect_outbound_ldap_traffic.yml b/detections/network/detect_outbound_ldap_traffic.yml index 8ec6171cf9..b67befe123 100644 --- a/detections/network/detect_outbound_ldap_traffic.yml +++ b/detections/network/detect_outbound_ldap_traffic.yml @@ -61,3 +61,5 @@ tags: risk_score: 56 security_domain: network automated_detection_testing: passed + cve: + - CVE-2021-44228 From 1d04e6f78a030efbb64191f54417d5704cb9741b Mon Sep 17 00:00:00 2001 From: d1vious Date: Tue, 14 Dec 2021 19:46:04 -0500 Subject: [PATCH 38/53] minor playbook updates --- playbooks/log4j_investigate_and_respond.json | 0 playbooks/log4j_investigate_and_respond.py | 0 playbooks/log4j_investigate_and_respond.yml | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 playbooks/log4j_investigate_and_respond.json create mode 100644 playbooks/log4j_investigate_and_respond.py diff --git a/playbooks/log4j_investigate_and_respond.json b/playbooks/log4j_investigate_and_respond.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/log4j_investigate_and_respond.py b/playbooks/log4j_investigate_and_respond.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml index 1725d2a734..b8f5548ee0 100644 --- a/playbooks/log4j_investigate_and_respond.yml +++ b/playbooks/log4j_investigate_and_respond.yml @@ -2,7 +2,7 @@ name: Log4j Investigate And Respond id: fc0adc96-ff2b-48b0-9a6f-63da6783fd63 version: 1 date: '2021-12-14' -author: Philip Royer, Splunk +author: Phillip Royer, Splunk type: Response description: Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. playbook: log4j_investigate_and_respond From 94b3fa5aa316d37e4ab11a0d67c8c22b61d4710f Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 18:46:51 -0600 Subject: [PATCH 39/53] Create log4j_investigate_and_respond.png --- playbooks/log4j_investigate_and_respond.png | Bin 0 -> 188415 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 playbooks/log4j_investigate_and_respond.png diff --git a/playbooks/log4j_investigate_and_respond.png b/playbooks/log4j_investigate_and_respond.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba89c650746038a3287e74b0608abcac4ae8c28 GIT binary patch literal 188415 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�jf| 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

ttN_4C>a&Zn$Bh^ZetAvltI1g7!PvctE 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⪙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

    u^DaXaLprZ0&|;OwRj$q4QqAtY{1Kw}~a_ z?8>}kjSk7{(7FD{6m);mB1m9|6hs13u$>FP0@vJ+w>q`?5-D45*|~7g&utqn%zn1L zq7U%F!ZVxBjsGT80^gJ!S`xCoW1Il1u@(WCJFqo=Kd8pP^m=9~bI-a4uH?C>Y@#O@ z1+nAG8F*EEFKHR35o%7=6E^?#nG|1U)u1PTDMlG}G5`~{?L9!2+- zS@Ld`BnSZ832JpTId&v=PbvFVeQ$^;3o*<0Ulv?;nEeag+BKdIAY%aWJQ!+Cw3Mb; zAgkAkH>s*#vT5A3fDbo3$A5 z16QtXx7IlpDronK6uoE58FB#QRuJ6r&z z{o?jHqxh*mMymD!B`k0Z5~LX92H*O&zMo^Q2W4x}9N4ON@HgiBD>sLZF7ae*%^pkz zZUQtc5HHJmk#n?@gq`|`-PY1Pspy1TJ+hZFaCBx+80b)(<#dz4F(i%$DMlPh$bBUBdtQZ_Fo=-NwU7V%nno@57FIRHk3w(W;cmxXA)%c~J1Z>E&0eG@2`pOf1Y zQYf1?G*NTw;a}W_bQfx#Rw)bMC_N!bL@B9WRACKt!YstcI}0Kjfn$aa6|%rF)5MhR zU?^Vyw$i;3(TDO--&-qEjrLxUFf}}D52|d+dp`Y7WHe1+C4tyOn(uz>Nwyr_S{F)N z7hHJ7+zRjQVnvKL+1!tE`udmNV>>0`I_=R9iSL`F7h^@tl(+g0W-@f zori3oes)dku*+!FzJ?3;cLxGh9LcZA%Oe3X#HH1$!_Z}aOgRY-<@~{yN@NC(QkE*J zg;N*1?2y^m5(|aQ-B)R`7Db3y%;>ii0X0W9TKIJQEwNeO)UY0=>TZIc9-TFK$3x|R}UCP31_M;|nT z>eS;CSs6BK<(-|Kj!PnSHS>O6=0L)KqDO#Yk8m96Mmf|AIj-wgJ)Ty=)(QrW$A5+G z3=Blk@|!ox!q}mXF2!6=c1((UScX8oo}n2Z9CRO~(R@XdZDlNZBq{wNk>Yt%yYRhyDrURA1zMM2}ks`|qVzt74q;@SO?6reawYkh4IUW;x z1&K~?*}ZcyAHGG(=-dqcd;Y5JfnP7md>i0PoR)E<(4;ZYh;Se4jCLFel}wS|G|w#! zTXRTS6=a=w8#D{!4sWZL)9%1iv+d`U62Lv zo`8biP)VB0-9xb|Dh)7dj8$E{vCk8CVChOg6|P|Xv`|Udap?J`>%wqO_!}a?c^t&z z;N?q6^xNiv6LU^p9xbf#9^)m?M9Ft`!UsVw&FtMDj-blW(cWBJHeVSv-9MEBMwvBX zfC`-t5Ie=brNb4S);}IAbb*nWNEHMCYS(aOZ+d<9ZmgfrSsoQM9JDkO zx%Sq7b=)eY+W&`bF}8-#IM0*)MG=s@E+4E)M?LF+Wz4^Q?_sc&g(`4O2Kiei`Jt;s zF_R}0(kM4LR4luu&!3lD^W6P6JbZNKTS6#2{yOM>K8lU)pO%9Kr>m^FcKAsIvhv12 z3prt!e}bEP=a=YJ#M76 zjx!vxaKJn-n{T|dEQr0TEoce?DPZl0buwKvgF1wZ-ZUW2JKREDwlekS>)^i>iVpU^ zCbw_B{=FsijU8t7T@j$2Zm9?_Ield5R1N6S!7_oEM%2OU8UvMsxnEu>hKBqO z)i#eo)bl;#L``0EMT_m-+g^Elx#R>2d%Ujz-IG)NRF3aJaSpJq9_G*Q0-0Pm85FdH z9%5sz4Ywgx5`Zf74Ci+~xL@@2X;ZjnG*BLan#z+%!633lV~`}lTLx8ZAqiZ@iN)kh+6h$g50Sjf@08S67|c{PwV%kIz~W z0~giCLp6w@hLL98&^$(1@Q)XGb?fV!S}ZXP>?2F8o>US#FK8*Lry38|HlaMrp5x-lCQmM78Aryx__n=rkijqwISm?3HDzE11x*KXv5aF)) zi?AeLA#HMYUXf7gV+J+gj*SJ~l2R)JPQJhN_V$uiWaeuVHrAs80+2H4^NmpaaUvN> zWY)%R9O8?=b#=Fpz~#P`j9}qVpui`&pcNMV8B|UsO2&bFIQ&=zA22) zwL28}mPqXmN`v?c_pqHlBS(#<+uTNO^{`FK^Jg7DfsiW)Gy%~N5D*N$2ZC!Gvr?*I zsDi^pjuIfxyaX3ywsGek(t3i1Ex?3jRzD-Ou(%+7+{VM)Tp%kw=(V=CazwH&=uzlZ zQJSZBXFL@&=(v#pr!1I?j=#083$+7Cr$wjm1Pc_~14|c%{Ar}@X_Y`gJ^P@5Bqu-p z6mZj-o7XOp-lO!z}{_(+wf?aP09UboW!6tnCLg@)6;d!bHB zO?K@MUez{GDRyl8XWj9b#F^=7Qz#M0$+zy*B6g~7I;T^o_)%>cY1>?#_M75)8Q*)y%5WGv@)kh%@+gMpf!O_t`%?7ZbQVdNJM zm82(g?8t*|p>&yR^bg?7;5pqcU%fr`l%q)+3RqAP3;2o4U4}JZAaLO3hKh=+>K$B7 zHsUi4!c~U=;I?in1qS9B5Yx{0957Dk;ZY1X5Lfkq>qcWqNwqQEsvayU_{w3y(8yDb zIt$dWntN5{z(o(EEodMuQgq?~ZPhk3SxF20_}coXdm8$uqU^)u?%{K_}(yU$nX z2ik$|+}ob(R3g+f9L<@@mZ<|lm*^f>sH%7gQyNB7TLZqD=(aA{8c@+|aU4w_-X;t* ze;9Td@t|q&={~I{>f)3(daJ zJW&%b*)&wJLV~(9DNI`t81-V&=LUu{2knOcAc5ilcxc_mimB)Mv+OHc}Q zO`wCr^kXCg0hJa_jg87;=E7I?Vmf}}U~=px%!QSfmIeg$WG0=l>Yom5Zio~N2B8xE zR`?k4@6BorRNK)-GfaJpE)KcRWVyv;dVypUvk7^sosZ-KrEsXsj+@&!Zp{E9-AwwA zOgX(4HixXZ{D#vk$R5*amitV?DFm&tup6rPz(s%u^`(3bO#|M35auL|TXr!O4f^VW zNJ&wt`bUGtMu!TT8uAvGEIU3h<-9DF=H^xmy}IZDYk?xL<>lo;B5PM;JQd`!XBWIM zFKqJC5VZS*t>xaKu9&6RxVTQ+k(ufHojT3!m(A>rXfaM%vP8Gh4@`l0U3F9Y;K!$7uV z5!MQdUxbg0HSuH}00ee&_G<=p%XVLiK_aPpw#rtY^=wXdCpgLcy4e8h{XnBaT_f1w zsPR-h-eg{EG9UmnW0K4uQZii6b0@{r&K1NyceBP8axai_W) zt($ARSa|K4LHPRo-R&T#IJ^*~Rx&-FK8eh?tFX!5R5t!s=evbaL#jkVneC3@ZwKKJ)>v?;4&LD~`Vt(h_T z8%X1*dsonXsfrdBxAk2?_59JzQb9pMV*ZQ}tY6&R5(#1=puJ(+F2a@B>0Cyyq>A;% zgO8KY<3xrgz#s~uC8Xb`s-ENI^Yu$Q_0z|Xf!pK?Od`CX%^2N=)B|=DmPQaYjlJ9- z5Al&&!m+sZ=*u>XYr5IC7jFz&On1TR+x|}i5`Imwz`*_Q*kWl*9hY#}&-BpLuNi zofEGZ#=7$d-F0Si$qv~{~jF_@2r0or+ z1w2t^G=5%%Q?6u?v6b=R-oBNvO*pfU7!E~wC>BM^3LrSS3NcS4?q)*<7Q24V?Wouu^yJwXY2-(G zdIl`020b@dfi$ovT#Xm16v#0FesG&3m$30+$@Q`E)GSqF6A-;~BRDyrLQU;vNAn9A z&E+p%tPugO5DX3$DiJXDTzjf#pxrqum%(=xKSRM04nn0`#zzVi20$4VL7qmJ!;1C% zou8m!o0`#v-SDM7nDP)f=MmGBCzroG;7XqD1A0E1?~mf19)JeJ$kpXlEigI?rg35W zo}f>1(a3moc8ViAt`iQu%EMkU#RE z7y=jt7|j~4zULXlyb2I?6qytOK6mOAzvSdISl9I4T)SRmsrvfeyE{k~;CSSOZ_Dj= zZzwN)qO0ZXRSUi^R6q14nnC%HDU@xO%JO5+LU*fk?^{L7rAdvP_bdGh)#+Bf(0L-{ z#f9y45072|N#;1}c~l|Ose!pdH-F#C^hrpg+m#^}`vmt-G|`T1IKMZ!!hsPf{dKVTn!tpWmq$xHyb&JJJh$e{=<;C^(krypA0EQK z;J>uR-Icfk5d{AcK5`*C*@>-WXR@fM)~g1a#7K!l(!F z_w9c(i|a@zhi$3T8Rhj?ngKle!ZP(so8I^ya3vD^MmHjxB zk(Cjep8gt%`NVv6!(6?Jz^&|uQ$v)tmF>1`72tZtU>Vy@Ud$@pb?%7x?+5+g-Ae9Z z>a*WJzO#uIE*k%8XYC!MvXi?HJWe4LHE@5mq{GR+{uJ`!ht*&v4Ap7A*+Wb*oWZW) zv!k3`Redo>!)oRKSngaV2j{O$OZm;G7>Z+pVAsVKl*;UC*WWI;tDXLN<^6sCFMtKW3f8N`)&2VN)n)#^@Hf@je+xi{ zLO{b-9>}~RnA>2{2I(Y#c@A?Dx6jX8s|-~NqON@aEu)43f#U*5(cO`Zyi)3jA*8ts zQTs>&dHq8n9y?{6!EGOiHibULQR{#~LGQr4xn{4y`S#tPH_1frcbva357bBmrZG@j zx-N`JdcUd`!GxFl$NR%l_)e*@8DvE)d6k42G9W!3}Y!c78K;9DtP84>**+fLb7)6J2jvlahRTz)Z*l# f%z_e-2VF9Y3vv=G#igf$H-~w;`njxgN@xNA`r9fS literal 0 HcmV?d00001 From 60e3d4f4e5aad1e8027a96fc74d030ebed6558d7 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 18:59:22 -0600 Subject: [PATCH 40/53] ... and another one --- .../internal_host_ssh_log4j_investigate.json | 382 ++++++++++++++++++ .../internal_host_ssh_log4j_investigate.png | Bin 0 -> 158326 bytes .../internal_host_ssh_log4j_investigate.py | 242 +++++++++++ .../internal_host_ssh_log4j_investigate.yml | 18 + 4 files changed, 642 insertions(+) create mode 100644 playbooks/internal_host_ssh_log4j_investigate.json create mode 100644 playbooks/internal_host_ssh_log4j_investigate.png create mode 100644 playbooks/internal_host_ssh_log4j_investigate.py create mode 100644 playbooks/internal_host_ssh_log4j_investigate.yml diff --git a/playbooks/internal_host_ssh_log4j_investigate.json b/playbooks/internal_host_ssh_log4j_investigate.json new file mode 100644 index 0000000000..ca432c51fe --- /dev/null +++ b/playbooks/internal_host_ssh_log4j_investigate.json @@ -0,0 +1,382 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Use Cases", + "coa": { + "data": { + "description": "Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting information specific to the December 2021 log4j vulnerability disclosure. This includes the java version installed on the host, any running java processes, and the results of a scan for the affected JndiLookup.class file or log4j .jar files. ", + "edges": [ + { + "id": "port_0_to_port_5", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "5", + "targetPort": "5_in" + }, + { + "id": "port_5_to_port_7", + "sourceNode": "5", + "sourcePort": "5_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "id": "port_7_to_port_6", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_6_to_port_8", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "id": "port_8_to_port_1", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "1", + "targetPort": "1_in" + } + ], + "hash": "f0f51d60c1f03e0566b642644ddb96be1979fb2e", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 1000, + "y": 419.99999999999966 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 1000, + "y": 1000 + }, + "5": { + "data": { + "advanced": { + "customName": "write embedded bash script to vault", + "customNameId": 0, + "join": [] + }, + "customFunction": { + "draftMode": false, + "name": "passthrough", + "repoName": "community" + }, + "functionId": 3, + "functionName": "write_embedded_bash_script_to_vault", + "id": "5", + "selectMore": false, + "type": "utility", + "utilities": { + "passthrough": { + "description": "Return the inputs as outputs. This is useful for publishing pieces of data for other blocks in the playbook to use.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_1", + "name": "input_1", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_2", + "name": "input_2", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_3", + "name": "input_3", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_4", + "name": "input_4", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_5", + "name": "input_5", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_6", + "name": "input_6", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_7", + "name": "input_7", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_8", + "name": "input_8", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_9", + "name": "input_9", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_10", + "name": "input_10", + "placeholder": "", + "renderType": "datapath", + "required": false + } + ], + "label": "passthrough", + "name": "passthrough" + } + }, + "utilityType": "custom_function", + "values": { + "passthrough": { + "input_1": null, + "input_10": null, + "input_2": null, + "input_3": null, + "input_4": null, + "input_5": null, + "input_6": null, + "input_7": null, + "input_8": null, + "input_9": null + } + } + }, + "errors": {}, + "id": "5", + "type": "utility", + "userCode": "\n bash_script = r\"\"\"\n#!/bin/bash\n \n# This script is part of the Splunk SOAR playbook called internal_host_ssh_log4j_investigate. It shows\n# the installed java version, lists any running java processes, performs a search for the JndiLookup.class\n# file in any .jar files found on disk, and searches any .war files for a log4j jar.\n\necho \"##############################################################\"\necho \"splunk_soar_internal_host_ssh_log4j_investigate.sh\"\necho \"##############################################################\"\necho \"\"\n\necho \"java environment configuration\" > java_environment.csv\necho \"[+] Checking Java version:\"\necho \"$(java -version)\"\necho \"java version:\" >> java_environment.csv\njava -version 2>> java_environment.csv\n\necho \"\"\necho \"[+] Checking running Java processes with ps:\"\necho \"$(ps aux | grep java)\"\necho \"ps java processes:\" >> java_environment.csv\necho \"$(ps aux | grep java)\" >> java_environment.csv\n\necho \"\"\necho \"[+] Checking running Java processes with jps:\"\necho \"$(jps -v)\"\necho \"jps java processes:\" >> java_environment.csv\necho \"$(jps -v)\" >> java_environment.csv\n\necho \"[+] Search .jar files for JndiLookup.class files ...\"\necho \"jar_file\" > jars_with_jndi.csv\nfind / 2>/dev/null -name '*.jar' -type f -print0 | xargs -0 grep JndiLookup.class | awk '{print $3}' | while read -r file\ndo\n if [ -f \"$file\" ]; then\n echo \"JndiLookup.class found in .jar file: $file\"\n echo \"$file\" >> jars_with_jndi.csv\n fi\ndone\n\necho \"\"\necho \"[+] Search .war files for log4j .jar files ...\"\necho \"war_file,jar_size,jar_time_modified,jar_file\" > wars_with_jars.csv\nfind / 2>/dev/null -name '*.war' -type f -print0 | xargs -0 grep log4j | awk '{print $3}' | while read -r war_file\ndo\n if [ -f \"$war_file\" ]; then\n unzip -l \"$war_file\" | grep log4j | awk '{print $1\",\" $2\" \"$3\",\"$4}' | while read -r jar_file\n do\n echo \".war file $war_file was found containing the file $jar_file\"\n echo \"$war_file,$jar_file\" >> wars_with_jars.csv\n done\n fi\ndone\n\necho \"[+] Zip up the outputs ...\"\nhostname=$1\nzip $(hostname)_ssh_log4j_output.zip java_environment.csv jars_with_jndi.csv wars_with_jars.csv\n\"\"\"\n \n file_name = 'splunk_soar_internal_host_ssh_log4j_investigate.sh'\n file_path = '/opt/phantom/vault/tmp/{}'.format(file_name)\n with open(file_path, 'w') as bash_script_file:\n bash_script_file.write(bash_script)\n \n success, message, vault_id = phantom.vault_add(file_location=file_path, file_name=file_name)\n parameters = [{'input_1': vault_id}]\n\n", + "x": 980, + "y": 524.5 + }, + "6": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "run bash script", + "customNameId": 0, + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "run_bash_script", + "id": "6", + "parameters": { + "command": "bash /tmp/splunk_soar_internal_host_ssh_log4j_investigate.sh", + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "6", + "type": "action", + "userCode": "\n # append the ip_hostname as an argument so it can be used in the output zip file name\n for parameter in parameters:\n parameter['command'] = parameter['command'] + ' ' + parameter['ip_hostname']\n\n", + "x": 980, + "y": 740 + }, + "7": { + "data": { + "action": "put file", + "actionType": "generic", + "advanced": { + "customName": "upload bash script", + "customNameId": 0, + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "upload_bash_script", + "id": "7", + "parameters": { + "file_destination": "/tmp/", + "ip_hostname": "playbook_input:ip_or_hostname", + "vault_id": "write_embedded_bash_script_to_vault:custom_function_result.data.*.item" + }, + "requiredParameters": [ + "vault_id", + "ip_hostname", + "file_destination" + ], + "type": "action" + }, + "errors": {}, + "id": "7", + "type": "action", + "x": 980, + "y": 640 + }, + "8": { + "data": { + "action": "get file", + "actionType": "investigate", + "advanced": { + "customName": "get output zip file", + "customNameId": 0, + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "get_output_zip_file", + "id": "8", + "parameters": { + "file_path": "playbook_input:ip_or_hostname", + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "file_path", + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "8", + "type": "action", + "userCode": "\n import re\n for parameter in parameters:\n parameter['file_path'] = '/tmp/' + parameter['file_path'] + '_ssh_log4j_output.zip'\n\n", + "x": 980, + "y": 864.5 + } + }, + "notes": "" + }, + "input_spec": [ + { + "contains": [ + "host name", + "ip" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T00:25:26.575505+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "internal_host", + "unix", + "log4j" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_ssh_log4j_investigate.png b/playbooks/internal_host_ssh_log4j_investigate.png new file mode 100644 index 0000000000000000000000000000000000000000..36402e777d8e9b03c9fd4172d303ab54fef4ce63 GIT binary patch literal 158326 zcmeFZbySqy+c1hqwVGG=hNA-Ju|$fOMxIJv0o+ zP-ovT22(j;eJxI|OWo2}dNb`1PnIm`DwNb6-h2CVn@b60kZDoe%Ao0Kzm=*OkV zs%8DjZ(z9HC&MND`uy_O?_^=jtO=>jTQDcz9j=$o673yFzTCUk2g7#{o_ns64b1Su zW^97)sC-V|@QR-ElGXRI>k2$;!BZ$K_$W~{KD#R2Kuvw0$<5E6ruvlpOFkU73I#XOr97QGb1c!D&`_jhE!9 z_RH57_GE5R)3j&YYky5s@`mMn|Hi09JEcro1J8k)ai}oYBXbUxCq#20Q9;*hZnNdx zBxjN`U-Da_T*sZ}_o#R2r;YF%9O^T~5kjW_=`7E~OHl zQrhx8)t9++0_Q2Wr0rWLcF`(4c6nkkdKQ)k(gRj{&E`FAP~3ET3mid|eWac?lVgFAI*idsUlf>-_V&EuQV zh2q$IS4%IMc*WjY#SrjV=M=^(x@(*e6n}<)j0QRN^Kw@)X`fxGZMMD1VZ3l4*YDIh z4WVEm>~x~E7mpL_l0Lyx;oM(S^A=(d-CyHGo+z(&eH%Qg)a_Hp+kcnORwy|nvCQLy zDHKBYh58JkP$;iHRY97Wa7h3?an5@Q>!7n6Gk58~iydr~iuOl6sTizuuJq~(^|{i$ zeFcH@Oa9G|a9O)1Nmh~rf|qK-pY&$%qBE;AaWR&xgXee=Zw1zK#ox_~!YM!3(q3Cx zTNB$_sW3*iOgW&X5Ux>mzT9`rEvYB%X>v%^z*TSi-a+pD$=h5kbl&!v~I zzmd+kruvxdM$%U%iZ`v&aA|kx7MU2C#1G|$bVU@y5wtQLFxl_vGY>YcHg9bjZJxJd zkW7B6fS>YJ=|$wFNTbM=NaI$?2TbW!n!g=+7On?5fS#*9uED$#3b7|Dc+x`pH>wEmfynRB}=xIlFT(IZZd$ zOYJzoGyhEE=SJ8>N|#>H7c0MF90g*T0Fr=n0e2ex14fAys6`F+h%|9xF6*)CS(qd| zb)Y`?n)bEJeb@UG_uXHQymos<{JQqF((6nbRT>6fm0Pzm&PKGb>aiQp>*<)(F&N)^ z#r=@SVxs`59}`%6>yj0@*%huE{KF=8KW1ugwDC0XOgi|RrY&l7kF_^hBnkv-Mcy{*`}(RPk^yBca5_td|!4yY%TER-2)1Zd2u=amT? z4;wWV5R|=D%PkYMLI}0JYtpAE$WpV+p*OdOKQm89sKA}zqBK(R7vdksd+<41ek!vV zr5)`r%PkXeQgJd^F&^$8J~UG(G#L$985~J2^ZNC3A$)E<_ikFFlGJ&rB!eJ>#9wqw zRZ1^=pJY;JW_R2(DYLKJx<4<={xKvhWGH=PHkD;*34YUdd|~94FK2_-3x|6@UeZ|c z@P}#^Y9@{zzG;6`cvV)4FZ8)+tJRa{j}&S0VaS=)UphbQ#t+K^-?v;0dmLsQRxhkA zjGfe5Zc8=Ya&l?LOSpI&i$S6vf>bp6^1ik`E^>tFai!z z>oCq&(m`qrwj4c-T>M4sMNF+sX2wrsc`gewx=C&mCt)jm&YnfQ+MwZff2c{s#(2Zn zquoy}M$Oe?OU+^VU14_fL{M>9L^E%*pNq~x*6(WkP<*BHp43vbF`RjBW54c&eN_+2 zjJPNh5#hvCD^DV;6a8GM>4s!%Ph3_^T&zYsl95f=(kRaC;NwPdOR@sLY|ICKqj0Xr z+)jqu@-N>N7~e6;P%u`XLj;AM&r}c=`fl;~%ZIcG1mhMHL;DrObfc9HcPyXnal`HH`N(3fc~dLJ)vPgg+m{uO$JnMG49M!tNX}b! zxJNJ~*K^m`!*ca>FIRGAuNU+w#&KB2KNT=SMv}y4=RC}aqvmw{(MRw4>UkjMqlZs; zC@y_z+{aFj*rb^~oc=kzG+o~NIFl~Hic?$guz@J%QizH0jUd)NPexHC&SJ-CM9yCE zYUf=0gdlEggh-}i-pZK2z0kbmk5S%aK{2l*j`Y=Z7Fk_3Y0a*huBTHq{-pIm$c(&) zW3p4Q>r4mBo_n@R;Aw?sq2ZSi;b`>o4{vLaCi*gYt6C4cgYVgvzeYwBni2%J z>}NWe6zt_0#Lhd+eH->J4(u%Kga?`_uA9m>&LP`=+cBj zwMi8lX;MLG~Vhy zw`=BUe`J~5s_MAy`TLNN^ez3EC$r1%T&*c4msV`=d*`drTp)AC*Tc(9@eds zadqQ}(8Ja3{gPb;WQGUK<0Eq6pm0yAJyYn=|L~BjEMr&xL;|wGQs9na$X7 zRySyl9w`~ByDLuT!~eVLm`Xh($lvJ>zB`CIf{oNGvHVB z49%a<_s=k6oIQDtiGdMlih+e1BM<&UKjGjPnsfU1?ArhgT<||~@avL-i5`vBnsOHX z8Mg<#!;nzADtOvM(U zYH|++4XiEM^$o3`8nL@r+Cb}I2)hV^kCsLb`Y;zu3oCm;7m+I`BLu-`=rP9?*vSwF zbCD}*a*D9K)^Fc?hO&d^x!@xA+~>EM4NSDraI*a&iPI6FJDJ9D#J z+nI3O5)csJ;N;@q;$j0M*z8@c9Q0k-tn9CzE`na?o{_zQovDq3skIdhT37$6wWEW` zl`GIje|}EkG;%ThXD2Ir6j}g54(JWXEp|?hKWl@j!q8JeMN=0e3$=TumVjnp57Ap( zTztYO6aM4XKUyK8L;W;%%eLv_^TzhC});>n)s|Ln=d$;tKio`1bUO%>*V zaQ}-Ir-VLv3Mef~Ak6WHYoY{1W|-oDk+i1w6rO;;K+K?@vy0##=F`96^BEqdihJ1L zy*P%w>Jmf3z8Zzk5_ydF+gB`14_@cJ2YyxKTQ za!xGT2QTs0NqsOf;wSEK_mk0D1lzWZH_P?x$&bI4XF7B)d26LGx@&A~VqCw!=k07V z5$ig+wzZ60ov$5NmyKbYJU50%1{3$jID?7x&xh@b&#V&aVb0#O=l|o~@&&R;Q>?#7 zqvl^fBN5B@AH&IDisWFz+5dMZJi8c4OiU8+<^7kNA4|;#{SolNKsq6(Co64RIB+&q z1&^(eysh4*$(Uq)O>?cK)w>2bLEjUlWlAPQ97B`Jq28yYcr>Tm!ZdVn9exkh;0KIk!CP z{AQ_yM;qd%nHXt|PX2wf8Xa}(x};2madur&J;Lp3*eJq2Y-ek!r!(SL)4pqwm6)bA zy>3$0+?YE;TLtNA_n}q4q~Oq^_EBMfdDg6brM}DUI#0?-W>ub$s(@Ex{I*S)OFP9WId^WwlE+2RmJ&Hq^P04#3aDt8U!BWgwN@88wc)$LbjWMXRk`t{zF=-7l?Te`|*R&?iV zfDU}Vt_QB{MOq73Q>dHYr|Mz9$B`r$G0=&ulsBKTEB0h}5!;ROOj=$`ob=kyaW=V2 zh1k_atQ;V+^c5)+od$B$XN%Vm$3jlaL*}x#=ryb>Lzl9Xx0rwK!S~`@>T>x_4s(*> zi2L;AaFfG?|MtOr1+vmqQN_63ujQOp1N{)1Y3FUuij87;wmJwaAK=^-ER-k?< z(wM$QSCo4-{!wAHQVUX&MLIs57yr-IuHfUf20xKAzx;3QCtFYxR~)#NcorYM$e(3{ zufdpE9`ok<|0f6rXC%~H97wMH$7=tB(Eo7gRDgW`N94dU`#(AaJdOYDM&Tb1AS)tY zyP7>mw_bF4s4&e;H;G@(y3%baex5xkuG+IhN~|-Em!&4X@@BpToNFz^^+ILVq@#@G z{+8#@>%*hj^xYS2pyw+u7LOsYZlnRSaq}x znO63q`0Y`rj`$`fd@!GI*J|Y5g8%e^q)>NIvx6O+?JhyK0KRrGyR9ifTFsKnpgL^58O&Cw%Hm8DT!u^Vjjk!4$5!}pM~Pqfv5@f=&!l? z`P*BDUTX(O=C!lzH<#AxmquMZXmE_WO-+8pDU0sw9P5^ZTkLM;l(W9Cs}{O4dED1I zyf80d|6q-gW|(R6hv5#&S@(H`_iDUY&|);Yy}I?_K#RR-5|_JYnL8oCb2TS99><6~ zC!`S&u4@aEkdpnThxhSxk~0SSh<FGbrYU!#2k zy*bS8Wb8a0$K7^?86p7j$ID=OpQq=+YSR~nOeQI8lR7HVzJ&-!f!VCKh&6^chL0f@ zmeKbLK^8D@2M@1xN3r5AN<3dmiYrnQrbPf)?}{s`oNZzRBKGwLj5$Q9_s>$7@md|u zoWYa<4$j-Rjyhn(G8BVgqouJ1KNPl+#oAf<##b~_j2=dbiMuZi{ z44<0T6!dukoG$#cLLvYbEF(9xmXPIpr?BcMm|PXtdmygJXEa3*-jkmri@e^j^x>2_ z;-rLlt!@>+qvc`xz&C36EUy4&OT^NnW2CPv0PMluVLY;T06aPM3Mqj4J+Mnqf#40W z9H2~BBLJ12y)ON{H1NryISYD$$0)9tfs3Zv1_55{G{S)o6DtEuRH9rx2NQ>#1KVB6 zk$-Rs>~;ZgC<8;R7qQ5JFL<43c^j-u7P)x3gSfZ&|6OvtC4s!{Mqg~ghJ(GW#smR- z?-o{00f9?pR^!xs))O^bUbm7b7EeL-Ap!8wr3k#h@QDVW*lu0A2e9qHeoNGfgM-tM zDj9O;LUiSI7BXyO8a@j=U@jDP?sUkXqQFBz7Rh^^3rrw^T;K+QS3t&c39eB@O0Hee zEHVsoep9OP@?CSTcD0HcWkh=KiR0=c4+bZ;3WQ?#7y~jI-`N4g(+j|q!7_pjYg;ti z=-zxZcS2I*=!JLh-r*S-7+gkXqGY{`4iM3KOgl=P14y9T`_=(zZ*f)Zw|K2{KjNvP zIdmub9TA&NEiEmL&97RHyaSLv9q7-(Bl{K(MC@+UOVgX()!$Q{ zqbdPwA##iZDRXQYSH|D=1&pQ2vUrV!=b#KccIBgc?Ci|4FZyLpL1_a^MSmi?CY~Y( zaEaFo0O+S^gOAluhZ#7S+dN;lpM(;@Y{02^^2iMp=Lf)#_c>c)V!7P`+Ev3v*cz;= z#Bv4f>+>9F)21><@%3;futZXpQ63iF%wr&wZAH8ZB`GPcZ?j ziDuh$R4!aT@0!QJ#?nu;jbNviS%@kUn9v zzb+1o0W-9sbEiIF8xgxMpT;IZKrP9coX%j10R4jx_h{ZegJ}w;^t_c{6Z9?G&e0A! zv0!~bDf=H60xNMF2&^r$ATHR38VCdR&l!i96xK|CZa^pi%PRm2XL<=4X6$*u#k^~b z_q@fs!4%2tkDbgcI+D3Bq4hQyVa#osP3IzRShx~ESDtWCZ)D=p07eV@ ziOz=uwz6Uy#=yGL0QB^1HAd%Q;Yr|`2)rck8ndkIh~tS$iCconmQ?VLu4h0{u{cWnX z?a|^%V3ccCbR~dK7K~zV8?fnt7IiwYjXqxiTZ7J51CtN55@E5(mVn_?0;ZVCWIEGH zsJjj10nG*on*o}deHyy&Elvwyx_u$h4?HCX1Bq?ys$>hL097e|G9+0TGmu zyfcLnCw#lc4r7*07{bQe&H;=uk+q(}!uxPt@k5G5_h)ezM7HiZdWYsk%Pq;Np4a^2 zwCpwOQd12KM-?l-iX8xzW&1g)AU-Teg8evD#^dlmTm=iZ3@d|Y`aV~%jq=(24ZV)$ zz4(5a>3B9pO(ob*T;hvtC>EXobjyhofP#AQHvmz|tc+5!Z_!{;O#~+mCKdrRfMQwX z7};TSu+h@=I6dF%m*$k1*k++xN7N25OQs>!&^ZDQ1b{>Q>J$*{4M3CWVh8A$>jRm$ ze#7C)jY_Y5XZ_h$WdyFFLs$xHn*S}f6NoPXh&v-k?%;obNRT*&jZe0~>vILyh+!}P zcw(>8Ah(YP`Mh|rW{yH%Z>mA0vD0QiS4>K6Pt@D$vp)!m!DcI@-~=$a>SJCIOcuw(|o!3>kg<(l=izv;&B&9WqZDcDWNP0q(g@?e##m1-Mkv#+GnOhlRfyc%`7UHKzohLmS z_L6@u^ab#()y|~nx8GBX9!#-V>`9**G6*G+qP2Coz1?-UVR^W?aUfT-@#{cPfot1b zfqr8^fnEQS&HhSxAUwbR{dUD(`CE3@!yA?kNv)$9a`6p2E2Av@6i89OJ28XPz$kwN z+&m#THZa)~DKDb|ugic&^umjGlXc}MM}I$3IeNmaAfbNYY3*-@BT?bq%1#o(xlU^$ zt-{?7p*4aqxAs^HO|!|`?YGCdf@@02M>#f#{=q)c6mQK-7YaT`1M@KlR*dC%gHQe~ zR~)#W&uln}NQhO~tX4)G^$(E<{gzNV<^9c?FK%u9N|VAMl{tp6cS5Qw^7Y45uQ^gj zYCI54TYvhwuWd7&GhplkX5@M5ZJi>&4!|9sk>kQxrN-6Z;>0Ej*gDl zz~I+_WpBFj7oS8;;sDA1a3%bn zB4uqx*sE7het7*~4snW8SQB+TI_vA~HEjA<%XP|x+DydYm!|TQ_qIg>@qt^(Q@fQ; zC`uJ7F!wRz*Anrw>&))!ejRuWd!3{ziK#KZTsX?J<&Zc037CE34qB4}&aL5VULd7R zLx>Z<8<&#P@Nv)=8$OP>bNOP93+2pi9@rCPIa@o_k6#rn*nel=U&+rBHLNd^b;{HK z5!Wi$yQ=Hjq&!t>Qg1s_R?7fM2SL93kL;ZZTDKd_28zm_G$$;9EPA_dTG9KT&*o|) z{kgxM#5KVLp-#1mc%e6|uGBlb=Yq`Y;&xU_&T;}GWx4ZcTYu{8{GsNLjNf0G#3)3M zHntjF{K9kQeB3P)_^qvew`Yo~Z)uxzAOmCk#k8Eqb)+I0?kArm_vkfF)4Z^~Qhyv= za2!mb|8ZOW79kb;&>j#x#G85uY*+@XU@etNLDwQ}k8p=u+lcR% zIc+B9Y|f=pkeqe~IN`7)Vei$lFw15-`4$z~5BL?;A6L%@#?&u2Da+Zm<(3CT269mUvV%Xn78&6Z;jpH#avl(jR?GY-Bk6C`QWRaokUL-RS<3C9`n;#Vj0>?L% z;c>`LZp?t@su$u%6I{GkW=8{LlXdcu<_C6({+>JfM{=X3s~E|TRAMrwLfyPbZj072 z3UBMbt`~pb9c1oNZIHH6y35EE_venFPks>jha;w*NnvyheSqmaJB42QEE3J>cZGME>wZy9R8ytG^}!IgyU zND1O{c$RQD#>pHqP_wIAx8}sGAzkLKJ)jw_I5|%DX3cA9-eTMSjbG96!MBzMIsS1i z#69&&Gi9|(JLUczCw{!v5ek+tG33XzhM4;8$~au9WTBnfwZoLTI%Ap$q98%y)>MJ| z-|6{yRNC7iroGmbk&=FC&QZi1ntUr2wG1GXquh80^l6w3fEl7PH$QLZaVYxkwP^Ap z>o(|y8{=V)H`S*Ffs&676|7&v31oRtI#TE1-b=_MXwvKFO#E`64usTe%pTE0X$exM&ol|ujOyvVWt)LU6E?NX6YVg%-AC3$z7p&D2FAF?&OBJ%+)!c_-f z4ta4S`R>E(ma?)Nf0U0=AN_6_m6e!W5fTeS1heGbtTo7WTA)hIrollB=m`Odbdv$6 zwrqcy3g#m4)p`(4yx^H)%AjA-#~BXSMHV49)z}mZV}*Ad+Uu1z?YE>H9p0`T{|ubs z&G+zVH0UJ>A`$rgb3MJsB){Lyc_<=zv(M&`n13L_x;SOoT=&@6rPF$gerOM7^&ls^whcK&nn<$biT5awEl41$T3Xz=CwExccO%Yy>OvZ?TaNaw9*IPrv92bPw#bO>N4_0bB9;+|t%*pVcO^eb%2?UAr700Pg9}wBq@Yku!=;V!Pw*k0 zQjYC*i`jkVD#JOQt*n?9o!_0FtAta%$$QV2=Ph?%bjMtH6&6S9PKfTZsqzREJnuJnax#m zN;l@~;B-^%En;P6>s1JNqaXdjde%xc|5plfkM*-_q@-TI+b4$mWfXUsI6ST=Z0$I& z>c~qSziLZK3lW0Cvi~;E1Mm*X@*MIYC0_H~6*3@h6W!E3rb{K&S=-6QTVu}Vd3Dsc z0eLBQy&e1A{1WtD(>IhyovlAok=Je;mj(4T9VC8c10TJ?|xxnZU>+Ua6HJ%G(DBGV(^734+7dv-!SVOw% zI=0a9K9HWg4)Hqw331S!B3zM~smn;(!q(B<`u$v+&u8{ktwvnyH6_$(ag;+&QiWJ? zK(ph>F9E3z1X@QjMGKP2J}TI50?g+9%+|kx$s;8vuk1xKiQTB#q~OTi%YElO;i~G= zXV8(OnWXUipuXW#rf`bcF(}u%91-gDt z+^($SA=o?-Y(C9Wgc@%Z_?yIja_?V2Yyt;^>#axE+LiY(0TgY^mLI|Shy z)qxJ%omSXJ-G;w77oK&KfK<=_N#0U@!!6~TgnCKYLOiT~dp5u9Nd*PV4xuiG$H(K( zpT%W=nS)h)#16hVH+b%^jBeAK59AQbMiVK&h8rtV#z^$1TAVPc3cy#z<3tAIybF@A zL}%zA!*`mW+Z#;=#34w!e?LGIxz)B%{BaD7Kcu2;4&~c3y?|fjGkz~|C37~ zTW|!=HUwd$66)#5pFj1~${bAJiFtXxooqXjnHz=nFGY8DeQU3ZI?}8M_ z5F}`5;Ge;~M8W)6k@B3BzWVl_l32yM6qK5{q^#hi;agV^YD#0G*W;q!4#yw7yx>nX8lVKv5j&c zTmpG=Fz_vuZU42DgN66|6_*I4cc+=DOiwU)X@*_;WK;$ed)T@Fv3`X)@rd$jh7!m= zrhuGGPV|Gia?p>WEmq6~O+Em`-qgLz0t;6L^Ho?3bpE8KR@GmoSdjV)L6jCxVF5JA zE2w7nNdg%F#JyOyw-`QFzyel%N^UR3M%OJsya457vm$MQp$3UYbJcbi$Yz65h530_ z+(v980p_n+Fx23;8K1f!u77jeHVyEjT zBBKcMr7E&bpmHz`@MwC!Knu`&28eI&9nq`pTa-ZAQ3CNig%jZ05ZQAF&rlwSUgg_& zWM?oX0Xr#jQ$eBS|JV6p#3iGq?2i;szFB+%oCB`e@Ak;Qg#i^1E9FuGvIZ%O=@j+D zQ6Z4k9g;ken8$z|>E6raSZ+@M1JnG=Eikcq0KVxai33qknzNb&I+Dpgg0y+|%2QCJ z;s$5(kFl;xkl(2Y=7clF2w@vlvc}7tqyl}w&e%6I(#gKP13MdF-vZ%eFcZkh>d0XO z_&%M&R|iJzWyK7We~SR46#BVT0enDOKpK}?UIQ%JB7dst72vh)Qz}?jFlm07lPBnlE!Z*eH+&PFkcNA?m_$|wU{CfMy_H zH+klILi~v-K?$h=6(Brt5`Vnx`~pcXJIE0Y3=UF7vuRS!btH~H$GrdbCRB|Ay?G7b z;Zu?Ph?Bwts2l-R*C^)#dbAPZQ_uz({auQlGyX?hXjOD*NmV7M`It?0X8U#y%*bIUQL~HTbJ%ew#f2 zy=CW4ifEQ27gAH&Q5DsNI>5YrUe2?ak`z$8L)644&f7d{r8}VGapizxshfjTvP#{$ zGHyxpRo+17@Z$UjzoKzEA@`kSPLqy=0+0Qj@%RI79G``8w+RW#vmcZoIl=I`2w@(8 zLlxtBOqUgBWa}kXH1Tn0Nwa^ma*S+#t6X1^k4u;~Kq??RTqP`zOc^?5n$jG%=Lui#Acl*} zo7~!X&k^yh$w{dDKg!1@9H<5z1e|Ictl!qO!I5EZGIwIM0hUg{%B}<}hf&c+$ze(L z*S=|CvxQm;Q_o^aRqHTgNl|FOnXIlI0PO<@J6W-i=0ZD;fFegJi;9S7hu(YS^6==> z+Sxcfko(K{Z*zb3rQCmd9;$(~I5lOp5Qerg`lc;SeESuBd%sd&abR+i0g2qtdc{~S z7Z4N_)ZkH3i-?xZty5-8ZX-qt2pujr9@y_);4(cGJ6I!BvGnw0ry5)HyJU61mywYy zv^F0gq3$pO+}M6r$?m!hyWK0f|D{_1v}e>MOBq8YXRwT+0xSrKS$cAETj|ce-i}*c z#HGdg4yX-rK;{PyxMe&AC%=_li=0!!OmrnCIJS76<3l= z5(S$oc%v27W{5unB_XoyVp-2%x`H~zY@yj4@J3JeRtIlpm)_C%Jco|hlk*k^Iq0+( zzF&Y&7{DAYa7x=LvqxMHX922_*J@M*Je@~iUQ1RiH?#{M$*t=gs4WraQ>0CPHkImU<^&~x)zf#I;tyHPQI z1tmUUU{5WjF?N~U!xx2x-R&KnUqOz)9E_htaJxg!2xq~wM;9-uCHTe0T{#6r9JY@c z&u2*ltWw+2y&vJ|DimJ?qc}_f)8p_^f4Jz4u-vfLDRO5pV<|2&)H6M_7>^s?i@kUT za}Sh;XRAE{bHwGb0-{-ox8{Cyez%Z2tzQ9D<$Q9_Yc|9c7Fx)6KbLtMM15{pt=#vtNy*gfU12j~X z1!A)%qKkber=S!5Jy7U)hb~QH;qg$d%NNbvzfT4uO9p_5%9=nCMH}X!{d|CrPm{jY zVzSjK&_Fi&F}wLSt(Xrh)2%CV$_o84d}e?>{yr=Su{@68p2YB2Pq}_aq7cV60>MjX zeIiZ}MBgw$lUBn3n`Yx2+b+SkV6A87SHqzui+~UVGZanM2xuL;zD#x9B{j!ehl)+Y zaCHUi+Zmcd^~h4|7oDCvz5y}yD`lFEKlmqyY+jvKuYoM`07GGFR!xaUU()9+X@$b= z<@Kx7p`K#~40K1UYe!{M@2pl1mgm{=bdNR%sdbJ9G_6QL%x2$s>$FS?X7>O+NdL5= zfx_2^5_@OVx!$I)yM>R|qxn*1V6pCQR)9fO>6RY@vU5F+;jm`oS)X< zq!b6xg+b-}xRJb5_XKe1k=|mD(bS9c@@BV@;eMn9YhK6IG@*+F9sIR>xl?iGd6q7F z*?Dzbukv*I|Cfk?B>Ib9d7-q$1&-%O2b`c~BjZ;O{rW2tQGSbwn)E3nul;!0MkFzu zCKOd%1p<}<_$p^P2sH&jBr3VQ9v&#n+8)cDId#t3vv+tZQfYP4=HZA?ejPGyea`E- zW^dckL2B}g6(J`cIukS#Q9S{9=+2&JNY&O4V^3WaD z%!@E3IL`fw3zaqaOzO2AvHqUaj-w#jz$9RH z<07TjsLdT{F42=P?0xfkFq_RJ+0=zL>S{ek3PB2)!Brr-fp z<|hsWpti<^mq*)N$n)*S<(a~>K~uw>Zug7zgI13>W9lhI_bUnGbbjrO9;+dX+u-q` z+@~A@JSzh{v$P$AvJ*sk)k`VvRt0J_-22#SixnmdV(^V-SR*#R!*UB z&RcGGf@b1(vll`6_)bfPRA`UhO-0M6+EvEv}RZ@lDkfsGz4!L4Mr(!9OXsCp>(0t-lQ5(DU;*DEE)+%bx$v^Cd$Uie6K`w2d`G_Ua98)7&gL{#05gy5v{NH7zdxzR z@2gYMnpT#J+vm@ppX!nIqF{V5>9UA!ulxo=Jl5=}TO25g0vmnxYFndiOX;ruVW$gH z*FRGf!LcLQ+fMJf0-q#GM)u8*2!1ae)S*+!tEtX4AUbUr`cJXvCaYL`ALzeN>tLg4 za(n&r*@lQD7ZsPUSLr7PY~4xg7E*OzfPRC~skwOTVRzNW7Lasuub4u@ssGY#Y(PND zEIksm$>PHbWvk7$a9tcXTA7IEV8AE!Snz9H%uJ*X72aHrCaK?Oj&Hmkqeab*+&d1a zUeg)wxfSKt+|t}ItE#0^`P~C8IL1J=V%c5?p($%dcrRJi=>VT8;QC!zbJAz}@SoF7 zQw5EyG&^E?l4@lZ>S`5wUpmrO**wILe-F7-{OS;D1O+KtaQ|YoVc3jRz1~y1;$U+! z&~lW~jI)mM4=BKVEd#y z3YsKNWib)B=Ymo8v?yUpX~XOmY6}(E@zghT`OwB4>$$hFQ3xvas;*4K4wPZ1x(+-L z;JGMXQ$oux5Bcrog2qN4T>8Fe(jd`VvlVJ{i13nLabrJiivjVN5{Sn#Gwji{sJd3r zDY_rfNFv774!&=pm57n4+@Hp(qHf#g*x7Lw$&PB|`#X?3(PJ)HmoC9~5|NoY{iY+_ z4}$U4suOfpm3z$vMj@S7Who|_P(Tg=>K8@`UPhx^Qd&&ywbC@vHf@ z{?n(aX7$8q?q2~s4OUY&|8rO|gTqQxxII>++H6}=?AUau(8Imo2`agtm_|vcX|J+s z0Ijaiu7G?9rXl|+;kqCfIq7D36WSbu>RW4uy9A(omyqBFG0gZQ(l^ z@UKe*?>_z2CZcWdzi1Qr_l>t4gnf^M`oMsYa**Mwy7h2>XTpZRgH{66P9_W<8HB#5K?h#RPuFaMO?dw!)^D>~70+~}MBUbuY;COw# z2;7vrsys-|X5o>`fAgPqdW!$J68Dknzg&qMUjgw?jl%oC?!>(=FRXGXn}CB`ZGC3G zY3w3XPwOlazC3DIlAUp|%~MrWd2~hM!KJ(4KH3F=I?#TuwTmktp&nZ8Vz#uTS;o8s zFGf0**ZCHG8jQQW+7I21qpi^v3q(fC!lW17Sem(fZu|MGF-ES-*YvL;HCTs68S z)qUQ#bX9CVBpX5h*qI_)%RQ0s!F4=#agdxO3MgKi;*2g1OwXE&*DM{c|nOegG-3n8Iofm#Z?(8H6kMh(yorA&NcaiznaKMT60~J8F$7 ztb*S`{=+QE9JD9#md|^nA);A6*14|DY#xBI?Dv`A^R0qz9(jG=)(%-~MVaU#C6!xy z+x!f3ip0a}uYZbI}aoTt?hIV_l6M#<5Kd^%GMPSHjvng#gdT~jR#-pfh7(lrX zC7|ukT&hhCZOy&_eZ^+^IEykBf90N_?fwdGPZV?-#XgzM z3bemSi_RVeY7ekO>1?ZR=-EUdKIVEtq=YiWRiFV5?uL&FutC;Q1XzdNW$oBgOY;rt z7Io*nbrlV|8L(S@AGJ^VP(ghAUt@T0@yFox2gAe|)a*1cJ4~6|1U>s9c>NBR7;yUf zuVD0)iYDN7#~3XtI=KK2HBBE+Xh!Ta<)?8E)7fh`JD=$!#iJqd70`+qX zX*8ovHvzE5ENT*Lfhgnr1~gpVe@^n}+|dN*&KfcnYWoM9{nPG$YM%efc0jMgL5n@B zzFsCeOJ#^od7RGvxBG1<4Hkd@^c}(J>n^CYG$^ZwqBn-mD!{tRWUUoN6evkKoE>xt z?JqorlF|29?x0>njrHhS0))(4kQBXs9bSWaO%Kj~bXO|$`me$|qyv}1Y=7o7Nt9G$ z34+BP=jK4A`Gm&*w4*~}3W6&Dn#NNulq4-cHx0rrjBufSs8X<6>64QxDA>vks(@ri zm0O`O69>H@8N|@K&{F@(H;I6ZIK1+$CMSw0;F`mqmS_NHH$X!&zW{+E!U}M^M!LD8 zA&kI+iktwDF9c=+r$~Q(1>oSGwnwe?cLM7~+g!k68*YEDwZQ&lu}(ny`^pCdEDUO- zXH{)M-IVwFSC|O93tkgZG(I^+%qI`1a+MAyI)RAipa3utaaTo&RuRCnO-HUBMM79O zXk};RHKRhgC~1aV;43UnzYE|`DGY_>U%4IV$tE*c$)LX-rS&i}sBpk2ory9M1R!=~ zxp#@p7d5*p7AOQazZ8msO&~i#QJkmpC#wK8>X1iBpu{E&5ZLWQSG3Hjz>|H1t_Gz) zMclxHGFRAMb*1 z2u3&&(WMA^BVzP#Ywx`;E~S8^ug>m z)cL9d@%i(nwZmEY^VYQ>WxRv-&*B|A`?S~4Umef`S|&xat$P%5pLB?Ul=}A8jC6nL zeL_uL`0HR)CfOG91Sr^G(l-n)@Tw_JJ{>GyC0)WMuF6#vQ$2vQ>^dXtox%Nk$~C2r zR$^2;R4anV?_1q|S>~`O=I$cZZ7!6?{ro7aQ1Om~#>D2rRv)>5b^;u@UXjw_kDJLN zm3bsX*Fb;c;Gu-PV)QR?yRr%y%@&LV{@ZwNeu~9XDPyR+<33mi*Ltw?ecdcM-s7r? z;KGNn4!z6K_}8D4!`aTdAMsi9{FS>;O_6wz-wy!I!_Lh|Q10(#*DYyo{F0e=23`&M zpvMvDfAC-J8SX150^e=G&a2lRLqWSZ|4uV2J2Rvh`lf;O<#Zu(J;g`}B zMCrs+F|U4A4;D{hnFG+Ht215IsS7;BE^WbhWb_oak+#`q2+aaA2+c%9w7Q5_e7S04 zN=|*f*fwHUInl^&)DT<}Vjc?|)wHhcJFSkSBqQwEY05i30QV-Zm%4H+q101ekhyKd zEy9W#j&O@|2upYM1hUk-T>c?H9gNNv835gv@?4-fB5r;J$lZ?>*GX_!lOW4_La0*M z3yclv{*J6H3e`zw;oWo>lg)?xeglPwQ?!!H7y2`n&>12A2-37wxE)-0b?{ z9OcTdo~_Jv(i8!lwjyBM+xl;zYLVXJG??ShRb!naN*^)bMKSqLfe~ehOE|h-pDeTQ zXot$?heL5BAN;8bT2Ml_%QV-nrWDB3EZmo%DT{RP6IGq>% z@4OWj*4q=}Tvz1GL}h0F?K6ibh?B3~+_EZ~S(rG~gO@C(Kf&WLgHsmX4y z{!Y#oi{`jCP$b85lj&$~n&N%kgXkxl_B0Rl>_G510Nom3a~(t%K0jO|n?C_KJ++eP z6yPojzy{SJ?MRg5h3ARWo&e)uK8G$~AOZQde`vo!52->8>1&(wMZwz&hD3hRMu`Zl zi_ItY1l}rTUi9w&E<&&qw9jZ8O~?&2HB|DTsP|tz5IhInl!z0t*@YWJ4MKqM;(}l& zhXif(_kM)q`^ca0DV8}=1|`=w0G}R{=7mYRI3JIvuC%ZWmyRSj1dX1qyH1RH- ze>M*R6J0nRd)ib13;zh@{E-gRA6Hr_CF%qiK64Y4(2CmuU}h{5(Y7pH-ACmV7`9|| zf)O9cC%Lbq1{xSjY)W=oJiidCKp!7T{YeUzJ6^h8KTPExS`cQdfa_ZpV;4b_0To~L z(VtZ9zXOPQ>}WO`lB-v*f_Bat*DayVp(;n&3KI*~G5gLXo6d!2Qu8){GSP4VVvg#! z1GMbZ;eisC|KY9}Y`J{eyFky=WJ;~J&1$$vV9aq>dn!+86;G3?Y=FiX>Y0Wn!JNSg zV^Qrd(6mBegH#s$Z7)?cEx$4rJWuv$^dJ>sZ4cX{GyK7L@lbv42mkoRRUKF7;`h+~*i#DtRahNd zAN~<6EtnhC@Hr`33YDCp`n{i6QaM_sTv}e^rTTU~)otX4PG%^mC4gM}R>-5{H)#z$ zJv|t$<94C`MrxCcZdUr1HAwhrxv%gF)!!&iKTCwp%>64S5>KJ?NtccGHwYDB2jA0B zZm%|NP`)-qpI5ik+QV;%bZY-vsC}w#WG_LOLCKPd?(V?qIj2@-p?>?wlPO@KlfBrj z8kxn?04^@6CnmX~oz5%}AShqsLy0a{5gX{FxF9dQais4QczL*PfA##T^H|~3dLtaJv z;Z9F_=w2d7Q3sWUCW5=kG1@z$WFAhjDF0g=_HO~Bz+_6Wd8}6DpxzWc=iDj0RXBA+ z!Sm^2#q}S!{1*%L8=Ker^F6OV2So)7&MY_3vT6<$KH`_?%FsmM0wHmmn#4m?NDNa{ z_z9|u#JCK0&uYh&N5hy8O=q`~j>l}aA4#dK#D5Qnx2pO-7<=!qrn+xiSP=w8ng|F; z6BVQ?MS2qfl`g%55Re+AcLY>aKtP&+bSct%fKXJVg%WxT1d-l5p@rO)*H?e%ocrDT z-G6xU?2x@zoomi9#~l0S38oE6p=ai=+L>F6jRd$gv@T-?WE`+v`%=+}GQnZTXq zR{9O5;SSS4Chp)BZ{&v6PeAc}yP2}#*EA;|h&!HoC2Zen#0+KqvmgHV+|I#_`lZfz zGMJmyu1!41=L#A!NDRoCo&3`KzR(f@k{ zkRB7jOwW9wZF1w~ml&ZM%*zU9meYM`+NAk|6Sy?)kpDG*z)}Hkir3IGy!rLsN^qKp z;V;BVy4sQ0PMF;txfR}-E0{xg&F=Arh7Pell;#ni$R)CTsJ19}q8_jQ@K31l`KZab znAwD>wQcwcA7=p!-PhNbVisdsY2NG8sZP1)czQoNlM8t0Pj++Zgd2vd9gUh77xVjZ?+$l#CKo_F;nUVeirJ~y zi#H0;_D`0^?A$T;@-kRj=!nk$LJMpBZ-szBI?PbkS-X{UnWA{vXchR@at$K^R2ArV zdV446A*5*u7u>VsL-zC!YW3m??VZzdh;nmN6K>LC>sN~~hNI#6)2G+#w{>hnB{u2{ zma8ri*^44VMyl~an~@|-7QEE)iOz1kJ9W%$uzV`xO8FteKSbLHl2`!~vO z=Cuz~cJUmcZ$!7@3}4c}1s~DE8{Gq=xSz=wl>`(YjOeXzEH4~kC4oQxI}M&H1-D3v z1XYgCJt%a)vx=d_l>53b$dR4YEzK3z&c7?IyOMKdEsGcEnf=VORiCwZaTH%L*ukHA zm{*d{lOJ<5kMFvshVH%P&-i!-d-LJg(8K?eINHd@g09RDoGR4MM09VE*ea8*xPEzg zGamM7z>N|aZsI!W7ns~%7{9lJj12d$aaqZ7FnGm=s?EK;(9 z@YUA9^$14;wxAF7}jx0{mN&W zUSH3t*?axK%VjJ`AHV&F_(2qi`Q?n1vLxdV1YCA9`;lT>(bnHQPvCU@&un|<*Y@^p zXYg#1YyP`^O0PT{b{xst-0T-nQ_r0a)}Z|MUWfK24dR8y-k$%3MDRadKw2VjipyN{ zp6w%3l3BH&AS>}}QD(sNM{q}rZOxud$02|jvz5d6eJ!xQX!@$e9~ZlgBqAGjcOdY)Ri5@Jj$O#>F*@ZU4{V z`vhR)*@(5LfIPx=C$~gq7nw+H9d}Ci{k<-QAl~PA1x|1`gRAtWXlE&oG`IVrdzD)M zG_aEoE@|x2QNm~%;OEB^j;^Tt-8>ELAbfpIha>8Hbw3UOb?xtg8!1tBhnhf&|4#0e zcf9&{DCfJ=STc|QLq8&X#|Jo(R`?RP8qa~8J7TwmxP2Om`2PlMyDz`WE}a#DSRww(v62!H*1;3HI6cVASFCl5V64Y>8M=YW6M>g6}mFo*5~sq9h* z32FkuC-}6$rF9oV5|s;=;?R%oK~ICfkl{67{#|*jrCR2l@!b|{NzWMoMF23nl<6nt z02of%#ZP3_mu6h|U;bCa$Q)Z&HI4Qa8A96v8uMG=z+bj-e*(By7cNEe@cUOl%qlGY zI)(VUh@eGRgrZ)_^4Ok{Xpj^5|GJFzBtjo!b96n>Y3k@_)+_bC@e=?O%-CH35^i;y$+98sBIc_=s}0Huj5k-)8v-=HRf{FjwMQhEJO-O+lfKRmCH zhTD>)3xxgmwB*{TS$pvb3tqmz_#+`nY~$e*Jgog0Af&&=IYt3(dw}FW^EeJL^{NGk zP*5TmG3(3)kWv~4Gg+lNf96l;gP1{Q_q@*O2jm04U%S=>DBS!PsUVQz0XdyQDgLYr zT|lVl9<@{(s4l|in;ix41$@7!e-}{03)>jKZfpJBU?hm$zsvSNbZ7Hh;30{NV)1y| zGa+MgNM0ph!*gnIFrg z9-WRBb2;|k^LNc)c=w!dk5LuVMt=Mv;MKL3SmXWf@=KG#KUpRI`?eEIb08_O@NU#Jp`S0S1$9T$jh0We8;u0^& zXkg!?Pg=D4T1SFiVe4Md8c&oyLeE3&--(rlf`ioR-i>k@ZWuL(?k^ zDTTx)nbge3s#m8zbAh3ZBd0g)2LxFD{PIs`W)`nZ6>~rFR!}CMlFL+gp#I&K`?Qf$ zrPiozZ$^fs$prglq8s%$QuGD|409Qe=k>3EM{07}G7-95kJ8rg80}4arM2&Gs&?g_ zNOv;O5`$On7XKl)gAC>Yn5?a2arPh|usVDMszF`B8?XkbhKtj*HHP;t;|sU(Q>7(EmPlrJc{Xdz%s6QQUz;oCl#EotSb%C)E(0ZrO0cyYF20H%4 z#seT08xWQJFQLCV6qJUcueW#s3AoiaAO-{0H08YX-Mdu9@YC1$`soVmSNJgG6`;|n zqhKyW`FF&9kUfroNJ|z9%26w^g5J*ERe>ZZ7<9_@9Z;39X!6HQ?$o46;A{NwLDmpk z-w}H#D7bddTJiKr2Blo0tBs)^KEPpg9|5eQ>NT;`ujeR8MynUS+Si&B`EfM^eb ztEr^i+UeG0d{Kejde}Wa1A!~#qk*`jV@#@Nx7@vd{D+{cpi_5Q#fbpx6R2I?rw0aK z5)6{pwF-}TNkRzpctIqzv9ZzCO;dCS2|Z50cM1caDx0QPKQ72$OE5l4-i&|-_%7_X zNzH3cf1{AjvQx=rM4$5G{?XQ2*c@q?kCTv3l42aMp(c6(m0C#AQ7Y6gGxJ&sGt;k< z8sD6U)fdh0>)w-|>rf}5sKIpuXbY8xVDH&&OpuU^0H82ELF80n;aZwj9*h{mvv>&p7~ls&`)_-a&&_XHgaEWdbJ(X*HAuPCAn`tGPQ`M$dHj+m7pvi_8PhyU{sw|@@9`ScMoq@D|6C96x#ot=K9F6oM#ne@z*v5&B$@mKs8gZS&@a{8Bz07{p= z9~UtL7^E9`wWQW6l+9WTkZ-K_7M9uJ%5MpK%yOp5t1mOZ{6U&Mh{T$T$C(}9G$xh} zFIef22kdd1(Pl!M3+o*L?fA;XC!^Xg>sX-8U`Qvq($)5gI29EC6?>*0qf4L9wC1nH zF~(maiwn5_W#UO=;6z#5%QmU~J{^fnnIJ!$H%lS@)_z<~H>Sx-0#&=mji1lyOq0_2 zc_YP4ca{@EA<7Bs-u1^luVhZ1A1omQ8jmvqe{WiCuxY>Cfs^2iXayp`>GAt8)`IKv zpNB*^BLmh7zW4T;4@E7aXtJONtGmP8at2aqoSeS%f~kg8aC8ElHW`m&9ws6OZ+H$f zPN}I;-%qol#Qu*Wpu`cy)cykyq2b^4JfDG=psaC2J}|X;-r;yS!RFBKTOVtc)0$3MFHg-aJM6HWc)tg zb3N|Ljk(#$8B_yR2g4HoZtm~>HISUS3xzNa-2j}*abumSn}m8u}to>RMTR}fcf3;L*7^X*<^Q}%B{_+ zH5Q!l@*SYUAsiT2!CP(w1iWCY8|DarVvOHnZPpvtKu3kCVj(h|VO;ymdU1^kZezPp zsua_X?JTI@4k{bUja4l&0s3>mdkXqL&iu!82l1+O9u~PVi_l3C5a6UrHF)_-)nU-x z(`M+s60~Y{LRjcOgI){<-2|$);t2W$9hqAGSB6V6j`SiTN01b;4W?1YcdpayGGNjs zntpw!WOjTc(p(a_1AoW6{(A-Pf(|Vu!=G+k6uJazvWT01_L|4_j90CE2h4Y6oO_l2 z)QQz!o|e2W$lu0ydf18Ef(f_|3Z8wg{w3O2leGb>C5ANIITX}P9F{NtRl zss`N%F8@cT789BuuQ>qK|14ZVIXH`c!Ce3hBLSp3=lHC~}s!O_V3IQ9|RcXGwoJQq-PFD@lW);!Z4xcW0PSw@U zH`Y6L$!qK*q287sB|O)K#uroia0luODkxeh(X~P1mmJd5UHNNG^#^*>fsH#2`D?yV z;12;|p?p(c%&WG4#vvUqyqD{u)dr-RXaS`!HP2IBLzgXP$UNieyE1eYTEGT2WkF-F z$*mSYbhQ6OV}G&9fJ#lK;>e_y1~TsLImesayb&nL%y+z$RO&r2i-x;yiBiao0np9; zs&Rb{V#g60s0T6xE0t^bN^`tCMmqkCpE^E$HNDVu02$hE5V=89Uw;&r4YlRLj!Yp? z^W8?@QMkDYgsS^S$)A(l6_-4j3lLy#17^+Pk94O3FuB1RKv=rYb+x# zApKgk3SO(JsJw)w?)2oZ6*)c3H!U)q`b{70#Y?BDE4*{e88

    T{GpR`VoLH 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 z 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� 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

    $G|Qsn$VT{FJQU7kCDo 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 P1|aZs^>bP0l+XkKPbw7+ literal 0 HcmV?d00001 diff --git a/playbooks/internal_host_ssh_log4j_investigate.py b/playbooks/internal_host_ssh_log4j_investigate.py new file mode 100644 index 0000000000..297fc0db4d --- /dev/null +++ b/playbooks/internal_host_ssh_log4j_investigate.py @@ -0,0 +1,242 @@ +""" +Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting information specific to the December 2021 log4j vulnerability disclosure. This includes the java version installed on the host, any running java processes, and the results of a scan for the affected JndiLookup.class file or log4j .jar files. +""" + + +import phantom.rules as phantom +import json +from datetime import datetime, timedelta + + +def on_start(container): + phantom.debug('on_start() called') + + # call 'write_embedded_bash_script_to_vault' block + write_embedded_bash_script_to_vault(container=container) + + return + +def write_embedded_bash_script_to_vault(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("write_embedded_bash_script_to_vault() called") + + parameters = [] + + parameters.append({ + "input_1": None, + "input_2": None, + "input_3": None, + "input_4": None, + "input_5": None, + "input_6": None, + "input_7": None, + "input_8": None, + "input_9": None, + "input_10": None, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + bash_script = r""" +#!/bin/bash + +# This script is part of the Splunk SOAR playbook called internal_host_ssh_log4j_investigate. It shows +# the installed java version, lists any running java processes, performs a search for the JndiLookup.class +# file in any .jar files found on disk, and searches any .war files for a log4j jar. + +echo "##############################################################" +echo "splunk_soar_internal_host_ssh_log4j_investigate.sh" +echo "##############################################################" +echo "" + +echo "java environment configuration" > java_environment.csv +echo "[+] Checking Java version:" +echo "$(java -version)" +echo "java version:" >> java_environment.csv +java -version 2>> java_environment.csv + +echo "" +echo "[+] Checking running Java processes with ps:" +echo "$(ps aux | grep java)" +echo "ps java processes:" >> java_environment.csv +echo "$(ps aux | grep java)" >> java_environment.csv + +echo "" +echo "[+] Checking running Java processes with jps:" +echo "$(jps -v)" +echo "jps java processes:" >> java_environment.csv +echo "$(jps -v)" >> java_environment.csv + +echo "[+] Search .jar files for JndiLookup.class files ..." +echo "jar_file" > jars_with_jndi.csv +find / 2>/dev/null -name '*.jar' -type f -print0 | xargs -0 grep JndiLookup.class | awk '{print $3}' | while read -r file +do + if [ -f "$file" ]; then + echo "JndiLookup.class found in .jar file: $file" + echo "$file" >> jars_with_jndi.csv + fi +done + +echo "" +echo "[+] Search .war files for log4j .jar files ..." +echo "war_file,jar_size,jar_time_modified,jar_file" > wars_with_jars.csv +find / 2>/dev/null -name '*.war' -type f -print0 | xargs -0 grep log4j | awk '{print $3}' | while read -r war_file +do + if [ -f "$war_file" ]; then + unzip -l "$war_file" | grep log4j | awk '{print $1"," $2" "$3","$4}' | while read -r jar_file + do + echo ".war file $war_file was found containing the file $jar_file" + echo "$war_file,$jar_file" >> wars_with_jars.csv + done + fi +done + +echo "[+] Zip up the outputs ..." +hostname=$1 +zip $(hostname)_ssh_log4j_output.zip java_environment.csv jars_with_jndi.csv wars_with_jars.csv +""" + + file_name = 'splunk_soar_internal_host_ssh_log4j_investigate.sh' + file_path = '/opt/phantom/vault/tmp/{}'.format(file_name) + with open(file_path, 'w') as bash_script_file: + bash_script_file.write(bash_script) + + success, message, vault_id = phantom.vault_add(file_location=file_path, file_name=file_name) + parameters = [{'input_1': vault_id}] + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/passthrough", parameters=parameters, name="write_embedded_bash_script_to_vault", callback=upload_bash_script) + + return + + +def run_bash_script(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_bash_script() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + + parameters = [] + + # build parameters list for 'run_bash_script' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + if playbook_input_ip_or_hostname_item[0] is not None: + parameters.append({ + "command": "bash /tmp/splunk_soar_internal_host_ssh_log4j_investigate.sh", + "ip_hostname": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # append the ip_hostname as an argument so it can be used in the output zip file name + for parameter in parameters: + parameter['command'] = parameter['command'] + ' ' + parameter['ip_hostname'] + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("execute program", parameters=parameters, name="run_bash_script", assets=["ssh"], callback=get_output_zip_file) + + return + + +def upload_bash_script(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("upload_bash_script() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + write_embedded_bash_script_to_vault_data = phantom.collect2(container=container, datapath=["write_embedded_bash_script_to_vault:custom_function_result.data.*.item"]) + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + + parameters = [] + + # build parameters list for 'upload_bash_script' call + for write_embedded_bash_script_to_vault_data_item in write_embedded_bash_script_to_vault_data: + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + if write_embedded_bash_script_to_vault_data_item[0] is not None and playbook_input_ip_or_hostname_item[0] is not None: + parameters.append({ + "vault_id": write_embedded_bash_script_to_vault_data_item[0], + "ip_hostname": playbook_input_ip_or_hostname_item[0], + "file_destination": "/tmp/", + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("put file", parameters=parameters, name="upload_bash_script", assets=["ssh"], callback=run_bash_script) + + return + + +def get_output_zip_file(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_output_zip_file() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + playbook_input_ip_or_hostname = phantom.collect2(container=container, datapath=["playbook_input:ip_or_hostname"]) + + parameters = [] + + # build parameters list for 'get_output_zip_file' call + for playbook_input_ip_or_hostname_item in playbook_input_ip_or_hostname: + if playbook_input_ip_or_hostname_item[0] is not None: + parameters.append({ + "ip_hostname": playbook_input_ip_or_hostname_item[0], + "file_path": playbook_input_ip_or_hostname_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + import re + for parameter in parameters: + parameter['file_path'] = '/tmp/' + parameter['file_path'] + '_ssh_log4j_output.zip' + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("get file", parameters=parameters, name="get_output_zip_file", assets=["ssh"]) + + return + + +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # This function is called after all actions are completed. + # summary of all the action and/or all details of actions + # can be collected here. + + # summary_json = phantom.get_summary() + # if 'result' in summary_json: + # for action_result in summary_json['result']: + # if 'action_run_id' in action_result: + # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False) + # phantom.debug(action_results) + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file diff --git a/playbooks/internal_host_ssh_log4j_investigate.yml b/playbooks/internal_host_ssh_log4j_investigate.yml new file mode 100644 index 0000000000..7b257c67f7 --- /dev/null +++ b/playbooks/internal_host_ssh_log4j_investigate.yml @@ -0,0 +1,18 @@ +name: Internal Host SSH Log4j Investigate +id: 49b2b88c-8e22-48a6-8808-ace1efcb194b +version: 1 +date: '2021-12-14' +author: Philip Royer, Splunk +type: Investigate +description: Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting information specific to the December 2021 log4j vulnerability disclosure. This includes the java version installed on the host, any running java processes, and the results of a scan for the affected JndiLookup.class file or log4j .jar files. +playbook: internal_host_ssh_log4j_investigate +how_to_implement: The ssh asset requires sudo access to scan the whole file system. +references: ["https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh"] +app_list: +- "SSH" +tags: + platform_tags: + - Response + playbook_fields: [] + product: + - Splunk SOAR From b9987c68d37b6ccb8d1120bfdf8764353b751ccb Mon Sep 17 00:00:00 2001 From: d1vious Date: Tue, 14 Dec 2021 19:59:27 -0500 Subject: [PATCH 41/53] fixing stories spelling mistakes --- stories/log4shell_cve_2021_44228.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stories/log4shell_cve_2021_44228.yml b/stories/log4shell_cve_2021_44228.yml index 231bc37335..9d07e6bb26 100644 --- a/stories/log4shell_cve_2021_44228.yml +++ b/stories/log4shell_cve_2021_44228.yml @@ -3,9 +3,9 @@ id: b4453928-5a98-11ec-afcd-8de10b48fc52 version: 1 date: '2021-12-11' author: Jose Hernandez -description: 'Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and extremely uibiquitous logging framework for Java. - The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker controlled servers and we anticipate that most apps using the Log4j library will meet this condition.' -narrative: 'In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat tak by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user-input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system.' +description: 'Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and ubiquitous logging framework for Java. + The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker-controlled servers and we anticipate that most apps using the Log4j library will meet this condition.' +narrative: 'In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat talk by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system.' references: - https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/ - https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j @@ -13,7 +13,7 @@ references: - https://www.lunasec.io/docs/blog/log4j-zero-day/ - https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html tags: - analytic_story: + analytic_story: - Log4Shell CVE-2021-44228 category: - Adversary Tactics From fa976bcfa872bde4841eca0f2e4b256551922575 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:05:49 -0600 Subject: [PATCH 42/53] Update internal_host_splunk_investigate_log4j.yml --- playbooks/internal_host_splunk_investigate_log4j.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playbooks/internal_host_splunk_investigate_log4j.yml b/playbooks/internal_host_splunk_investigate_log4j.yml index cf751a74e4..cfc382e629 100644 --- a/playbooks/internal_host_splunk_investigate_log4j.yml +++ b/playbooks/internal_host_splunk_investigate_log4j.yml @@ -1,4 +1,4 @@ -name: Log4j Investigate And Respond +name: Log4j Splunk Investigate And Respond id: fc0adc66-ff2b-48b0-9a6f-63da6783fd63 version: 1 date: '2021-12-14' From 5fb532e10dd56c80b08f07a8c5cf265af0c1726c Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:24:32 -0600 Subject: [PATCH 43/53] Another playbook --- docs/_data/navigation.yml | 2 + docs/_pages/adversary_tactics.md | 1 + docs/_pages/detections.md | 12 + docs/_pages/playbooks.md | 3 + docs/_pages/stories.md | 1 + docs/_playbooks/delete_detected_files.md | 12 + .../ransomware_investigate_and_contain.md | 12 + docs/_playbooks/risk_notable_import_data.md | 6 +- .../2021-03-01-any_powershell_downloadfile.md | 9 + ..._connect_to_internet_with_hidden_window.md | 10 + ...-cmd_carry_out_string_command_parameter.md | 106 ---- ...-12-03-detect_rclone_command-line_usage.md | 2 +- ...ndows_curl_upload_to_remote_destination.md | 2 +- docs/_stories/clop_ransomware.md | 4 +- docs/_stories/ingress_tool_transfer.md | 2 + docs/index.markdown | 8 +- playbooks/internal_host_ssh_investigate.json | 498 ++++++++++++++++++ playbooks/internal_host_ssh_investigate.png | Bin 0 -> 260574 bytes playbooks/internal_host_ssh_investigate.py | 304 +++++++++++ playbooks/internal_host_ssh_investigate.yml | 18 + playbooks/risk_notable_import_data.yml | 10 +- 21 files changed, 901 insertions(+), 121 deletions(-) delete mode 100644 docs/_posts/2021-10-21-cmd_carry_out_string_command_parameter.md create mode 100644 playbooks/internal_host_ssh_investigate.json create mode 100644 playbooks/internal_host_ssh_investigate.png create mode 100644 playbooks/internal_host_ssh_investigate.py create mode 100644 playbooks/internal_host_ssh_investigate.yml diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index c837d67511..0fe74c1bec 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -50,6 +50,8 @@ detections: url: /detections/email/ - title: Endpoint url: /detections/endpoint/ + - title: Endpoint_Filesystem + url: /detections/endpoint_filesystem/ - title: Endpoint_Processes url: /detections/endpoint_processes/ - title: Network_Resolution diff --git a/docs/_pages/adversary_tactics.md b/docs/_pages/adversary_tactics.md index 147a06b8ac..b33bf16a58 100644 --- a/docs/_pages/adversary_tactics.md +++ b/docs/_pages/adversary_tactics.md @@ -28,6 +28,7 @@ sidebar: | [F5 TMUI RCE CVE-2020-5902](/stories/f5_tmui_rce_cve-2020-5902/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | [Initial Access](/tags/#initial-access) | | [HAFNIUM Group](/stories/hafnium_group/) | [Server Software Component](/tags/#server-software-component), [Web Shell](/tags/#web-shell) | [Persistence](/tags/#persistence) | | [Ingress Tool Transfer](/stories/ingress_tool_transfer/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | [Command And Control](/tags/#command-and-control) | +| [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | [Initial Access](/tags/#initial-access) | | [Malicious PowerShell](/stories/malicious_powershell/) | [Gather Victim Host Information](/tags/#gather-victim-host-information) | [Reconnaissance](/tags/#reconnaissance) | | [Masquerading - Rename System Utilities](/stories/masquerading_-_rename_system_utilities/) | [Masquerading](/tags/#masquerading), [Rename System Utilities](/tags/#rename-system-utilities) | [Defense Evasion](/tags/#defense-evasion) | | [Meterpreter](/stories/meterpreter/) | [System Owner/User Discovery](/tags/#system-owner/user-discovery) | [Discovery](/tags/#discovery) | diff --git a/docs/_pages/detections.md b/docs/_pages/detections.md index 40fe7f976b..49496d4d0a 100644 --- a/docs/_pages/detections.md +++ b/docs/_pages/detections.md @@ -114,6 +114,7 @@ sidebar: | [Creation of lsass Dump with Taskmgr](/endpoint/creation_of_lsass_dump_with_taskmgr/) | [LSASS Memory](/tags/#lsass-memory), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Credential Dumping via Copy Command from Shadow Copy](/endpoint/credential_dumping_via_copy_command_from_shadow_copy/) | [NTDS](/tags/#ntds), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Credential Dumping via Symlink to Shadow Copy](/endpoint/credential_dumping_via_symlink_to_shadow_copy/) | [NTDS](/tags/#ntds), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | +| [Curl Download and Bash Execution](/endpoint/curl_download_and_bash_execution/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [DLLHost with no Command Line Arguments with Network](/endpoint/dllhost_with_no_command_line_arguments_with_network/) | [Process Injection](/tags/#process-injection) | TTP | | [DNS Exfiltration Using Nslookup App](/endpoint/dns_exfiltration_using_nslookup_app/) | [Exfiltration Over Alternative Protocol](/tags/#exfiltration-over-alternative-protocol) | TTP | | [DNS Exfiltration Using Nslookup App](/endpoint/dns_exfiltration_using_nslookup_app/) | [Exfiltration Over Alternative Protocol](/tags/#exfiltration-over-alternative-protocol) | TTP | @@ -161,6 +162,7 @@ sidebar: | [Detect New Open GCP Storage Buckets](/cloud/detect_new_open_gcp_storage_buckets/) | [Data from Cloud Storage Object](/tags/#data-from-cloud-storage-object) | TTP | | [Detect New Open S3 Buckets over AWS CLI](/cloud/detect_new_open_s3_buckets_over_aws_cli/) | [Data from Cloud Storage Object](/tags/#data-from-cloud-storage-object) | TTP | | [Detect New Open S3 buckets](/cloud/detect_new_open_s3_buckets/) | [Data from Cloud Storage Object](/tags/#data-from-cloud-storage-object) | TTP | +| [Detect Outbound LDAP Traffic](/network/detect_outbound_ldap_traffic/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application), [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter) | Hunting | | [Detect Outbound SMB Traffic](/network/detect_outbound_smb_traffic/) | [File Transfer Protocols](/tags/#file-transfer-protocols), [Application Layer Protocol](/tags/#application-layer-protocol) | TTP | | [Detect Outlook exe writing a zip file](/endpoint/detect_outlook_exe_writing_a_zip_file/) | [Phishing](/tags/#phishing), [Spearphishing Attachment](/tags/#spearphishing-attachment) | TTP | | [Detect Path Interception By Creation Of program exe](/endpoint/detect_path_interception_by_creation_of_program_exe/) | [Path Interception by Unquoted Path](/tags/#path-interception-by-unquoted-path), [Hijack Execution Flow](/tags/#hijack-execution-flow) | TTP | @@ -269,6 +271,7 @@ sidebar: | [Excel Spawning Windows Script Host](/endpoint/excel_spawning_windows_script_host/) | [Security Account Manager](/tags/#security-account-manager), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Excessive Attempt To Disable Services](/endpoint/excessive_attempt_to_disable_services/) | [Service Stop](/tags/#service-stop) | Anomaly | | [Excessive DNS Failures](/network/excessive_dns_failures/) | [DNS](/tags/#dns), [Application Layer Protocol](/tags/#application-layer-protocol) | Anomaly | +| [Excessive Number of Office Files Copied](/endpoint/excessive_number_of_office_files_copied/) | [Exfiltration Over Unencrypted/Obfuscated Non-C2 Protocol](/tags/#exfiltration-over-unencrypted/obfuscated-non-c2-protocol) | Anomaly | | [Excessive Service Stop Attempt](/endpoint/excessive_service_stop_attempt/) | [Service Stop](/tags/#service-stop) | Anomaly | | [Excessive Usage Of Cacls App](/endpoint/excessive_usage_of_cacls_app/) | [File and Directory Permissions Modification](/tags/#file-and-directory-permissions-modification) | Anomaly | | [Excessive Usage Of Net App](/endpoint/excessive_usage_of_net_app/) | [Account Access Removal](/tags/#account-access-removal) | Anomaly | @@ -352,15 +355,18 @@ sidebar: | [Hide User Account From Sign-In Screen](/endpoint/hide_user_account_from_sign-in_screen/) | [Disable or Modify Tools](/tags/#disable-or-modify-tools), [Impair Defenses](/tags/#impair-defenses) | TTP | | [Hiding Files And Directories With Attrib exe](/endpoint/hiding_files_and_directories_with_attrib_exe/) | [File and Directory Permissions Modification](/tags/#file-and-directory-permissions-modification), [Windows File and Directory Permissions Modification](/tags/#windows-file-and-directory-permissions-modification) | TTP | | [High File Deletion Frequency](/endpoint/high_file_deletion_frequency/) | [Data Destruction](/tags/#data-destruction) | Anomaly | +| [High File Deletion Frequency](/endpoint/high_file_deletion_frequency/) | [Data Destruction](/tags/#data-destruction) | Anomaly | | [High Frequency Copy Of Files In Network Share](/endpoint/high_frequency_copy_of_files_in_network_share/) | [Transfer Data to Cloud Account](/tags/#transfer-data-to-cloud-account) | Anomaly | | [High Number of Login Failures from a single source](/cloud/high_number_of_login_failures_from_a_single_source/) | [Password Guessing](/tags/#password-guessing), [Brute Force](/tags/#brute-force) | Anomaly | | [High Process Termination Frequency](/endpoint/high_process_termination_frequency/) | [Data Encrypted for Impact](/tags/#data-encrypted-for-impact) | Anomaly | | [Hosts receiving high volume of network traffic from email server](/network/hosts_receiving_high_volume_of_network_traffic_from_email_server/) | [Remote Email Collection](/tags/#remote-email-collection), [Email Collection](/tags/#email-collection) | Anomaly | +| [Hunting for Log4Shell](/endpoint/hunting_for_log4shell/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | Hunting | | [ICACLS Grant Command](/endpoint/icacls_grant_command/) | [File and Directory Permissions Modification](/tags/#file-and-directory-permissions-modification) | TTP | | [Icacls Deny Command](/endpoint/icacls_deny_command/) | [File and Directory Permissions Modification](/tags/#file-and-directory-permissions-modification) | TTP | | [IcedID Exfiltrated Archived File Creation](/endpoint/icedid_exfiltrated_archived_file_creation/) | [Archive via Utility](/tags/#archive-via-utility), [Archive Collected Data](/tags/#archive-collected-data) | Hunting | | [Impacket Lateral Movement Commandline Parameters](/endpoint/impacket_lateral_movement_commandline_parameters/) | [Remote Services](/tags/#remote-services), [SMB/Windows Admin Shares](/tags/#smb/windows-admin-shares), [Distributed Component Object Model](/tags/#distributed-component-object-model), [Windows Management Instrumentation](/tags/#windows-management-instrumentation), [Windows Service](/tags/#windows-service) | TTP | | [Interactive Session on Remote Endpoint with PowerShell](/endpoint/interactive_session_on_remote_endpoint_with_powershell/) | [Remote Services](/tags/#remote-services), [Windows Remote Management](/tags/#windows-remote-management) | TTP | +| [Java Class File download by Java User Agent](/endpoint/java_class_file_download_by_java_user_agent/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | | [Jscript Execution Using Cscript App](/endpoint/jscript_execution_using_cscript_app/) | [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter), [JavaScript](/tags/#javascript) | TTP | | [Kerberoasting spn request with RC4 encryption](/endpoint/kerberoasting_spn_request_with_rc4_encryption/) | [Kerberoasting](/tags/#kerberoasting), [Steal or Forge Kerberos Tickets](/tags/#steal-or-forge-kerberos-tickets) | TTP | | [Known Services Killed by Ransomware](/endpoint/known_services_killed_by_ransomware/) | [Inhibit System Recovery](/tags/#inhibit-system-recovery) | TTP | @@ -369,9 +375,12 @@ sidebar: | [Kubernetes Nginx Ingress RFI](/cloud/kubernetes_nginx_ingress_rfi/) | [Exploitation for Credential Access](/tags/#exploitation-for-credential-access) | TTP | | [Kubernetes Scanner Image Pulling](/cloud/kubernetes_scanner_image_pulling/) | [Cloud Service Discovery](/tags/#cloud-service-discovery) | TTP | | [Large Volume of DNS ANY Queries](/network/large_volume_of_dns_any_queries/) | [Network Denial of Service](/tags/#network-denial-of-service), [Reflection Amplification](/tags/#reflection-amplification) | Anomaly | +| [Linux Java Spawning Shell](/endpoint/linux_java_spawning_shell/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | | [Loading Of Dynwrapx Module](/endpoint/loading_of_dynwrapx_module/) | [Process Injection](/tags/#process-injection), [Dynamic-link Library Injection](/tags/#dynamic-link-library-injection) | TTP | | [Local Account Discovery With Wmic](/endpoint/local_account_discovery_with_wmic/) | [Account Discovery](/tags/#account-discovery), [Local Account](/tags/#local-account) | Hunting | | [Local Account Discovery with Net](/endpoint/local_account_discovery_with_net/) | [Account Discovery](/tags/#account-discovery), [Local Account](/tags/#local-account) | Hunting | +| [Log4Shell JNDI Payload Injection Attempt](/web/log4shell_jndi_payload_injection_attempt/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | Anomaly | +| [Log4Shell JNDI Payload Injection with Outbound Connection](/web/log4shell_jndi_payload_injection_with_outbound_connection/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | Anomaly | | [Logon Script Event Trigger Execution](/endpoint/logon_script_event_trigger_execution/) | [Boot or Logon Initialization Scripts](/tags/#boot-or-logon-initialization-scripts), [Logon Script (Windows)](/tags/#logon-script-(windows)) | TTP | | [MS Scripting Process Loading Ldap Module](/endpoint/ms_scripting_process_loading_ldap_module/) | [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter), [JavaScript](/tags/#javascript) | Anomaly | | [MS Scripting Process Loading WMI Module](/endpoint/ms_scripting_process_loading_wmi_module/) | [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter), [JavaScript](/tags/#javascript) | Anomaly | @@ -446,6 +455,7 @@ sidebar: | [Okta Account Lockout Events](/application/okta_account_lockout_events/) | [Valid Accounts](/tags/#valid-accounts), [Default Accounts](/tags/#default-accounts) | Anomaly | | [Okta Failed SSO Attempts](/application/okta_failed_sso_attempts/) | [Valid Accounts](/tags/#valid-accounts), [Default Accounts](/tags/#default-accounts) | Anomaly | | [Okta User Logins From Multiple Cities](/application/okta_user_logins_from_multiple_cities/) | [Valid Accounts](/tags/#valid-accounts), [Default Accounts](/tags/#default-accounts) | Anomaly | +| [Outbound Network Connection from Java Using Default Ports](/endpoint/outbound_network_connection_from_java_using_default_ports/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | | [Overwriting Accessibility Binaries](/endpoint/overwriting_accessibility_binaries/) | [Event Triggered Execution](/tags/#event-triggered-execution), [Accessibility Features](/tags/#accessibility-features) | TTP | | [Password Policy Discovery with Net](/endpoint/password_policy_discovery_with_net/) | [Password Policy Discovery](/tags/#password-policy-discovery) | Hunting | | [Permission Modification using Takeown App](/endpoint/permission_modification_using_takeown_app/) | [File and Directory Permissions Modification](/tags/#file-and-directory-permissions-modification) | TTP | @@ -656,6 +666,7 @@ sidebar: | [Wermgr Process Spawned CMD Or Powershell Process](/endpoint/wermgr_process_spawned_cmd_or_powershell_process/) | [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter) | TTP | | [WevtUtil Usage To Clear Logs](/endpoint/wevtutil_usage_to_clear_logs/) | [Indicator Removal on Host](/tags/#indicator-removal-on-host), [Clear Windows Event Logs](/tags/#clear-windows-event-logs) | TTP | | [Wevtutil Usage To Disable Logs](/endpoint/wevtutil_usage_to_disable_logs/) | [Indicator Removal on Host](/tags/#indicator-removal-on-host), [Clear Windows Event Logs](/tags/#clear-windows-event-logs) | TTP | +| [Wget Download and Bash Execution](/endpoint/wget_download_and_bash_execution/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [WinEvent Scheduled Task Created Within Public Path](/endpoint/winevent_scheduled_task_created_within_public_path/) | [Scheduled Task](/tags/#scheduled-task), [Scheduled Task/Job](/tags/#scheduled-task/job) | TTP | | [WinEvent Scheduled Task Created to Spawn Shell](/endpoint/winevent_scheduled_task_created_to_spawn_shell/) | [Scheduled Task](/tags/#scheduled-task), [Scheduled Task/Job](/tags/#scheduled-task/job) | TTP | | [WinEvent Windows Task Scheduler Event Action Started](/endpoint/winevent_windows_task_scheduler_event_action_started/) | [Scheduled Task](/tags/#scheduled-task) | Hunting | @@ -673,6 +684,7 @@ sidebar: | [Windows InstallUtil URL in Command Line](/endpoint/windows_installutil_url_in_command_line/) | [InstallUtil](/tags/#installutil), [Signed Binary Proxy Execution](/tags/#signed-binary-proxy-execution) | TTP | | [Windows InstallUtil Uninstall Option](/endpoint/windows_installutil_uninstall_option/) | [InstallUtil](/tags/#installutil), [Signed Binary Proxy Execution](/tags/#signed-binary-proxy-execution) | TTP | | [Windows InstallUtil Uninstall Option with Network](/endpoint/windows_installutil_uninstall_option_with_network/) | [InstallUtil](/tags/#installutil), [Signed Binary Proxy Execution](/tags/#signed-binary-proxy-execution) | TTP | +| [Windows Java Spawning Shells](/endpoint/windows_java_spawning_shells/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | | [Windows Security Account Manager Stopped](/endpoint/windows_security_account_manager_stopped/) | [Service Stop](/tags/#service-stop) | TTP | | [Windows Service Created With Suspicious Service Path](/endpoint/windows_service_created_with_suspicious_service_path/) | [System Services](/tags/#system-services), [Service Execution](/tags/#service-execution) | TTP | | [Windows Service Created Within Public Path](/endpoint/windows_service_created_within_public_path/) | [Create or Modify System Process](/tags/#create-or-modify-system-process), [Windows Service](/tags/#windows-service) | TTP | diff --git a/docs/_pages/playbooks.md b/docs/_pages/playbooks.md index 85dac5c58e..6de41ae334 100644 --- a/docs/_pages/playbooks.md +++ b/docs/_pages/playbooks.md @@ -13,6 +13,9 @@ sidebar: | [Active Directory Reset password](/playbooks/active_directory_reset_password/)| None | Response | | [Crowdstrike Malware Triage](/playbooks/crowdstrike_malware_triage/)| None | Response | | [Delete Detected Files](/playbooks/delete_detected_files/)|[Executable File Written in Administrative SMB Share](/detections/TTP/executable_file_written_in_administrative_smb_share)| Response | +| [Internal Host SSH Log4j Investigate](/playbooks/internal_host_ssh_log4j_investigate/)| None | Investigate | +| [Log4j Investigate And Respond](/playbooks/log4j_investigate_and_respond/)|[Curl Download and Bash Execution](/detections/TTP/curl_download_and_bash_execution)[Wget Download and Bash Execution](/detections/TTP/wget_download_and_bash_execution)[Linux Java Spawning Shell](/detections/TTP/linux_java_spawning_shell)[Java Class File download by Java User Agent](/detections/TTP/java_class_file_download_by_java_user_agent)[Outbound Network Connection from Java Using Default Ports](/detections/TTP/outbound_network_connection_from_java_using_default_ports)[Log4Shell JNDI Payload Injection Attempt](/detections/Anomaly/log4shell_jndi_payload_injection_attempt)[Log4Shell JNDI Payload Injection with Outbound Connection](/detections/Anomaly/log4shell_jndi_payload_injection_with_outbound_connection)[Detect Outbound LDAP Traffic](/detections/Hunting/detect_outbound_ldap_traffic)| Response | +| [Log4j Splunk Investigate And Respond](/playbooks/log4j_splunk_investigate_and_respond/)| None | Investigation | | [Ransomware Investigate and Contain](/playbooks/ransomware_investigate_and_contain/)|[Conti Common Exec parameter](/detections/TTP/conti_common_exec_parameter)| Response | | [Risk Notable Block Indicators](/playbooks/risk_notable_block_indicators/)| None | Response | | [Risk Notable Enrich](/playbooks/risk_notable_enrich/)| None | Investigation | diff --git a/docs/_pages/stories.md b/docs/_pages/stories.md index 188c2c8c09..118f12121b 100644 --- a/docs/_pages/stories.md +++ b/docs/_pages/stories.md @@ -57,6 +57,7 @@ sidebar: | [JBoss Vulnerability](jboss_vulnerability) | [System Information Discovery](/tags/#system-information-discovery) | [Discovery](/tags/#discovery) | | [Kubernetes Scanning Activity](kubernetes_scanning_activity) | [Cloud Service Discovery](/tags/#cloud-service-discovery) | [Discovery](/tags/#discovery) | | [Kubernetes Sensitive Object Access Activity]() | None | None | +| [Log4Shell CVE-2021-44228](log4shell_cve-2021-44228) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | [Initial Access](/tags/#initial-access) | | [Malicious PowerShell](malicious_powershell) | [Gather Victim Host Information](/tags/#gather-victim-host-information) | [Reconnaissance](/tags/#reconnaissance) | | [Masquerading - Rename System Utilities](masquerading_-_rename_system_utilities) | [Masquerading](/tags/#masquerading), [Rename System Utilities](/tags/#rename-system-utilities) | [Defense Evasion](/tags/#defense-evasion) | | [Meterpreter](meterpreter) | [System Owner/User Discovery](/tags/#system-owner/user-discovery) | [Discovery](/tags/#discovery) | diff --git a/docs/_playbooks/delete_detected_files.md b/docs/_playbooks/delete_detected_files.md index f9506da3af..3e6c33213d 100644 --- a/docs/_playbooks/delete_detected_files.md +++ b/docs/_playbooks/delete_detected_files.md @@ -289,6 +289,9 @@ This playbook acts upon events where a file has been determined to be malicious + + + @@ -701,6 +704,15 @@ This playbook acts upon events where a file has been determined to be malicious + + + + + + + + + diff --git a/docs/_playbooks/ransomware_investigate_and_contain.md b/docs/_playbooks/ransomware_investigate_and_contain.md index 43b255d207..2cdce5fdf5 100644 --- a/docs/_playbooks/ransomware_investigate_and_contain.md +++ b/docs/_playbooks/ransomware_investigate_and_contain.md @@ -702,6 +702,18 @@ This playbook investigates and contains ransomware detected on endpoints. + + + + + + + + + + + + diff --git a/docs/_playbooks/risk_notable_import_data.md b/docs/_playbooks/risk_notable_import_data.md index 002e579d2f..3fc22126b8 100644 --- a/docs/_playbooks/risk_notable_import_data.md +++ b/docs/_playbooks/risk_notable_import_data.md @@ -26,9 +26,9 @@ This playbook gathers all of the events associated with the risk notable and imp #### How To Implement -'The Splunk search used to locate contributing events requires three fields in the notable artifact\: risk_object, info_min_time, and info_max_time. The query also performs some deduplication on contributing events and may need to be adjusted based on individual Enterprise Security environments. Mitre Tactics and Techniques appear if using the annotation framework in Splunk ES." -index=risk risk_object=\"{0}\" earliest=\"{1}\" latest="{2}\" | rex field=source \".*-\s(?<source>.*)\s+-\s+\w+\s+-\s+Rule\" | fillnull value=\"unknown\" threat_object | eval risk_message=coalesce(risk_message,source) | stats values(*) as * by _time source threat_object risk_message | rename annotations.mitre_attack.mitre_technique_id as mitre_technique_id annotations.mitre_attack.mitre_tactic as mitre_tactic annotations.mitre_attack.mitre_technique as mitre_technique | fields - annotations* risk_object_* date_* orig_* user_* src_user_* src_* dest_* dest_user_* info_* search_* splunk_* tag* risk_modifier* risk_rule* sourcetype timestamp index next_cron_time timeendpos timestartpos testmode linecount | sort + _time | \`uitime(_time)\` | dedup source threat_object -A custom code block sorts the returned event data and produces a markdown formatted note into the note_content output field. This field is then available for use in downstream playbooks."' +The Splunk search used to locate contributing events requires three fields in the notable artifact\: risk_object, info_min_time, and info_max_time. The query also performs some deduplication on contributing events and may need to be adjusted based on individual Enterprise Security environments. Mitre Tactics and Techniques appear if using the annotation framework in Splunk ES." +```index=risk risk_object=\"{0}\" earliest=\"{1}\" latest="{2}\" | rex field=source \".*-\s(?<source>.*)\s+-\s+\w+\s+-\s+Rule\" | fillnull value=\"unknown\" threat_object | eval risk_message=coalesce(risk_message,source) | stats values(*) as * by _time source threat_object risk_message | rename annotations.mitre_attack.mitre_technique_id as mitre_technique_id annotations.mitre_attack.mitre_tactic as mitre_tactic annotations.mitre_attack.mitre_technique as mitre_technique | fields - annotations* risk_object_* date_* orig_* user_* src_user_* src_* dest_* dest_user_* info_* search_* splunk_* tag* risk_modifier* risk_rule* sourcetype timestamp index next_cron_time timeendpos timestartpos testmode linecount | sort + _time | `uitime(_time)` | dedup source threat_object``` +A custom code block sorts the returned event data and produces a markdown formatted note into the note_content output field. This field is then available for use in downstream playbooks." #### Playbooks diff --git a/docs/_posts/2021-03-01-any_powershell_downloadfile.md b/docs/_posts/2021-03-01-any_powershell_downloadfile.md index c385a2bb3e..5af1e40a1a 100644 --- a/docs/_posts/2021-03-01-any_powershell_downloadfile.md +++ b/docs/_posts/2021-03-01-any_powershell_downloadfile.md @@ -14,6 +14,7 @@ tags: - Splunk Enterprise - Splunk Enterprise Security - Splunk Cloud + - CVE-2021-44228 - Endpoint --- @@ -55,6 +56,7 @@ The following analytic identifies the use of PowerShell downloading a file using #### Associated Analytic Story * [Malicious PowerShell](/stories/malicious_powershell) * [Ingress Tool Transfer](/stories/ingress_tool_transfer) +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) #### How To Implement @@ -91,6 +93,13 @@ False positives may be present and filtering will need to occur by parent proces +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + #### Reference diff --git a/docs/_posts/2021-10-05-malicious_powershell_process_-_connect_to_internet_with_hidden_window.md b/docs/_posts/2021-10-05-malicious_powershell_process_-_connect_to_internet_with_hidden_window.md index a162feb73a..277f4092b4 100644 --- a/docs/_posts/2021-10-05-malicious_powershell_process_-_connect_to_internet_with_hidden_window.md +++ b/docs/_posts/2021-10-05-malicious_powershell_process_-_connect_to_internet_with_hidden_window.md @@ -14,6 +14,7 @@ tags: - Splunk Enterprise - Splunk Enterprise Security - Splunk Cloud + - CVE-2021-44228 - Endpoint --- @@ -61,6 +62,7 @@ The following hunting analytic identifies PowerShell commands utilizing the Wind * [Malicious PowerShell](/stories/malicious_powershell) * [Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns](/stories/possible_backdoor_activity_associated_with_mudcarp_espionage_campaigns) * [HAFNIUM Group](/stories/hafnium_group) +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) #### How To Implement @@ -92,6 +94,13 @@ Legitimate process can have this combination of command-line options, but it' +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + #### Reference @@ -99,6 +108,7 @@ Legitimate process can have this combination of command-line options, but it' * [https://github.com/redcanaryco/AtomicTestHarnesses/blob/master/TestHarnesses/T1059.001_PowerShell/OutPowerShellCommandLineParameter.ps1](https://github.com/redcanaryco/AtomicTestHarnesses/blob/master/TestHarnesses/T1059.001_PowerShell/OutPowerShellCommandLineParameter.ps1) * [https://ss64.com/ps/powershell.html](https://ss64.com/ps/powershell.html) * [https://twitter.com/M_haggis/status/1440758396534214658?s=20](https://twitter.com/M_haggis/status/1440758396534214658?s=20) +* [https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/](https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/) diff --git a/docs/_posts/2021-10-21-cmd_carry_out_string_command_parameter.md b/docs/_posts/2021-10-21-cmd_carry_out_string_command_parameter.md deleted file mode 100644 index 33785d262c..0000000000 --- a/docs/_posts/2021-10-21-cmd_carry_out_string_command_parameter.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: "CMD Carry Out String Command Parameter" -excerpt: "Windows Command Shell, Command and Scripting Interpreter" -categories: - - Endpoint -last_modified_at: 2021-10-21 -toc: true -toc_label: "" -tags: - - Windows Command Shell - - Execution - - Command and Scripting Interpreter - - Execution - - Splunk Enterprise - - Splunk Enterprise Security - - Splunk Cloud - - Endpoint ---- - - - -[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} - -#### Description - -This search looks for command-line arguments where `cmd.exe /c` is used to execute a program. This technique is commonly seen in adversaries and malware to execute batch command using different shell like powershell or different process other than cmd.exe. This is a good hunting query for suspicious commandline made by a script or relative process execute it. - -- **Type**: Hunting -- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud -- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint) -- **Last Updated**: 2021-10-21 -- **Author**: Teoderick Contreras, Splunk, Bhavin Patel, Splunk -- **ID**: 54a6ed00-3256-11ec-b031-acde48001122 - - -#### [ATT&CK](https://attack.mitre.org/) - -| ID | Technique | Tactic | -| ----------- | ----------- |--------------- | -| [T1059.003](https://attack.mitre.org/techniques/T1059/003/) | Windows Command Shell | Execution | - -| [T1059](https://attack.mitre.org/techniques/T1059/) | Command and Scripting Interpreter | Execution | - -#### Search - -``` - -| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where `process_cmd` AND Processes.process="* /c *" by Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.original_file_name Processes.process Processes.process_id Processes.parent_process_id -| `drop_dm_object_name(Processes)` -| `security_content_ctime(firstTime)` -| `security_content_ctime(lastTime)` -| `cmd_carry_out_string_command_parameter_filter` -``` - -#### Associated Analytic Story -* [IcedID](/stories/icedid) - - -#### How To Implement -To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA. - -#### Required field -* _time -* Processes.parent_process_name -* Processes.parent_process -* Processes.process_name -* Processes.process_id -* Processes.process -* Processes.dest -* Processes.user -* Processes.process_id -* Processes.parent_process_id - - -#### Kill Chain Phase -* Exploitation - - -#### Known False Positives -unknown - - -#### RBA - -| Risk Score | Impact | Confidence | Message | -| ----------- | ----------- |--------------|--------------| -| 30.0 | 60 | 50 | $process_name$ with commandline $process$ in $dest$ | - - - - -#### Reference - -* [https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/](https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/) - - - -#### Test Dataset -Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). -Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) - -* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/cmd_carry_str_param/sysmon.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/cmd_carry_str_param/sysmon.log) - - - -[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/cmd_carry_out_string_command_parameter.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-03-detect_rclone_command-line_usage.md b/docs/_posts/2021-12-03-detect_rclone_command-line_usage.md index ebd83b1027..02d9b85587 100644 --- a/docs/_posts/2021-12-03-detect_rclone_command-line_usage.md +++ b/docs/_posts/2021-12-03-detect_rclone_command-line_usage.md @@ -97,7 +97,7 @@ False positives should be limited as this is restricted to the Rclone process na Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) -* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1020/windows-sysmon.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1020/windows-sysmon.log) +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1020/windows-security.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1020/windows-security.log) diff --git a/docs/_posts/2021-12-03-windows_curl_upload_to_remote_destination.md b/docs/_posts/2021-12-03-windows_curl_upload_to_remote_destination.md index 38035003f0..eb1888623a 100644 --- a/docs/_posts/2021-12-03-windows_curl_upload_to_remote_destination.md +++ b/docs/_posts/2021-12-03-windows_curl_upload_to_remote_destination.md @@ -101,7 +101,7 @@ False positives may be limited to source control applications and may be require Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) -* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/windows-sysmon_curl_upload.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/windows-sysmon_curl_upload.log) +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/windows-security.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/windows-security.log) diff --git a/docs/_stories/clop_ransomware.md b/docs/_stories/clop_ransomware.md index 744ad3dce8..cfbb210a10 100644 --- a/docs/_stories/clop_ransomware.md +++ b/docs/_stories/clop_ransomware.md @@ -8,6 +8,7 @@ tags: - Splunk Enterprise Security - Splunk Cloud - Endpoint + - Endpoint_Filesystem - Endpoint_Processes --- @@ -18,7 +19,7 @@ tags: Leverage searches that allow you to detect and investigate unusual activities that might relate to the Clop ransomware, including looking for file writes associated with Clope, encrypting network shares, deleting and resizing shadow volume storage, registry key modification, deleting of security logs, and more. - **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud -- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint), [Endpoint_Processes](https://docs.splunk.com/Documentation/CIM/latest/User/EndpointProcesses) +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint), [Endpoint_Filesystem](https://docs.splunk.com/Documentation/CIM/latest/User/EndpointFilesystem), [Endpoint_Processes](https://docs.splunk.com/Documentation/CIM/latest/User/EndpointProcesses) - **Last Updated**: 2021-03-17 - **Author**: Rod Soto, Teoderick Contreras, Splunk - **ID**: 5a6f6849-1a26-4fae-aa05-fa730556eeb6 @@ -37,6 +38,7 @@ Clop ransomware campaigns targeting healthcare and other vertical sectors, invol | [Common Ransomware Notes](/endpoint/common_ransomware_notes/) | [Data Destruction](/tags/#data-destruction) | Hunting | | [Deleting Shadow Copies](/endpoint/deleting_shadow_copies/) | [Inhibit System Recovery](/tags/#inhibit-system-recovery) | TTP | | [High File Deletion Frequency](/endpoint/high_file_deletion_frequency/) | [Data Destruction](/tags/#data-destruction) | Anomaly | +| [High File Deletion Frequency](/endpoint/high_file_deletion_frequency/) | [Data Destruction](/tags/#data-destruction) | Anomaly | | [High Process Termination Frequency](/endpoint/high_process_termination_frequency/) | [Data Encrypted for Impact](/tags/#data-encrypted-for-impact) | Anomaly | | [Process Deleting Its Process File Path](/endpoint/process_deleting_its_process_file_path/) | [Indicator Removal on Host](/tags/#indicator-removal-on-host) | TTP | | [Ransomware Notes bulk creation](/endpoint/ransomware_notes_bulk_creation/) | [Data Encrypted for Impact](/tags/#data-encrypted-for-impact) | Anomaly | diff --git a/docs/_stories/ingress_tool_transfer.md b/docs/_stories/ingress_tool_transfer.md index 6ce31ca540..078b9ab0ae 100644 --- a/docs/_stories/ingress_tool_transfer.md +++ b/docs/_stories/ingress_tool_transfer.md @@ -36,7 +36,9 @@ Ingress tool transfer is a Technique under tactic Command and Control. Behaviors | [BITSAdmin Download File](/endpoint/bitsadmin_download_file/) | [BITS Jobs](/tags/#bits-jobs), [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [CertUtil Download With URLCache and Split Arguments](/endpoint/certutil_download_with_urlcache_and_split_arguments/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [CertUtil Download With VerifyCtl and Split Arguments](/endpoint/certutil_download_with_verifyctl_and_split_arguments/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | +| [Curl Download and Bash Execution](/endpoint/curl_download_and_bash_execution/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [Suspicious Curl Network Connection](/endpoint/suspicious_curl_network_connection/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | +| [Wget Download and Bash Execution](/endpoint/wget_download_and_bash_execution/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [Windows Curl Download to Suspicious Path](/endpoint/windows_curl_download_to_suspicious_path/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [Windows Curl Upload to Remote Destination](/endpoint/windows_curl_upload_to_remote_destination/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | | [Windows Curl Upload to Remote Destination](/endpoint/windows_curl_upload_to_remote_destination/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | diff --git a/docs/index.markdown b/docs/index.markdown index d8078ad4b6..1ea2cde434 100644 --- a/docs/index.markdown +++ b/docs/index.markdown @@ -9,26 +9,26 @@ header: actions: - label: "Download" url: "https://splunkbase.splunk.com/app/3449/" -excerpt: "Get the latest **FREE** Enterprise Security Content Update (ESCU) App with **684** detections for Splunk." +excerpt: "Get the latest **FREE** Enterprise Security Content Update (ESCU) App with **696** detections for Splunk." feature_row: - image_path: /static/feature_detection.png alt: "customizable" title: "Detections" - excerpt: "See all **684** Splunk Analytics built to find evil 😈." + excerpt: "See all **696** Splunk Analytics built to find evil 😈." url: "/detections" btn_class: "btn--primary" btn_label: "Explore" - image_path: /static/feature_stories.png alt: "fully responsive" title: "Analytic Stories" - excerpt: "See all **106** use cases, 📦 of detections built to address a threat." + excerpt: "See all **107** use cases, 📦 of detections built to address a threat." url: "/stories" btn_class: "btn--primary" btn_label: "Explore" - image_path: /static/feature_playbooks.png alt: "100% free" title: "Playbooks" - excerpt: "See all **14** sets of steps 🐾 to automatically response to a threat." + excerpt: "See all **17** sets of steps 🐾 to automatically response to a threat." url: "/playbooks" btn_class: "btn--primary" btn_label: "Explore" diff --git a/playbooks/internal_host_ssh_investigate.json b/playbooks/internal_host_ssh_investigate.json new file mode 100644 index 0000000000..45ea908436 --- /dev/null +++ b/playbooks/internal_host_ssh_investigate.json @@ -0,0 +1,498 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Use Cases", + "coa": { + "data": { + "description": "Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting generic information about the processes, user activity, and network activity. This includes the process list, login history, cron jobs, and open sockets. The results are zipped up in .csv files and added to the vault for an analyst to review.", + "edges": [ + { + "id": "port_0_to_port_2", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "2", + "targetPort": "2_in" + }, + { + "id": "port_0_to_port_3", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "3", + "targetPort": "3_in" + }, + { + "id": "port_0_to_port_5", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "5", + "targetPort": "5_in" + }, + { + "id": "port_0_to_port_6", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_6_to_port_7", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "id": "port_7_to_port_8", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "id": "port_8_to_port_9", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "9", + "targetPort": "9_in" + }, + { + "id": "port_9_to_port_1", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_5_to_port_1", + "sourceNode": "5", + "sourcePort": "5_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_3_to_port_1", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_2_to_port_1", + "sourceNode": "2", + "sourcePort": "2_out", + "targetNode": "1", + "targetPort": "1_in" + } + ], + "hash": "0da2cbd02719d0f1db566ed2b4c158466d774b17", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 500, + "y": 0 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 500, + "y": 520 + }, + "2": { + "data": { + "action": "list processes", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "list_processes_1", + "id": "2", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "2", + "type": "action", + "x": 1080, + "y": 120 + }, + "3": { + "data": { + "action": "list connections", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "list_connections_1", + "id": "3", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "3", + "type": "action", + "x": 800, + "y": 120 + }, + "5": { + "data": { + "action": "list firewall rules", + "actionType": "investigate", + "advanced": { + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "list_firewall_rules_1", + "id": "5", + "parameters": { + "ip_hostname": "playbook_input:ip_or_hostname" + }, + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "5", + "type": "action", + "x": 160, + "y": 120 + }, + "6": { + "data": { + "advanced": { + "customName": "write embedded bash script to vault", + "customNameId": 0, + "join": [] + }, + "customFunction": { + "draftMode": false, + "name": "passthrough", + "repoName": "community" + }, + "functionId": 1, + "functionName": "write_embedded_bash_script_to_vault", + "id": "6", + "selectMore": false, + "type": "utility", + "utilities": { + "passthrough": { + "description": "Return the inputs as outputs. This is useful for publishing pieces of data for other blocks in the playbook to use.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_1", + "name": "input_1", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_2", + "name": "input_2", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_3", + "name": "input_3", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_4", + "name": "input_4", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_5", + "name": "input_5", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_6", + "name": "input_6", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_7", + "name": "input_7", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_8", + "name": "input_8", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_9", + "name": "input_9", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_10", + "name": "input_10", + "placeholder": "", + "renderType": "datapath", + "required": false + } + ], + "label": "passthrough", + "name": "passthrough" + } + }, + "utilityType": "custom_function", + "values": { + "passthrough": { + "input_1": null, + "input_10": null, + "input_2": null, + "input_3": null, + "input_4": null, + "input_5": null, + "input_6": null, + "input_7": null, + "input_8": null, + "input_9": null + } + } + }, + "errors": {}, + "id": "6", + "type": "utility", + "userCode": "\n bash_script = r\"\"\"\n#!/bin/bash\n\n# This script is part of the Splunk SOAR playbook called internal_host_ssh_log4j_investigate. It gathers system information as part of a unix endpoint investigation. The output is a human-readable log and a set of .csv files\n\necho \"##############################################################\"\necho \"splunk_soar_internal_host_ssh_investigate.sh\"\necho \"##############################################################\"\necho \"\"\necho \"[+] Basic system configuration:\"\n\necho \"key,value\" > basic_system_configuration.csv\n\necho \"hostname: $(uname -n | tr -d \"\\n\")\"\necho \"hostname,$(uname -n | tr -d \"\\n\")\" >> basic_system_configuration.csv\n\necho \"current time: $(date +%F_%T)\"\necho \"current time,$(date +%F_%T)\" >> basic_system_configuration.csv\n\necho \"IP address: $(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\\.){3}[0-9]*' | grep -Eo '([0-9]*\\.){3}[0-9]*' | grep -v '127.0.0.1' | tr '\\n' ' ')\"\necho \"IP address,$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\\.){3}[0-9]*' | grep -Eo '([0-9]*\\.){3}[0-9]*' | grep -v '127.0.0.1' | tr '\\n' ' ')\" >> basic_system_configuration.csv\n\necho \"OS release: $(cat /etc/*release | sort -u | tr \"\\n\" \";\")\"\necho \"OS release,$(cat /etc/*release | sort -u | tr \"\\n\" \";\")\" >> basic_system_configuration.csv\n\necho \"OS issue: $(cat /etc/issue)\"\necho \"OS issue,$(cat /etc/issue)\" >> basic_system_configuration.csv\n\necho \"OS kernel: $(uname -a)\"\necho \"OS kernel,$(uname -a)\" >> basic_system_configuration.csv\n\necho \"\"\necho \"USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND\" > process_list.csv\necho \"$(ps aux)\" >> process_list.csv\necho \"[+] Process list:\"\necho \"$(ps aux)\"\n\necho \"\"\necho \"UNIT,LOAD,ACTIVE,SUB,DESCRIPTION\" > service_list.csv\necho \"$(systemctl)\" >> service_list.csv\necho \"[+] Service list:\"\necho \"$(systemctl)\"\n\necho \"\"\necho \"$(ss -tunapl)\" > open_sockets.csv\necho \"[+] Open sockets:\"\necho \"$(ss -tunapl)\"\n\necho \"\"\necho \"cron_job\" > cron_jobs.csv\necho \"$(for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done)\" >> cron_jobs.csv\necho \"[+] Cron jobs:\"\necho \"$(for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done)\"\n\necho \"[+] Zip up the outputs ...\"\nhostname=$1\nzip $(hostname)_ssh_output.zip basic_system_configuration.csv process_list.csv service_list.csv open_sockets.csv cron_jobs.csv\n\"\"\"\n\n file_name = 'splunk_soar_internal_host_ssh_investigate.sh'\n file_path = '/opt/phantom/vault/tmp/{}'.format(file_name)\n with open(file_path, 'w') as bash_script_file:\n bash_script_file.write(bash_script)\n \n success, message, vault_id = phantom.vault_add(file_location=file_path, file_name=file_name)\n parameters = [{'input_1': vault_id}]\n \n", + "x": 480, + "y": 120 + }, + "7": { + "data": { + "action": "put file", + "actionType": "generic", + "advanced": { + "customName": "upload bash script", + "customNameId": 0, + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "upload_bash_script", + "id": "7", + "requiredParameters": [ + "vault_id", + "ip_hostname", + "file_destination" + ], + "type": "action" + }, + "errors": {}, + "id": "7", + "type": "action", + "x": 480, + "y": 220 + }, + "8": { + "data": { + "action": "execute program", + "actionType": "generic", + "advanced": { + "customName": "run bash script", + "customNameId": 0, + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "run_bash_script", + "id": "8", + "requiredParameters": [ + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "8", + "type": "action", + "x": 480, + "y": 320 + }, + "9": { + "data": { + "action": "get file", + "actionType": "investigate", + "advanced": { + "customName": "get output zip file", + "customNameId": 0, + "join": [] + }, + "connector": "SSH", + "connectorConfigs": [ + "ssh" + ], + "connectorId": "d37aa7fe-c973-44ee-a164-2ca5bf321b1f", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "get_output_zip_file", + "id": "9", + "requiredParameters": [ + "file_path", + "ip_hostname" + ], + "type": "action" + }, + "errors": {}, + "id": "9", + "type": "action", + "x": 480, + "y": 420 + } + }, + "notes": "TODO: last -a login history" + }, + "input_spec": [ + { + "contains": [ + "host name", + "ip" + ], + "description": "IP address or hostname of the internal host to investigate", + "name": "ip_or_hostname" + } + ], + "output_spec": null, + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-15T01:02:29.241695+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "unix", + "internal_host" + ] +} \ No newline at end of file diff --git a/playbooks/internal_host_ssh_investigate.png b/playbooks/internal_host_ssh_investigate.png new file mode 100644 index 0000000000000000000000000000000000000000..d1279dd7fcba7ccb5a878c4b5fbc9d4765fd2e3a GIT binary patch literal 260574 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Ⓢ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

    3wKEP`>neNz(L^nbfm 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 ZypX7hHqlF*pTNJPhjb4nAGmn;{{X<4ykY basic_system_configuration.csv + +echo "hostname: $(uname -n | tr -d "\n")" +echo "hostname,$(uname -n | tr -d "\n")" >> basic_system_configuration.csv + +echo "current time: $(date +%F_%T)" +echo "current time,$(date +%F_%T)" >> basic_system_configuration.csv + +echo "IP address: $(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | tr '\n' ' ')" +echo "IP address,$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | tr '\n' ' ')" >> basic_system_configuration.csv + +echo "OS release: $(cat /etc/*release | sort -u | tr "\n" ";")" +echo "OS release,$(cat /etc/*release | sort -u | tr "\n" ";")" >> basic_system_configuration.csv + +echo "OS issue: $(cat /etc/issue)" +echo "OS issue,$(cat /etc/issue)" >> basic_system_configuration.csv + +echo "OS kernel: $(uname -a)" +echo "OS kernel,$(uname -a)" >> basic_system_configuration.csv + +echo "" +echo "USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND" > process_list.csv +echo "$(ps aux)" >> process_list.csv +echo "[+] Process list:" +echo "$(ps aux)" + +echo "" +echo "UNIT,LOAD,ACTIVE,SUB,DESCRIPTION" > service_list.csv +echo "$(systemctl)" >> service_list.csv +echo "[+] Service list:" +echo "$(systemctl)" + +echo "" +echo "$(ss -tunapl)" > open_sockets.csv +echo "[+] Open sockets:" +echo "$(ss -tunapl)" + +echo "" +echo "cron_job" > cron_jobs.csv +echo "$(for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done)" >> cron_jobs.csv +echo "[+] Cron jobs:" +echo "$(for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done)" + +echo "[+] Zip up the outputs ..." +hostname=$1 +zip $(hostname)_ssh_output.zip basic_system_configuration.csv process_list.csv service_list.csv open_sockets.csv cron_jobs.csv +""" + + file_name = 'splunk_soar_internal_host_ssh_investigate.sh' + file_path = '/opt/phantom/vault/tmp/{}'.format(file_name) + with open(file_path, 'w') as bash_script_file: + bash_script_file.write(bash_script) + + success, message, vault_id = phantom.vault_add(file_location=file_path, file_name=file_name) + parameters = [{'input_1': vault_id}] + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/passthrough", parameters=parameters, name="write_embedded_bash_script_to_vault", callback=upload_bash_script) + + return + + +def upload_bash_script(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("upload_bash_script() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + parameters = [] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("put file", parameters=parameters, name="upload_bash_script", assets=["ssh"], callback=run_bash_script) + + return + + +def run_bash_script(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("run_bash_script() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + parameters = [] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("execute program", parameters=parameters, name="run_bash_script", assets=["ssh"], callback=get_output_zip_file) + + return + + +def get_output_zip_file(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_output_zip_file() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + parameters = [] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("get file", parameters=parameters, name="get_output_zip_file", assets=["ssh"]) + + return + + +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # This function is called after all actions are completed. + # summary of all the action and/or all details of actions + # can be collected here. + + # summary_json = phantom.get_summary() + # if 'result' in summary_json: + # for action_result in summary_json['result']: + # if 'action_run_id' in action_result: + # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False) + # phantom.debug(action_results) + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file diff --git a/playbooks/internal_host_ssh_investigate.yml b/playbooks/internal_host_ssh_investigate.yml new file mode 100644 index 0000000000..fbe5fa0e09 --- /dev/null +++ b/playbooks/internal_host_ssh_investigate.yml @@ -0,0 +1,18 @@ +name: Internal Host SSH Investigate +id: fdb65816-6688-41d8-8698-755b7b4ec44e +version: 1 +date: '2021-12-14' +author: Philip Royer, Splunk +type: Investigate +description: Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting generic information about the processes, user activity, and network activity. This includes the process list, login history, cron jobs, and open sockets. The results are zipped up in .csv files and added to the vault for an analyst to review. +playbook: internal_host_ssh_investigate +how_to_implement: The ssh asset requires sudo access to view the processes with open sockets. +references: ["https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh"] +app_list: +- "SSH" +tags: + platform_tags: + - Response + playbook_fields: [] + product: + - Splunk SOAR diff --git a/playbooks/risk_notable_import_data.yml b/playbooks/risk_notable_import_data.yml index 1209dbda31..6fd5db62bf 100644 --- a/playbooks/risk_notable_import_data.yml +++ b/playbooks/risk_notable_import_data.yml @@ -7,9 +7,9 @@ type: Investigation description: This playbook gathers all of the events associated with the risk notable and imports them as artifacts. It also generates a custom markdown formatted note. playbook: risk_notable_import_data how_to_implement: > - 'The Splunk search used to locate contributing events requires three fields in the notable artifact\: risk_object, info_min_time, and info_max_time. The query also performs some deduplication on contributing events and may need to be adjusted based on individual Enterprise Security environments. Mitre Tactics and Techniques appear if using the annotation framework in Splunk ES." + The Splunk search used to locate contributing events requires three fields in the notable artifact\: risk_object, info_min_time, and info_max_time. The query also performs some deduplication on contributing events and may need to be adjusted based on individual Enterprise Security environments. Mitre Tactics and Techniques appear if using the annotation framework in Splunk ES." - index=risk risk_object=\"{0}\" earliest=\"{1}\" latest="{2}\" + ```index=risk risk_object=\"{0}\" earliest=\"{1}\" latest="{2}\" | rex field=source \".*-\s(?.*)\s+-\s+\w+\s+-\s+Rule\" | fillnull value=\"unknown\" threat_object | eval risk_message=coalesce(risk_message,source) @@ -17,10 +17,10 @@ how_to_implement: > | rename annotations.mitre_attack.mitre_technique_id as mitre_technique_id annotations.mitre_attack.mitre_tactic as mitre_tactic annotations.mitre_attack.mitre_technique as mitre_technique | fields - annotations* risk_object_* date_* orig_* user_* src_user_* src_* dest_* dest_user_* info_* search_* splunk_* tag* risk_modifier* risk_rule* sourcetype timestamp index next_cron_time timeendpos timestartpos testmode linecount | sort + _time - | \`uitime(_time)\` - | dedup source threat_object + | `uitime(_time)` + | dedup source threat_object``` - A custom code block sorts the returned event data and produces a markdown formatted note into the note_content output field. This field is then available for use in downstream playbooks."' + A custom code block sorts the returned event data and produces a markdown formatted note into the note_content output field. This field is then available for use in downstream playbooks." references: - https://docs.splunk.com/Documentation/ESSOC/latest/user/Useplaybookpack - http://docs.splunk.com/Documentation/ES/6.6.2/Admin/Configurecorrelationsearches#Use_security_framework_annotations_in_correlation_searches From 544c7b0b9f6078c163e668e7790dea2825c42190 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:27:42 -0600 Subject: [PATCH 44/53] parent playbook --- playbooks/log4j_investigate_and_respond.json | 679 +++++++++++++++++++ playbooks/log4j_investigate_and_respond.py | 331 +++++++++ playbooks/log4j_investigate_and_respond.yml | 43 +- 3 files changed, 1028 insertions(+), 25 deletions(-) diff --git a/playbooks/log4j_investigate_and_respond.json b/playbooks/log4j_investigate_and_respond.json index e69de29bb2..9a36b92e5c 100644 --- a/playbooks/log4j_investigate_and_respond.json +++ b/playbooks/log4j_investigate_and_respond.json @@ -0,0 +1,679 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Use Cases", + "coa": { + "data": { + "description": "Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j.", + "edges": [ + { + "id": "port_0_to_port_15", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "15", + "targetPort": "15_in" + }, + { + "id": "port_15_to_port_19", + "sourceNode": "15", + "sourcePort": "15_out", + "targetNode": "19", + "targetPort": "19_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_20_to_port_21", + "sourceNode": "20", + "sourcePort": "20_out", + "targetNode": "21", + "targetPort": "21_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_20_to_port_22", + "sourceNode": "20", + "sourcePort": "20_out", + "targetNode": "22", + "targetPort": "22_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_20_to_port_23", + "sourceNode": "20", + "sourcePort": "20_out", + "targetNode": "23", + "targetPort": "23_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_20_to_port_24", + "sourceNode": "20", + "sourcePort": "20_out", + "targetNode": "24", + "targetPort": "24_in" + }, + { + "id": "port_19_to_port_25", + "sourceNode": "19", + "sourcePort": "19_out", + "targetNode": "25", + "targetPort": "25_in" + }, + { + "id": "port_25_to_port_20", + "sourceNode": "25", + "sourcePort": "25_out", + "targetNode": "20", + "targetPort": "20_in" + } + ], + "hash": "78e9b912032aa57c87befaa5f816a31d048407ed", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "x": 530, + "y": -7.815970093361102e-14 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "userCode": "\n # This function is called after all actions are completed.\n # summary of all the action and/or all details of actions\n # can be collected here.\n\n # summary_json = phantom.get_summary()\n # if 'result' in summary_json:\n # for action_result in summary_json['result']:\n # if 'action_run_id' in action_result:\n # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False)\n # phantom.debug(action_results)\n\n", + "x": 830, + "y": -7.815970093361102e-14 + }, + "15": { + "data": { + "advanced": { + "customName": "enumerate hosts", + "customNameId": 0, + "join": [] + }, + "customFunction": { + "draftMode": false, + "name": "passthrough", + "repoName": "community" + }, + "functionId": 5, + "functionName": "enumerate_hosts", + "id": "15", + "selectMore": false, + "type": "utility", + "utilities": { + "passthrough": { + "description": "Return the inputs as outputs. This is useful for publishing pieces of data for other blocks in the playbook to use.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_1", + "name": "input_1", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_2", + "name": "input_2", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_3", + "name": "input_3", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_4", + "name": "input_4", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_5", + "name": "input_5", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_6", + "name": "input_6", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_7", + "name": "input_7", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_8", + "name": "input_8", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_9", + "name": "input_9", + "placeholder": "", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "", + "inputType": "list", + "label": "input_10", + "name": "input_10", + "placeholder": "", + "renderType": "datapath", + "required": false + } + ], + "label": "passthrough", + "name": "passthrough" + } + }, + "utilityType": "custom_function", + "values": { + "passthrough": { + "input_1": "log4j_hosts", + "input_10": null, + "input_2": "", + "input_3": null, + "input_4": null, + "input_5": null, + "input_6": null, + "input_7": null, + "input_8": null, + "input_9": null + } + } + }, + "errors": {}, + "id": "15", + "type": "utility", + "userCode": "\n # use custom code to read a custom list of potential log4j hosts and/or ip addresses\n # and make a json to create an artifact for each one.\n # the expected format of the custom list is:\n # hostname1 | unix\n # 1.1.1.1 | windows\n \n # TODO remove this testing piece which deletes existing artifacts\n container_artifact_data = phantom.collect2(container=container, datapath=[\"artifact:*.id\",\"artifact:*.id\"])\n container_artifact_header_item_0 = [item[0] for item in container_artifact_data]\n for artifact_id in container_artifact_header_item_0:\n phantom.delete_artifact(artifact_id=artifact_id)\n \n \n # TODO: bring in a test splunk notable and clean up the fields in that as well\n\n custom_list_name = parameters[0]['input_1']\n \n success, message, rows = phantom.get_list(list_name=custom_list_name)\n \n # loop through the rows and create a list of artifact jsons to add\n # the two columns are expected to be the ip_or_hostname and the operating system family\n parameters = []\n unix_hosts = []\n windows_hosts = []\n unknown_hosts = []\n for row in rows:\n if row[0]:\n if row[1] != 'unix' and row[1] != 'windows':\n os_family = 'unknown'\n else:\n os_family = row[1]\n \n parameters.append({'input_1': {'cef_data': {'deviceHostname': row[0], 'operatingSystemFamily': os_family}}})\n \n\n", + "x": 510, + "y": 152 + }, + "19": { + "data": { + "advanced": { + "customName": "create artifacts", + "customNameId": 0, + "join": [] + }, + "customFunction": { + "draftMode": false, + "name": "artifact_create", + "repoName": "community" + }, + "functionId": 9, + "functionName": "create_artifacts", + "id": "19", + "selectMore": false, + "type": "utility", + "utilities": { + "artifact_create": { + "description": "Create a new artifact with the specified attributes.", + "fields": [ + { + "dataTypes": [ + "phantom container id" + ], + "description": "Container which the artifact will be added to.", + "inputType": "item", + "label": "container", + "name": "container", + "placeholder": "container:id", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "The name of the new artifact, which is optional and defaults to \"artifact\".", + "inputType": "item", + "label": "name", + "name": "name", + "placeholder": "artifact", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "The label of the new artifact, which is optional and defaults to \"events\"", + "inputType": "item", + "label": "label", + "name": "label", + "placeholder": "events", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "" + ], + "description": "The severity of the new artifact, which is optional and defaults to \"Medium\". Typically this is either \"High\", \"Medium\", or \"Low\".", + "inputType": "item", + "label": "severity", + "name": "severity", + "placeholder": "Medium", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "The name of the CEF field to populate in the artifact, such as \"destinationAddress\" or \"sourceDnsDomain\". Required only if cef_value is provided.", + "inputType": "item", + "label": "cef_field", + "name": "cef_field", + "placeholder": "destinationAddress", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "The value of the CEF field to populate in the artifact, such as the IP address, domain name, or file hash. Required only if cef_field is provided.", + "inputType": "item", + "label": "cef_value", + "name": "cef_value", + "placeholder": "192.0.2.192", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "The CEF data type of the data in cef_value. For example, this could be \"ip\", \"hash\", or \"domain\". Optional.", + "inputType": "item", + "label": "cef_data_type", + "name": "cef_data_type", + "placeholder": "ip", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "A comma-separated list of tags to apply to the created artifact, which is optional.", + "inputType": "item", + "label": "tags", + "name": "tags", + "placeholder": "tag1, tag2, tag3", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "Either \"true\" or \"false\", depending on whether or not the new artifact should trigger the execution of any playbooks that are set to active on the label of the container the artifact will be added to. Optional and defaults to \"false\".", + "inputType": "item", + "label": "run_automation", + "name": "run_automation", + "placeholder": "false", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "Optional parameter to modify any extra attributes of the artifact. Input_json will be merged with other inputs. In the event of a conflict, input_json will take precedence.", + "inputType": "item", + "label": "input_json", + "name": "input_json", + "placeholder": "{\"source_data_identifier\": \"1234\", \"data\": \"5678\"}", + "renderType": "datapath", + "required": false + } + ], + "label": "artifact_create", + "name": "artifact_create" + } + }, + "utilityType": "custom_function", + "values": { + "artifact_create": { + "cef_data_type": null, + "cef_field": null, + "cef_value": null, + "container": "container:id", + "input_json": "enumerate_hosts:custom_function_result.data.*.item", + "label": null, + "name": "Potential log4j Host", + "run_automation": null, + "severity": "high", + "tags": null + } + } + }, + "errors": {}, + "id": "19", + "type": "utility", + "userCode": "\n", + "x": 510, + "y": 304 + }, + "20": { + "data": { + "advanced": { + "customName": "os filter", + "customNameId": 0, + "description": "The operatingSystemFamily should be either unix, windows, or unknown. If it is unknown, both sets of playbooks should be called.", + "join": [], + "scope": "all" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "artifact:*.cef.operatingSystemFamily", + "value": "unix" + }, + { + "conditionIndex": 0, + "op": "==", + "param": "artifact:*.cef.operatingSystemFamily", + "value": "unknown" + } + ], + "conditionIndex": 0, + "customName": "unix_or_unknown", + "logic": "or" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "artifact:*.cef.operatingSystemFamily", + "value": "windows" + }, + { + "conditionIndex": 1, + "op": "==", + "param": "artifact:*.cef.operatingSystemFamily", + "value": "unknown" + } + ], + "conditionIndex": 1, + "customName": "windows_or_unknown", + "logic": "or" + } + ], + "customDatapaths": { + "artifacts": { + "artifact:*.cef.operatingSystemFamily": { + "contains": [], + "isCustomDatapath": true, + "label": "artifact:*.cef.operatingSystemFamily", + "value": "artifact:*.cef.operatingSystemFamily" + } + } + }, + "functionId": 1, + "functionName": "os_filter", + "id": "20", + "type": "filter" + }, + "errors": {}, + "id": "20", + "type": "filter", + "x": 570, + "y": 625 + }, + "21": { + "data": { + "advanced": { + "join": [], + "scope": "all" + }, + "functionId": 2, + "functionName": "playbook_internal_host_ssh_investigate_2", + "id": "21", + "inputs": { + "ip_or_hostname": { + "datapaths": [ + "filtered-data:os_filter:condition_1:artifact:*.cef.deviceHostname" + ], + "deduplicate": true + } + }, + "playbookName": "internal_host_ssh_investigate", + "playbookRepo": 2, + "playbookRepoName": "local", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "21", + "type": "playbook", + "x": 340, + "y": 805 + }, + "22": { + "data": { + "advanced": { + "join": [], + "scope": "all" + }, + "functionId": 2, + "functionName": "playbook_internal_host_ssh_log4j_investigate_2", + "id": "22", + "inputs": { + "ip_or_hostname": { + "datapaths": [ + "filtered-data:os_filter:condition_1:artifact:*.cef.deviceHostname" + ], + "deduplicate": true + } + }, + "playbookName": "internal_host_ssh_log4j_investigate", + "playbookRepo": 2, + "playbookRepoName": "local", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "22", + "type": "playbook", + "x": 0, + "y": 805 + }, + "23": { + "data": { + "advanced": { + "join": [], + "scope": "all" + }, + "functionId": 2, + "functionName": "playbook_internal_host_winrm_investigate_2", + "id": "23", + "inputs": { + "ip_or_hostname": { + "datapaths": [ + "filtered-data:os_filter:condition_2:artifact:*.cef.deviceHostname" + ], + "deduplicate": true + } + }, + "playbookName": "internal_host_winrm_investigate", + "playbookRepo": 2, + "playbookRepoName": "local", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "23", + "type": "playbook", + "x": 680, + "y": 805 + }, + "24": { + "data": { + "advanced": { + "join": [], + "scope": "all" + }, + "functionId": 2, + "functionName": "playbook_internal_host_winrm_log4j_investigate_2", + "id": "24", + "inputs": { + "ip_or_hostname": { + "datapaths": [ + "filtered-data:os_filter:condition_2:artifact:*.cef.deviceHostname" + ], + "deduplicate": true + } + }, + "playbookName": "internal_host_winrm_log4j_investigate", + "playbookRepo": 2, + "playbookRepoName": "local", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "24", + "type": "playbook", + "x": 1020, + "y": 805 + }, + "25": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 1, + "functionName": "playbook_internal_host_splunk_investigate_log4j_1", + "id": "25", + "inputs": { + "ip_or_hostname": { + "datapaths": [ + "artifact:*.cef.deviceHostname" + ], + "deduplicate": true + } + }, + "playbookName": "internal_host_splunk_investigate_log4j", + "playbookRepo": 2, + "playbookRepoName": "local", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "25", + "type": "playbook", + "x": 520, + "y": 404.5 + } + }, + "notes": "TODO: bring in a test splunk notable and add a host from that to the custom list in enumerate_hosts\n\n\n* In the block called \"fetch_hosts_from_custom_list\", change the custom list name from \"log4j_hosts\" if needed \n* If the operating system family (\"windows\" or \"unix\") is not known, both ssh and winrm will be attempted\n* If ssh and/or winrm are not the preferred endpoint management methods, these playbooks could be ported to use Google's GRR, osquery, CrowdStrike's RTR, Carbon Black's EDR API, or similar tools.\n\n* The artifact scope \"all\" is used throughout this playbook because the artifact list can be added to as the playbook progresses." + }, + "input_spec": null, + "output_spec": null, + "playbook_type": "automation", + "python_version": "3", + "schema": "5.0.4", + "version": "5.1.0.70187" + }, + "create_time": "2021-12-14T20:29:14.791691+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [] +} \ No newline at end of file diff --git a/playbooks/log4j_investigate_and_respond.py b/playbooks/log4j_investigate_and_respond.py index e69de29bb2..aa81498548 100644 --- a/playbooks/log4j_investigate_and_respond.py +++ b/playbooks/log4j_investigate_and_respond.py @@ -0,0 +1,331 @@ +""" +Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. +""" + + +import phantom.rules as phantom +import json +from datetime import datetime, timedelta + + +def on_start(container): + phantom.debug('on_start() called') + + # call 'enumerate_hosts' block + enumerate_hosts(container=container) + + return + +def enumerate_hosts(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("enumerate_hosts() called") + + parameters = [] + + parameters.append({ + "input_1": "log4j_hosts", + "input_2": None, + "input_3": None, + "input_4": None, + "input_5": None, + "input_6": None, + "input_7": None, + "input_8": None, + "input_9": None, + "input_10": None, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # use custom code to read a custom list of potential log4j hosts and/or ip addresses + # and make a json to create an artifact for each one. + # the expected format of the custom list is: + # hostname1 | unix + # 1.1.1.1 | windows + + # TODO remove this testing piece which deletes existing artifacts + container_artifact_data = phantom.collect2(container=container, datapath=["artifact:*.id","artifact:*.id"]) + container_artifact_header_item_0 = [item[0] for item in container_artifact_data] + for artifact_id in container_artifact_header_item_0: + phantom.delete_artifact(artifact_id=artifact_id) + + + # TODO: bring in a test splunk notable and clean up the fields in that as well + + custom_list_name = parameters[0]['input_1'] + + success, message, rows = phantom.get_list(list_name=custom_list_name) + + # loop through the rows and create a list of artifact jsons to add + # the two columns are expected to be the ip_or_hostname and the operating system family + parameters = [] + unix_hosts = [] + windows_hosts = [] + unknown_hosts = [] + for row in rows: + if row[0]: + if row[1] != 'unix' and row[1] != 'windows': + os_family = 'unknown' + else: + os_family = row[1] + + parameters.append({'input_1': {'cef_data': {'deviceHostname': row[0], 'operatingSystemFamily': os_family}}}) + + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/passthrough", parameters=parameters, name="enumerate_hosts", callback=create_artifacts) + + return + + +def create_artifacts(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("create_artifacts() called") + + id_value = container.get("id", None) + enumerate_hosts_data = phantom.collect2(container=container, datapath=["enumerate_hosts:custom_function_result.data.*.item"]) + + parameters = [] + + # build parameters list for 'create_artifacts' call + for enumerate_hosts_data_item in enumerate_hosts_data: + parameters.append({ + "name": "Potential log4j Host", + "tags": None, + "label": None, + "severity": "high", + "cef_field": None, + "cef_value": None, + "container": id_value, + "input_json": enumerate_hosts_data_item[0], + "cef_data_type": None, + "run_automation": None, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/artifact_create", parameters=parameters, name="create_artifacts", callback=playbook_internal_host_splunk_investigate_log4j_1) + + return + + +def os_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("os_filter() called") + + ################################################################################ + # The operatingSystemFamily should be either unix, windows, or unknown. If it + # is unknown, both sets of playbooks should be called. + ################################################################################ + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + logical_operator="or", + conditions=[ + ["artifact:*.cef.operatingSystemFamily", "==", "unix"], + ["artifact:*.cef.operatingSystemFamily", "==", "unknown"] + ], + name="os_filter:condition_1", + scope="all") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + playbook_internal_host_ssh_investigate_2(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_1, filtered_results=matched_results_1) + playbook_internal_host_ssh_log4j_investigate_2(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_1, filtered_results=matched_results_1) + + # collect filtered artifact ids and results for 'if' condition 2 + matched_artifacts_2, matched_results_2 = phantom.condition( + container=container, + logical_operator="or", + conditions=[ + ["artifact:*.cef.operatingSystemFamily", "==", "windows"], + ["artifact:*.cef.operatingSystemFamily", "==", "unknown"] + ], + name="os_filter:condition_2", + scope="all") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_2 or matched_results_2: + playbook_internal_host_winrm_investigate_2(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_2, filtered_results=matched_results_2) + playbook_internal_host_winrm_log4j_investigate_2(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_2, filtered_results=matched_results_2) + + return + + +def playbook_internal_host_ssh_investigate_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("playbook_internal_host_ssh_investigate_2() called") + + filtered_artifact_0_data_os_filter = phantom.collect2(container=container, datapath=["filtered-data:os_filter:condition_1:artifact:*.cef.deviceHostname"], scope="all") + + filtered_artifact_0__cef_devicehostname = [item[0] for item in filtered_artifact_0_data_os_filter] + + ip_or_hostname_combined_value = phantom.concatenate(filtered_artifact_0__cef_devicehostname, dedup=True) + + inputs = { + "ip_or_hostname": ip_or_hostname_combined_value, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "local/internal_host_ssh_investigate", returns the playbook_run_id + playbook_run_id = phantom.playbook("local/internal_host_ssh_investigate", container=container, name="playbook_internal_host_ssh_investigate_2", inputs=inputs) + + return + + +def playbook_internal_host_ssh_log4j_investigate_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("playbook_internal_host_ssh_log4j_investigate_2() called") + + filtered_artifact_0_data_os_filter = phantom.collect2(container=container, datapath=["filtered-data:os_filter:condition_1:artifact:*.cef.deviceHostname"], scope="all") + + filtered_artifact_0__cef_devicehostname = [item[0] for item in filtered_artifact_0_data_os_filter] + + ip_or_hostname_combined_value = phantom.concatenate(filtered_artifact_0__cef_devicehostname, dedup=True) + + inputs = { + "ip_or_hostname": ip_or_hostname_combined_value, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "local/internal_host_ssh_log4j_investigate", returns the playbook_run_id + playbook_run_id = phantom.playbook("local/internal_host_ssh_log4j_investigate", container=container, name="playbook_internal_host_ssh_log4j_investigate_2", inputs=inputs) + + return + + +def playbook_internal_host_winrm_investigate_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("playbook_internal_host_winrm_investigate_2() called") + + filtered_artifact_0_data_os_filter = phantom.collect2(container=container, datapath=["filtered-data:os_filter:condition_2:artifact:*.cef.deviceHostname"], scope="all") + + filtered_artifact_0__cef_devicehostname = [item[0] for item in filtered_artifact_0_data_os_filter] + + ip_or_hostname_combined_value = phantom.concatenate(filtered_artifact_0__cef_devicehostname, dedup=True) + + inputs = { + "ip_or_hostname": ip_or_hostname_combined_value, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "local/internal_host_winrm_investigate", returns the playbook_run_id + playbook_run_id = phantom.playbook("local/internal_host_winrm_investigate", container=container, name="playbook_internal_host_winrm_investigate_2", inputs=inputs) + + return + + +def playbook_internal_host_winrm_log4j_investigate_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("playbook_internal_host_winrm_log4j_investigate_2() called") + + filtered_artifact_0_data_os_filter = phantom.collect2(container=container, datapath=["filtered-data:os_filter:condition_2:artifact:*.cef.deviceHostname"], scope="all") + + filtered_artifact_0__cef_devicehostname = [item[0] for item in filtered_artifact_0_data_os_filter] + + ip_or_hostname_combined_value = phantom.concatenate(filtered_artifact_0__cef_devicehostname, dedup=True) + + inputs = { + "ip_or_hostname": ip_or_hostname_combined_value, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "local/internal_host_winrm_log4j_investigate", returns the playbook_run_id + playbook_run_id = phantom.playbook("local/internal_host_winrm_log4j_investigate", container=container, name="playbook_internal_host_winrm_log4j_investigate_2", inputs=inputs) + + return + + +def playbook_internal_host_splunk_investigate_log4j_1(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("playbook_internal_host_splunk_investigate_log4j_1() called") + + container_artifact_data = phantom.collect2(container=container, datapath=["artifact:*.cef.deviceHostname"]) + + container_artifact_cef_item_0 = [item[0] for item in container_artifact_data] + + ip_or_hostname_combined_value = phantom.concatenate(container_artifact_cef_item_0, dedup=True) + + inputs = { + "ip_or_hostname": ip_or_hostname_combined_value, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "local/internal_host_splunk_investigate_log4j", returns the playbook_run_id + playbook_run_id = phantom.playbook("local/internal_host_splunk_investigate_log4j", container=container, name="playbook_internal_host_splunk_investigate_log4j_1", callback=os_filter, inputs=inputs) + + return + + +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # This function is called after all actions are completed. + # summary of all the action and/or all details of actions + # can be collected here. + + # summary_json = phantom.get_summary() + # if 'result' in summary_json: + # for action_result in summary_json['result']: + # if 'action_run_id' in action_result: + # action_results = phantom.get_action_results(action_run_id=action_result['action_run_id'], result_data=False, flatten=False) + # phantom.debug(action_results) + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml index b8f5548ee0..c35e7855f2 100644 --- a/playbooks/log4j_investigate_and_respond.yml +++ b/playbooks/log4j_investigate_and_respond.yml @@ -1,33 +1,26 @@ -name: Log4j Investigate And Respond -id: fc0adc96-ff2b-48b0-9a6f-63da6783fd63 +name: Log4j Investigate and Respond +id: e609d729-0076-421a-b8f7-9e545d000381 version: 1 date: '2021-12-14' -author: Phillip Royer, Splunk -type: Response -description: Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. +author: Philip Royer, Splunk +type: Investigate +description: Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. Between the parent playbook and seven sub-playbooks, each potentially compromised host found in Splunk Enteprise can be investigated and the risk can be mitigated using SSH for unix systems and WinRM for Windows systems. playbook: log4j_investigate_and_respond -how_to_implement: This playbook reads and then deletes files stored with artifact:*.cef.filePath from hosts stored in artifact:*.cef.destinationAddress. Windows Remote Management must be enabled on the remote computer. -references: -- https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html -app_list: -- "" +how_to_implement: > To start this playbook, create a custom list called "log4j_hosts" with a format as shown below + +| hostname1 | unix | +| hostname2 | windows | + +The first column should be an IP or hostname of a potentially affected log4j host, and the second should be the operating system family (either unix or windows). If the operating system is unknown it can be left blank. In the block called "fetch_hosts_from_custom_list", change the custom list name from "log4j_hosts" if needed. If the operating system family ("windows" or "unix") is not known, both ssh and winrm will be attempted. If ssh and/or winrm are not the preferred endpoint management methods, these playbooks could be ported to use Google's GRR, osquery, CrowdStrike's RTR, Carbon Black's EDR API, or similar tools. The artifact scope "all" is used throughout this playbook because the artifact list can be added to as the playbook progresses. +references: +- "https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh" +- "https://isc.sans.edu/diary/Log4j++Log4Shell+Followup%3A+What+we+see+and+how+to+defend+%28and+how+to+access+our+data%29/28122" +- "https://twitter.com/ElektroWolle/status/1469962895849140224?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1469962895849140224%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fpublish.twitter.com%2F%3Fquery%3Dhttps3A2F2Ftwitter.com2FElektroWolle2Fstatus2F1469962895849140224widget%3DTweet" +- "https://blog.cloudflare.com/cve-2021-44228-log4j-rce-0-day-mitigation/" +app_list: [] tags: - analytic_story: - - Log4Shell CVE-2021-44228 - detections: - - Curl Download and Bash Execution - - Wget Download and Bash Execution - - Linux Java Spawning Shell - - Windows Java Spawning Shell - - Java Class File download by Java User Agent - - Outbound Network Connection from Java Using Default Ports - - Log4Shell JNDI Payload Injection Attempt - - Log4Shell JNDI Payload Injection with Outbound Connection - - Detect Outbound LDAP Traffic platform_tags: - Response - playbook_fields: - - hostName - - destinationAddress + playbook_fields: [] product: - Splunk SOAR From f453a537b15eee5ae8b24c0b36e3c3cd7c0a6388 Mon Sep 17 00:00:00 2001 From: Bhavin Patel Date: Tue, 14 Dec 2021 17:28:16 -0800 Subject: [PATCH 45/53] Update java_class_file_download_by_java_user_agent.yml --- .../endpoint/java_class_file_download_by_java_user_agent.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detections/endpoint/java_class_file_download_by_java_user_agent.yml b/detections/endpoint/java_class_file_download_by_java_user_agent.yml index 1e93fb7c6d..2dd0085a84 100644 --- a/detections/endpoint/java_class_file_download_by_java_user_agent.yml +++ b/detections/endpoint/java_class_file_download_by_java_user_agent.yml @@ -63,7 +63,7 @@ tags: - name: http_method type: Other role: - - other + - Other automated_detection_testing: passed cve: - CVE-2021-44228 From 4a5154592e8acc769a9ddc7cb75f4cfb7d01bb6a Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:31:42 -0600 Subject: [PATCH 46/53] the YAMLfication of words --- playbooks/log4j_investigate_and_respond.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml index c35e7855f2..46ce8d2e8f 100644 --- a/playbooks/log4j_investigate_and_respond.yml +++ b/playbooks/log4j_investigate_and_respond.yml @@ -6,12 +6,13 @@ author: Philip Royer, Splunk type: Investigate description: Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. Between the parent playbook and seven sub-playbooks, each potentially compromised host found in Splunk Enteprise can be investigated and the risk can be mitigated using SSH for unix systems and WinRM for Windows systems. playbook: log4j_investigate_and_respond -how_to_implement: > To start this playbook, create a custom list called "log4j_hosts" with a format as shown below +how_to_implement: > + To start this playbook, create a custom list called "log4j_hosts" with a format as shown below -| hostname1 | unix | -| hostname2 | windows | + | hostname1 | unix | + | hostname2 | windows | -The first column should be an IP or hostname of a potentially affected log4j host, and the second should be the operating system family (either unix or windows). If the operating system is unknown it can be left blank. In the block called "fetch_hosts_from_custom_list", change the custom list name from "log4j_hosts" if needed. If the operating system family ("windows" or "unix") is not known, both ssh and winrm will be attempted. If ssh and/or winrm are not the preferred endpoint management methods, these playbooks could be ported to use Google's GRR, osquery, CrowdStrike's RTR, Carbon Black's EDR API, or similar tools. The artifact scope "all" is used throughout this playbook because the artifact list can be added to as the playbook progresses. + The first column should be an IP or hostname of a potentially affected log4j host, and the second should be the operating system family (either unix or windows). If the operating system is unknown it can be left blank. In the block called "fetch_hosts_from_custom_list", change the custom list name from "log4j_hosts" if needed. If the operating system family ("windows" or "unix") is not known, both ssh and winrm will be attempted. If ssh and/or winrm are not the preferred endpoint management methods, these playbooks could be ported to use Google's GRR, osquery, CrowdStrike's RTR, Carbon Black's EDR API, or similar tools. The artifact scope "all" is used throughout this playbook because the artifact list can be added to as the playbook progresses. references: - "https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh" - "https://isc.sans.edu/diary/Log4j++Log4Shell+Followup%3A+What+we+see+and+how+to+defend+%28and+how+to+access+our+data%29/28122" From 2cd9e3940d008453f7022299b368500acb3263ee Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:38:19 -0600 Subject: [PATCH 47/53] Two more yamls --- playbooks/internal_host_winrm_investigate.yml | 18 ++++++++++++++++++ .../internal_host_winrm_log4j_investigate.yml | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 playbooks/internal_host_winrm_investigate.yml create mode 100644 playbooks/internal_host_winrm_log4j_investigate.yml diff --git a/playbooks/internal_host_winrm_investigate.yml b/playbooks/internal_host_winrm_investigate.yml new file mode 100644 index 0000000000..cb711f2d61 --- /dev/null +++ b/playbooks/internal_host_winrm_investigate.yml @@ -0,0 +1,18 @@ +name: Internal Host WinRM Investigate +id: 32fd9db5-5201-4a2f-b2c2-9299c7b3495d +version: 1 +date: '2021-12-14' +author: Kelby Shelton, Splunk +type: Investigate +description: Performs a general investigation on key aspects of a windows device using windows remote management. Important files related to the endpoint are generated, bundled into a zip, and copied to the container vault. +playbook: internal_host_winrm_investigate +how_to_implement: The winrm asset requires Administrator access to gather certain files. +references: [] +app_list: +- "WinRM" +tags: + platform_tags: + - Response + playbook_fields: [] + product: + - Splunk SOAR diff --git a/playbooks/internal_host_winrm_log4j_investigate.yml b/playbooks/internal_host_winrm_log4j_investigate.yml new file mode 100644 index 0000000000..069a25331f --- /dev/null +++ b/playbooks/internal_host_winrm_log4j_investigate.yml @@ -0,0 +1,18 @@ +name: Internal Host WinRM Log4j Investigate +id: 2cf7c9f4-b273-44f6-a27c-e0db668ff05a +version: 1 +date: '2021-12-14' +author: Kelby Shelton, Splunk +type: Investigate +description: Published in response to CVE-2021-44228, this playbook uses WinRM to scan Windows endpoints for the presence of "jndilookup.class" in all .jar files. The presence of that string could indicate a log4j vulnerability. +playbook: internal_host_winrm_log4j_investigate +how_to_implement: The winrm asset requires Administrator access to scan the whole file system. +references: ["https://twitter.com/CyberRaiju/status/1469505677580124160"] +app_list: +- "WinRM" +tags: + platform_tags: + - Response + playbook_fields: [] + product: + - Splunk SOAR From fafa45fcc942387a8a05fd9c7b97208498ef7392 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:41:19 -0600 Subject: [PATCH 48/53] fixing backslide --- playbooks/log4j_investigate_and_respond.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/playbooks/log4j_investigate_and_respond.yml b/playbooks/log4j_investigate_and_respond.yml index 46ce8d2e8f..92109be805 100644 --- a/playbooks/log4j_investigate_and_respond.yml +++ b/playbooks/log4j_investigate_and_respond.yml @@ -22,6 +22,18 @@ app_list: [] tags: platform_tags: - Response + analytic_story: + - Log4Shell CVE-2021-44228 + detections: + - Curl Download and Bash Execution + - Wget Download and Bash Execution + - Linux Java Spawning Shell + - Windows Java Spawning Shell + - Java Class File download by Java User Agent + - Outbound Network Connection from Java Using Default Ports + - Log4Shell JNDI Payload Injection Attempt + - Log4Shell JNDI Payload Injection with Outbound Connection + - Detect Outbound LDAP Traffic playbook_fields: [] product: - Splunk SOAR From f8d3d5a1f92a9268113bed33006b4142950f545e Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:43:19 -0600 Subject: [PATCH 49/53] SSH response --- playbooks/internal_host_ssh_log4j_respond.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 playbooks/internal_host_ssh_log4j_respond.yml diff --git a/playbooks/internal_host_ssh_log4j_respond.yml b/playbooks/internal_host_ssh_log4j_respond.yml new file mode 100644 index 0000000000..70ccfe1842 --- /dev/null +++ b/playbooks/internal_host_ssh_log4j_respond.yml @@ -0,0 +1,18 @@ +name: Internal Host SSH Log4j Respond +id: 6ea2007c-8ef8-4647-a4a4-7825cfee3866 +version: 1 +date: '2021-12-14' +author: Kelby Shelton, Splunk +type: Respond +description: Published in response to CVE-2021-44228, this playbook accepts a list of hosts and filenames to remediate on the endpoint. If filenames are provided, the endpoints will be searched and then the user can approve deletion. Then the user is prompted to quarantine the endpoint. +playbook: internal_host_ssh_log4j_respond +how_to_implement: The ssh asset may require ssh access to delete some files depending on their permissions. +references: ["https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh"] +app_list: +- "SSH" +tags: + platform_tags: + - Response + playbook_fields: [] + product: + - Splunk SOAR From 82b45a1cf9154e5e8b9ea7f4ec61eb89a80b3139 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 14 Dec 2021 19:47:53 -0600 Subject: [PATCH 50/53] the final push --- playbooks/internal_host_winrm_investigate.yml | 2 +- .../internal_host_winrm_log4j_investigate.yml | 2 +- .../internal_host_winrm_log4j_respond.yml | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 playbooks/internal_host_winrm_log4j_respond.yml diff --git a/playbooks/internal_host_winrm_investigate.yml b/playbooks/internal_host_winrm_investigate.yml index cb711f2d61..56a27b5b1c 100644 --- a/playbooks/internal_host_winrm_investigate.yml +++ b/playbooks/internal_host_winrm_investigate.yml @@ -9,7 +9,7 @@ playbook: internal_host_winrm_investigate how_to_implement: The winrm asset requires Administrator access to gather certain files. references: [] app_list: -- "WinRM" +- "Windows Remote Management" tags: platform_tags: - Response diff --git a/playbooks/internal_host_winrm_log4j_investigate.yml b/playbooks/internal_host_winrm_log4j_investigate.yml index 069a25331f..64ceeeb297 100644 --- a/playbooks/internal_host_winrm_log4j_investigate.yml +++ b/playbooks/internal_host_winrm_log4j_investigate.yml @@ -9,7 +9,7 @@ playbook: internal_host_winrm_log4j_investigate how_to_implement: The winrm asset requires Administrator access to scan the whole file system. references: ["https://twitter.com/CyberRaiju/status/1469505677580124160"] app_list: -- "WinRM" +- "Windows Remote Management" tags: platform_tags: - Response diff --git a/playbooks/internal_host_winrm_log4j_respond.yml b/playbooks/internal_host_winrm_log4j_respond.yml new file mode 100644 index 0000000000..2390d54c95 --- /dev/null +++ b/playbooks/internal_host_winrm_log4j_respond.yml @@ -0,0 +1,18 @@ +name: Internal Host WinRM Response +id: 32fd9db5-5201-4b2f-b2c2-9299c7b3495d +version: 1 +date: '2021-12-14' +author: Kelby Shelton, Splunk +type: Investigate +description: Published in response to CVE-2021-44228, this playbook accepts a list of hosts and filenames to remediate on the endpoint. If filenames are provided, the endpoints will be searched and then the user can approve deletion. Then the user is prompted to quarantine the endpoint. +playbook: internal_host_winrm_log4j_respond +how_to_implement: The winrm asset requires Administrator access to gather certain files. +references: [] +app_list: +- "Windows Remote Management" +tags: + platform_tags: + - Response + playbook_fields: [] + product: + - Splunk SOAR From cea91f725eeca37eee564afaef77e6b401239784 Mon Sep 17 00:00:00 2001 From: mhaag-spl <5632822+MHaggis@users.noreply.github.com> Date: Tue, 14 Dec 2021 19:00:04 -0700 Subject: [PATCH 51/53] Create hunting_for_log4shell.test.yml --- tests/endpoint/hunting_for_log4shell.test.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/endpoint/hunting_for_log4shell.test.yml diff --git a/tests/endpoint/hunting_for_log4shell.test.yml b/tests/endpoint/hunting_for_log4shell.test.yml new file mode 100644 index 0000000000..2cc6e1d6d4 --- /dev/null +++ b/tests/endpoint/hunting_for_log4shell.test.yml @@ -0,0 +1,12 @@ +name: Hunting for Log4Shell Unit Test +tests: +- name: Hunting for Log4Shell + file: endpoint/hunting_for_log4shell.yml + pass_condition: '| stats count | where count > 0' + earliest_time: '-24h' + latest_time: 'now' + attack_data: + - file_name: log4shell-nginx.log + data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/log4shell-nginx.log + source: /var/log/nginx/access.log + sourcetype: nginx:plus:kv \ No newline at end of file From 97a20df8ae7e4c4462093c2ce8c9678b10079c3e Mon Sep 17 00:00:00 2001 From: root Date: Wed, 15 Dec 2021 02:19:55 +0000 Subject: [PATCH 52/53] Added detection testing service results inHunting for Log4Shell --- detections/endpoint/hunting_for_log4shell.yml | 88 ++++++++++++------- 1 file changed, 54 insertions(+), 34 deletions(-) diff --git a/detections/endpoint/hunting_for_log4shell.yml b/detections/endpoint/hunting_for_log4shell.yml index eb70cdded4..0a3dd4eafa 100644 --- a/detections/endpoint/hunting_for_log4shell.yml +++ b/detections/endpoint/hunting_for_log4shell.yml @@ -5,58 +5,77 @@ date: '2021-12-14' author: Michael Haag, Splunk type: Hunting datamodel: - - Web -description: 'The following hunting query assists with quickly assessing CVE-2021-44228, or Log4Shell, activity mapped to the Web Datamodel. This is a combination query attempting to identify, score and dashboard. Because the Log4Shell vulnerability requires the string to be in the logs, this will work to identify the activity anywhere in the HTTP headers using _raw. Modify the first line to use the same pattern matching against other log sources. Scoring is based on a simple rubric of 0-5. 5 being the best match, and less than 5 meant to identify additional patterns that will equate to a higher total score. \ +- Web +description: 'The following hunting query assists with quickly assessing CVE-2021-44228, + or Log4Shell, activity mapped to the Web Datamodel. This is a combination query + attempting to identify, score and dashboard. Because the Log4Shell vulnerability + requires the string to be in the logs, this will work to identify the activity anywhere + in the HTTP headers using _raw. Modify the first line to use the same pattern matching + against other log sources. Scoring is based on a simple rubric of 0-5. 5 being the + best match, and less than 5 meant to identify additional patterns that will equate + to a higher total score. \ The first jndi match identifies the standard pattern of `{jndi:` \ - jndi_fastmatch is meant to identify any jndi in the logs. The score is set low and is meant to be the "base" score used later. \ + jndi_fastmatch is meant to identify any jndi in the logs. The score is set low and + is meant to be the "base" score used later. \ - jndi_proto is a protocol match that identifies `jndi` and one of `ldap, ldaps, rmi, dns, nis, iiop, corba, nds, http, https.` \ + jndi_proto is a protocol match that identifies `jndi` and one of `ldap, ldaps, rmi, + dns, nis, iiop, corba, nds, http, https.` \ - all_match is a very well written regex by https://gist.github.com/Schvenn that identifies nearly all patterns of this attack behavior. \ + all_match is a very well written regex by https://gist.github.com/Schvenn that identifies + nearly all patterns of this attack behavior. \ - env works to identify environment variables in the header, meant to capture `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and `env`. \ + env works to identify environment variables in the header, meant to capture `AWS_ACCESS_KEY_ID`, + `AWS_SECRET_ACCESS_KEY` and `env`. \ - uri_detect is string match looking for the common uri paths currently being scanned/abused in the wild. \ + uri_detect is string match looking for the common uri paths currently being scanned/abused + in the wild. \ - keywords matches on enumerated values that, like `$ctx:loginId`, that may be found in the header used by the adversary. \ + keywords matches on enumerated values that, like `$ctx:loginId`, that may be found + in the header used by the adversary. \ - lookup matching is meant to catch some basic obfuscation that has been identified using upper, lower and date. \ + lookup matching is meant to catch some basic obfuscation that has been identified + using upper, lower and date. \ - Scoring will then occur based on any findings. The base score is meant to be 2 , created by jndi_fastmatch. Everything else is meant to increase that score. \ + Scoring will then occur based on any findings. The base score is meant to be 2 , + created by jndi_fastmatch. Everything else is meant to increase that score. \ - Finally, a simple table is created to show the scoring and the _raw field. Sort based on score or columns of interest.' -search: '| from datamodel Web.Web - | eval jndi=if(match(_raw, "(\{|%7B)[jJnNdDiI]{4}:"),4,0) - | eval jndi_fastmatch=if(match(_raw, "[jJnNdDiI]{4}"),2,0) - | eval jndi_proto=if(match(_raw,"(?i)jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http|https):"),5,0) + Finally, a simple table is created to show the scoring and the _raw field. Sort + based on score or columns of interest.' +search: '| from datamodel Web.Web | eval jndi=if(match(_raw, "(\{|%7B)[jJnNdDiI]{4}:"),4,0) + | eval jndi_fastmatch=if(match(_raw, "[jJnNdDiI]{4}"),2,0) | eval jndi_proto=if(match(_raw,"(?i)jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http|https):"),5,0) | eval all_match = if(match(_raw, "(?i)(%(25){0,}20|\s)*(%(25){0,}24|\$)(%(25){0,}20|\s)*(%(25){0,}7B|{)(%(25){0,}20|\s)*(%(25){0,}(6A|4A)|J)(%(25){0,}(6E|4E)|N)(%(25){0,}(64|44)|D)(%(25){0,}(69|49)|I)(%(25){0,}20|\s)*(%(25){0,}3A|:)[\w\%]+(%(25){1,}3A|:)(%(25){1,}2F|\/)[^\n]+"),5,0) - | eval env_var = if(match(_raw, "env:") OR match(_raw, "env:AWS_ACCESS_KEY_ID") OR match(_raw, "env:AWS_SECRET_ACCESS_KEY"),5,0) - | eval uridetect = if(match(_raw, "(?i)Basic\/Command\/Base64|Basic\/ReverseShell|Basic\/TomcatMemshell|Basic\/JBossMemshell|Basic\/WebsphereMemshell|Basic\/SpringMemshell|Basic\/Command|Deserialization\/CommonsCollectionsK|Deserialization\/CommonsBeanutils|Deserialization\/Jre8u20\/TomcatMemshell|Deserialization\/CVE_2020_2555\/WeblogicMemshell|TomcatBypass|GroovyBypass|WebsphereBypass"),4,0) + | eval env_var = if(match(_raw, "env:") OR match(_raw, "env:AWS_ACCESS_KEY_ID") + OR match(_raw, "env:AWS_SECRET_ACCESS_KEY"),5,0) | eval uridetect = if(match(_raw, + "(?i)Basic\/Command\/Base64|Basic\/ReverseShell|Basic\/TomcatMemshell|Basic\/JBossMemshell|Basic\/WebsphereMemshell|Basic\/SpringMemshell|Basic\/Command|Deserialization\/CommonsCollectionsK|Deserialization\/CommonsBeanutils|Deserialization\/Jre8u20\/TomcatMemshell|Deserialization\/CVE_2020_2555\/WeblogicMemshell|TomcatBypass|GroovyBypass|WebsphereBypass"),4,0) | eval keywords = if(match(_raw,"(?i)\$\{ctx\:loginId\}|\$\{map\:type\}|\$\{filename\}|\$\{date\:MM-dd-yyyy\}|\$\{docker\:containerId\}|\$\{docker\:containerName\}|\$\{docker\:imageName\}|\$\{env\:USER\}|\$\{event\:Marker\}|\$\{mdc\:UserId\}|\$\{java\:runtime\}|\$\{java\:vm\}|\$\{java\:os\}|\$\{jndi\:logging/context-name\}|\$\{hostName\}|\$\{docker\:containerId\}|\$\{k8s\:accountName\}|\$\{k8s\:clusterName\}|\$\{k8s\:containerId\}|\$\{k8s\:containerName\}|\$\{k8s\:host\}|\$\{k8s\:labels.app\}|\$\{k8s\:labels.podTemplateHash\}|\$\{k8s\:masterUrl\}|\$\{k8s\:namespaceId\}|\$\{k8s\:namespaceName\}|\$\{k8s\:podId\}|\$\{k8s\:podIp\}|\$\{k8s\:podName\}|\$\{k8s\:imageId\}|\$\{k8s\:imageName\}|\$\{log4j\:configLocation\}|\$\{log4j\:configParentLocation\}|\$\{spring\:spring.application.name\}|\$\{main\:myString\}|\$\{main\:0\}|\$\{main\:1\}|\$\{main\:2\}|\$\{main\:3\}|\$\{main\:4\}|\$\{main\:bar\}|\$\{name\}|\$\{marker\}|\$\{marker\:name\}|\$\{spring\:profiles.active[0]|\$\{sys\:logPath\}|\$\{web\:rootDir\}|\$\{sys\:user.name\}"),4,0) - | eval obf = if(match(_raw, "(\$|%24)[^ /]*({|%7b)[^ /]*(j|%6a)[^ /]*(n|%6e)[^ /]*(d|%64)[^ /]*(i|%69)[^ /]*(:|%3a)[^ /]*(:|%3a)[^ /]*(/|%2f)"),5,0) - | eval lookups = if(match(_raw, "date:") OR match(_raw, "upper:") OR match(_raw, "lower:"),4,0) - | addtotals - fieldname=Score, jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, obf, lookups - | where Score > 2 - | stats values(Score) by jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, lookups, obf, _raw - | `hunting_for_log4shell_filter`' -how_to_implement: Out of the box, the Web datamodel is required to be pre-filled. However, tested was performed against raw httpd access logs. Change the first line to any dataset to pass the regex's against. -known_false_positives: It is highly possible you will find false positives, however, the base score is set to 2 for _any_ jndi found in raw logs. tune and change as needed, include any filtering. + | eval obf = if(match(_raw, "(\$|%24)[^ /]*({|%7b)[^ /]*(j|%6a)[^ /]*(n|%6e)[^ /]*(d|%64)[^ + /]*(i|%69)[^ /]*(:|%3a)[^ /]*(:|%3a)[^ /]*(/|%2f)"),5,0) | eval lookups = if(match(_raw, + "date:") OR match(_raw, "upper:") OR match(_raw, "lower:"),4,0) | addtotals fieldname=Score, + jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, obf, + lookups | where Score > 2 | stats values(Score) by jndi, jndi_proto, env_var, uridetect, + all_match, jndi_fastmatch, keywords, lookups, obf, _raw | `hunting_for_log4shell_filter`' +how_to_implement: Out of the box, the Web datamodel is required to be pre-filled. + However, tested was performed against raw httpd access logs. Change the first line + to any dataset to pass the regex's against. +known_false_positives: It is highly possible you will find false positives, however, + the base score is set to 2 for _any_ jndi found in raw logs. tune and change as + needed, include any filtering. references: - - https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72 - - https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b#gistcomment-3994449 - - https://regex101.com/r/OSrm0q/1/ - - https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar - - https://news.sophos.com/en-us/2021/12/12/log4shell-hell-anatomy-of-an-exploit-outbreak/ - - https://gist.github.com/MHaggis/1899b8554f38c8692a9fb0ceba60b44c - - https://twitter.com/sasi2103/status/1469764719850442760?s=20 +- https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72 +- https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b#gistcomment-3994449 +- https://regex101.com/r/OSrm0q/1/ +- https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar +- https://news.sophos.com/en-us/2021/12/12/log4shell-hell-anatomy-of-an-exploit-outbreak/ +- https://gist.github.com/MHaggis/1899b8554f38c8692a9fb0ceba60b44c +- https://twitter.com/sasi2103/status/1469764719850442760?s=20 tags: analytic_story: - Log4Shell CVE-2021-44228 asset_type: Web Server - dataset: [] + dataset: + - https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/log4shell-nginx.log kill_chain_phases: - Exploitation mitre_attack_id: @@ -96,3 +115,4 @@ tags: - other cve: - CVE-2021-44228 + automated_detection_testing: passed From 7c72f6e192d8c16b0fa99a94e55bf2fe655a7c42 Mon Sep 17 00:00:00 2001 From: d1vious Date: Tue, 14 Dec 2021 21:40:19 -0500 Subject: [PATCH 53/53] updating docs --- docs/_pages/detections.md | 2 +- docs/_pages/endpoint_filesystem.md | 9 + docs/_pages/playbooks.md | 7 +- .../internal_host_ssh_investigate.md | 44 + .../internal_host_ssh_log4j_investigate.md | 44 + .../internal_host_ssh_log4j_respond.md | 44 + .../internal_host_winrm_investigate.md | 41 + .../internal_host_winrm_log4j_investigate.md | 44 + .../internal_host_winrm_response.md | 41 + .../log4j_investigate_and_respond.md | 6330 +++++++++++++++++ .../log4j_splunk_investigate_and_respond.md | 46 + ...excessive_number_of_office_files_copied.md | 89 + ...2021-12-07-high_file_deletion_frequency.md | 100 + ...-12-10-curl_download_and_bash_execution.md | 115 + ...-12-11-wget_download_and_bash_execution.md | 115 + ...-cmd_carry_out_string_command_parameter.md | 115 + ...2021-12-13-detect_outbound_ldap_traffic.md | 110 + ..._class_file_download_by_java_user_agent.md | 107 + .../2021-12-13-linux_java_spawning_shell.md | 114 + ...og4shell_jndi_payload_injection_attempt.md | 118 + ...load_injection_with_outbound_connection.md | 125 + ...onnection_from_java_using_default_ports.md | 106 + ...2021-12-13-windows_java_spawning_shells.md | 114 + .../2021-12-14-hunting_for_log4shell.md | 228 + docs/_stories/credential_dumping.md | 2 +- docs/_stories/log4shell_cve-2021-44228.md | 59 + docs/index.markdown | 2 +- 27 files changed, 8267 insertions(+), 4 deletions(-) create mode 100644 docs/_pages/endpoint_filesystem.md create mode 100644 docs/_playbooks/internal_host_ssh_investigate.md create mode 100644 docs/_playbooks/internal_host_ssh_log4j_investigate.md create mode 100644 docs/_playbooks/internal_host_ssh_log4j_respond.md create mode 100644 docs/_playbooks/internal_host_winrm_investigate.md create mode 100644 docs/_playbooks/internal_host_winrm_log4j_investigate.md create mode 100644 docs/_playbooks/internal_host_winrm_response.md create mode 100644 docs/_playbooks/log4j_investigate_and_respond.md create mode 100644 docs/_playbooks/log4j_splunk_investigate_and_respond.md create mode 100644 docs/_posts/2021-12-07-excessive_number_of_office_files_copied.md create mode 100644 docs/_posts/2021-12-07-high_file_deletion_frequency.md create mode 100644 docs/_posts/2021-12-10-curl_download_and_bash_execution.md create mode 100644 docs/_posts/2021-12-11-wget_download_and_bash_execution.md create mode 100644 docs/_posts/2021-12-13-cmd_carry_out_string_command_parameter.md create mode 100644 docs/_posts/2021-12-13-detect_outbound_ldap_traffic.md create mode 100644 docs/_posts/2021-12-13-java_class_file_download_by_java_user_agent.md create mode 100644 docs/_posts/2021-12-13-linux_java_spawning_shell.md create mode 100644 docs/_posts/2021-12-13-log4shell_jndi_payload_injection_attempt.md create mode 100644 docs/_posts/2021-12-13-log4shell_jndi_payload_injection_with_outbound_connection.md create mode 100644 docs/_posts/2021-12-13-outbound_network_connection_from_java_using_default_ports.md create mode 100644 docs/_posts/2021-12-13-windows_java_spawning_shells.md create mode 100644 docs/_posts/2021-12-14-hunting_for_log4shell.md create mode 100644 docs/_stories/log4shell_cve-2021-44228.md diff --git a/docs/_pages/detections.md b/docs/_pages/detections.md index 49496d4d0a..494b87e564 100644 --- a/docs/_pages/detections.md +++ b/docs/_pages/detections.md @@ -60,8 +60,8 @@ sidebar: | [Attempt To Delete Services](/endpoint/attempt_to_delete_services/) | [Service Stop](/tags/#service-stop), [Create or Modify System Process](/tags/#create-or-modify-system-process), [Windows Service](/tags/#windows-service) | TTP | | [Attempt To Disable Services](/endpoint/attempt_to_disable_services/) | [Service Stop](/tags/#service-stop) | TTP | | [Attempt To Stop Security Service](/endpoint/attempt_to_stop_security_service/) | [Disable or Modify Tools](/tags/#disable-or-modify-tools), [Impair Defenses](/tags/#impair-defenses) | TTP | -| [Attempted Credential Dump From Registry via Reg exe](/endpoint/attempted_credential_dump_from_registry_via_reg_exe/) | [Security Account Manager](/tags/#security-account-manager), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Attempted Credential Dump From Registry via Reg exe](/endpoint/attempted_credential_dump_from_registry_via_reg_exe/) | [OS Credential Dumping](/tags/#os-credential-dumping), [Security Account Manager](/tags/#security-account-manager) | TTP | +| [Attempted Credential Dump From Registry via Reg exe](/endpoint/attempted_credential_dump_from_registry_via_reg_exe/) | [Security Account Manager](/tags/#security-account-manager), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Auto Admin Logon Registry Entry](/endpoint/auto_admin_logon_registry_entry/) | [Credentials in Registry](/tags/#credentials-in-registry), [Unsecured Credentials](/tags/#unsecured-credentials) | TTP | | [BCDEdit Failure Recovery Modification](/endpoint/bcdedit_failure_recovery_modification/) | [Inhibit System Recovery](/tags/#inhibit-system-recovery) | TTP | | [BCDEdit Failure Recovery Modification](/endpoint/bcdedit_failure_recovery_modification/) | [Inhibit System Recovery](/tags/#inhibit-system-recovery) | TTP | diff --git a/docs/_pages/endpoint_filesystem.md b/docs/_pages/endpoint_filesystem.md new file mode 100644 index 0000000000..94b3445de7 --- /dev/null +++ b/docs/_pages/endpoint_filesystem.md @@ -0,0 +1,9 @@ +--- +title: Endpoint_Filesystem +layout: tag +author_profile: false +taxonomy: Endpoint_Filesystem +permalink: /detections/endpoint_filesystem/ +sidebar: + nav: "detections" +--- \ No newline at end of file diff --git a/docs/_pages/playbooks.md b/docs/_pages/playbooks.md index 6de41ae334..63068c9e4c 100644 --- a/docs/_pages/playbooks.md +++ b/docs/_pages/playbooks.md @@ -13,8 +13,13 @@ sidebar: | [Active Directory Reset password](/playbooks/active_directory_reset_password/)| None | Response | | [Crowdstrike Malware Triage](/playbooks/crowdstrike_malware_triage/)| None | Response | | [Delete Detected Files](/playbooks/delete_detected_files/)|[Executable File Written in Administrative SMB Share](/detections/TTP/executable_file_written_in_administrative_smb_share)| Response | +| [Internal Host SSH Investigate](/playbooks/internal_host_ssh_investigate/)| None | Investigate | | [Internal Host SSH Log4j Investigate](/playbooks/internal_host_ssh_log4j_investigate/)| None | Investigate | -| [Log4j Investigate And Respond](/playbooks/log4j_investigate_and_respond/)|[Curl Download and Bash Execution](/detections/TTP/curl_download_and_bash_execution)[Wget Download and Bash Execution](/detections/TTP/wget_download_and_bash_execution)[Linux Java Spawning Shell](/detections/TTP/linux_java_spawning_shell)[Java Class File download by Java User Agent](/detections/TTP/java_class_file_download_by_java_user_agent)[Outbound Network Connection from Java Using Default Ports](/detections/TTP/outbound_network_connection_from_java_using_default_ports)[Log4Shell JNDI Payload Injection Attempt](/detections/Anomaly/log4shell_jndi_payload_injection_attempt)[Log4Shell JNDI Payload Injection with Outbound Connection](/detections/Anomaly/log4shell_jndi_payload_injection_with_outbound_connection)[Detect Outbound LDAP Traffic](/detections/Hunting/detect_outbound_ldap_traffic)| Response | +| [Internal Host SSH Log4j Respond](/playbooks/internal_host_ssh_log4j_respond/)| None | Respond | +| [Internal Host WinRM Investigate](/playbooks/internal_host_winrm_investigate/)| None | Investigate | +| [Internal Host WinRM Log4j Investigate](/playbooks/internal_host_winrm_log4j_investigate/)| None | Investigate | +| [Internal Host WinRM Response](/playbooks/internal_host_winrm_response/)| None | Investigate | +| [Log4j Investigate and Respond](/playbooks/log4j_investigate_and_respond/)|[Curl Download and Bash Execution](/detections/TTP/curl_download_and_bash_execution)[Wget Download and Bash Execution](/detections/TTP/wget_download_and_bash_execution)[Linux Java Spawning Shell](/detections/TTP/linux_java_spawning_shell)[Java Class File download by Java User Agent](/detections/TTP/java_class_file_download_by_java_user_agent)[Outbound Network Connection from Java Using Default Ports](/detections/TTP/outbound_network_connection_from_java_using_default_ports)[Log4Shell JNDI Payload Injection Attempt](/detections/Anomaly/log4shell_jndi_payload_injection_attempt)[Log4Shell JNDI Payload Injection with Outbound Connection](/detections/Anomaly/log4shell_jndi_payload_injection_with_outbound_connection)[Detect Outbound LDAP Traffic](/detections/Hunting/detect_outbound_ldap_traffic)| Investigate | | [Log4j Splunk Investigate And Respond](/playbooks/log4j_splunk_investigate_and_respond/)| None | Investigation | | [Ransomware Investigate and Contain](/playbooks/ransomware_investigate_and_contain/)|[Conti Common Exec parameter](/detections/TTP/conti_common_exec_parameter)| Response | | [Risk Notable Block Indicators](/playbooks/risk_notable_block_indicators/)| None | Response | diff --git a/docs/_playbooks/internal_host_ssh_investigate.md b/docs/_playbooks/internal_host_ssh_investigate.md new file mode 100644 index 0000000000..87e9785120 --- /dev/null +++ b/docs/_playbooks/internal_host_ssh_investigate.md @@ -0,0 +1,44 @@ +--- +title: "Internal Host SSH Investigate" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigate + - Splunk SOAR + - SSH +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting generic information about the processes, user activity, and network activity. This includes the process list, login history, cron jobs, and open sockets. The results are zipped up in .csv files and added to the vault for an analyst to review. + +- **Type**: Investigate +- **Product**: Splunk SOAR +- **Apps**: [SSH](https://splunkbase.splunk.com/apps/#/search/SSH/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Philip Royer, Splunk +- **ID**: fdb65816-6688-41d8-8698-755b7b4ec44e + +#### Associated Detections + + +#### How To Implement +The ssh asset requires sudo access to view the processes with open sockets. + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_ssh_investigate.png) + +#### Required field + + +#### Reference + +* [https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh](https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_ssh_investigate.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/internal_host_ssh_log4j_investigate.md b/docs/_playbooks/internal_host_ssh_log4j_investigate.md new file mode 100644 index 0000000000..4613b0217b --- /dev/null +++ b/docs/_playbooks/internal_host_ssh_log4j_investigate.md @@ -0,0 +1,44 @@ +--- +title: "Internal Host SSH Log4j Investigate" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigate + - Splunk SOAR + - SSH +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Investigate an internal unix host using SSH. This pushes a bash script to the endpoint and runs it, collecting information specific to the December 2021 log4j vulnerability disclosure. This includes the java version installed on the host, any running java processes, and the results of a scan for the affected JndiLookup.class file or log4j .jar files. + +- **Type**: Investigate +- **Product**: Splunk SOAR +- **Apps**: [SSH](https://splunkbase.splunk.com/apps/#/search/SSH/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Philip Royer, Splunk +- **ID**: 49b2b88c-8e22-48a6-8808-ace1efcb194b + +#### Associated Detections + + +#### How To Implement +The ssh asset requires sudo access to scan the whole file system. + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_ssh_log4j_investigate.png) + +#### Required field + + +#### Reference + +* [https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh](https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_ssh_log4j_investigate.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/internal_host_ssh_log4j_respond.md b/docs/_playbooks/internal_host_ssh_log4j_respond.md new file mode 100644 index 0000000000..e328bbe6f1 --- /dev/null +++ b/docs/_playbooks/internal_host_ssh_log4j_respond.md @@ -0,0 +1,44 @@ +--- +title: "Internal Host SSH Log4j Respond" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Respond + - Splunk SOAR + - SSH +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Published in response to CVE-2021-44228, this playbook accepts a list of hosts and filenames to remediate on the endpoint. If filenames are provided, the endpoints will be searched and then the user can approve deletion. Then the user is prompted to quarantine the endpoint. + +- **Type**: Respond +- **Product**: Splunk SOAR +- **Apps**: [SSH](https://splunkbase.splunk.com/apps/#/search/SSH/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Kelby Shelton, Splunk +- **ID**: 6ea2007c-8ef8-4647-a4a4-7825cfee3866 + +#### Associated Detections + + +#### How To Implement +The ssh asset may require ssh access to delete some files depending on their permissions. + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_ssh_log4j_respond.png) + +#### Required field + + +#### Reference + +* [https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh](https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_ssh_log4j_respond.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/internal_host_winrm_investigate.md b/docs/_playbooks/internal_host_winrm_investigate.md new file mode 100644 index 0000000000..6ee0cd2482 --- /dev/null +++ b/docs/_playbooks/internal_host_winrm_investigate.md @@ -0,0 +1,41 @@ +--- +title: "Internal Host WinRM Investigate" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigate + - Splunk SOAR + - Windows Remote Management +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Performs a general investigation on key aspects of a windows device using windows remote management. Important files related to the endpoint are generated, bundled into a zip, and copied to the container vault. + +- **Type**: Investigate +- **Product**: Splunk SOAR +- **Apps**: [Windows Remote Management](https://splunkbase.splunk.com/apps/#/search/Windows Remote Management/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Kelby Shelton, Splunk +- **ID**: 32fd9db5-5201-4a2f-b2c2-9299c7b3495d + +#### Associated Detections + + +#### How To Implement +The winrm asset requires Administrator access to gather certain files. + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_winrm_investigate.png) + +#### Required field + + +#### Reference + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_winrm_investigate.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/internal_host_winrm_log4j_investigate.md b/docs/_playbooks/internal_host_winrm_log4j_investigate.md new file mode 100644 index 0000000000..12dbc99dfb --- /dev/null +++ b/docs/_playbooks/internal_host_winrm_log4j_investigate.md @@ -0,0 +1,44 @@ +--- +title: "Internal Host WinRM Log4j Investigate" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigate + - Splunk SOAR + - Windows Remote Management +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Published in response to CVE-2021-44228, this playbook uses WinRM to scan Windows endpoints for the presence of "jndilookup.class" in all .jar files. The presence of that string could indicate a log4j vulnerability. + +- **Type**: Investigate +- **Product**: Splunk SOAR +- **Apps**: [Windows Remote Management](https://splunkbase.splunk.com/apps/#/search/Windows Remote Management/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Kelby Shelton, Splunk +- **ID**: 2cf7c9f4-b273-44f6-a27c-e0db668ff05a + +#### Associated Detections + + +#### How To Implement +The winrm asset requires Administrator access to scan the whole file system. + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_winrm_log4j_investigate.png) + +#### Required field + + +#### Reference + +* [https://twitter.com/CyberRaiju/status/1469505677580124160](https://twitter.com/CyberRaiju/status/1469505677580124160) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_winrm_log4j_investigate.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/internal_host_winrm_response.md b/docs/_playbooks/internal_host_winrm_response.md new file mode 100644 index 0000000000..24f214ddbb --- /dev/null +++ b/docs/_playbooks/internal_host_winrm_response.md @@ -0,0 +1,41 @@ +--- +title: "Internal Host WinRM Response" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigate + - Splunk SOAR + - Windows Remote Management +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Published in response to CVE-2021-44228, this playbook accepts a list of hosts and filenames to remediate on the endpoint. If filenames are provided, the endpoints will be searched and then the user can approve deletion. Then the user is prompted to quarantine the endpoint. + +- **Type**: Investigate +- **Product**: Splunk SOAR +- **Apps**: [Windows Remote Management](https://splunkbase.splunk.com/apps/#/search/Windows Remote Management/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Kelby Shelton, Splunk +- **ID**: 32fd9db5-5201-4b2f-b2c2-9299c7b3495d + +#### Associated Detections + + +#### How To Implement +The winrm asset requires Administrator access to gather certain files. + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_winrm_log4j_respond.png) + +#### Required field + + +#### Reference + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_winrm_log4j_respond.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/log4j_investigate_and_respond.md b/docs/_playbooks/log4j_investigate_and_respond.md new file mode 100644 index 0000000000..f20a8750c0 --- /dev/null +++ b/docs/_playbooks/log4j_investigate_and_respond.md @@ -0,0 +1,6330 @@ +--- +title: "Log4j Investigate and Respond" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigate + - Splunk SOAR +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Published in response to CVE-2021-44228, this playbook and its sub-playbooks can be used to investigate and respond to attacks against hosts running vulnerable Java applications which use log4j. Between the parent playbook and seven sub-playbooks, each potentially compromised host found in Splunk Enteprise can be investigated and the risk can be mitigated using SSH for unix systems and WinRM for Windows systems. + +- **Type**: Investigate +- **Product**: Splunk SOAR +- **Apps**: +- **Last Updated**: 2021-12-14 +- **Author**: Philip Royer, Splunk +- **ID**: e609d729-0076-421a-b8f7-9e545d000381 + +#### Associated Detections + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Curl Download and Bash Execution](/detections/TTP/curl_download_and_bash_execution) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Wget Download and Bash Execution](/detections/TTP/wget_download_and_bash_execution) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Linux Java Spawning Shell](/detections/TTP/linux_java_spawning_shell) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Java Class File download by Java User Agent](/detections/TTP/java_class_file_download_by_java_user_agent) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Outbound Network Connection from Java Using Default Ports](/detections/TTP/outbound_network_connection_from_java_using_default_ports) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Log4Shell JNDI Payload Injection Attempt](/detections/Anomaly/log4shell_jndi_payload_injection_attempt) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Log4Shell JNDI Payload Injection with Outbound Connection](/detections/Anomaly/log4shell_jndi_payload_injection_with_outbound_connection) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* [Detect Outbound LDAP Traffic](/detections/Hunting/detect_outbound_ldap_traffic) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#### How To Implement +To start this playbook, create a custom list called "log4j_hosts" with a format as shown below +| hostname1 | unix | | hostname2 | windows | +The first column should be an IP or hostname of a potentially affected log4j host, and the second should be the operating system family (either unix or windows). If the operating system is unknown it can be left blank. In the block called "fetch_hosts_from_custom_list", change the custom list name from "log4j_hosts" if needed. If the operating system family ("windows" or "unix") is not known, both ssh and winrm will be attempted. If ssh and/or winrm are not the preferred endpoint management methods, these playbooks could be ported to use Google's GRR, osquery, CrowdStrike's RTR, Carbon Black's EDR API, or similar tools. The artifact scope "all" is used throughout this playbook because the artifact list can be added to as the playbook progresses. + + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/log4j_investigate_and_respond.png) + +#### Required field + + +#### Reference + +* [https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh](https://github.com/Neo23x0/Fenrir/blob/master/fenrir.sh) +* [https://isc.sans.edu/diary/Log4j++Log4Shell+Followup%3A+What+we+see+and+how+to+defend+%28and+how+to+access+our+data%29/28122](https://isc.sans.edu/diary/Log4j++Log4Shell+Followup%3A+What+we+see+and+how+to+defend+%28and+how+to+access+our+data%29/28122) +* [https://twitter.com/ElektroWolle/status/1469962895849140224?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1469962895849140224%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fpublish.twitter.com%2F%3Fquery%3Dhttps3A2F2Ftwitter.com2FElektroWolle2Fstatus2F1469962895849140224widget%3DTweet](https://twitter.com/ElektroWolle/status/1469962895849140224?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1469962895849140224%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fpublish.twitter.com%2F%3Fquery%3Dhttps3A2F2Ftwitter.com2FElektroWolle2Fstatus2F1469962895849140224widget%3DTweet) +* [https://blog.cloudflare.com/cve-2021-44228-log4j-rce-0-day-mitigation/](https://blog.cloudflare.com/cve-2021-44228-log4j-rce-0-day-mitigation/) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/log4j_investigate_and_respond.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_playbooks/log4j_splunk_investigate_and_respond.md b/docs/_playbooks/log4j_splunk_investigate_and_respond.md new file mode 100644 index 0000000000..75e4efd286 --- /dev/null +++ b/docs/_playbooks/log4j_splunk_investigate_and_respond.md @@ -0,0 +1,46 @@ +--- +title: "Log4j Splunk Investigate And Respond" +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Investigation + - Splunk SOAR + - Splunk +--- + +[Try in Splunk SOAR](https://www.splunk.com/en_us/software/splunk-security-orchestration-and-automation.html){: .btn .btn--success} + +#### Description + +Published in response to CVE-2021-44228, this playbook utilizes data already in your Splunk environment to help investigate and remediate impacts caused by this vulnerability in your environment. + +- **Type**: Investigation +- **Product**: Splunk SOAR +- **Apps**: [Splunk](https://splunkbase.splunk.com/apps/#/search/Splunk/product/soar) +- **Last Updated**: 2021-12-14 +- **Author**: Lou Stella, Splunk +- **ID**: fc0adc66-ff2b-48b0-9a6f-63da6783fd63 + +#### Associated Detections + + +#### How To Implement +This playbook presumes you have Enterprise Security and have configured Assets & Identities, as well as the Endpoint.Processes datamodel + +#### Playbooks +![](https://raw.githubusercontent.com/splunk/security_content/develop/playbooks/internal_host_splunk_investigate_log4j.png) + +#### Required field +* hostName +* destinationAddress + + +#### Reference + +* [https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html](https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/playbooks/internal_host_splunk_investigate_log4j.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-07-excessive_number_of_office_files_copied.md b/docs/_posts/2021-12-07-excessive_number_of_office_files_copied.md new file mode 100644 index 0000000000..971f9e9073 --- /dev/null +++ b/docs/_posts/2021-12-07-excessive_number_of_office_files_copied.md @@ -0,0 +1,89 @@ +--- +title: "Excessive Number of Office Files Copied" +excerpt: "Exfiltration Over Unencrypted/Obfuscated Non-C2 Protocol" +categories: + - Endpoint +last_modified_at: 2021-12-07 +toc: true +toc_label: "" +tags: + - Exfiltration Over Unencrypted/Obfuscated Non-C2 Protocol + - Exfiltration + - Splunk Behavioral Analytics + - Endpoint_Filesystem +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +This detection detects a high amount of office file copied. This can be an indicator for a malicious insider. + +- **Type**: Anomaly +- **Product**: Splunk Behavioral Analytics +- **Datamodel**: [Endpoint_Filesystem](https://docs.splunk.com/Documentation/CIM/latest/User/EndpointFilesystem) +- **Last Updated**: 2021-12-07 +- **Author**: Patrick Bareiss, Splunk +- **ID**: 3c6594a9-8df6-45a1-9357-d73b62083c63 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1048.003](https://attack.mitre.org/techniques/T1048/003/) | Exfiltration Over Unencrypted/Obfuscated Non-C2 Protocol | Exfiltration | + +#### Search + +``` + +| from read_ssa_enriched_events() +| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)) +| eval action=ucast(map_get(input_event, "action"), "string", null), process=ucast(map_get(input_event, "process"), "string", null), file_name=ucast(map_get(input_event, "file_name"), "string", null), file_path=ucast(map_get(input_event, "file_path"), "string", null), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string", null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null) +| where "Endpoint_Filesystem" IN(_datamodels) +| where action="created" +| where like(file_name, "%.doc%") OR like(file_name, "%.xls%") OR like(file_name, "%.ppt%") +| stats count(file_name) AS count BY dest_user_id, dest_device_id, span(timestamp, 10m) +| where count > 20 +| eval start_time=window_start, end_time=window_end, entities=mvappend(dest_user_id, dest_device_id), body=create_map(["count", count]) +| into write_ssa_detected_events(); +``` + +#### Associated Analytic Story + + +#### How To Implement +To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Filesytem` node. + +#### Required field +* action +* process +* file_name +* file_path + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +user may copy a lot of office fies from one folder to another + + + + + +#### Reference + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1048.003/mass_file_creation/windows-sysmon.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1048.003/mass_file_creation/windows-sysmon.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/excessive_number_of_office_files_copied.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-07-high_file_deletion_frequency.md b/docs/_posts/2021-12-07-high_file_deletion_frequency.md new file mode 100644 index 0000000000..d318cc8b04 --- /dev/null +++ b/docs/_posts/2021-12-07-high_file_deletion_frequency.md @@ -0,0 +1,100 @@ +--- +title: "High File Deletion Frequency" +excerpt: "Data Destruction" +categories: + - Endpoint +last_modified_at: 2021-12-07 +toc: true +toc_label: "" +tags: + - Data Destruction + - Impact + - Splunk Behavioral Analytics + - Endpoint_Filesystem +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +This detection detects a high amount of file deletions in a short time for specific file types. This can be an indicator for a malicious insider. + +- **Type**: Anomaly +- **Product**: Splunk Behavioral Analytics +- **Datamodel**: [Endpoint_Filesystem](https://docs.splunk.com/Documentation/CIM/latest/User/EndpointFilesystem) +- **Last Updated**: 2021-12-07 +- **Author**: Patrick Bareiss, Splunk +- **ID**: b6200efd-13bd-4336-920a-057b25bbcfaf + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1485](https://attack.mitre.org/techniques/T1485/) | Data Destruction | Impact | + +#### Search + +``` + +| from read_ssa_enriched_events() +| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)) +| eval action=ucast(map_get(input_event, "action"), "string", null), process=ucast(map_get(input_event, "process"), "string", null), file_name=ucast(map_get(input_event, "file_name"), "string", null), file_path=ucast(map_get(input_event, "file_path"), "string", null), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string", null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null) +| where "Endpoint_Filesystem" IN(_datamodels) +| where action="deleted" +| where like(file_name, "%.cmd") OR like(file_name, "%.ini") OR like(file_name, "%.gif") OR like(file_name, "%.jpg") OR like(file_name, "%.jpeg") OR like(file_name, "%.db") OR like(file_name, "%.doc%") OR like(file_name, "%.ps1") OR like(file_name, "%.xls%") OR like(file_name, "%.ppt%") OR like(file_name, "%.bmp") OR like(file_name, "%.zip") OR like(file_name, "%.rar") OR like(file_name, "%.7z") OR like(file_name, "%.chm") OR like(file_name, "%.png") OR like(file_name, "%.log") OR like(file_name, "%.vbs") OR like(file_name, "%.js") +| stats count(file_name) AS count BY dest_user_id, dest_device_id, span(timestamp, 10m) +| where count > 20 +| eval start_time=window_start, end_time=window_end, entities=mvappend(dest_user_id, dest_device_id), body=create_map(["count", count]) +| into write_ssa_detected_events(); +``` + +#### Associated Analytic Story +* [Clop Ransomware](/stories/clop_ransomware) + + +#### How To Implement +To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Filesytem` node. + +#### Required field +* action +* process +* file_name +* file_path + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +user may delete bunch of pictures or files in a folder. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 72.0 | 90 | 80 | High frequency file deletion activity detected on host $Computer$ | + + + + +#### Reference + +* [https://www.fireeye.com/blog/threat-research/2020/10/fin11-email-campaigns-precursor-for-ransomware-data-theft.html](https://www.fireeye.com/blog/threat-research/2020/10/fin11-email-campaigns-precursor-for-ransomware-data-theft.html) +* [https://blog.virustotal.com/2020/11/keep-your-friends-close-keep-ransomware.html](https://blog.virustotal.com/2020/11/keep-your-friends-close-keep-ransomware.html) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1485/excessive_file_deletions/windows-sysmon.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1485/excessive_file_deletions/windows-sysmon.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/high_file_deletion_frequency.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-10-curl_download_and_bash_execution.md b/docs/_posts/2021-12-10-curl_download_and_bash_execution.md new file mode 100644 index 0000000000..2428fde8c9 --- /dev/null +++ b/docs/_posts/2021-12-10-curl_download_and_bash_execution.md @@ -0,0 +1,115 @@ +--- +title: "Curl Download and Bash Execution" +excerpt: "Ingress Tool Transfer" +categories: + - Endpoint +last_modified_at: 2021-12-10 +toc: true +toc_label: "" +tags: + - Ingress Tool Transfer + - Command And Control + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Endpoint +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following analytic identifies the use of curl on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. + +- **Type**: TTP +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint) +- **Last Updated**: 2021-12-10 +- **Author**: Michael Haag, Splunk +- **ID**: 900bc324-59f3-11ec-9fb4-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1105](https://attack.mitre.org/techniques/T1105/) | Ingress Tool Transfer | Command And Control | + +#### Search + +``` + +| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name=curl (Processes.process="*-s *") OR (Processes.process="* +|*" AND Processes.process="*bash*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id +| `drop_dm_object_name(Processes)` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| `curl_download_and_bash_execution_filter` +``` + +#### Associated Analytic Story +* [Ingress Tool Transfer](/stories/ingress_tool_transfer) +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. Add parent process name (Processes.parent_process_name) as needed to filter. + +#### Required field +* _time +* Processes.dest +* Processes.user +* Processes.parent_process_name +* Processes.parent_process +* Processes.process_name +* Processes.process +* Processes.process_id +* Processes.parent_process_path +* Processes.process_path +* Processes.parent_process_id + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +False positives should be limited, however filtering may be required. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 80.0 | 80 | 100 | An instance of $process_name$ was identified on endpoint $dest$ attempting to download a remote file and run it with bash. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java](https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java) +* [https://www.lunasec.io/docs/blog/log4j-zero-day/](https://www.lunasec.io/docs/blog/log4j-zero-day/) +* [https://gist.github.com/nathanqthai/01808c569903f41a52e7e7b575caa890](https://gist.github.com/nathanqthai/01808c569903f41a52e7e7b575caa890) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/curl_download_and_bash_execution.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-11-wget_download_and_bash_execution.md b/docs/_posts/2021-12-11-wget_download_and_bash_execution.md new file mode 100644 index 0000000000..76f3fe49d6 --- /dev/null +++ b/docs/_posts/2021-12-11-wget_download_and_bash_execution.md @@ -0,0 +1,115 @@ +--- +title: "Wget Download and Bash Execution" +excerpt: "Ingress Tool Transfer" +categories: + - Endpoint +last_modified_at: 2021-12-11 +toc: true +toc_label: "" +tags: + - Ingress Tool Transfer + - Command And Control + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Endpoint +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following analytic identifies the use of wget on Linux or MacOS attempting to download a file from a remote source and pipe it to bash. This is typically found with coinminers and most recently with CVE-2021-44228, a vulnerability in Log4j. + +- **Type**: TTP +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint) +- **Last Updated**: 2021-12-11 +- **Author**: Michael Haag, Splunk +- **ID**: 35682718-5a85-11ec-b8f7-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1105](https://attack.mitre.org/techniques/T1105/) | Ingress Tool Transfer | Command And Control | + +#### Search + +``` + +| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name=wget (Processes.process="*-q *" OR Processes.process="*--quiet*" AND Processes.process="*-O- *") OR (Processes.process="* +|*" AND Processes.process="*bash*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id +| `drop_dm_object_name(Processes)` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| `wget_download_and_bash_execution_filter` +``` + +#### Associated Analytic Story +* [Ingress Tool Transfer](/stories/ingress_tool_transfer) +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. If the EDR is not parsing the pipe bash in the command-line, modifying the analytic will be required. Add parent process name (Processes.parent_process_name) as needed to filter. + +#### Required field +* _time +* Processes.dest +* Processes.user +* Processes.parent_process_name +* Processes.parent_process +* Processes.process_name +* Processes.process +* Processes.process_id +* Processes.parent_process_path +* Processes.process_path +* Processes.parent_process_id + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +False positives should be limited, however filtering may be required. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 80.0 | 80 | 100 | An instance of $process_name$ was identified on endpoint $dest$ attempting to download a remote file and run it with bash. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java](https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java) +* [https://www.lunasec.io/docs/blog/log4j-zero-day/](https://www.lunasec.io/docs/blog/log4j-zero-day/) +* [https://gist.github.com/nathanqthai/01808c569903f41a52e7e7b575caa890](https://gist.github.com/nathanqthai/01808c569903f41a52e7e7b575caa890) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/linux-sysmon_curlwget.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/wget_download_and_bash_execution.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-cmd_carry_out_string_command_parameter.md b/docs/_posts/2021-12-13-cmd_carry_out_string_command_parameter.md new file mode 100644 index 0000000000..38a0bc3e33 --- /dev/null +++ b/docs/_posts/2021-12-13-cmd_carry_out_string_command_parameter.md @@ -0,0 +1,115 @@ +--- +title: "CMD Carry Out String Command Parameter" +excerpt: "Windows Command Shell, Command and Scripting Interpreter" +categories: + - Endpoint +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Windows Command Shell + - Execution + - Command and Scripting Interpreter + - Execution + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Endpoint +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following analytic identifies command-line arguments where `cmd.exe /c` is used to execute a program. `cmd /c` is used to run commands in MS-DOS and terminate after command or process completion. This technique is commonly seen in adversaries and malware to execute batch command using different shell like PowerShell or different process other than `cmd.exe`. This is a good hunting query for suspicious command-line made by a script or relative process execute it. + +- **Type**: Hunting +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint) +- **Last Updated**: 2021-12-13 +- **Author**: Teoderick Contreras, Bhavin Patel, Splunk +- **ID**: 54a6ed00-3256-11ec-b031-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1059.003](https://attack.mitre.org/techniques/T1059/003/) | Windows Command Shell | Execution | + +| [T1059](https://attack.mitre.org/techniques/T1059/) | Command and Scripting Interpreter | Execution | + +#### Search + +``` + +| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where `process_cmd` AND Processes.process="* /c *" by Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.original_file_name Processes.process Processes.process_id Processes.parent_process_id +| `drop_dm_object_name(Processes)` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| `cmd_carry_out_string_command_parameter_filter` +``` + +#### Associated Analytic Story +* [IcedID](/stories/icedid) +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. In addition, confirm the latest CIM App 4.20 or higher is installed and the latest TA for the endpoint product. + +#### Required field +* _time +* Processes.parent_process_name +* Processes.parent_process +* Processes.process_name +* Processes.process_id +* Processes.process +* Processes.dest +* Processes.user +* Processes.process_id +* Processes.parent_process_id + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +False positives may be high based on legitimate scripted code in any environment. Filter as needed. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 30.0 | 60 | 50 | An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ attempting spawn a new process. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/](https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/cmd_carry_str_param/sysmon.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/cmd_carry_str_param/sysmon.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/cmd_carry_out_string_command_parameter.yml) \| *version*: **2** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-detect_outbound_ldap_traffic.md b/docs/_posts/2021-12-13-detect_outbound_ldap_traffic.md new file mode 100644 index 0000000000..90dc422735 --- /dev/null +++ b/docs/_posts/2021-12-13-detect_outbound_ldap_traffic.md @@ -0,0 +1,110 @@ +--- +title: "Detect Outbound LDAP Traffic" +excerpt: "Exploit Public-Facing Application, Command and Scripting Interpreter" +categories: + - Network +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Command and Scripting Interpreter + - Execution + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Network_Traffic +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +Malicious actors often abuse misconfigured LDAP servers or applications that use the LDAP servers in organizations. Outbound LDAP traffic should not be allowed outbound through your perimeter firewall. This search will help determine if you have any LDAP connections to IP addresses outside of private (RFC1918) address space. + +- **Type**: Hunting +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Network_Traffic](https://docs.splunk.com/Documentation/CIM/latest/User/NetworkTraffic) +- **Last Updated**: 2021-12-13 +- **Author**: Bhavin Patel, Johan Bjerke, Splunk +- **ID**: c77162d3-f91c-45cc-80c8-22f6v546119f + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +| [T1059](https://attack.mitre.org/techniques/T1059/) | Command and Scripting Interpreter | Execution | + +#### Search + +``` + +| tstats earliest(_time) as earliest_time latest(_time) as latest_time values(All_Traffic.dest_ip) as dest_ip from datamodel=Network_Traffic.All_Traffic where All_Traffic.dest_port = 389 OR All_Traffic.dest_port = 636 AND NOT (All_Traffic.dest_ip = 10.0.0.0/8 OR All_Traffic.dest_ip=192.168.0.0/16 OR All_Traffic.dest_ip = 172.16.0.0/12) by All_Traffic.src_ip All_Traffic.dest_ip +|`drop_dm_object_name("All_Traffic")` +| where src_ip != dest_ip +| `security_content_ctime(latest_time)` +| `security_content_ctime(earliest_time)` +|`detect_outbound_ldap_traffic_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +You must be ingesting Zeek DNS and Zeek Conn data into Splunk. Zeek data should also be getting ingested in JSON format and should be mapped to the Network Traffic datamodels that are in use for this search. + +#### Required field +* _time +* All_Traffic.dest_ip +* All_Traffic.dest_port +* All_Traffic.src_ip + + +#### Kill Chain Phase +* Command and Control +* Actions on Objectives + + +#### Known False Positives +Unknown at this moment. Outbound LDAP traffic should not be allowed outbound through your perimeter firewall. Please check those servers to verify if the activity is legitimate. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 56.0 | 70 | 80 | An outbound LDAP connection from $src_ip$ in your infrastructure connecting to dest ip $dest_ip$ | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/](https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_ldap/bro_conn.json](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_ldap/bro_conn.json) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/network/detect_outbound_ldap_traffic.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-java_class_file_download_by_java_user_agent.md b/docs/_posts/2021-12-13-java_class_file_download_by_java_user_agent.md new file mode 100644 index 0000000000..817a87316a --- /dev/null +++ b/docs/_posts/2021-12-13-java_class_file_download_by_java_user_agent.md @@ -0,0 +1,107 @@ +--- +title: "Java Class File download by Java User Agent" +excerpt: "Exploit Public-Facing Application" +categories: + - Endpoint +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Web +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following analytic identifies a Java user agent performing a GET request for a .class file from the remote site. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). + +- **Type**: TTP +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Web](https://docs.splunk.com/Documentation/CIM/latest/User/Web) +- **Last Updated**: 2021-12-13 +- **Author**: Michael Haag, Splunk +- **ID**: 8281ce42-5c50-11ec-82d2-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + +| tstats count from datamodel=Web where Web.http_user_agent="*Java*" Web.http_method="GET" Web.url="*.class*" by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest +| `drop_dm_object_name("Web")` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| `java_class_file_download_by_java_user_agent_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. For additional filtering, allow list private IP space or restrict by known good. + +#### Required field +* _time +* Web.http_method +* Web.url +* Web.url_length +* Web.src +* Web.dest +* Web.http_user_agent + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +Filtering may be required in some instances, filter as needed. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 40.0 | 80 | 50 | A Java user agent $http_user_agent$ was performing a $http_method$ to retrieve a remote class file. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://arstechnica.com/information-technology/2021/12/as-log4shell-wreaks-havoc-payroll-service-reports-ransomware-attack/](https://arstechnica.com/information-technology/2021/12/as-log4shell-wreaks-havoc-payroll-service-reports-ransomware-attack/) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/java.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/java.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/java_class_file_download_by_java_user_agent.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-linux_java_spawning_shell.md b/docs/_posts/2021-12-13-linux_java_spawning_shell.md new file mode 100644 index 0000000000..671785d68d --- /dev/null +++ b/docs/_posts/2021-12-13-linux_java_spawning_shell.md @@ -0,0 +1,114 @@ +--- +title: "Linux Java Spawning Shell" +excerpt: "Exploit Public-Facing Application" +categories: + - Endpoint +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Endpoint +--- + +### ⚠️ WARNING THIS IS A EXPERIMENTAL DETECTION +We have not been able to test, simulate or build datasets for it, use at your own risk! + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following analytic identifies the process name of Java, Apache, or Tomcat spawning a Linux shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "sh", "ksh", "zsh", "bash", "dash", "rbash", "fish", "csh', "tcsh', "ion", "eshell". Upon triage, review parallel processes and command-line arguments to determine legitimacy. + +- **Type**: TTP +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint) +- **Last Updated**: 2021-12-13 +- **Author**: Michael Haag, Splunk +- **ID**: 7b09db8a-5c20-11ec-9945-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + +| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java OR Processes.parent_process_name=apache OR Processes.parent_process_name=tomcat `linux_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id +| `drop_dm_object_name(Processes)` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| `linux_java_spawning_shell_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. If you are using Sysmon for Linux, you will need to ensure mapping is occurring correctly. Ensure EDR product is mapping OS Linux to the datamodel properly. Add any additional java process names for your environment to the analytic as needed. + +#### Required field +* _time +* Processes.dest +* Processes.user +* Processes.parent_process_name +* Processes.parent_process +* Processes.original_file_name +* Processes.process_name +* Processes.process +* Processes.process_id +* Processes.parent_process_path +* Processes.process_path +* Processes.parent_process_id + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 40.0 | 80 | 50 | An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ spawning a Linux shell, potentially indicative of exploitation. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/](https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/) +* [https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72](https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/experimental/endpoint/linux_java_spawning_shell.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-log4shell_jndi_payload_injection_attempt.md b/docs/_posts/2021-12-13-log4shell_jndi_payload_injection_attempt.md new file mode 100644 index 0000000000..7e4615d7d1 --- /dev/null +++ b/docs/_posts/2021-12-13-log4shell_jndi_payload_injection_attempt.md @@ -0,0 +1,118 @@ +--- +title: "Log4Shell JNDI Payload Injection Attempt" +excerpt: "Exploit Public-Facing Application" +categories: + - Web +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Web +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we first limit the scope of our search to the Web Datamodel and use the `| from datamodel` function to benefit from schema accelerated searching capabilities, mainly because the second part of the detection is pretty heavy, it runs a regex across all _raw events that looks for `${jndi:ldap://` pattern across all potential web fields available to the raw data, like http headers for example. If you see results for this detection, it means that there was a attempt at a injection, which could be a reconnaissance activity or a valid expliotation attempt, but this does not exactly mean that the host was indeed successfully exploited. + +- **Type**: Anomaly +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Web](https://docs.splunk.com/Documentation/CIM/latest/User/Web) +- **Last Updated**: 2021-12-13 +- **Author**: Jose Hernandez +- **ID**: c184f12e-5c90-11ec-bf1f-497c9a704a72 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + +| from datamodel Web.Web +| regex _raw="[jJnNdDiI]{4}(\: +|\%3A +|\/ +|\%2F)\w+(\:\/\/ +|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?" +| fillnull +| stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user +| `log4shell_jndi_payload_injection_attempt_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. + +#### Required field +* action +* category +* dest +* dest_port +* http_content_type +* http_method +* http_referrer +* http_user_agent +* site +* src +* url +* url_domain +* user + + +#### Kill Chain Phase +* Reconnaissance +* Exploitation + + +#### Known False Positives +If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 15.0 | 50 | 30 | CVE-2021-44228 Log4Shell triggered for host $dest$ | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://www.lunasec.io/docs/blog/log4j-zero-day/](https://www.lunasec.io/docs/blog/log4j-zero-day/) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/web/log4shell_jndi_payload_injection_attempt.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-log4shell_jndi_payload_injection_with_outbound_connection.md b/docs/_posts/2021-12-13-log4shell_jndi_payload_injection_with_outbound_connection.md new file mode 100644 index 0000000000..1f9dadbed2 --- /dev/null +++ b/docs/_posts/2021-12-13-log4shell_jndi_payload_injection_with_outbound_connection.md @@ -0,0 +1,125 @@ +--- +title: "Log4Shell JNDI Payload Injection with Outbound Connection" +excerpt: "Exploit Public-Facing Application" +categories: + - Web +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Network_Traffic + - Web +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +CVE-2021-44228 Log4Shell payloads can be injected via various methods, but on of the most common vectors injection is via Web calls. Many of the vulnerable java web applications that are using log4j have a web component to them are specially targets of this injection, specifically projects like Apache Struts, Flink, Druid, and Solr. The exploit is triggered by a LDAP lookup function in the log4j package, its invocation is similar to `${jndi:ldap://PAYLOAD_INJECTED}`, when executed against vulnerable web applications the invocation can be seen in various part of web logs. Specifically it has been successfully exploited via headers like X-Forwarded-For, User-Agent, Referer, and X-Api-Version. In this detection we match the invocation function with a network connection to a malicious ip address. + +- **Type**: Anomaly +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Network_Traffic](https://docs.splunk.com/Documentation/CIM/latest/User/NetworkTraffic), [Web](https://docs.splunk.com/Documentation/CIM/latest/User/Web) +- **Last Updated**: 2021-12-13 +- **Author**: Jose Hernandez +- **ID**: 69afee44-5c91-11ec-bf1f-497c9a704a72 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + +| from datamodel Web.Web +| rex field=_raw max_match=0 "[jJnNdDiI]{4}(\: +|\%3A +|\/ +|\%2F)(?\w+)(\:\/\/ +|\%3A\%2F\%2F)(\$\{.*?\}(\.)?)?(?[a-zA-Z0-9\.\-\_\$]+)" +| join affected_host type=inner [ +| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Network_Traffic.All_Traffic by All_Traffic.dest +| `drop_dm_object_name(All_Traffic)` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| rename dest AS affected_host] +| fillnull +| stats count by action, category, dest, dest_port, http_content_type, http_method, http_referrer, http_user_agent, site, src, url, url_domain, user +| `log4shell_jndi_payload_injection_with_outbound_connection_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +This detection requires the Web datamodel to be populated from a supported Technology Add-On like Splunk for Apache or Splunk for Nginx. + +#### Required field +* action +* category +* dest +* dest_port +* http_content_type +* http_method +* http_referrer +* http_user_agent +* site +* src +* url +* url_domain +* user + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +If there is a vulnerablility scannner looking for log4shells this will trigger, otherwise likely to have low false positives. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 15.0 | 50 | 30 | CVE-2021-44228 Log4Shell triggered for host $dest$ | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://www.lunasec.io/docs/blog/log4j-zero-day/](https://www.lunasec.io/docs/blog/log4j-zero-day/) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_proxy_logs/log4j_proxy_logs.log) +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_network_logs/log4j_network_logs.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/log4j_network_logs/log4j_network_logs.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/web/log4shell_jndi_payload_injection_with_outbound_connection.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-outbound_network_connection_from_java_using_default_ports.md b/docs/_posts/2021-12-13-outbound_network_connection_from_java_using_default_ports.md new file mode 100644 index 0000000000..34e66801b5 --- /dev/null +++ b/docs/_posts/2021-12-13-outbound_network_connection_from_java_using_default_ports.md @@ -0,0 +1,106 @@ +--- +title: "Outbound Network Connection from Java Using Default Ports" +excerpt: "Exploit Public-Facing Application" +categories: + - Endpoint +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +A required step while exploiting the CVE-2021-44228-Log4j vulnerability is that the victim server will perform outbound connections to attacker-controlled infrastructure. This is required as part of the JNDI lookup as well as for retrieving the second stage .class payload. The following analytic identifies the Java process reaching out to default ports used by the LDAP and RMI protocols. This behavior could represent successfull exploitation. Note that adversaries can easily decide to use arbitrary ports for these protocols and potentially bypass this detection. + +- **Type**: TTP +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: +- **Last Updated**: 2021-12-13 +- **Author**: Mauricio Velazco, Splunk +- **ID**: d2c14d28-5c47-11ec-9892-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + `sysmon` EventCode=3 (process_name=java OR process_name=java.exe) (DestinationPort=389 OR DestinationPort=1389 OR DestinationPort = 1099 ) +| rename Computer as dest +| stats count min(_time) as firstTime max(_time) as lastTime by dest, process_name, DestinationPort +| `security_content_ctime(firstTime)` +| `outbound_network_connection_from_java_using_default_ports_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. + +#### Required field +* _time +* process_name +* EventID +* CommandLine +* Computer +* DestinationPort +* DestinationIp + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +Legitimate Java applications may use perform outbound connections to these ports. Filter as needed + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 54.0 | 90 | 60 | Java performed outbound connections to default ports of LDAP or RMI on $dest$ | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://www.lunasec.io/docs/blog/log4j-zero-day/](https://www.lunasec.io/docs/blog/log4j-zero-day/) +* [https://www.govcert.admin.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/](https://www.govcert.admin.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_java/linux-sysmon.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/outbound_java/linux-sysmon.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/outbound_network_connection_from_java_using_default_ports.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-13-windows_java_spawning_shells.md b/docs/_posts/2021-12-13-windows_java_spawning_shells.md new file mode 100644 index 0000000000..5a5e26df94 --- /dev/null +++ b/docs/_posts/2021-12-13-windows_java_spawning_shells.md @@ -0,0 +1,114 @@ +--- +title: "Windows Java Spawning Shells" +excerpt: "Exploit Public-Facing Application" +categories: + - Endpoint +last_modified_at: 2021-12-13 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Endpoint +--- + +### ⚠️ WARNING THIS IS A EXPERIMENTAL DETECTION +We have not been able to test, simulate or build datasets for it, use at your own risk! + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following analytic identifies the process name of java.exe and w3wp.exe spawning a Windows shell. This is potentially indicative of exploitation of the Java application and may be related to current event CVE-2021-44228 (Log4Shell). The shells included in the macro are "cmd.exe", "powershell.exe". Upon triage, review parallel processes and command-line arguments to determine legitimacy. + +- **Type**: TTP +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint) +- **Last Updated**: 2021-12-13 +- **Author**: Michael Haag, Splunk +- **ID**: 28c81306-5c47-11ec-bfea-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + +| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=java.exe OR Processes.parent_process_name=w3wp.exe `windows_shells` by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id +| `drop_dm_object_name(Processes)` +| `security_content_ctime(firstTime)` +| `security_content_ctime(lastTime)` +| `windows_java_spawning_shells_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints. Restrict the analytic to publicly facing endpoints to reduce false positives. Add any additional identified web application process name to the query. Add any further Windows process names to the macro (ex. LOLBins) to further expand this query. + +#### Required field +* _time +* Processes.dest +* Processes.user +* Processes.parent_process_name +* Processes.parent_process +* Processes.original_file_name +* Processes.process_name +* Processes.process +* Processes.process_id +* Processes.parent_process_path +* Processes.process_path +* Processes.parent_process_id + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +Filtering may be required on internal developer build systems or classify assets as web facing and restrict the analytic based on that. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 40.0 | 80 | 50 | An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ spawning a Windows shell, potentially indicative of exploitation. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/](https://blog.netlab.360.com/ten-families-of-malicious-samples-are-spreading-using-the-log4j2-vulnerability-now/) +* [https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72](https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/experimental/endpoint/windows_java_spawning_shells.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_posts/2021-12-14-hunting_for_log4shell.md b/docs/_posts/2021-12-14-hunting_for_log4shell.md new file mode 100644 index 0000000000..01c4e9145c --- /dev/null +++ b/docs/_posts/2021-12-14-hunting_for_log4shell.md @@ -0,0 +1,228 @@ +--- +title: "Hunting for Log4Shell" +excerpt: "Exploit Public-Facing Application" +categories: + - Endpoint +last_modified_at: 2021-12-14 +toc: true +toc_label: "" +tags: + - Exploit Public-Facing Application + - Initial Access + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - CVE-2021-44228 + - Web +--- + + + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +The following hunting query assists with quickly assessing CVE-2021-44228, or Log4Shell, activity mapped to the Web Datamodel. This is a combination query attempting to identify, score and dashboard. Because the Log4Shell vulnerability requires the string to be in the logs, this will work to identify the activity anywhere in the HTTP headers using _raw. Modify the first line to use the same pattern matching against other log sources. Scoring is based on a simple rubric of 0-5. 5 being the best match, and less than 5 meant to identify additional patterns that will equate to a higher total score. \ +The first jndi match identifies the standard pattern of `{jndi:` \ +jndi_fastmatch is meant to identify any jndi in the logs. The score is set low and is meant to be the "base" score used later. \ +jndi_proto is a protocol match that identifies `jndi` and one of `ldap, ldaps, rmi, dns, nis, iiop, corba, nds, http, https.` \ +all_match is a very well written regex by https://gist.github.com/Schvenn that identifies nearly all patterns of this attack behavior. \ +env works to identify environment variables in the header, meant to capture `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and `env`. \ +uri_detect is string match looking for the common uri paths currently being scanned/abused in the wild. \ +keywords matches on enumerated values that, like `$ctx:loginId`, that may be found in the header used by the adversary. \ +lookup matching is meant to catch some basic obfuscation that has been identified using upper, lower and date. \ +Scoring will then occur based on any findings. The base score is meant to be 2 , created by jndi_fastmatch. Everything else is meant to increase that score. \ +Finally, a simple table is created to show the scoring and the _raw field. Sort based on score or columns of interest. + +- **Type**: Hunting +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Web](https://docs.splunk.com/Documentation/CIM/latest/User/Web) +- **Last Updated**: 2021-12-14 +- **Author**: Michael Haag, Splunk +- **ID**: 158b68fa-5d1a-11ec-aac8-acde48001122 + + +#### [ATT&CK](https://attack.mitre.org/) + +| ID | Technique | Tactic | +| ----------- | ----------- |--------------- | +| [T1190](https://attack.mitre.org/techniques/T1190/) | Exploit Public-Facing Application | Initial Access | + +#### Search + +``` + +| from datamodel Web.Web +| eval jndi=if(match(_raw, "(\{ +|%7B)[jJnNdDiI]{4}:"),4,0) +| eval jndi_fastmatch=if(match(_raw, "[jJnNdDiI]{4}"),2,0) +| eval jndi_proto=if(match(_raw,"(?i)jndi:(ldap[s]? +|rmi +|dns +|nis +|iiop +|corba +|nds +|http +|https):"),5,0) +| eval all_match = if(match(_raw, "(?i)(%(25){0,}20 +|\s)*(%(25){0,}24 +|\$)(%(25){0,}20 +|\s)*(%(25){0,}7B +|{)(%(25){0,}20 +|\s)*(%(25){0,}(6A +|4A) +|J)(%(25){0,}(6E +|4E) +|N)(%(25){0,}(64 +|44) +|D)(%(25){0,}(69 +|49) +|I)(%(25){0,}20 +|\s)*(%(25){0,}3A +|:)[\w\%]+(%(25){1,}3A +|:)(%(25){1,}2F +|\/)[^\n]+"),5,0) +| eval env_var = if(match(_raw, "env:") OR match(_raw, "env:AWS_ACCESS_KEY_ID") OR match(_raw, "env:AWS_SECRET_ACCESS_KEY"),5,0) +| eval uridetect = if(match(_raw, "(?i)Basic\/Command\/Base64 +|Basic\/ReverseShell +|Basic\/TomcatMemshell +|Basic\/JBossMemshell +|Basic\/WebsphereMemshell +|Basic\/SpringMemshell +|Basic\/Command +|Deserialization\/CommonsCollectionsK +|Deserialization\/CommonsBeanutils +|Deserialization\/Jre8u20\/TomcatMemshell +|Deserialization\/CVE_2020_2555\/WeblogicMemshell +|TomcatBypass +|GroovyBypass +|WebsphereBypass"),4,0) +| eval keywords = if(match(_raw,"(?i)\$\{ctx\:loginId\} +|\$\{map\:type\} +|\$\{filename\} +|\$\{date\:MM-dd-yyyy\} +|\$\{docker\:containerId\} +|\$\{docker\:containerName\} +|\$\{docker\:imageName\} +|\$\{env\:USER\} +|\$\{event\:Marker\} +|\$\{mdc\:UserId\} +|\$\{java\:runtime\} +|\$\{java\:vm\} +|\$\{java\:os\} +|\$\{jndi\:logging/context-name\} +|\$\{hostName\} +|\$\{docker\:containerId\} +|\$\{k8s\:accountName\} +|\$\{k8s\:clusterName\} +|\$\{k8s\:containerId\} +|\$\{k8s\:containerName\} +|\$\{k8s\:host\} +|\$\{k8s\:labels.app\} +|\$\{k8s\:labels.podTemplateHash\} +|\$\{k8s\:masterUrl\} +|\$\{k8s\:namespaceId\} +|\$\{k8s\:namespaceName\} +|\$\{k8s\:podId\} +|\$\{k8s\:podIp\} +|\$\{k8s\:podName\} +|\$\{k8s\:imageId\} +|\$\{k8s\:imageName\} +|\$\{log4j\:configLocation\} +|\$\{log4j\:configParentLocation\} +|\$\{spring\:spring.application.name\} +|\$\{main\:myString\} +|\$\{main\:0\} +|\$\{main\:1\} +|\$\{main\:2\} +|\$\{main\:3\} +|\$\{main\:4\} +|\$\{main\:bar\} +|\$\{name\} +|\$\{marker\} +|\$\{marker\:name\} +|\$\{spring\:profiles.active[0] +|\$\{sys\:logPath\} +|\$\{web\:rootDir\} +|\$\{sys\:user.name\}"),4,0) +| eval obf = if(match(_raw, "(\$ +|%24)[^ /]*({ +|%7b)[^ /]*(j +|%6a)[^ /]*(n +|%6e)[^ /]*(d +|%64)[^ /]*(i +|%69)[^ /]*(: +|%3a)[^ /]*(: +|%3a)[^ /]*(/ +|%2f)"),5,0) +| eval lookups = if(match(_raw, "date:") OR match(_raw, "upper:") OR match(_raw, "lower:"),4,0) +| addtotals fieldname=Score, jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, obf, lookups +| where Score > 2 +| stats values(Score) by jndi, jndi_proto, env_var, uridetect, all_match, jndi_fastmatch, keywords, lookups, obf, _raw +| `hunting_for_log4shell_filter` +``` + +#### Associated Analytic Story +* [Log4Shell CVE-2021-44228](/stories/log4shell_cve-2021-44228) + + +#### How To Implement +Out of the box, the Web datamodel is required to be pre-filled. However, tested was performed against raw httpd access logs. Change the first line to any dataset to pass the regex's against. + +#### Required field +* _time +* Web.http_method +* Web.url +* Web.url_length +* Web.src +* Web.dest +* Web.http_user_agent +* _raw + + +#### Kill Chain Phase +* Exploitation + + +#### Known False Positives +It is highly possible you will find false positives, however, the base score is set to 2 for _any_ jndi found in raw logs. tune and change as needed, include any filtering. + + +#### RBA + +| Risk Score | Impact | Confidence | Message | +| ----------- | ----------- |--------------|--------------| +| 40.0 | 80 | 50 | Hunting for Log4Shell exploitation has occurred. | + + + +#### CVE + +| ID | Summary | [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) | +| ----------- | ----------- | -------------- | +| [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) | Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or it can be mitigated in prior releases (<2.10) by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). | None | + + + +#### Reference + +* [https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72](https://gist.github.com/olafhartong/916ebc673ba066537740164f7e7e1d72) +* [https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b#gistcomment-3994449](https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b#gistcomment-3994449) +* [https://regex101.com/r/OSrm0q/1/](https://regex101.com/r/OSrm0q/1/) +* [https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar](https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar) +* [https://news.sophos.com/en-us/2021/12/12/log4shell-hell-anatomy-of-an-exploit-outbreak/](https://news.sophos.com/en-us/2021/12/12/log4shell-hell-anatomy-of-an-exploit-outbreak/) +* [https://gist.github.com/MHaggis/1899b8554f38c8692a9fb0ceba60b44c](https://gist.github.com/MHaggis/1899b8554f38c8692a9fb0ceba60b44c) +* [https://twitter.com/sasi2103/status/1469764719850442760?s=20](https://twitter.com/sasi2103/status/1469764719850442760?s=20) + + + +#### Test Dataset +Replay any dataset to Splunk Enterprise by using our [`replay.py`](https://github.com/splunk/attack_data#using-replaypy) tool or the [UI](https://github.com/splunk/attack_data#using-ui). +Alternatively you can replay a dataset into a [Splunk Attack Range](https://github.com/splunk/attack_range#replay-dumps-into-attack-range-splunk-server) + +* [https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/log4shell-nginx.log](https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/java/log4shell-nginx.log) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/detections/endpoint/hunting_for_log4shell.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/_stories/credential_dumping.md b/docs/_stories/credential_dumping.md index 1bae69e6b5..dc36fe0040 100644 --- a/docs/_stories/credential_dumping.md +++ b/docs/_stories/credential_dumping.md @@ -35,8 +35,8 @@ The detection searches in this Analytic Story monitor access to the Local Securi | Name | Technique | Type | | ----------- | ----------- |--------------| | [Access LSASS Memory for Dump Creation](/endpoint/access_lsass_memory_for_dump_creation/) | [LSASS Memory](/tags/#lsass-memory), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | -| [Attempted Credential Dump From Registry via Reg exe](/endpoint/attempted_credential_dump_from_registry_via_reg_exe/) | [Security Account Manager](/tags/#security-account-manager), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Attempted Credential Dump From Registry via Reg exe](/endpoint/attempted_credential_dump_from_registry_via_reg_exe/) | [OS Credential Dumping](/tags/#os-credential-dumping), [Security Account Manager](/tags/#security-account-manager) | TTP | +| [Attempted Credential Dump From Registry via Reg exe](/endpoint/attempted_credential_dump_from_registry_via_reg_exe/) | [Security Account Manager](/tags/#security-account-manager), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Create Remote Thread into LSASS](/endpoint/create_remote_thread_into_lsass/) | [LSASS Memory](/tags/#lsass-memory), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Creation of Shadow Copy](/endpoint/creation_of_shadow_copy/) | [NTDS](/tags/#ntds), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | | [Creation of Shadow Copy with wmic and powershell](/endpoint/creation_of_shadow_copy_with_wmic_and_powershell/) | [NTDS](/tags/#ntds), [OS Credential Dumping](/tags/#os-credential-dumping) | TTP | diff --git a/docs/_stories/log4shell_cve-2021-44228.md b/docs/_stories/log4shell_cve-2021-44228.md new file mode 100644 index 0000000000..230d1d8e5e --- /dev/null +++ b/docs/_stories/log4shell_cve-2021-44228.md @@ -0,0 +1,59 @@ +--- +title: "Log4Shell CVE-2021-44228" +last_modified_at: 2021-12-11 +toc: true +toc_label: "" +tags: + - Splunk Enterprise + - Splunk Enterprise Security + - Splunk Cloud + - Endpoint + - Network_Traffic + - Web +--- + +[Try in Splunk Security Cloud](https://www.splunk.com/en_us/cyber-security.html){: .btn .btn--success} + +#### Description + +Log4Shell or CVE-2021-44228 is a Remote Code Execution (RCE) vulnerability in the Apache Log4j library, a widely used and ubiquitous logging framework for Java. The vulnerability allows an attacker who can control log messages to execute arbitrary code loaded from attacker-controlled servers and we anticipate that most apps using the Log4j library will meet this condition. + +- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud +- **Datamodel**: [Endpoint](https://docs.splunk.com/Documentation/CIM/latest/User/Endpoint), [Network_Traffic](https://docs.splunk.com/Documentation/CIM/latest/User/NetworkTraffic), [Web](https://docs.splunk.com/Documentation/CIM/latest/User/Web) +- **Last Updated**: 2021-12-11 +- **Author**: Jose Hernandez +- **ID**: b4453928-5a98-11ec-afcd-8de10b48fc52 + +#### Narrative + +In late November 2021, Chen Zhaojun of Alibaba identified a remote code execution vulnerability. Previous work was seen in a 2016 Blackhat talk by Alvaro Munoz and Oleksandr Mirosh called ["A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land"](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf). Reported under the CVE ID : CVE-2021-44228, released to the public on December 10, 2021. The vulnerability is exploited through improper deserialization of user input passed into the framework. It permits remote code execution and it can allow an attacker to leak sensitive data, such as environment variables, or execute malicious software on the target system. + +#### Detections + +| Name | Technique | Type | +| ----------- | ----------- |--------------| +| [Any Powershell DownloadFile](/endpoint/any_powershell_downloadfile/) | [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter), [PowerShell](/tags/#powershell) | TTP | +| [CMD Carry Out String Command Parameter](/endpoint/cmd_carry_out_string_command_parameter/) | [Windows Command Shell](/tags/#windows-command-shell), [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter) | Hunting | +| [Curl Download and Bash Execution](/endpoint/curl_download_and_bash_execution/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | +| [Detect Outbound LDAP Traffic](/network/detect_outbound_ldap_traffic/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application), [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter) | Hunting | +| [Hunting for Log4Shell](/endpoint/hunting_for_log4shell/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | Hunting | +| [Java Class File download by Java User Agent](/endpoint/java_class_file_download_by_java_user_agent/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | +| [Linux Java Spawning Shell](/endpoint/linux_java_spawning_shell/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | +| [Log4Shell JNDI Payload Injection Attempt](/web/log4shell_jndi_payload_injection_attempt/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | Anomaly | +| [Log4Shell JNDI Payload Injection with Outbound Connection](/web/log4shell_jndi_payload_injection_with_outbound_connection/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | Anomaly | +| [Malicious PowerShell Process - Connect To Internet With Hidden Window](/endpoint/malicious_powershell_process_-_connect_to_internet_with_hidden_window/) | [PowerShell](/tags/#powershell), [Command and Scripting Interpreter](/tags/#command-and-scripting-interpreter) | Hunting | +| [Outbound Network Connection from Java Using Default Ports](/endpoint/outbound_network_connection_from_java_using_default_ports/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | +| [Wget Download and Bash Execution](/endpoint/wget_download_and_bash_execution/) | [Ingress Tool Transfer](/tags/#ingress-tool-transfer) | TTP | +| [Windows Java Spawning Shells](/endpoint/windows_java_spawning_shells/) | [Exploit Public-Facing Application](/tags/#exploit-public-facing-application) | TTP | + +#### Reference + +* [https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/](https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/) +* [https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j](https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j) +* [https://www.crowdstrike.com/blog/log4j2-vulnerability-analysis-and-mitigation-recommendations/](https://www.crowdstrike.com/blog/log4j2-vulnerability-analysis-and-mitigation-recommendations/) +* [https://www.lunasec.io/docs/blog/log4j-zero-day/](https://www.lunasec.io/docs/blog/log4j-zero-day/) +* [https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html](https://www.splunk.com/en_us/blog/security/log-jammin-log4j-2-rce.html) + + + +[*source*](https://github.com/splunk/security_content/tree/develop/stories/log4shell_cve-2021-44228.yml) \| *version*: **1** \ No newline at end of file diff --git a/docs/index.markdown b/docs/index.markdown index 1ea2cde434..238d9c6af0 100644 --- a/docs/index.markdown +++ b/docs/index.markdown @@ -28,7 +28,7 @@ feature_row: - image_path: /static/feature_playbooks.png alt: "100% free" title: "Playbooks" - excerpt: "See all **17** sets of steps 🐾 to automatically response to a threat." + excerpt: "See all **22** sets of steps 🐾 to automatically response to a threat." url: "/playbooks" btn_class: "btn--primary" btn_label: "Explore"

    bn*5N3UyU|^6~PBxXkOJTy-COliusgv4BpO)#&WRfk^&rFm;I^&a$xkTpgavo1d z20W>KS%=X}IA!X4tiQ+valf$kdo?-&b1{CaKpb$@Zc)YRR4L+Dzd>MN;Nr?gf%r3! z>wk0FmGR#deszy)^@7V6QeB^k9*izi5JRgHhl`U)SiINBYAlB)C29%isrvtfdn~Odc9QN3lI968@i9M~{ z^2hB5O~NrJ6@6)@>-2-OJ^4BX&EB}JY1^z!867EXrB;sP%E}5U$o-^N^ZJwmClz1R zX^TQ0e+_L;sltppB>j~u@0ub_$lhK~9QZ|9MJlXs}_B}8U(mYJRX zsrd2`UyQ)%`%&0uxG^a4W7=b(S{WdgItkZc0ZO7&n;z0K3f%O5~D`ISu1cm)dsW+!hF#Pzn3`lC6EvHonP=z!@kGjcuS=Q_%5tyHlMr|#KE zZEk-@Uk;d0+E|>n#(qNJ)~xgPBMvu#p_I1z4J^y(;aY#U8i*fnS;^pitSdVBHkTuQ zZIC`12AFqUz!Y=>0+6}ZP!veQgNj|Bo19_VrU&Te=El&j5`v?7Vj%J494N*U=Fwv& z$|1SA)jX|!D&vbeyYQfD|M>}(zBv3VpMvbWSJyM$uEaf6c+imfln#D8Kdj^Exh>zz$l|DFz zT!%khI7@gbD4hu6&ZrY>-O9+vt;@?j&{`5NrZub(;aYBC0E@9pF6P;3)`0|EM7X_R zxQgVKsI#H4tuYG8+j?i*hoWl>XW}>W$3{4yXt63q?LN9`6-=>?qotbbbqms319roO zY$L|*wO=F?g9A?!IgpZ=r-OW7&^}_Dr=eEeNmZI{m4;)Mk&|;16-Xh+a`@1oc3%!F z(+tG***hwHgDD?|odLqISH(yOE?fYskXO>s3rPsjwZqe!kYlf zxI4ODg?kW(dIf1VHDI-rHlo$h0|hHT#Ndi?Qce>A^o)55I_=x<%tFd}DxUlN9)C(% zR<^Uj7jIBqAK9v(MD~qZ(C4u{!duZ4b(N>|VlL6*=S> z=OeN3ieimk2iogcp#pPP1UJ42YF&w646uV`f^Tv<5eb4os@|=~l7JAx%t)COBHK&k za+7o5dHAKy!utY6J14?{i0@*IdzOPPE62wVikf_yPU%AW}YhdE7 zYdpY+OGxixoRQ`JXRU#LeFSa!c1_P`PW5cC0Q5a+(S6oZ0y%QTy`m{T8m@##&sJ|S zBJUoXb-8w3_q@RwHuzKU_g)}jjY5In)=Hi3N>_jniF@-7B(wFhQ6T~iQspZhRoQAY z@7~W` ze4)cl4V?Mo(DPUY{4&F@wN)^LtB#|=vUT7?KQCg7QueDRE2muIK=N&FT|RsI_?rwL zZks!3%UYA5sZSbmjjao()NhmVQOrL|~0SE1Mx)|BNgE0FU-xqR; zl%5axzWfy9C8*`11Ol<|Y?2XYb!DGPr;42MSLwfpRoCGAJ7YKnW%wYMuU9epSO&ZEq zJN0Pm0vPAhQPv%wZm*~;Al-oXmeV4}@@FLR1IQO~&%e7Ge5h7>vBMr^Ngzjxa69n% z)KK8Is`E_j1H;GeL&p@Jj}3h;aN3?k2ARcv?#^Pb>O}24<6Fz3$>Ab)d{WS{SV8_jNkDd$a2jdi{`yNXvo32eDM~1l4yv+OY?e#+` z{G_^l{u26kI{3kK)YJR2Y8Zmw_9MzbS7RTuw#y|3SFY>I*QFX8U9_9Kxi+&<8lKLx zG;K}%_hA-z3-l%LjVuDJ)7#W8XTV%2vM$Oc8ZPeqNb>9wIn`55Vvvb3ctX}mOOL!i zU=#0X+{BwWkYfx)ts(cx|MZw-6ts4%zw~TSB`KKRl-P6EU%ZHs(1+B^X!H)i}3 z=~+U8<2$&1@}f!C?#pCwp_lN@45=)&66p8(l8p^bh*Jq=Y%Op7&cWWwPz(m`uZ4)? zhE;4%sULf;bAi}eBu?w6Ob~;xUHiH!Lo&nZ3RKGqfPXnIO*BH#VU>LCFAjG5FW<&I zNormjufEIV3RH8qk1LmQwjJoK3X0s92jkE0tt8jU`1V{gsCEEnSRRq@Y8hOcpYzQ! z`gH^&WO=ab6eE~_wvhEFD_GPonr{*I^MGzxYmkF!>LIB0Qb??L(|&tIq_SRNXNF^; z;|CS@uQk3&wR~Qa@P$kTKBU=BF3+cmyXEaeNJ2>Qwjz@s4lB_ShLmB_p*6Lgtd4P* ztP`$hz}Osa&ne*OY8`|cId8d!xBDM{k`6-3VAF&gYLb^;_^XMrQ<}{xMKZ7*4&^5v zc{(S^Ls}4VIol5|a%pq&%S7V(v~@zt-ygF$a3QVb?xB39zQX4gQ>9cU17{*&ke^tJ zBt(e5Mve-7qU7`XFZMtMFp4~dTp&*C#S1!cP}SeLSjnabKDau=3SYw_bzncv_&EVBtLdd;M zdcJA~Mn?j50GJb6!fUd4b;XMX;oTw-!vUz?hZ#=U^mhhMb6JQ)P2f2L@8HGuXc z{qHsBS{WsGS6_~$ioGde_GN<%fAEE$D{2QH$|tVc_`H2#14i*vXr_=w;%h60cm=*l zOfnmHg4KG^6d@$~XgvUJkCd7%Q(_TFv5MJxftm5e+>Mi+ysK*+h;%U_{yHNx`Q+LTLuj4fCj;6H(lR5GT@H+`-}Dp@7dUEax0`Y~sUm zyoA4`@BeGpE;C-tE#*N|3HYP3tJ^x|42ldDZk4;Q42Lyd;E&F>8_I88d)vovs9*Lp z+hMBFP+t=SI}E0( ziwi*3fjYn_UAi66w)hiVd!z^4R@vlFIn*Wh!oL`k?nXGvPu0oZ2v6e43KWp59Xe-h3hu;J1JN}DU<-`?;&)sGv{|!iL^YLw5~<5z-N1>YQ*Wn0Y(npmKw= zz^o+IZ3C^dKW?v{D1m_{3ha5(i#YiWPJI#0z2G?9ly-zEw(e$lqMcV5eQerV3oTK{DJ4D{fHl^@T^j^lNp)Tgfi7g-tnPCQhbt zSPb4#CY-_8e}8$Q+*WJ8cv!9FwSNc)*pT&ivz5>^teiXRqrC!z1h>IjIVg?4#glxp z_V{p03wI;ngV4~fokmW^;19FbBp)%S33ZqCL%Kvn(Z$A-U)1cYd305eFoEFGTsB== z1XrZVp~nwTm$5m$(0BZGn|@+jFJ~YlCM&JFG1ThfsyV7t^v;*+F?>tzyP7#ZTNj^3 zQXAmbM9gAziwqTMZ(_X%a#Z_^krE7_x8=y6c)q>ZO!07`=UB-R1vpC2q}4v& z`SN*!k5l4sP;f4I2N@?HPAT8C+Qw&h{52%9eZlNf#H3YiDtSozIeX{3=3jaHi|pw- z_icN9G@F#?5_4G+PV9!Rdy@G}*K}sY2bG-HKj#EjFsyuLJ+4G*jZ9=;NC_@^*#b%F?Jb_LoP zcg*6&nQ`Xv!pM-G8JpC5$%$P*g@PS$;^?R?yC$7%Ep+8|tH~Kmx$;FVr1?M2*W-UP zuA~Q)r`Y7BPadA1cn)(Uu^E30WK3>=S-fYD~vBsxpj4;DxKr);#T_cj?B z@YWZ(lM3HwvW;oXI41ZQS?AD|oQEu%?|t>bKABwkh`w+)0=wlq^Dbl2=Iat&HmG*L z?xbQh=!4xIxs@YELN%=`|DJd!gyPP znzhuWxriC{%x~0%Gf9~8)hvDp51bz4?^v?42Y&mYXM;~G*F?YnJx1h5d(`QR50h)H z$|1KJ`fsAQ5d|e3@)R=GM!YHKr(+g%9?DC5we22XMl+v&u?R7F@f2iMJr>!vH{~&7 zJ12=fTSQ<|!EN=gZLB7220zY!98d~?uz6~Qq2$2+68Fw>4 z`wBYMq}F&)Q>X+pzn+?;Qvdqq2aY4$cPV7HpBVuCY;Et^$4z1UvC2m#&m=sruP6pc zW4m0fK2Vt|@p;H44nI#yo3`XJu6al#>+FWO#5RA*Uk`JT zQBM^`?-F5Kad3rr9@EProC5{)yUGbe37B^3^K6{Q&h79_eujr0hldFl`Z23JF_XO6 zM@tU&0-#7naZ36ppEoXqLVjo!WH8&_Oa$Q0QFPjuG|?MqZ;Pdz_t9urdp?V4rmjQe zex{;jc^Xm<)K&D*UTbroo1@$1jffyVkp5DOw3}BhDKIO`tkCH2H=Nixl+_IB4!nKB zQ%Z{XAXYe_Q=5GOu{+^9-xZe?DTXem_nDgs!A#lL@|s$dgLcfkg01MZFnlU!jk*oa zTa`zy%!CgB=0ODFNlm<)>}qd5JmKXWxM%47r0lW5SdCLM&!+~>oCq_MqmUe1bs&wc zt7l{TVyMnBx29pl<`q`RDfUZhKq7S9t)xaS(N-y$potigu-~N5*SJWKjBep?+&@aT zTI{vh;?BuXtV1RBq^qP=xlb!#$`f%@KbGlbUUc`Z@J?`6~oC6ENlL4qe)$hmE>y&lw4_SUK<3d!lrzR ztdawIH#1b>Sb05lsly*xH&MG|mL9O7IPLO7O2*ifNsNlvkeBs`$tSr^OtKKpw*iQ`cl(?}Mbu-_BmfNXvhzqPkl0dBETskiG<93@rF>^g|Pt&(EuY($UWucnY@RTPK zpOLTvjf~)yya#j&=OId%RW^p@QQqZ3SYfM#lY>SMOiB8v{akz~cBRB1V?ljMnM$02 zpRDG%7$r}U5m|IHG&0q$qi1IJWL4KlSuLuS;w^aB7q^w^;dXqW&3Dx@_$w1$a#7YJ zF~4d5eBB~0_Xs+HMc0YKQ&VX$f7=Jt>Y)Xp0r4W^Tb=6jn<^s9%J+B20=OdzUb;*F z;1l0JauCD%zcv2k)DT`sx8XXn9-2%r;B{Qe^q-LMp()tz-h%tG_*@;}lYQOUEC#!I zx7$^h;y`-+AjWFGtLZ+4V$-kfUj<&@e@t`Vd@sV>9ITgG+x@XdOJB~1@BAgKX9LR8LIa$PO)Lo2%fhrY zXpKC-uEE+bG~lR>cv!AN8|v5gB~<4;i0Dk6Q^5-pZsv3|m|uHp>`r~$#Rfl&nx4DP5M-Pa?9Kk#L)7ZIv8UscUmZ&t^$pvB^Ru_Ug-Gclu95?Ps@kD|9xq02JkMkdX8B;kh|AVz=93FTpkxlViXiu!5%tT1O^8 zyw0#v)UDO>y_n&8~8G(ZctG9_oSKX6gK6Cx^2+b`gSaEm(=xm(SO_g z;4aPjGY4$r}kq}&tls?n|vGFszI%!7b zv}hW*{^Z31cV^#{FTKfkELU<}CnKs2i6GO5S$gM9eY@i{O?uOJ3oDQn^@f^LXGW`h zx8mGAF4jWIVrdRnKJI(%7FK{_I76<4jPFScx8W zgZ;$Ov#JN@Au^FHj^0)JvvHo$Z5sB%ktX0ccuU=y7|cJJi@a^qu012SR~9y@f9)w@ zR9FP71|4ji0Tu672;TMM<323c>Nr=XXU62|z(0eiI~$)n%&j7GELkQ}_?jY}Z72}h zsCo3s?S4((>_Rww;KL1S_1gv`6i1S^ERDEZ`8@Rk)~hwW$)bB)`i_B_U}1Yqw_qW= zi+43c%a5RMbl+fHLi0jOgJs|0(Gh}j34%u?0C)~k&;c-s3D|+|^8C!-R^$?g=q7X1 zyiHRB=4*S;wHE;I=qXtsRp4r0=xncior0t9W`@$-kX(sU+|oPnl*71@_RVQ_mE+jz zugY>`UNiJgx=_S`vqnkR8)L+3c^G6f!(IAhs?DXdXxOZkJu(_$BQkDB6T5WM>+Ld6 zpW8t;Vn#hQ>)bn3Z&1<8NXIU6>vHT;*bQmy?oRvU{WN< zWXAJT0Xx})`8rnOdlDg2G4OTfXIvu$4RLDFFJUHNk4)XdU4x5NI_-7cp6vbnb}vpT zS}w6Mai=pQ?V0;PCe%ONWOvvAp78v^c`m0);cDI`L*UW84wSgh*L2;d@ikJ+dKVK9 zHHyH<`ZioIS*$7=_6;Auj8RR#bt2j7aqWAY@K2*g zzgH(>t~rkF>yZN`u}zLmk>jc(mOA&xtT9;GBsTM zHIGBn){XPng_LEQeU!MW_q|@?Ky?hRu#?x_hFND1JP{KFRu8x)&Uc=Uv%MnVCxSGo z9d&GtX}|Rl+?LyayB^~pB{H70l-{+T&rwxMn#Q;8nYdW=uCB)7j#C#!Ch~Te318DM zJNnZ#&$5<`y}m5PhXGY~IgZmHJrmE;csyQd0)^REnfU^@eKA=ikQo{fuVbZ=6G*(f zAtxR$u~DaYzUjEJW@y;0vTyk+*gA~RdfsyzfxUKg-q1~>cqH8*>c!s1v)N47>9aF) zA)+>67qbHZ3Kj%ZKZ!m{4cvlw zA9b|xjFGSV=r6uY6K{o^^v3pAwTlEaBg7(Gm4ix*uWj3lb+daC$ zIbc(}Bske$wpi5S6IN#AsH((R^jaId(}&Eg@Q99_q^ycMK~ z-FF=sX@OSWG*4IWULO(GmzpVbh4g>!h;GTSDOODtl?HQ5f>60}#p@yHuzZM|76AZ9 zX%EceY-4TcZWygx%} zF7bE9^CuKfl2eo@Vk=1zN2&geCnsThMmMs^qkg>80}=-10b_$_ZVk08RhMW-GNGp; zs=-^CD&SJQ+qw!Oms%s4==Xdt?+?T7+eJOC`T<(6tJaV`U^iwn<)Pbh!9;Vo(O<%Q zZ*GAXqh5W-kFgL8LABJ|VSZJO{cpZd9AQec?OkkGY*2P3j3!n2Cm2F;SnEF+c!g+{;!!$4}OXpX=2hF={ck1Gz?P zPnHElLdw-;j_*6wFEw3&IRfwf<~}{NZl?m-z&ho(9p1NO5eqW@r%N~<1M+2;haD)T$veHypY!s1-PYMy0&c(e$pF4g8U$CYo2^O_N7mP1bSsTYVAL z<0&FTF7R}fg}5I6f)>6@5q{QL(wk;1C(x=zT#Ou!Sta$PKqXN?SbMISZ6hgP92{f_ z@g5(DIlyzWO&d&UFZl_ltdU<*Vn3AQ~=kSl5A1km$a-uThb7`TP` z9*>OU8}zN(zy-c?+kyE!52pTx0?E^lhY@*(w*@#Wd}C&Tc+%X*8MQa!ImM$yvcOgk zSNO)Gdik3^*q6XH3vM(31M`{j!&h<-HJ>>hyb~Ekq5vsz<*EVbGA{x!ttDd3v)b zX!Hf@TP^GHaqj;ZWtC}AZb?kPJIzQ^>$&zc;7sjs3PAE)#+Ur}ET27Z{#oye zj4vn_3ib54PiEF5ek|GNtegN|Z)YI%IikK>ta5q^M-4D&>BXD213B)q^B<7Zw^U*S zuq9D|v->*L$bAPlso}!t{wO<8=Er%6F7zAO#!hp)rpxgQxE0X6oz8q2P&YLEQZ3c$ zCRlqEf&iTG?(_1P;lMQ-?49iNM0fJ7(YZq$58S2`QeTdQl3|71Ug>#(SNpu>NTb4g z)OZ}D{WL{fk@l5z!YxixmIuuxX5lc)<>bef38Nwu)UhoW%hrj3lP42?+40glV6`F3@0Q!ngQ5D0E5*>HjuJL-3ziHfNa|s zW;E2F^t(ozyg4e=yKeinwB>-_bRKEMnwuJ+>m|JF3h*=pKp}n|d@3(ORd*b@uVlWb zk!}a2r&+;W%z21%NXpQ>pW#v1)my^L@6;va!M4#HN2 zdrnq3hjK2Rf`=73zK;R|8iy?A+L_zh>koI7tEpn+G&a8}0iR8pfhTF%7mU~x1sjv> zS2KbmNRIAWoh@{inJDz(vG_s`w&vQMyJuwxA!;z+BEzc3nAW%7J%VF^P1?sOjJ z=95Fx`>>|gVP#klGp+u0-*8$1`$NLk`LoZVrxjfdztTW z?{8mtt>od3rH01>6RcwkCpO&wBft0dAj45h+f9DO((#evuBDG2$Da*Td#ZheIS06l zjz0OlUJJX?Z<{`o(PYLTpeGQJQx3MrQ9ME~oSP-3_-dG^bU}KdVgy60k#OiZnqb*Y z1^5g_)#6pzLa2U_2A2LIGjZPkctOuBK$mM^^X>!*!s)Il=T^qn)3@!fxDnTd4_4{G zbTx%vS-TVr);y(RGzfp#!6g}RTt`fVwtl|s(%%{5b;SI&MM_gx`gW{(Yb z^a6u!z*&wnGsfD!VwQRzMZ6B@Sg$uMx3XQ_uN!Vf*|F1sAQwhQI~>~<&OL1iL-UvW zOdtVpx4x)rG;@#Z?L}R=#Gb@NLEHyWr{5~opA{*^#^1P`4{6Bq-6v_#{^nx&Ame;3 zD!iZ{;JDWxud&RVC2=EmukklX=FLKVXWs%U)&JjMDQj5M1ur%C>}4#}Emnl>(kqsQ zHCCxMO`v!K$Pkq>N2}E_$DgkH%;ZkW4_BGiqtvU^K<0A}(Rr*4k{Y4Rt7~qOWGX;d zR2O<@(6YASb5@ZW2zFcxS|g4h^+@5a+oB5->v3o!O%vl%^Nec&vwax?1;jmpTP+DL z3zO&OB1TN(0r4;~6_bsOWe`46qIYha%xrsX^(a(s)_Zq<4h3yesPkNTYL|ANP8@yo zB>W-`SGy8RBVDciVug-I4&(kkrdk!P9w+ zb6pp(^3WHK!^K@lmBsE-{(N)^wVw6Dc7`<-2vo#n}I2RvU^2n)3#FRIM zLSX9t$sl#)PR80d1_F{AkTRYZaE>S6 z0LgV_$wu)a>D2~ZP0ht`D@Te7*#26-!;1!`&KZjd6IKc0?slOB6^=$>CCmo4k`!u@ zxyV=C-CG}|0tNQ4gSu-8jV;1{!h?fTxgF3Z)#wPts2IctzH<#UTBzK!3FkALP6Xrv z((Xyc<-FP-GP;GTMC*Cj*CacP)hjg8pE~wK^TJ2oNbQfByq*I;kkD4pSNcN~ z>F4;VsG%EW)_u@uW^QNY+(glD#^lgCA~dH;^d6KsS!7(HrAhKIEO&cbsNX2Ci*vl^ zxcfZFBrt)`gy9GmK+Jpfb5l!9+*bE0Kd+pDb%UTgI0FB{kbl!y+7-@<1Pl1{kwO%zdG_B4<#>CTDO`3toL|@!+4Q>cuK_UBm_KF8kf$+}Zf# zVkah-7(gu3@*rw<{rl zKfYvULvF`n1-3TIGj-|@<3WiIgcjv?{Jl4Z2;94J#Pp=`=lrwYsi!858xqKJfa&k7 zJK!l`AE=$VIR|uw3i{;t3*3`duR}iAU#Zf%{ITqWG_iEIJNEszoW zsuzC8^)lgoFqtZZg!mUnqvQ+@1#~_KZPl0i=%60^&jj);(Tz4*78H&ODa{wr^H=EN zSQ%kOk8zJgum54ny^wti4$TWhER@dp5XSu}cwHJnG=UQ_L;_hArp;xFS*adX7gNb2H9>_VW+J62Qqn!2Diz&7>t*q68Z;^m-e(_L4||F81cc4X(cg zCjcMVfvqY`Qhb18wJS+4 zU$8j?c1^Y~jPF)hhJ0v85p2qqD;Erp$Hl=CJ@w_`qKb;I(*r>BU@lU|Mtsnm8a&+` zbU`p#Blv|8xQ$bXi!mW(DL5=DtTHHr3P~?ve_7gUG&O!<$_l*3PG>qerJcGIEC4|~ zoI}KAslg$g)?<~nuG)!ux*++$Fc8aB?y*+)Q9w83Iv&5uIkX*twS*sSNm z%s^pSt>{HxkY|{!nNfeoweuZO3?GgwX*}V{zYXdp<3LEF5Lb5jT2NYBWIQ<6ZwzK= zhm>#4C_c)5N0Zevv=A$3wLCbLh0vEf6J(B`EqlqO2pE2VrKBs#gTCS~IXzs`kR_~V zjwSmy&#yUdN`|O&U%Rd@z4cJr=mH?z5Wqfkq_2)Vl6iXy6LMku%^m#)MvQd6rk@*% zpI2AoXEX#sfSW+N+S`9OjT9h2zB5$`+3qXY%-9Bo*pxu@n9CeZfIp2RRlHB`|^+daXGvCa| zcXk~v@|J5LPTQ$LvUKO{_C$qx()&k%3YBr@??^<2;uoZ(s1R8YE9e!`bL}N+f_2hx zkS_o7B>VB;+j@rBhVAX0{tQrx4v0qz&u4!;-m&hU#bVF`d%|()h0rO%**g1T0j8Mr zt_Sze5(H6$A(@EkXQKeDJ#R1PXAA^#_<{SCchsbQw7GXnl|i{E^Ev?cvw&Ki?r@=_??ZCDl*fZ1IO4B;`UQ^B9+g~qiAH-{p#BEwZi>Z}6W z%=Thld3)SV<#@&7@ql7zePX3fL45z`=ayfLVDC>H zyRy;(6Ip@xqOf}{(R7zA9AK?Y5keE^bETK+duyrTKa!zG_xeCw^SC=n_;Y$X>)--- z7h?wq^By4Sj(w?o{Y;QZqzH4pnY3NZq~C3`#`@=}CwX;sm&Mvt8F9Q1JvDM117@o9 zvK7LtbF@q+HUtu-EnfqE5+JJZCX4v)td+)-e2qoNdXI85?;%u9ol>k`PEu=O67YCo)SG=K@C7639`Uvl`!B%Be7%tb3LpEBkG$ z;kcbe(R^{f9E0Yy+C-HY?cYt@kv^Uv-JaD#j<36XJ6u3~$=!_}ud*K-9xJs7so!2+ z+1?dIjtxJ;yk>;fsP%|quXHvqOI`(z_1wJz*hf1BY)UUIMDe`o9}0`cK^~6mxgn^l zzGW7;Q#675DxaB=JhXk7i;HsEwLr=B7i5@(K^TEN~eLo=PV5$7K4sAqOlTUBVkex9X>`q)Y$L&iLuJ0dN3*W zQ@5kDGfc|rnN+geSe~ZL<52Ro2PLh~4TUb%9(?Gu!l#>t))~EE*Cs2Jv<+-^dzO7u zPXsKU+IpyZrODTM#Qodz= z0G3pIiEez_z_3%mFH<4;lY(98QIj$sY~tQ*$hUsC5-C*_C{5v3VsZ7;_O=bM5f&Qc zJ}4|62jF&3)8=J*L2HM>+O^>FEg3A2hu;5U@2#V%+TONdMGyoD1CT~hNC3`#)|=?3Xdw}>>-wP^*UyZfC>+54R5{f*~+zV933{qOtd49;@xxn|ul z@B6y1$@z*fG&rH1`85HJP0$mYdKxp3(#rWw_d#``R}Zhsn+lDQV1qhHwQgr&8#UPu<+P|{$bSC7zd z+9APr`GyDF*O%j#yT`BdbR@)-z$dI%el>c_yJh8>#pyecWoFACU2aYe=F&sLhY|ytlS3XE ze#uL;I1I-A9G9*(oFJ?4th*tyHKSWdJoX*1E-#2NiPnIh7Nv0Ut?9+b!1*Vtmt-JX z3jvRO8kx;m1y+Xi9d`9DuvDg&(jV{78XyK-U)T0;G{yV0CWzQ++I$F;Ut)za;xi@B z5--{;4(4#iRTk0dUOyLr@v!C%hTLoAPIyb2i)sLVD(armhxTY8At$`#9SaCUUM+g>nn$QS6@Rk~yC8)QC7(Wm zaC7j5`D^EiW5SkbyXtFvX*E>q_)|YVs&}UL;2t<&cuD#7_Y{bFxb5HBys$9k@2cL^ z`UE-sW=bwG$bD&qZ#}D?+S4#$>tT<({sQOZ!FFxcwBPPQzMEG>M1RuFrTa~>hQ&-d zFdDDDxTS)ol{8~*0UE3Jxz!-wthbpfL8mV7JP+n)Avm}@S*a@F1KXTny}pGc??`dt zLlA?tEGu|AxZ~Ifu#()!p@VEXU*TuK@p;Y}vGx5B%+xpyo%UM|yQW z$UQ3W=`+Q@CwRXmruMXs2w=b` z#&Bvk4R9ic`PMleaq2!-SMwq4w|`v=A1H%&^- zCzIyz|z>_9E^RO2b}*BPw)OW46*dRX$qx$y4r191H%J{%T|1*)BPXeH~ZaY4Oonuf_Rp* zu-r#hF6>U+1qpAd1AI^i7m;!uNGc&DsSnK`AWI=hrQ#zG_7#F8mDg6pqF67VIM2uZ zPoog`%H*FE39~_ z(2hUrX$$DD_wm8T3@J$|13A0D`B++V>U)yl1EaF**FV`=1yv=r!Dk;>cj*XilXMN; zp`^4rmthol;zH|SUm;Kgf{!x*p#MR-Q3g-C5ESf)2YCV8^A7Y>pOSd^x+*v}B?Pk^ zKmM8w9#K<$qO^>tIo^1+nD_qZ=qSZK$Bt#mXP#II+{9&Q=C%{XkksnbF#oPL(;)^U zE1`XUA?sm4;aE&&f-KEmE}?gbUd%zbl}MDzr#UCFsPTggBh@8`(RGG5{lxDJwtEU} z2QT8o`Qg^=E(B%$PM^V%^UW)_0vRJCIkNknpO`e?<;)hX0ICfn0+u*AmN^C=S;}pm zB7?!7hSL#ILPxy7I|A!9&~9jYO>&Ef5j+ycPtW7;O>Vl_HIlz#8!Yql+W_Q@=HNeK7g z2LZKrH&ynZz}Gm)8w;C}6+TTuz^3s~2IJLw%dgOtKMwsL+fguo+5l6rqS|xwSD%j0M8aT-j;x*HGX>9jGBgl^Ib zJTf3ONT4uCeC#&wuvQ14Y+kTx0KHN|p)pM;W61;ho=P zez)c(Hs(a)2kP82Cava>4Y^kNXn&8cCntKp-1X-OweezQ@p#$~?~Q|mNVx!mN_ebl zwrclQ3N-CydBPzdju&o91l{dV7<>#?n9$?Y-j=lO;h@k08ZRRb2 zt)0{XGciFxg}<8!CWjC^h@Nipum7cQTjT|mGE}Zs87*XwedGlSE(jb4$5ajQw#3fy zjBgq2!@fOfTYhu>0OXqt*Q<8}niunG?-b6qzt?lgx%)!jO=+Qjq#rSoN8qkU?K!8^ zX5${cH1~c&+m_;F8K-=wBKnCaXC4cv$s6BD+~lL_Sn|k)P&=Dw_q>~D%$o7JE~pnP`xFo(M( zKQUgrBa$J`Q#{V&q#?sg-}5IKvNmjg-v%Ud^z>p2$sbl9wI+1QT%mTGJ8v;k;@s!< z?e3e4Faz)PH+^{q>{U7~o%j?yt$HqFcWJziETpt<(dfJFyUllvAF&8kOUoI&4sD(I z{G>yH3WWb4GqkhB>$n0!AT#5idW|s=5Sm-8b8=ieIFDb$Dc?*%wn6 zt4V*-7=}m#_?t{`Yd`P%BvU(;Lo=;exnWAlK7p)kTDw+?>OJSDUc3rCs9Y`jUa8i< z0B>Ad-`ZOo%!>?)=JtR0WTFZ=JKYOIB4+Nuq7DpQh?Vz__(-{JhZsj(tO-fU5?h4# z7Z&ZL2e>r*5}I4&UQks_cUtgn7ZpwqPNY3llRD&1*P%C77&z{tg8^Pw2pctsU47eT z_|pq!d@-T@Ek`nbcvX?zg!-12AN+i_nj(A(f3SrtJ)MM_o*d|g%f(*scfmjDjmK?A z%a|U}hzC=$@|^B+S1u$a&H=EgaiyNkK;8uHNQvFu%*}p{36NJNWYL{BWM(nsBa}_sb*nY(F60_F z#Mss!zi+NkkCzBKP-0tf$?T`sXd~wym3zPvSlS-VV-Wmk;l_yNpuS^j3;;-vEWfeN z$8D{+(W&S$>>8oXER!UHlw#P47_qJ9{iz}sbx;}O*-BQjy`1Y>JXSZ9py9N`msYAm zTmp(m34yoec~A1e{d>TM_>oETJ@*v?kB;uki&(>$MWXa$otAv$!^<5{OH#VCy2h!F z(x&=_BKXPu%c;ZXiSLaO@G66Zl#Rr7W}y@h4Y#9$0IJ3Bw(aVQ>dE5xQ*{TTsk-G3 z1#$?zQc&655qx9>SWvS}E91v5R!e7E?a~E~a1IWu*%#|hsB5XJ&bbCd-~r%DV~y|~ zJbw;_{Fs`CUT9&#v}X$y1jC^Wu)2b)KsUffJlt}ea&yFQ?~E=4B}EA=PLHBz2eqga zKuz(I38Mta$z#G!$l0|Q?SSI&38Bf6`04^4)leY5J}4^!cmm!?J@4YF<@aw>G~DNM zVgW)!x|JnEB_2;*$vDQ<<o zpnflnaV$E01_{~F!^=&s@5aBC*^F@a+Vld%9(7~?8=9)q;Q1Mhf?22x0^#!Rw=xLA zWyrN)!pLK4jt6MlA~~N>^=U#tw-JX^vqyck(!`rG_n(HOFM<|fF0#};Hdpzy1R6}`e1l5F`#=fa_vdvHHC-z?$rHs z*JBzy63PXAD-BNXnzVl^C<*A?$%%xEh?dnsm`0~Nu?O?4&M)-6x;ZEnJMCWi+;thX z56K2NEzgXX-X%QLCf?g>kpbgJq!jv3sD(T2->!S+W;W(nBeek}oT_5kw$@8WYI^~z zPXojG*fYQN;tj59z*nZZKM+Yx2@83JI34zZ_X}AR~^v?vW zx(GV5?v$${08mhnCYRWX=ok_^%wd-(OF5nC$(!(Z`2I6MOs%_Xt*G}<{G-1H z6m{iP5W0f^f=_sGD;IYZ;2ey5TRZLr)Q3)(nQ&DCy^b*u=We=^@!@VlgPVmB@3Iej#bLd!)&dnAjiQ9f_H( zQ>stGrp#a){&?4JySd6-*0NgA(~O-H@c?bb#ub@x>VZ~&pN4yik*C8AWq^4wsZ z>uWDiG!Ya@%o4UfG3Z6Q3$T{uth0Yev4s zs$Il*m%UK3|Nwoh-Dcb=axOcQSCHHqp0}SsyRo~l9hEM@fKC{;PvGeqEX z_H&{;AfMTw^o1CN5dnZ;uQvev@b%=}gaIWe?)gM~ay-|+FRS=_f>*5VUqc4PS`iie zsFeQnjqsV78L9FrhqPqtkqSAGYPnh#Fw#5mE78(7eR#K=GR*A{t)VGE9+ z$2F5AoX4yYGl$+sWWR5O&#xS$4p<@!j04mPR@*>Yo`|ESCcZV1z|~&xS~!-mZ8sh| zNebvI%C3Z4ELQJ%)yb(H=w!F;dd+H)@Gv@#$L4?mf}2$^VJ&V-6zF|#b46)q2V231g9fdm;iE%y9|5PFsp7UDpsedW+>L({gFuZ zuSIiJH{6VnLpba^be4p?x=Hi^I)?`_9*ca%#sI}(5tjQ{g62$ePtciaVcJTJ#ev-S zpgP^O^hyksA0-I>wz0!ZoQr(uavY{hH+IjJlt7Ecp|TM$FqO}MqV(Qb}dJGOrqCU7(up4 zHBae=N-OifzJrskUHq8aW)ue#s6lj*(;Y8(!RzAL8Ycbs1+!9L-Bko29T>94sc<%y6G4-h^lPpkiEXQjl+;pWG zO{fBJ2*RnYYN-x0t&d8xpS(oFI?iE~(*hPUZe+f9H87;y;1*k&D{JU1b7(Y%TVr8c zYh)fRNN|O5REA%$;;1Jw`3q{uejHpRq<}+6o ztSPvxKLZj!Ohv$Z(Ua`y zE#_ZAX@O=aU`k)iON!bop$T7Y8;N0+P31{TWyT&YNVE9&lUF!(mdADlLrW*TJJ(Yj ze|JP63r`&Whbi7(=nt#jv0TwS3>B?t1*Nx+*n1jM&>VfSanJqvc~{r8mKj84R%Hp+fRNCFj*>F4^EH2f9wKK zc7FduD;esn1|So=s#%#pYoPBn;|5KQtJLXTSlx4f(8?o==fKncRzN_3Qhk21z{!Cr zM?0dCFPCt`S#{(I_%dWhheL#R5|&DIUX*QfXc>V$>u`c~JQe5A{;3;O05q0u|Jm1n zY>Nq?L19tpiNQuqxukM}ae%yXrUP+Pb;pXwD@qq#_9nil@jd8_+}l|-={o!)nx`#9 zDEPl@V#v9QBAN9>@1y4!a?!=1dW$Oynw46G)h3hGE_?$mTaD*kM(M6G$ip8k1EyA! z);@#(vfe;?|IM#N8=4@z%;%gcwpl$jP&2!79*Q@CK`9yS#FRVqs|_{@^waprM(%IU zHsnZP{r4hu6=SA#ro|7Nn$jhtBX&1(F}Iq-wpv!zbtBVkCfZK?yFfpncQ%=7l(Sz{ z0tN4XcmIEGzm%`ztU6LTN!s?i725;RDRPU)zXlu&zZK1MPNzlN26+HoqTW2+a_!eZ zG6s6n0(cWb_MIadGempIFX`JYi}KDI`(5*%l!8Y`U0=(#N3)-8{wQq&Aj<}Uh9V0U zSa*{Df9cJCOiqgM;ZAIdH1TYy!NN@sYUdQ)XLY<%)B*zi2B5T=Y~!bdJz-j@&Vo%O zQ1pL2313nm-&GHpivUaC-$A}6%Fro|0|%c+N#9SVcxPjn06%Y$7Zz#BWs04kN1ID{ zm#Ex+w+l_j`<%#Uuzf@;23g>o!?a^I(K|4e$b2NXS~cr)d{-Q)o+}{XwSV&1StVy{ zxpV@`tA%wLaa(J$Pc;Tf{kt7&;M&7PV;#|ACWYIVt;Lw5edi?qq*s2Kjv=;>zoqcD z#_?2$P?(0km%z{1H2GsWklKlP=JgMbEDAuK+KL{|qLq*|Q~sd-j}-mtgG;MkU4Gcj z`?K-jSoTKmO~jlZkM$5Od(GaL%RIUCGEQ1WuJ2_Jy`+=+|DnP%5d)%ecPZvNYNjOh zA=}+kViWL^dWlBRz1UK1COk~xL!3a!Wzy8G&8)mvZBRMnOq<4S&zK+(q3f&-jLgv~ zxm`s_j27Jg7;ftIKjL3x!2pc5jIuEDZ{~v>0}u6J8bXLz^#0Tbt|%P{WqN_a;|1{-hG{LeO?E^r7eU zZ|u-pJ{Vpf1_+N;R7w|`vi8_#6w!dCPHQ{b-|X?$B|ww#l|ccyG`6NQ zdkeXQj4Ui40DG-uxq};9JX1lv-9*8dYvqh8pscii%C89MzW(mlH9%z%6>#xI8rq{y zy^^7uiC97wMfGLqCqJl6w}}Un(Gp133mdB_w&177MyvV%u&rf`z?vBYYvw}QY3MV@ z>uB1tge+XTn-35lXW#RKLe>}G{NsAQ!ByqRWwYuld()Sx$Iz{({3X3qvm=UMXCP;W z84*s4Bs=@Mkwz6WiyR=!qStzSs#S;>CeU@l$8`*iy zr9jlnu25;`yX42wC?P*jin-A`E46*JkfafCD*aV-2U=Bh1GCdjoqhHLVOyY*W_I>^JPL|Tf=<%}_eG9>|6%y*8rBxWTh~@4&PkA<~ z+f0);!ilG6WxPdd=0mg8bGY@d)rbS~8l&OgvlswO?hdYBHe2r~;f#;!#kVN zf~4d=d2d-x^t*xnj~gzISfAM)w6)zU7`56&E+@2G9Xoq;4DGnQSzm1-t~=bleSEyT z$~m>Tlcz2oY@n&xySHodeqLAR0)Nex26ps1mz5V>4<}GM&6m zDZ=|_kLR${MF|Vr&vyf4%zVJ<_|n-cz1cU5G?!X?WULPlWfUXy z=UAwM)>&W8zJo{58-7-hdG_5?elxsv;b#voh$7s2#WDCC>)>#erqTBzQ#m&n{xkf! zy`Blf(-V%GK)dfk3c9C~pqZy569(Yw)W>G?=7Dzi9|3MnsI_Qt>+}yf$C+narJp`d zOzicx-DhlTYYTI5n~{}3mNNplXcP%5v~QADw9z#pCYmCeT883sbmi#0o14$Gd`2|GbRk) zN2q~LLev=SAp|yO2GH+6oE~Zj*Vkp(bseR0Du5Cj2=Kj#HZ(|Rpm73bD66#!y6I*o zYkmdwkqZM}wsNG|c3#GhxHc|{= z21s5TrCdYXka?i_q-PuT&mIuTf^QlI->pU)xvO9xGOyoApS=)D2fo3}(dC5L=o&$B z0bDz4o+ux@T&SFQ8Kp+mz~?n2;=IvehF5=BOHr>60mEI=`y3tR6YhYbE~BBnMrT8Q z1_GLnUyUHd`X4`)$O&{WA>`gMYTivi_dj$ev7ui;!OG86xnDSVLHU<4di#By0R2Cq z7Sawm+a2=&u`QFwAc1yeJV8M1ch=9Og0pW<0`n8q_LUN~TZq=62ays1AZ_-i4dFEC zY|PrRkJ`iM38AGlzh{nn)-4l=$YW7d_yX#Ue?>q3G~v4ox>?0TUxb62nr5ivp)rFO zwHwZg!=GG3nV|Ef;3uOWX39|AlmJ^&D45&^wV(dsNjn>+Z8|`0&<-;s zKg!5;M<14%a-awdjMxjL2 z19Wqo;+po$v&F$N0X4NO#(goU9pDL(yuJ`gdV^}>U!@v<7Go_LY(pA}Aa1m9SwNzC z?REfa?+b&;#Cm!I+!c1#h9VzWzn<~}RNMp;C|{OOQ_^|pefbh}^Xk(iRDsI$YcT!6 zmmiFw<4M`zg=|$ul>F%e>1peKpFV-^CD1S+=Yevh;9#0TU9HIXc->l)5JaT{bDoc!!!NOlY1AFG#zfUbq8Z2;Un*IfF!NrC?ra zn?eRqCdeI#XU}3wH)@dQ4Zx<|w=6SfIh&U<7L@b0?WuB2JxBMyOG^M#x!Hl7JXHXH z6rKWij@s2mu#zg=EvJ@W;#;i3R_V}3AB76eS`M#1-RRE!{r;2$cfU8h8Jkfj7Y|p7 zr*sb1ozaflR>0Gio;!%A`>kKGVDMwT3a3mKgPP|jpG}|F;sQ@*9e2T#?ZJsYvDQ&_ zQtiosK(Q6;RNHFa*yx&Z`QY!u5x~T8u(%Ubu)KP8Y9j3J^W9Y`;Eha}H4ZKt$E#(e>79YtotiVblX6V4s25nkpUY(lNs?< zU^MQ8gplj6pKmD08SlkwZ$tjW(^POo7TM!1h}hIliI2&c$&ST^igONE~q2* zy;nmW{VCO&U^8l8w>5LBWejpL73ABMxm$DgV}4`-v?x8^CiukKdi72i$k5?{PYk!S z=y`w_XM287+O0Hz-Z5}+PF;k(p?t}Q(gWu(kfhDO)d0U?7|h@$3EJyv0kU^zR?G%v z0lxNPAj`hA&s%aR7@&*^$5;Aiy%H_}UI`~UUV@V# zOrQIw9eK)%zlupX7&<}jVI~}&jgLsyPgYm0vEQUFhJOq9k1q4mg#t}8-RY~Scg)Z8 z{OOOd0u|q1Z&kPha)+0?dhO3fhEw4it?|*GORLL_@XV>9uj9UuYD>0 zyb~--eP(%u37~c+6MA81?KD%J2WB{`*%>ac?{P`H~*$OM}ptY`)L4qs*`&&e_ z1T{$ig~j_&vr}+qmyXKcL^VY81gs2gFtZohTYrkltnr0~%d#&V)O*SlA9-dfCO(zL zU+f3L`Id!#E0g{�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