mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
updating docs and package bits [ci skip]
This commit is contained in:
@@ -27,12 +27,29 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 30
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Recon
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/simulated_icedid/windows-sysmon.log
|
||||
impact: 30
|
||||
kill_chain_phases:
|
||||
- Reconnaissance
|
||||
message: parent process $parent_process_name$ spawning chcp process $process_name$
|
||||
with parent command line $parent_process$
|
||||
mitre_attack_id:
|
||||
- T1059
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: user
|
||||
type: user
|
||||
role:
|
||||
- Victim
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -47,22 +64,5 @@ tags:
|
||||
- parent_process_id
|
||||
- dest
|
||||
- user
|
||||
security_domain: endpoint
|
||||
impact: 30
|
||||
confidence: 30
|
||||
risk_score: 9
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Recon
|
||||
message: parent process $parent_process_name$ spawning chcp process $process_name$
|
||||
with parent command line $parent_process$
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: user
|
||||
type: user
|
||||
role:
|
||||
- Victim
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -24,12 +24,29 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 100
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/simulated_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: process $SourceImage$ create a remote thread to shell app process $TargetImage$
|
||||
in host $Computer$
|
||||
mitre_attack_id:
|
||||
- T1055
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -43,22 +60,5 @@ tags:
|
||||
- StartAddress
|
||||
- EventCode
|
||||
- Computer
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 100
|
||||
risk_score: 70
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: process $SourceImage$ create a remote thread to shell app process $TargetImage$
|
||||
in host $Computer$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -23,26 +23,19 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/simulated_icedid/windows-sysmon.log
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack_id:
|
||||
- T1204.002
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
- Splunk Cloud
|
||||
required_fields:
|
||||
- _time
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
automated_detection_testing: passed
|
||||
confidence: 90
|
||||
risk_score: 63
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Execution
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/simulated_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: process $SourceImage$ create a file $TargetImage$ in host $Computer$
|
||||
mitre_attack_id:
|
||||
- T1204.002
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
@@ -52,4 +45,11 @@ tags:
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
- Splunk Cloud
|
||||
required_fields:
|
||||
- _time
|
||||
risk_score: 63
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -23,12 +23,28 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 90
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Collection
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/simulated_icedid/windows-sysmon.log
|
||||
impact: 80
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: process $SourceImage$ create a file $TargetImage$ in host $Computer$
|
||||
mitre_attack_id:
|
||||
- T1560.001
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -40,21 +56,5 @@ tags:
|
||||
- process_id
|
||||
- process_name
|
||||
- Computer
|
||||
security_domain: endpoint
|
||||
impact: 80
|
||||
confidence: 90
|
||||
risk_score: 72
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Collection
|
||||
message: process $SourceImage$ create a file $TargetImage$ in host $Computer$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -28,12 +28,24 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 90
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Execution
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/phish_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: Office application spawning regsvr32.exe on $dest$
|
||||
mitre_attack_id:
|
||||
- T1566.001
|
||||
observable:
|
||||
- name: dest
|
||||
type: Endpoint
|
||||
role:
|
||||
- Victim
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -48,17 +60,5 @@ tags:
|
||||
- Processes.process_guid
|
||||
- Processes.user
|
||||
- Processes.dest
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 90
|
||||
risk_score: 63
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Execution
|
||||
message: Office application spawning regsvr32.exe on $dest$
|
||||
observable:
|
||||
- name: dest
|
||||
type: Endpoint
|
||||
role:
|
||||
- Victim
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -11,10 +11,11 @@ description: The following analytic identifies suspicious PowerShell script exec
|
||||
adversary will map all running security applications or services. During triage,
|
||||
review parallel processes within the same timeframe. Review the full script block
|
||||
to identify other related artifacts.
|
||||
search: '`powershell` EventCode=4104 (Message = "*SELECT*" OR Message = "*WMIC*") AND (Message = "*AntiVirusProduct*"
|
||||
OR Message = "*AntiSpywareProduct*") | stats count min(_time) as firstTime max(_time)
|
||||
as lastTime by EventCode Message ComputerName User | `security_content_ctime(firstTime)`
|
||||
| `security_content_ctime(lastTime)` | `recon_avproduct_through_pwh_or_wmi_filter`'
|
||||
search: '`powershell` EventCode=4104 (Message = "*SELECT*" OR Message = "*WMIC*")
|
||||
AND (Message = "*AntiVirusProduct*" OR Message = "*AntiSpywareProduct*") | stats
|
||||
count min(_time) as firstTime max(_time) as lastTime by EventCode Message ComputerName
|
||||
User | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
|
||||
| `recon_avproduct_through_pwh_or_wmi_filter`'
|
||||
how_to_implement: To successfully implement this analytic, you will need to enable
|
||||
PowerShell Script Block Logging on some or all endpoints. Additional setup here
|
||||
https://docs.splunk.com/Documentation/UBA/5.0.4.1/GetDataIn/AddPowerShell#Configure_module_logging_for_PowerShell.
|
||||
|
||||
@@ -9,8 +9,8 @@ datamodel:
|
||||
description: This analytic identifies suspicious commandline parameter that are commonly
|
||||
used by REVIL ransomware to encrypts the compromise machine.
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
|
||||
as lastTime from datamodel=Endpoint.Processes where Processes.process = "* -nolan *"
|
||||
OR Processes.process = "* -nolocal *" OR Processes.process = "* -fast *" OR Processes.process
|
||||
as lastTime from datamodel=Endpoint.Processes where Processes.process = "* -nolan
|
||||
*" OR Processes.process = "* -nolocal *" OR Processes.process = "* -fast *" OR Processes.process
|
||||
= "* -full *" by Processes.process_name Processes.process Processes.parent_process_name
|
||||
Processes.parent_process Processes.dest Processes.user Processes.process_id Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
|
||||
|
||||
@@ -24,12 +24,29 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 80
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: rundl32 process $SourceImage$ create a remote thread to process $TargetImage$
|
||||
in host $Computer$
|
||||
mitre_attack_id:
|
||||
- T1055
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -43,22 +60,5 @@ tags:
|
||||
- StartAddress
|
||||
- EventCode
|
||||
- Computer
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 80
|
||||
risk_score: 56
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: rundl32 process $SourceImage$ create a remote thread to process $TargetImage$
|
||||
in host $Computer$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -25,12 +25,29 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 100
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: rundl32 process $SourceImage$ create a remote thread to browser process
|
||||
$TargetImage$ in host $Computer$
|
||||
mitre_attack_id:
|
||||
- T1055
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -44,22 +61,5 @@ tags:
|
||||
- StartAddress
|
||||
- EventCode
|
||||
- Computer
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 100
|
||||
risk_score: 70
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: rundl32 process $SourceImage$ create a remote thread to browser process
|
||||
$TargetImage$ in host $Computer$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -25,12 +25,29 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 80
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: rundll32 process $process_name$ having a dns query to $QueryName$ in host
|
||||
$Computer$
|
||||
mitre_attack_id:
|
||||
- T1218.011
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -43,22 +60,5 @@ tags:
|
||||
- ProcessId
|
||||
- direction
|
||||
- Computer
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 80
|
||||
risk_score: 56
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: rundll32 process $process_name$ having a dns query to $QueryName$ in host
|
||||
$Computer$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -24,12 +24,28 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 100
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 80
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: rundll32 process $process_name$ drops a file $TargetFilename$ in host $dest$
|
||||
mitre_attack_id:
|
||||
- T1218.011
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -41,21 +57,5 @@ tags:
|
||||
- ProcessGuid
|
||||
- dest
|
||||
- user_id
|
||||
security_domain: endpoint
|
||||
impact: 80
|
||||
confidence: 100
|
||||
risk_score: 80
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: rundll32 process $process_name$ drops a file $TargetFilename$ in host $dest$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -25,12 +25,28 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 30
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Collection
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/simulated_icedid/windows-sysmon.log
|
||||
impact: 30
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: process $SourceImage$ create a file $TargetImage$ in host $Computer$
|
||||
mitre_attack_id:
|
||||
- T1005
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -42,21 +58,5 @@ tags:
|
||||
- EventCode
|
||||
- ProcessId
|
||||
- Image
|
||||
security_domain: endpoint
|
||||
impact: 30
|
||||
confidence: 30
|
||||
risk_score: 9
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Collection
|
||||
message: process $SourceImage$ create a file $TargetImage$ in host $Computer$
|
||||
observable:
|
||||
- name: Computer
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: SourceImage
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -27,12 +27,28 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 80
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: regsvr32 process $process_name$ with commandline $process$ in host $dest$
|
||||
mitre_attack_id:
|
||||
- T1218.010
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -47,21 +63,5 @@ tags:
|
||||
- parent_process_id
|
||||
- dest
|
||||
- user
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 80
|
||||
risk_score: 56
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: regsvr32 process $process_name$ with commandline $process$ in host $dest$
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -26,12 +26,28 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 80
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 70
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: rundll32 process $process_name$ with commandline $process$ in host $dest$
|
||||
mitre_attack_id:
|
||||
- T1218.011
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -46,21 +62,5 @@ tags:
|
||||
- parent_process_id
|
||||
- dest
|
||||
- user
|
||||
security_domain: endpoint
|
||||
impact: 70
|
||||
confidence: 80
|
||||
risk_score: 56
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: rundll32 process $process_name$ with commandline $process$ in host $dest$
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -26,12 +26,28 @@ references:
|
||||
tags:
|
||||
analytic_story:
|
||||
- Icedid
|
||||
automated_detection_testing: passed
|
||||
confidence: 70
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/icedid/inf_icedid/windows-sysmon.log
|
||||
impact: 60
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
message: rundll32 process $process_name$ with commandline $process$ in host $dest$
|
||||
mitre_attack_id:
|
||||
- T1218.011
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
product:
|
||||
- Splunk Enterprise
|
||||
- Splunk Enterprise Security
|
||||
@@ -46,21 +62,5 @@ tags:
|
||||
- parent_process_id
|
||||
- dest
|
||||
- user
|
||||
security_domain: endpoint
|
||||
impact: 60
|
||||
confidence: 70
|
||||
risk_score: 42
|
||||
context:
|
||||
- Source:Endpoint
|
||||
- Stage:Defense Evasion
|
||||
message: rundll32 process $process_name$ with commandline $process$ in host $dest$
|
||||
observable:
|
||||
- name: dest
|
||||
type: Hostname
|
||||
role:
|
||||
- Victim
|
||||
- name: process_name
|
||||
type: process name
|
||||
role:
|
||||
- Attacker
|
||||
automated_detection_testing: passed
|
||||
security_domain: endpoint
|
||||
|
||||
+163
-146
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:43:54 UTC
|
||||
# On Date: 2021-08-12T23:58:40 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
@@ -21,10 +21,10 @@ support_searches = ["ESCU - Previously Seen AWS Cross Account Activity"]
|
||||
data_models = []
|
||||
providing_technologies = none
|
||||
description = Track when a user assumes an IAM role in another AWS account to obtain cross-account access to services and resources in that account. Accessing new roles could be an indication of malicious activity.
|
||||
narrative = Amazon Web Services (AWS) admins manage access to AWS resources and services across the enterprise using AWS's Identity and Access Management (IAM) functionality. IAM provides the ability to create and manage AWS users, groups, and roles-each with their own unique set of privileges and defined access to specific resources (such as EC2 instances, the AWS Management Console, API, or the command-line interface). Unlike conventional (human) users, IAM roles are assumable by anyone in the organization. They provide users with dynamically created temporary security credentials that expire within a set time period.\
|
||||
narrative = Amazon Web Services (AWS) admins manage access to AWS resources and services across the enterprise using AWS's Identity and Access Management (IAM) functionality. IAM provides the ability to create and manage AWS users, groups, and roles-each with their own unique set of privileges and defined access to specific resources (such as EC2 instances, the AWS Management Console, API, or the command-line interface). Unlike conventional (human) users, IAM roles are assumable by anyone in the organization. They provide users with dynamically created temporary security credentials that expire within a set time period.\
|
||||
Herein lies the rub. In between the time between when the temporary credentials are issued and when they expire is a period of opportunity, where a user could leverage the temporary credentials to wreak havoc-spin up or remove instances, create new users, elevate privileges, and other malicious activities-throughout the environment.\
|
||||
This Analytic Story includes searches that will help you monitor your AWS CloudTrail logs for evidence of suspicious cross-account activity. For example, while accessing multiple AWS accounts and roles may be perfectly valid behavior, it may be suspicious when an account requests privileges of an account it has not accessed in the past. After identifying suspicious activities, you can use the provided investigative searches to help you probe more deeply.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[AWS IAM Privilege Escalation]
|
||||
category = Cloud Security
|
||||
@@ -42,7 +42,7 @@ providing_technologies = none
|
||||
description = This analytic story contains detections that query your AWS Cloudtrail for activities related to privilege escalation.
|
||||
narrative = Amazon Web Services provides a neat feature called Identity and Access Management (IAM) that enables organizations to manage various AWS services and resources in a secure way. All IAM users have roles, groups and policies associated with them which governs and sets permissions to allow a user to access specific restrictions.\
|
||||
However, if these IAM policies are misconfigured and have specific combinations of weak permissions; it can allow attackers to escalate their privileges and further compromise the organization. Rhino Security Labs have published comprehensive blogs detailing various AWS Escalation methods. By using this as an inspiration, Splunk’s research team wants to highlight how these attack vectors look in AWS Cloudtrail logs and provide you with detection queries to uncover these potentially malicious events via this Analytic Story. \
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[AWS Network ACL Activity]
|
||||
category = Cloud Security
|
||||
@@ -59,7 +59,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Monitor your AWS network infrastructure for bad configurations and malicious activity. Investigative searches help you probe deeper, when the facts warrant it.
|
||||
narrative = AWS CloudTrail is an AWS service that helps you enable governance, compliance, and operational/risk auditing of your AWS account. Actions taken by a user, role, or an AWS service are recorded as events in CloudTrail. It is crucial for a company to monitor events and actions taken in the AWS Management Console, AWS Command Line Interface, and AWS SDKs and APIs to ensure that your servers are not vulnerable to attacks. This analytic story contains detection searches that leverage CloudTrail logs from AWS to check for bad configurations and malicious activity in your AWS network access controls.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[AWS Security Hub Alerts]
|
||||
category = Cloud Security
|
||||
@@ -76,7 +76,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = This story is focused around detecting Security Hub alerts generated from AWS
|
||||
narrative = AWS Security Hub collects and consolidates findings from AWS security services enabled in your environment, such as intrusion detection findings from Amazon GuardDuty, vulnerability scans from Amazon Inspector, S3 bucket policy findings from Amazon Macie, publicly accessible and cross-account resources from IAM Access Analyzer, and resources lacking WAF coverage from AWS Firewall Manager.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[AWS User Monitoring]
|
||||
category = Cloud Security
|
||||
@@ -91,12 +91,12 @@ investigative_searches = ["ESCU - Get Notable History - Response Task", "ESCU -
|
||||
support_searches = ["ESCU - Baseline of API Calls per User ARN", "ESCU - Baseline of Security Group Activity by ARN", "ESCU - Create a list of approved AWS service accounts", "ESCU - Previously seen API call per user roles in CloudTrail"]
|
||||
data_models = []
|
||||
providing_technologies = none
|
||||
description = Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
description = Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
In addition to compromising the security of your data, when bad actors leverage your compute resources, it can incur monumental costs, since you will be billed for any new EC2 instances and increased bandwidth usage. \
|
||||
Fortunately, you can leverage Amazon Web Services (AWS) CloudTrail--a tool that helps you enable governance, compliance, and risk auditing of your AWS account--to give you increased visibility into your user and resource activity by recording AWS Management Console actions and API calls. You can identify which users and accounts called AWS, the source IP address from which the calls were made, and when the calls occurred.\
|
||||
The detection searches in this Analytic Story are designed to help you uncover AWS API activities from users not listed in the identity table, as well as similar activities from disabled accounts.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Active Directory Password Spraying]
|
||||
category = Adversary Tactics
|
||||
@@ -115,7 +115,7 @@ description = Monitor for activities and techniques associated with Password Spr
|
||||
narrative = In a password spraying attack, adversaries leverage one or a small list of commonly used / popular passwords against a large volume of usernames to acquire valid account credentials. Unlike a Brute Force attack that targets a specific user or small group of users with a large number of passwords, password spraying follows the opposite aproach and increases the chances of obtaining valid credentials while avoiding account lockouts. This allows adversaries to remain undetected if the target organization does not have the proper monitoring and detection controls in place.\
|
||||
Password Spraying can be leveraged by adversaries across different stages in an attack. It can be used to obtain an iniial access to an environment but can also be used to escalate privileges when access has been already achieved. In some scenarios, this technique capitalizes on a security policy most organizations implement, password rotation. As enterprise users change their passwords, it is possible some pick predictable, seasonal passwords such as `$CompanyNameWinter`, `Summer2021`, etc.\
|
||||
Specifically, this Analytic Story is focused on detecting possible Password Spraying attacks against Active Directory environments leveraging Windows Event Logs in the `Account Logon` and `Logon/Logoff` Advanced Audit Policy categories. It presents 9 detection analytics which can aid defenders in identifyng instances where one source user, source host or source process attempts to authenticate against a target or targets using a high, unsual, number of unique users. A user, host or process attempting to authenticate with multiple users is not common behavior for legitimate systems and should be monitored by security teams. Possible false positive scenarios include but are not limited to vulnerability scanners, remote administration tools, multi-user systems and missconfigured systems. These should be easily spotted when first implementing the detection and addded to an allow list or lookup table. The presented detections can also be used in Threat Hunting exercises.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Apache Struts Vulnerability]
|
||||
category = Vulnerability
|
||||
@@ -131,21 +131,21 @@ support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Detect and investigate activities--such as unusually long `Content-Type` length, suspicious java classes and web servers executing suspicious processes--consistent with attempts to exploit Apache Struts vulnerabilities.
|
||||
narrative = In March of 2017, a remote code-execution vulnerability in the Jakarta Multipart parser in Apache Struts, a widely used open-source framework for creating Java web applications, was disclosed and assigned to CVE-2017-5638. About two months later, hackers exploited the flaw to carry out the world's <a href=https://www.usatoday.com/story/tech/2017/09/07/nations-biggest-hacks-and-data-breaches-millions/644311001/> 5th largest data breach</a>. The target, credit giant Equifax, <a href=https://money.cnn.com/2017/09/16/technology/equifax-breach-security-hole/index.html>told investigators</a> that it had become aware of the vulnerability two months before the attack. \
|
||||
narrative = In March of 2017, a remote code-execution vulnerability in the Jakarta Multipart parser in Apache Struts, a widely used open-source framework for creating Java web applications, was disclosed and assigned to CVE-2017-5638. About two months later, hackers exploited the flaw to carry out the world's <a href=https://www.usatoday.com/story/tech/2017/09/07/nations-biggest-hacks-and-data-breaches-millions/644311001/> 5th largest data breach</a>. The target, credit giant Equifax, <a href=https://money.cnn.com/2017/09/16/technology/equifax-breach-security-hole/index.html>told investigators</a> that it had become aware of the vulnerability two months before the attack. \
|
||||
The exploit involved manipulating the `Content-Type HTTP` header to execute commands embedded in the header.\
|
||||
This Analytic Story contains two different searches that help to identify activity that may be related to this issue. The first search looks for characteristics of the `Content-Type` header consistent with attempts to exploit the vulnerability. This should be a relatively pertinent indicator, as the `Content-Type` header is generally consistent and does not have a large degree of variation.\
|
||||
The second search looks for the execution of various commands typically entered on the command shell when an attacker first lands on a system. These commands are not generally executed on web servers during the course of day-to-day operation, but they may be used when the system is undergoing maintenance or troubleshooting.\
|
||||
First, it is helpful is to understand how often the notable event is generated, as well as the commonalities in some of these events. This may help determine whether this is a common occurrence that is of a lesser concern or a rare event that may require more extensive investigation. It can also help to understand whether the issue is restricted to a single user or system or is broader in scope.\
|
||||
When looking at the target of the behavior illustrated by the event, you should note the sensitivity of the user and or/system to help determine the potential impact. It is also helpful to see what other events involving the target have occurred in the recent past. This can help tie different events together and give further situational awareness regarding the target.\
|
||||
Various types of information for external systems should be reviewed and (potentially) collected if the incident is, indeed, judged to be malicious. Information like this can be useful in generating your own threat intelligence to create alerts in the future.\
|
||||
Looking at the country, responsible party, and fully qualified domain names associated with the external IP address--as well as the registration information associated with those domain names, if they are frequently visited by others--can help you answer the question of "who," in regard to the external system. Answering that can help qualify the event and may serve useful for tracking. In addition, there are various sources that can provide some reputation information on the IP address or domain name, which can assist in determining if the event is malicious in nature. Finally, determining whether or not there are other events associated with the IP address may help connect some dots or show other events that should be brought into scope.\
|
||||
Looking at the country, responsible party, and fully qualified domain names associated with the external IP address--as well as the registration information associated with those domain names, if they are frequently visited by others--can help you answer the question of "who," in regard to the external system. Answering that can help qualify the event and may serve useful for tracking. In addition, there are various sources that can provide some reputation information on the IP address or domain name, which can assist in determining if the event is malicious in nature. Finally, determining whether or not there are other events associated with the IP address may help connect some dots or show other events that should be brought into scope.\
|
||||
Gathering various data elements on the system of interest can sometimes help quickly determine that something suspicious may be happening. Some of these items include determining who else may have recently logged into the system, whether any unusual scheduled tasks exist, whether the system is communicating on suspicious ports, whether there are modifications to sensitive registry keys, and whether there are any known vulnerabilities on the system. This information can often highlight other activity commonly seen in attack scenarios or give more information about how the system may have been targeted.\
|
||||
hen a specific service or application is targeted, it is often helpful to know the associated version to help determine whether or not it is vulnerable to a specific exploit.\
|
||||
hen it is suspected there is an attack targeting a web server, it is helpful to look at some of the behavior of the web service to see if there is evidence that the service has been compromised. Some indications of this might be network connections to external resources, the web service spawning child processes that are not associated with typical behavior, and whether the service wrote any files that might be malicious in nature.\
|
||||
In the event that a suspicious file is found, we can review more information about it to help determine if it is, in fact, malicious. Identifying the file type, any processes that have the file open, what processes created and/or modified the file, and the number of systems that may have this file can help to determine if the file is malicious. Also, determining the file hash and checking it against reputation sources, such as VirusTotal, can sometimes quickly help determine whether it is malicious in nature.\
|
||||
Often, a simple inspection of a suspect process name and path can tell you if the system has been compromised. For example, if `svchost.exe` is found running from a location other than `C:\Windows\System32`, it is likely something malicious designed to hide in plain sight when simply reviewing process names. Similarly, if the process itself seems legitimate, but the parent process is running from the temporary browser cache, there may be activity initiated via a compromised website the user visited.\
|
||||
It can also be very helpful to examine various behaviors of the process of interest or the parent of the process that is of interest. For example, if it turns out that the process of interest is malicious, it would be good to see if the parent to that process spawned other processes that might also be worth further scrutiny. If a process is suspect, reviewing the network connections made around the time of the event and/or if the process spawned any child processes could be helpful in determining whether it is malicious or executing a malicious script.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Asset Tracking]
|
||||
category = Best Practices
|
||||
@@ -162,7 +162,7 @@ data_models = ["Network_Sessions"]
|
||||
providing_technologies = none
|
||||
description = Keep a careful inventory of every asset on your network to make it easier to detect rogue devices. Unauthorized/unmanaged devices could be an indication of malicious behavior that should be investigated further.
|
||||
narrative = This Analytic Story is designed to help you develop a better understanding of what authorized and unauthorized devices are part of your enterprise. This story can help you better categorize and classify assets, providing critical business context and awareness of their assets during an incident. Information derived from this Analytic Story can be used to better inform and support other analytic stories. For successful detection, you will need to leverage the Assets and Identity Framework from Enterprise Security to populate your known assets.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[BITS Jobs]
|
||||
category = Adversary Tactics
|
||||
@@ -179,7 +179,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Adversaries may abuse BITS jobs to persistently execute or clean up after malicious payloads.
|
||||
narrative = Windows Background Intelligent Transfer Service (BITS) is a low-bandwidth, asynchronous file transfer mechanism exposed through Component Object Model (COM). BITS is commonly used by updaters, messengers, and other applications preferred to operate in the background (using available idle bandwidth) without interrupting other networked applications. File transfer tasks are implemented as BITS jobs, which contain a queue of one or more file operations. The interface to create and manage BITS jobs is accessible through PowerShell and the BITSAdmin tool. Adversaries may abuse BITS to download, execute, and even clean up after running malicious code. BITS tasks are self-contained in the BITS job database, without new files or registry modifications, and often permitted by host firewalls. BITS enabled execution may also enable persistence by creating long-standing jobs (the default maximum lifetime is 90 days and extendable) or invoking an arbitrary program when a job completes or errors (including after system reboots).
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Baron Samedit CVE-2021-3156]
|
||||
category = Adversary Tactics
|
||||
@@ -195,8 +195,8 @@ support_searches = []
|
||||
data_models = []
|
||||
providing_technologies = none
|
||||
description = Uncover activity consistent with CVE-2021-3156. Discovered by the Qualys Research Team, this vulnerability has been found to affect sudo across multiple Linux distributions (Ubuntu 20.04 and prior, Debian 10 and prior, Fedora 33 and prior). As this vulnerability was committed to code in July 2011, there will be many distributions affected. Successful exploitation of this vulnerability allows any unprivileged user to gain root privileges on the vulnerable host.
|
||||
narrative = A non-privledged user is able to execute the sudoedit command to trigger a buffer overflow. After the successful buffer overflow, they are then able to gain root privileges on the affected host. The conditions needed to be run are a trailing "\" along with shell and edit flags. Monitoring the /var/log directory on Linux hosts using the Splunk Universal Forwarder will allow you to pick up this behavior when using the provided detection.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = A non-privledged user is able to execute the sudoedit command to trigger a buffer overflow. After the successful buffer overflow, they are then able to gain root privileges on the affected host. The conditions needed to be run are a trailing "\" along with shell and edit flags. Monitoring the /var/log directory on Linux hosts using the Splunk Universal Forwarder will allow you to pick up this behavior when using the provided detection.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Brand Monitoring]
|
||||
category = Abuse
|
||||
@@ -212,10 +212,10 @@ support_searches = ["ESCU - DNSTwist Domain Names"]
|
||||
data_models = ["Email", "Network_Resolution", "Web"]
|
||||
providing_technologies = none
|
||||
description = Detect and investigate activity that may indicate that an adversary is using faux domains to mislead users into interacting with malicious infrastructure. Monitor DNS, email, and web traffic for permutations of your brand name.
|
||||
narrative = While you can educate your users and customers about the risks and threats posed by typosquatting, phishing, and corporate espionage, human error is a persistent fact of life. Of course, your adversaries are all too aware of this reality and will happily leverage it for nefarious purposes whenever possible3phishing with lookalike addresses, embedding faux command-and-control domains in malware, and hosting malicious content on domains that closely mimic your corporate servers. This is where brand monitoring comes in.\
|
||||
narrative = While you can educate your users and customers about the risks and threats posed by typosquatting, phishing, and corporate espionage, human error is a persistent fact of life. Of course, your adversaries are all too aware of this reality and will happily leverage it for nefarious purposes whenever possible&#51;phishing with lookalike addresses, embedding faux command-and-control domains in malware, and hosting malicious content on domains that closely mimic your corporate servers. This is where brand monitoring comes in.\
|
||||
You can use our adaptation of `DNSTwist`, together with the support searches in this Analytic Story, to generate permutations of specified brands and external domains. Splunk can monitor email, DNS requests, and web traffic for these permutations and provide you with early warnings and situational awareness--powerful elements of an effective defense.\
|
||||
Notable events will include IP addresses, URLs, and user data. Drilling down can provide you with even more actionable intelligence, including likely geographic information, contextual searches to help you scope the problem, and investigative searches.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Clop Ransomware]
|
||||
category = Malware
|
||||
@@ -232,7 +232,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = 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.
|
||||
narrative = Clop ransomware campaigns targeting healthcare and other vertical sectors, involve the use of ransomware payloads along with exfiltration of data per HHS bulletin. Malicious actors demand payment for ransome of data and threaten deletion and exposure of exfiltrated data.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Cloud Cryptomining]
|
||||
category = Cloud Security
|
||||
@@ -248,11 +248,11 @@ support_searches = ["ESCU - Baseline Of Cloud Instances Destroyed", "ESCU - Base
|
||||
data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Monitor your cloud compute instances for activities related to cryptojacking/cryptomining. New instances that originate from previously unseen regions, users who launch abnormally high numbers of instances, or compute instances started by previously unseen users are just a few examples of potentially malicious behavior.
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
When malicious miners appropriate a cloud instance, often spinning up hundreds of new instances, the costs can become astronomical for the account holder. So it is critically important to monitor your systems for suspicious activities that could indicate that your network has been infiltrated. \
|
||||
This Analytic Story is focused on detecting suspicious new instances in your cloud environment to help prevent cryptominers from gaining a foothold. It contains detection searches that will detect when a previously unused instance type or AMI is used. It also contains support searches to build lookup files to ensure proper execution of the detection searches.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Cloud Federated Credential Abuse]
|
||||
category = Cloud Security
|
||||
@@ -267,9 +267,9 @@ investigative_searches = []
|
||||
support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
narrative = This story is composed of detection searches based on endpoint that addresses the use of Mimikatz, Escalation of Privileges and Abnormal processes that may indicate the extraction of Federated directory objects such as passwords, Oauth2 tokens, certificates and keys. Cloud environment (AWS, Azure) related events are also addressed in specific cloud environment detection searches.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Cobalt Strike]
|
||||
category = Adversary Tactics
|
||||
@@ -295,7 +295,7 @@ With that, new detections were generated focused on these spawnto processes spaw
|
||||
- Does the spawnto_ value make network connections?\
|
||||
- Is it normal for spawnto_ value to load jscript, vbscript, Amsi.dll, and clr.dll?\
|
||||
While investigating a detection related to this Analytic Story, keep in mind the parent process, process path, and any file modifications that may occur. Tuning may need to occur to remove any false positives.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[ColdRoot MacOS RAT]
|
||||
category = Malware
|
||||
@@ -311,10 +311,10 @@ support_searches = []
|
||||
data_models = []
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that relate to the ColdRoot Remote Access Trojan that affects MacOS. An example of some of these activities are changing sensative binaries in the MacOS sub-system, detecting process names and executables associated with the RAT, detecting when a keyboard tab is installed on a MacOS machine and more.
|
||||
narrative = Conventional wisdom holds that Apple's MacOS operating system is significantly less vulnerable to attack than Windows machines. While that point is debatable, it is true that attacks against MacOS systems are much less common. However, this fact does not mean that Macs are impervious to breaches. To the contrary, research has shown that that Mac malware is increasing at an alarming rate. According to AV-test, in 2018, there were 86,865 new MacOS malware variants, up from 27,338 the year before—a 31% increase. In contrast, the independent research firm found that new Windows malware had increased from 65.17M to 76.86M during that same period, less than half the rate of growth. The bottom line is that while the numbers look a lot smaller than Windows, it's definitely time to take Mac security more seriously.\
|
||||
This Analytic Story addresses the ColdRoot remote access trojan (RAT), which was uploaded to Github in 2016, but was still escaping detection by the first quarter of 2018, when a new, more feature-rich variant was discovered masquerading as an Apple audio driver. Among other capabilities, the Pascal-based ColdRoot can heist passwords from users' keychains and remotely control infected machines without detection. In the initial report of his findings, Patrick Wardle, Chief Research Officer for Digita Security, explained that the new ColdRoot RAT could start and kill processes on the breached system, spawn new remote-desktop sessions, take screen captures and assemble them into a live stream of the victim's desktop, and more.\
|
||||
narrative = Conventional wisdom holds that Apple's MacOS operating system is significantly less vulnerable to attack than Windows machines. While that point is debatable, it is true that attacks against MacOS systems are much less common. However, this fact does not mean that Macs are impervious to breaches. To the contrary, research has shown that that Mac malware is increasing at an alarming rate. According to AV-test, in 2018, there were 86,865 new MacOS malware variants, up from 27,338 the year before&#151;a 31% increase. In contrast, the independent research firm found that new Windows malware had increased from 65.17M to 76.86M during that same period, less than half the rate of growth. The bottom line is that while the numbers look a lot smaller than Windows, it's definitely time to take Mac security more seriously.\
|
||||
This Analytic Story addresses the ColdRoot remote access trojan (RAT), which was uploaded to Github in 2016, but was still escaping detection by the first quarter of 2018, when a new, more feature-rich variant was discovered masquerading as an Apple audio driver. Among other capabilities, the Pascal-based ColdRoot can heist passwords from users' keychains and remotely control infected machines without detection. In the initial report of his findings, Patrick Wardle, Chief Research Officer for Digita Security, explained that the new ColdRoot RAT could start and kill processes on the breached system, spawn new remote-desktop sessions, take screen captures and assemble them into a live stream of the victim's desktop, and more.\
|
||||
Searches in this Analytic Story leverage the capabilities of OSquery to address ColdRoot detection from several different angles, such as looking for the existence of associated files and processes, and monitoring for signs of an installed keylogger.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Collection and Staging]
|
||||
category = Adversary Tactics
|
||||
@@ -333,7 +333,7 @@ description = Monitor for and investigate activities--such as suspicious writes
|
||||
narrative = A common adversary goal is to identify and exfiltrate data of value from a target organization. This data may include email conversations and addresses, confidential company information, links to network design/infrastructure, important dates, and so on.\
|
||||
Attacks are composed of three activities: identification, collection, and staging data for exfiltration. Identification typically involves scanning systems and observing user activity. Collection can involve the transfer of large amounts of data from various repositories. Staging/preparation includes moving data to a central location and compressing (and optionally encoding and/or encrypting) it. All of these activities provide opportunities for defenders to identify their presence. \
|
||||
Use the searches to detect and monitor suspicious behavior related to these activities.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Command and Control]
|
||||
category = Adversary Tactics
|
||||
@@ -351,7 +351,7 @@ providing_technologies = none
|
||||
description = Detect and investigate tactics, techniques, and procedures leveraged by attackers to establish and operate command and control channels. Implants installed by attackers on compromised endpoints use these channels to receive instructions and send data back to the malicious operators.
|
||||
narrative = Threat actors typically architect and implement an infrastructure to use in various ways during the course of their attack campaigns. In some cases, they leverage this infrastructure for scanning and performing reconnaissance activities. In others, they may use this infrastructure to launch actual attacks. One of the most important functions of this infrastructure is to establish servers that will communicate with implants on compromised endpoints. These servers establish a command and control channel that is used to proxy data between the compromised endpoint and the attacker. These channels relay commands from the attacker to the compromised endpoint and the output of those commands back to the attacker.\
|
||||
Because this communication is so critical for an adversary, they often use techniques designed to hide the true nature of the communications. There are many different techniques used to establish and communicate over these channels. This Analytic Story provides searches that look for a variety of the techniques used for these channels, as well as indications that these channels are active, by examining logs associated with border control devices and network-access control lists.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Container Implantation Monitoring and Investigation]
|
||||
category = Cloud Security
|
||||
@@ -366,9 +366,9 @@ investigative_searches = []
|
||||
support_searches = []
|
||||
data_models = []
|
||||
providing_technologies = none
|
||||
description = Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
description = Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
narrative = Container Registrys provide a way for organizations to keep customized images of their development and infrastructure environment in private. However if these repositories are misconfigured or priviledge users credentials are compromise, attackers can potentially upload implanted containers which can be deployed across the organization. These searches allow operator to monitor who, when and what was uploaded to container registry.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Credential Dumping]
|
||||
category = Adversary Tactics
|
||||
@@ -384,10 +384,10 @@ support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Uncover activity consistent with credential dumping, a technique wherein attackers compromise systems and attempt to obtain and exfiltrate passwords. The threat actors use these pilfered credentials to further escalate privileges and spread throughout a target environment. The included searches in this Analytic Story are designed to identify attempts to credential dumping.
|
||||
narrative = Credential dumping—gathering credentials from a target system, often hashed or encrypted—is a common attack technique. Even though the credentials may not be in plain text, an attacker can still exfiltrate the data and set to cracking it offline, on their own systems. The threat actors target a variety of sources to extract them, including the Security Accounts Manager (SAM), Local Security Authority (LSA), NTDS from Domain Controllers, or the Group Policy Preference (GPP) files.\
|
||||
narrative = Credential dumping&#151;gathering credentials from a target system, often hashed or encrypted&#151;is a common attack technique. Even though the credentials may not be in plain text, an attacker can still exfiltrate the data and set to cracking it offline, on their own systems. The threat actors target a variety of sources to extract them, including the Security Accounts Manager (SAM), Local Security Authority (LSA), NTDS from Domain Controllers, or the Group Policy Preference (GPP) files.\
|
||||
Once attackers obtain valid credentials, they use them to move throughout a target network with ease, discovering new systems and identifying assets of interest. Credentials obtained in this manner typically include those of privileged users, which may provide access to more sensitive information and system operations.\
|
||||
The detection searches in this Analytic Story monitor access to the Local Security Authority Subsystem Service (LSASS) process, the usage of shadowcopies for credential dumping and some other techniques for credential dumping.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[DHS Report TA18-074A]
|
||||
category = Malware
|
||||
@@ -404,10 +404,10 @@ data_models = ["Endpoint", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Monitor for suspicious activities associated with DHS Technical Alert US-CERT TA18-074A. Some of the activities that adversaries used in these compromises included spearfishing attacks, malware, watering-hole domains, many and more.
|
||||
narrative = The frequency of nation-state cyber attacks has increased significantly over the last decade. Employing numerous tactics and techniques, these attacks continue to escalate in complexity. \
|
||||
There is a wide range of motivations for these state-sponsored hacks, including stealing valuable corporate, military, or diplomatic dataѿall of which could confer advantages in various arenas. They may also target critical infrastructure. \
|
||||
There is a wide range of motivations for these state-sponsored hacks, including stealing valuable corporate, military, or diplomatic data&#1151;all of which could confer advantages in various arenas. They may also target critical infrastructure. \
|
||||
One joint Technical Alert (TA) issued by the Department of Homeland and the FBI in mid-March of 2018 attributed some cyber activity targeting utility infrastructure to operatives sponsored by the Russian government. The hackers executed spearfishing attacks, installed malware, employed watering-hole domains, and more. While they caused no physical damage, the attacks provoked fears that a nation-state could turn off water, redirect power, or compromise a nuclear power plant.\
|
||||
Suspicious activities--spikes in SMB traffic, processes that launch netsh (to modify the network configuration), suspicious registry modifications, and many more--may all be events you may wish to investigate further. While the use of these technique may be an indication that a nation-state actor is attempting to compromise your environment, it is important to note that these techniques are often employed by other groups, as well.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[DNS Amplification Attacks]
|
||||
category = Abuse
|
||||
@@ -422,10 +422,10 @@ investigative_searches = ["ESCU - Get Notable History - Response Task"]
|
||||
support_searches = []
|
||||
data_models = ["Network_Resolution"]
|
||||
providing_technologies = none
|
||||
description = DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
narrative = The Domain Name System (DNS) is the protocol used to map domain names to IP addresses. It has been proven to work very well for its intended function. However if DNS is misconfigured, servers can be abused by attackers to levy amplification or redirection attacks against victims. Because DNS responses to `ANY` queries are so much larger than the queries themselves--and can be made with a UDP packet, which does not require a handshake--attackers can spoof the source address of the packet and cause much more data to be sent to the victim than if they sent the traffic themselves. The `ANY` requests are will be larger than normal DNS server requests, due to the fact that the server provides significant details, such as MX records and associated IP addresses. A large volume of this traffic can result in a DOS on the victim's machine. This misconfiguration leads to two possible victims, the first being the DNS servers participating in an attack and the other being the hosts that are the targets of the DOS attack.\
|
||||
The search in this story can help you to detect if attackers are abusing your company's DNS infrastructure to launch DNS amplification attacks causing Denial of Service to other victims.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
description = DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
narrative = The Domain Name System (DNS) is the protocol used to map domain names to IP addresses. It has been proven to work very well for its intended function. However if DNS is misconfigured, servers can be abused by attackers to levy amplification or redirection attacks against victims. Because DNS responses to `ANY` queries are so much larger than the queries themselves--and can be made with a UDP packet, which does not require a handshake--attackers can spoof the source address of the packet and cause much more data to be sent to the victim than if they sent the traffic themselves. The `ANY` requests are will be larger than normal DNS server requests, due to the fact that the server provides significant details, such as MX records and associated IP addresses. A large volume of this traffic can result in a DOS on the victim's machine. This misconfiguration leads to two possible victims, the first being the DNS servers participating in an attack and the other being the hosts that are the targets of the DOS attack.\
|
||||
The search in this story can help you to detect if attackers are abusing your company's DNS infrastructure to launch DNS amplification attacks causing Denial of Service to other victims.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[DNS Hijacking]
|
||||
category = Adversary Tactics
|
||||
@@ -443,14 +443,14 @@ providing_technologies = none
|
||||
description = Secure your environment against DNS hijacks with searches that help you detect and investigate unauthorized changes to DNS records.
|
||||
narrative = Dubbed the Achilles heel of the Internet (see https://www.f5.com/labs/articles/threat-intelligence/dns-is-still-the-achilles-heel-of-the-internet-25613), DNS plays a critical role in routing web traffic but is notoriously vulnerable to attack. One reason is its distributed nature. It relies on unstructured connections between millions of clients and servers over inherently insecure protocols.\
|
||||
The gravity and extent of the importance of securing DNS from attacks is undeniable. The fallout of compromised DNS can be disastrous. Not only can hackers bring down an entire business, they can intercept confidential information, emails, and login credentials, as well. \
|
||||
On January 22, 2019, the US Department of Homeland Security 2019's Cybersecurity and Infrastructure Security Agency (CISA) raised awareness of some high-profile DNS hijacking attacks against infrastructure, both in the United States and abroad. It issued Emergency Directive 19-01 (see https://cyber.dhs.gov/ed/19-01/), which summarized the activity and required government agencies to take the following four actions, all within 10 days: \
|
||||
On January 22, 2019, the US Department of Homeland Security 2019's Cybersecurity and Infrastructure Security Agency (CISA) raised awareness of some high-profile DNS hijacking attacks against infrastructure, both in the United States and abroad. It issued Emergency Directive 19-01 (see https://cyber.dhs.gov/ed/19-01/), which summarized the activity and required government agencies to take the following four actions, all within 10 days: \
|
||||
1. For all .gov or other agency-managed domains, audit public DNS records on all authoritative and secondary DNS servers, verify that they resolve to the intended location or report them to CISA.\
|
||||
1. Update the passwords for all accounts on systems that can make changes to each agency 2019's DNS records.\
|
||||
1. Implement multi-factor authentication (MFA) for all accounts on systems that can make changes to each agency's 2019 DNS records or, if impossible, provide CISA with the names of systems, the reasons why MFA cannot be enabled within the required timeline, and an ETA for when it can be enabled.\
|
||||
1. Update the passwords for all accounts on systems that can make changes to each agency 2019's DNS records.\
|
||||
1. Implement multi-factor authentication (MFA) for all accounts on systems that can make changes to each agency's 2019 DNS records or, if impossible, provide CISA with the names of systems, the reasons why MFA cannot be enabled within the required timeline, and an ETA for when it can be enabled.\
|
||||
1. CISA will begin regular delivery of newly added certificates to Certificate Transparency (CT) logs for agency domains via the Cyber Hygiene service. Upon receipt, agencies must immediately begin monitoring CT log data for certificates issued that they did not request. If an agency confirms that a certificate was unauthorized, it must report the certificate to the issuing certificate authority and to CISA. Of course, it makes sense to put equivalent actions in place within your environment, as well. \
|
||||
In DNS hijacking, the attacker assumes control over an account or makes use of a DNS service exploit to make changes to DNS records. Once they gain access, attackers can substitute their own MX records, name-server records, and addresses, redirecting emails and traffic through their infrastructure, where they can read, copy, or modify information seen. They can also generate valid encryption certificates to help them avoid browser-certificate checks. In one notable attack on the Internet service provider, GoDaddy, the hackers altered Sender Policy Framework (SPF) records a relatively minor change that did not inflict excessive damage but allowed for more effective spam campaigns.\
|
||||
The searches in this Analytic Story help you detect and investigate activities that may indicate that DNS hijacking has taken place within your environment.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[DarkSide Ransomware]
|
||||
category = Malware
|
||||
@@ -467,7 +467,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the DarkSide Ransomware
|
||||
narrative = This story addresses Darkside ransomware. This ransomware payload has many similarities to common ransomware however there are certain items particular to it. The creation of a .TXT log that shows every item being encrypted as well as the creation of ransomware notes and files adding a machine ID created based on CRC32 checksum algorithm. This ransomware payload leaves machines in minimal operation level,enough to browse the attackers websites. A customized URI with leaked information is presented to each victim.This is the ransomware payload that shut down the Colonial pipeline. The story is composed of several detection searches covering similar items to other ransomware payloads and those particular to Darkside payload.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Data Exfiltration]
|
||||
category = Adversary Tactics
|
||||
@@ -484,7 +484,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = The stealing of data by an adversary.
|
||||
narrative = Exfiltration comes in many flavors. Adversaries can collect data over encrypted or non-encrypted channels. They can utilise Command and Control channels that are already in place to exfiltrate data. They can use both standard data transfer protocols such as FTP, SCP, etc to exfiltrate data. Or they can use non-standard protocols such as DNS, ICMP, etc with specially crafted fields to try and circumvent security technologies in place.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Data Protection]
|
||||
category = Abuse
|
||||
@@ -501,7 +501,7 @@ data_models = ["Change_Analysis", "Network_Resolution"]
|
||||
providing_technologies = none
|
||||
description = Fortify your data-protection arsenal--while continuing to ensure data confidentiality and integrity--with searches that monitor for and help you investigate possible signs of data exfiltration.
|
||||
narrative = Attackers can leverage a variety of resources to compromise or exfiltrate enterprise data. Common exfiltration techniques include remote-access channels via low-risk, high-payoff active-collections operations and close-access operations using insiders and removable media. While this Analytic Story is not a comprehensive listing of all the methods by which attackers can exfiltrate data, it provides a useful starting point.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Deobfuscate-Decode Files or Information]
|
||||
category = Adversary Tactics
|
||||
@@ -518,7 +518,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Adversaries may use Obfuscated Files or Information to hide artifacts of an intrusion from analysis.
|
||||
narrative = An example of obfuscated files is `Certutil.exe` usage to encode a portable executable to a certificate file, which is base64 encoded, to hide the originating file. There are many utilities cross-platform to encode using XOR, using compressed .cab files to hide contents and scripting languages that may perform similar native Windows tasks. Triaging an event related will require the capability to review related process events and file modifications. Using a tool such as CyberChef will assist with identifying the encoding that was used, and potentially assist with decoding the contents.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Detect Zerologon Attack]
|
||||
category = Adversary Tactics
|
||||
@@ -535,7 +535,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Uncover activity related to the execution of Zerologon CVE-2020-11472, a technique wherein attackers target a Microsoft Windows Domain Controller to reset its computer account password. The result from this attack is attackers can now provide themselves high privileges and take over Domain Controller. The included searches in this Analytic Story are designed to identify attempts to reset Domain Controller Computer Account via exploit code remotely or via the use of tool Mimikatz as payload carrier.
|
||||
narrative = This attack is a privilege escalation technique, where attacker targets a Netlogon secure channel connection to a domain controller, using Netlogon Remote Protocol (MS-NRPC). This vulnerability exposes vulnerable Windows Domain Controllers to be targeted via unaunthenticated RPC calls which eventually reset Domain Contoller computer account ($) providing the attacker the opportunity to exfil domain controller credential secrets and assign themselve high privileges that can lead to domain controller and potentially complete network takeover. The detection searches in this Analytic Story use Windows Event viewer events and Sysmon events to detect attack execution, these searches monitor access to the Local Security Authority Subsystem Service (LSASS) process which is an indicator of the use of Mimikatz tool which has bee updated to carry this attack payload.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Disabling Security Tools]
|
||||
category = Adversary Tactics
|
||||
@@ -552,7 +552,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Looks for activities and techniques associated with the disabling of security tools on a Windows system, such as suspicious `reg.exe` processes, processes launching netsh, and many others.
|
||||
narrative = Attackers employ a variety of tactics in order to avoid detection and operate without barriers. This often involves modifying the configuration of security tools to get around them or explicitly disabling them to prevent them from running. This Analytic Story includes searches that look for activity consistent with attackers attempting to disable various security mechanisms. Such activity may involve monitoring for suspicious registry activity, as this is where much of the configuration for Windows and various other programs reside, or explicitly attempting to shut down security-related services. Other times, attackers attempt various tricks to prevent specific programs from running, such as adding the certificates with which the security tools are signed to a block list (which would prevent them from running).
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Domain Trust Discovery]
|
||||
category = Adversary Tactics
|
||||
@@ -569,7 +569,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Adversaries may attempt to gather information on domain trust relationships that may be used to identify lateral movement opportunities in Windows multi-domain/forest environments.
|
||||
narrative = Domain trusts provide a mechanism for a domain to allow access to resources based on the authentication procedures of another domain. Domain trusts allow the users of the trusted domain to access resources in the trusting domain. The information discovered may help the adversary conduct SID-History Injection, Pass the Ticket, and Kerberoasting. Domain trusts can be enumerated using the DSEnumerateDomainTrusts() Win32 API call, .NET methods, and LDAP. The Windows utility Nltest is known to be used by adversaries to enumerate domain trusts.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Dynamic DNS]
|
||||
category = Malware
|
||||
@@ -585,8 +585,8 @@ support_searches = []
|
||||
data_models = ["Endpoint", "Network_Resolution", "Web"]
|
||||
providing_technologies = none
|
||||
description = Detect and investigate hosts in your environment that may be communicating with dynamic domain providers. Attackers may leverage these services to help them avoid firewall blocks and deny lists.
|
||||
narrative = Dynamic DNS services (DDNS) are legitimate low-cost or free services that allow users to rapidly update domain resolutions to IP infrastructure. While their usage can be benign, malicious actors can abuse DDNS to host harmful payloads or interactive-command-and-control infrastructure. These attackers will manually update or automate domain resolution changes by routing dynamic domains to IP addresses that circumvent firewall blocks and deny lists and frustrate a network defender's analytic and investigative processes. These searches will look for DNS queries made from within your infrastructure to suspicious dynamic domains and then investigate more deeply, when appropriate. While this list of top-level dynamic domains is not exhaustive, it can be dynamically updated as new suspicious dynamic domains are identified.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = Dynamic DNS services (DDNS) are legitimate low-cost or free services that allow users to rapidly update domain resolutions to IP infrastructure. While their usage can be benign, malicious actors can abuse DDNS to host harmful payloads or interactive-command-and-control infrastructure. These attackers will manually update or automate domain resolution changes by routing dynamic domains to IP addresses that circumvent firewall blocks and deny lists and frustrate a network defender's analytic and investigative processes. These searches will look for DNS queries made from within your infrastructure to suspicious dynamic domains and then investigate more deeply, when appropriate. While this list of top-level dynamic domains is not exhaustive, it can be dynamically updated as new suspicious dynamic domains are identified.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Emotet Malware DHS Report TA18-201A ]
|
||||
category = Malware
|
||||
@@ -605,7 +605,7 @@ description = Detect rarely used executables, specific registry paths that may c
|
||||
narrative = The trojan downloader known as Emotet first surfaced in 2014, when it was discovered targeting the banking industry to steal credentials. However, according to a joint technical alert (TA) issued by three government agencies (https://www.us-cert.gov/ncas/alerts/TA18-201A), Emotet has evolved far beyond those beginnings to become what a ThreatPost article called a threat-delivery service(see https://threatpost.com/emotet-malware-evolves-beyond-banking-to-threat-delivery-service/134342/). For example, in early 2018, Emotet was found to be using its loader function to spread the Quakbot and Ransomware variants. \
|
||||
According to the TA, the the malware continues to be among the most costly and destructive malware affecting the private and public sectors. Researchers have linked it to the threat group Mealybug, which has also been on the security communitys radar since 2014.\
|
||||
The searches in this Analytic Story will help you find executables that are rarely used in your environment, specific registry paths that malware often uses to ensure survivability and persistence, instances where cmd.exe is used to launch script interpreters, and other indicators that Emotet or other malware has compromised your environment.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[F5 TMUI RCE CVE-2020-5902]
|
||||
category = Adversary Tactics
|
||||
@@ -622,7 +622,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Uncover activity consistent with CVE-2020-5902. Discovered by Positive Technologies researchers, this vulnerability affects F5 BIG-IP, BIG-IQ. and Traffix SDC devices (vulnerable versions in F5 support link below). This vulnerability allows unauthenticated users, along with authenticated users, who have access to the configuration utility to execute system commands, create/delete files, disable services, and/or execute Java code. This vulnerability can result in full system compromise.
|
||||
narrative = A client is able to perform a remote code execution on an exposed and vulnerable system. The detection search in this Analytic Story uses syslog to detect the malicious behavior. Syslog is going to be the best detection method, as any systems using SSL to protect their management console will make detection via wire data difficult. The searches included used Splunk Connect For Syslog (https://splunkbase.splunk.com/app/4740/), and used a custom destination port to help define the data as F5 data (covered in https://splunk-connect-for-syslog.readthedocs.io/en/master/sources/F5/)
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[GCP Cross Account Activity]
|
||||
category = Cloud Security
|
||||
@@ -641,7 +641,7 @@ description = Track when a user assumes an IAM role in another GCP account to ob
|
||||
narrative = Google Cloud Platform (GCP) admins manage access to GCP resources and services across the enterprise using GCP Identity and Access Management (IAM) functionality. IAM provides the ability to create and manage GCP users, groups, and roles-each with their own unique set of privileges and defined access to specific resources (such as Compute instances, the GCP Management Console, API, or the command-line interface). Unlike conventional (human) users, IAM roles are potentially assumable by anyone in the organization. They provide users with dynamically created temporary security credentials that expire within a set time period.\
|
||||
In between the time between when the temporary credentials are issued and when they expire is a period of opportunity, where a user could leverage the temporary credentials to wreak havoc-spin up or remove instances, create new users, elevate privileges, and other malicious activities-throughout the environment.\
|
||||
This Analytic Story includes searches that will help you monitor your GCP Audit logs logs for evidence of suspicious cross-account activity. For example, while accessing multiple GCP accounts and roles may be perfectly valid behavior, it may be suspicious when an account requests privileges of an account it has not accessed in the past. After identifying suspicious activities, you can use the provided investigative searches to help you probe more deeply.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[HAFNIUM Group]
|
||||
category = Adversary Tactics
|
||||
@@ -660,7 +660,7 @@ description = HAFNIUM group was identified by Microsoft as exploiting 4 Microsof
|
||||
narrative = On Tuesday, March 2, 2021, Microsoft released a set of security patches for its mail server, Microsoft Exchange. These patches respond to a group of vulnerabilities known to impact Exchange 2013, 2016, and 2019. It is important to note that an Exchange 2010 security update has also been issued, though the CVEs do not reference that version as being vulnerable.\
|
||||
While the CVEs do not shed much light on the specifics of the vulnerabilities or exploits, the first vulnerability (CVE-2021-26855) has a remote network attack vector that allows the attacker, a group Microsoft named HAFNIUM, to authenticate as the Exchange server. Three additional vulnerabilities (CVE-2021-26857, CVE-2021-26858, and CVE-2021-27065) were also identified as part of this activity. When chained together along with CVE-2021-26855 for initial access, the attacker would have complete control over the Exchange server. This includes the ability to run code as SYSTEM and write to any path on the server.\
|
||||
The following Splunk detections assist with identifying the HAFNIUM groups tradecraft and methodology.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Hidden Cobra Malware]
|
||||
category = Malware
|
||||
@@ -676,11 +676,28 @@ support_searches = ["ESCU - Baseline of DNS Query Length - MLTK", "ESCU - Baseli
|
||||
data_models = ["Endpoint", "Network_Resolution", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Monitor for and investigate activities, including the creation or deletion of hidden shares and file writes, that may be evidence of infiltration by North Korean government-sponsored cybercriminals. Details of this activity were reported in DHS Report TA-18-149A.
|
||||
narrative = North Korea's government-sponsored "cyber army" has been slowly building momentum and gaining sophistication over the last 15 years or so. As a result, the group's activity, which the US government refers to as "Hidden Cobra," has surreptitiously crept onto the collective radar as a preeminent global threat.\
|
||||
These state-sponsored actors are thought to be responsible for everything from a hack on a South Korean nuclear plant to an attack on Sony in anticipation of its release of the movie "The Interview" at the end of 2014. They're also notorious for cyberespionage. In recent years, the group seems to be focused on financial crimes, such as cryptojacking.\
|
||||
In June of 2018, The Department of Homeland Security, together with the FBI and other U.S. government partners, issued Technical Alert (TA-18-149A) to advise the public about two variants of North Korean malware. One variant, dubbed "Joanap," is a multi-stage peer-to-peer botnet that allows North Korean state actors to exfiltrate data, download and execute secondary payloads, and initialize proxy communications. The other variant, "Brambul," is a Windows32 SMB worm that is dropped into a victim network. When executed, the malware attempts to spread laterally within a victim's local subnet, connecting via the SMB protocol and initiating brute-force password attacks. It reports details to the Hidden Cobra actors via email, so they can use the information for secondary remote operations.\
|
||||
Among other searches in this Analytic Story is a detection search that looks for the creation or deletion of hidden shares, such as, "adnim$," which the Hidden Cobra malware creates on the target system. Another looks for the creation of three malicious files associated with the malware. You can also use a search in this story to investigate activity that indicates that malware is sending email back to the attackers.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = North Korea's government-sponsored "cyber army" has been slowly building momentum and gaining sophistication over the last 15 years or so. As a result, the group's activity, which the US government refers to as "Hidden Cobra," has surreptitiously crept onto the collective radar as a preeminent global threat.\
|
||||
These state-sponsored actors are thought to be responsible for everything from a hack on a South Korean nuclear plant to an attack on Sony in anticipation of its release of the movie "The Interview" at the end of 2014. They're also notorious for cyberespionage. In recent years, the group seems to be focused on financial crimes, such as cryptojacking.\
|
||||
In June of 2018, The Department of Homeland Security, together with the FBI and other U.S. government partners, issued Technical Alert (TA-18-149A) to advise the public about two variants of North Korean malware. One variant, dubbed "Joanap," is a multi-stage peer-to-peer botnet that allows North Korean state actors to exfiltrate data, download and execute secondary payloads, and initialize proxy communications. The other variant, "Brambul," is a Windows32 SMB worm that is dropped into a victim network. When executed, the malware attempts to spread laterally within a victim's local subnet, connecting via the SMB protocol and initiating brute-force password attacks. It reports details to the Hidden Cobra actors via email, so they can use the information for secondary remote operations.\
|
||||
Among other searches in this Analytic Story is a detection search that looks for the creation or deletion of hidden shares, such as, "adnim$," which the Hidden Cobra malware creates on the target system. Another looks for the creation of three malicious files associated with the malware. You can also use a search in this story to investigate activity that indicates that malware is sending email back to the attackers.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Icedid]
|
||||
category = Malware
|
||||
creation_date = 2021-07-29
|
||||
modification_date = 2021-07-29
|
||||
id = 1d2cc747-63d7-49a9-abb8-93aa36305603
|
||||
version = 1
|
||||
reference = ["https://threatpost.com/icedid-banking-trojan-surges-emotet/165314/", "https://app.any.run/tasks/48414a33-3d66-4a46-afe5-c2003bb55ccf/"]
|
||||
detection_searches = ["ESCU - Account Discovery With Net App - Rule", "ESCU - CHCP Command Execution - Rule", "ESCU - Create Remote Thread In Shell Application - Rule", "ESCU - Drop IcedID License dat - Rule", "ESCU - Eventvwr UAC Bypass - Rule", "ESCU - FodHelper UAC Bypass - Rule", "ESCU - IcedID Exfiltrated Archived File Creation - Rule", "ESCU - Mshta spawning Rundll32 OR Regsvr32 Process - Rule", "ESCU - NLTest Domain Trust Discovery - Rule", "ESCU - Office Application Spawn Regsvr32 process - Rule", "ESCU - Office Application Spawn rundll32 process - Rule", "ESCU - Office Document Executing Macro Code - Rule", "ESCU - Office Product Spawning MSHTA - Rule", "ESCU - Registry Keys Used For Persistence - Rule", "ESCU - Rundll32 Create Remote Thread To A Process - Rule", "ESCU - Rundll32 CreateRemoteThread In Browser - Rule", "ESCU - Rundll32 DNSQuery - Rule", "ESCU - Rundll32 Process Creating Exe Dll Files - Rule", "ESCU - Schedule Task with Rundll32 Command Trigger - Rule", "ESCU - Sqlite Module In Temp Folder - Rule", "ESCU - Suspicious IcedID Regsvr32 Cmdline - Rule", "ESCU - Suspicious IcedID Rundll32 Cmdline - Rule", "ESCU - Suspicious Rundll32 PluginInit - Rule", "ESCU - WinEvent Scheduled Task Created Within Public Path - Rule"]
|
||||
mappings = {"cis20": ["CIS 8"], "kill_chain_phases": ["Actions on Objectives", "Exploitation", "Privilege Escalation", "Reconnaissance"], "mitre_attack": ["T1005", "T1053", "T1053.005", "T1055", "T1059", "T1087.002", "T1112", "T1204.002", "T1218.005", "T1218.010", "T1218.011", "T1482", "T1547.001", "T1548.002", "T1560.001", "T1566.001"], "nist": ["DE.AE", "DE.CM", "PR.PT"]}
|
||||
investigative_searches = []
|
||||
support_searches = ["ESCU - Previously seen command line arguments"]
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the IcedID banking trojan, including looking for file writes associated with its payload, process injection, shellcode execution and data collection.
|
||||
narrative = IcedId banking trojan campaigns targeting banks and other vertical sectors.This malware is known in Microsoft Windows OS targetting browser such as firefox and chrom to steal banking information. It is also known to its unique payload downloaded in C2 where it can be a .png file that hides the core shellcode bot using steganography technique or gzip dat file that contains "license.dat" which is the actual core icedid bot.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Ingress Tool Transfer]
|
||||
category = Adversary Tactics
|
||||
@@ -697,7 +714,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
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.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[JBoss Vulnerability]
|
||||
category = Vulnerability
|
||||
@@ -728,7 +745,7 @@ If you suspect an attack targeting a web server, it is helpful to look at some o
|
||||
If a suspicious file is found, we can review more information about it to help determine if it is, in fact, malicious. Identifying the file type, any processes that opened the file, the processes that may have created and/or modified the file, and how many other systems potentially have this file can you determine whether the file is malicious. Also, determining the file hash and checking it against reputation sources, such as VirusTotal, can sometimes help you quickly determine if it is malicious in nature.\
|
||||
Often, a simple inspection of a suspect process name and path can tell you if the system has been compromised. For example, if svchost.exe is found running from a location other than `C:\Windows\System32`, it is likely something malicious designed to hide in plain sight when simply reviewing process names. \
|
||||
It can also be helpful to examine various behaviors of and the parent of the process of interest. For example, if it turns out the process of interest is malicious, it would be good to see whether the parent process spawned other processes that might also warrant further scrutiny. If a process is suspect, a review of the network connections made around the time of the event and noting whether the process has spawned any child processes could be helpful in determining whether it is malicious or executing a malicious script.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Kubernetes Scanning Activity]
|
||||
category = Cloud Security
|
||||
@@ -745,7 +762,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = This story addresses detection against Kubernetes cluster fingerprint scan and attack by providing information on items such as source ip, user agent, cluster names.
|
||||
narrative = Kubernetes is the most used container orchestration platform, this orchestration platform contains sensitve information and management priviledges of production workloads, microservices and applications. These searches allow operator to detect suspicious unauthenticated requests from the internet to kubernetes cluster.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Kubernetes Sensitive Object Access Activity]
|
||||
category = Cloud Security
|
||||
@@ -762,7 +779,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
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.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Lateral Movement]
|
||||
category = Adversary Tactics
|
||||
@@ -778,12 +795,12 @@ support_searches = []
|
||||
data_models = ["Endpoint", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
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.\
|
||||
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.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Malicious PowerShell]
|
||||
category = Adversary Tactics
|
||||
@@ -798,20 +815,20 @@ investigative_searches = ["ESCU - Get History Of Email Sources - Response Task",
|
||||
support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
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.
|
||||
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: \
|
||||
1. Country of origin \
|
||||
1. Responsible party \
|
||||
1. Fully qualified domain names associated with the external IP address \
|
||||
1. Registration of fully qualified domain names associated with external IP address \
|
||||
Determining whether it is a dynamic domain frequently visited by others and/or how third parties categorize it can also help you answer some questions surrounding the attacker and details related to the external system. In addition, there are various sources--such as VirusTotal— that can provide some reputation information on the IP address or domain name, which can assist in determining whether the event is malicious. Finally, determining whether there are other events associated with the IP address may help connect data points or show other events that should be brought into scope. \
|
||||
Determining whether it is a dynamic domain frequently visited by others and/or how third parties categorize it can also help you answer some questions surrounding the attacker and details related to the external system. In addition, there are various sources--such as VirusTotal&#151; that can provide some reputation information on the IP address or domain name, which can assist in determining whether the event is malicious. Finally, determining whether there are other events associated with the IP address may help connect data points or show other events that should be brought into scope. \
|
||||
Gathering data on the system of interest can sometimes help you quickly determine whether something suspicious is happening. Some of these items include finding out who else may have recently logged into the system, whether any unusual scheduled tasks exist, whether the system is communicating on suspicious ports, whether there are modifications to sensitive registry keys, and whether there are any known vulnerabilities on the system. This information can often highlight other activity commonly seen in attack scenarios or give more information about how the system may have been targeted. \
|
||||
Often, a simple inspection of the process name and path can tell you if the system has been compromised. For example, if `svchost.exe` is found running from a location other than `C:\Windows\System32`, it is likely something malicious designed to hide in plain sight when cursorily reviewing process names. Similarly, if the process itself seems legitimate, but the parent process is running from the temporary browser cache, that could be indicative of activity initiated via a compromised website a user visited. \
|
||||
It can also be very helpful to examine various behaviors of the process of interest or the parent of the process of interest. For example, if it turns out the process of interest is malicious, it would be good to see if the parent to that process spawned other processes that might be worth further scrutiny. If a process is suspect, a review of the network connections made in and around the time of the event and/or whether the process spawned any child processes could be helpful, as well. \
|
||||
In the event a system is suspected of having been compromised via a malicious website, we suggest reviewing the browsing activity from that system around the time of the event. If categories are given for the URLs visited, that can help you zero in on possible malicious sites. \
|
||||
Most recently we have added new content related to PowerShell Script Block logging, Windows EventCode 4104. Script block logging presents the deobfuscated and raw script executed on an endpoint. The analytics produced were tested against commonly used attack frameworks - PowerShell-Empire, Cobalt Strike and Covenant. In addition, we sampled publicly available samples that utilize PowerShell and validated coverage. The analytics are here to identify suspicious usage, cmdlets, or script values. 4104 events are enabled via the Windows registry and may generate a large volume of data if enabled globally. Enabling on critical systems or a limited set may be best. During triage of 4104 events, review parallel processes for other processes and command executed. Identify any file modifications and network communication and review accordingly. Fortunately, we get the full script to determine the level of threat identified.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Masquerading - Rename System Utilities]
|
||||
category = Adversary Tactics
|
||||
@@ -830,7 +847,7 @@ description = Adversaries may rename legitimate system utilities to try to evade
|
||||
narrative = Security monitoring and control mechanisms may be in place for system utilities adversaries are capable of abusing. It may be possible to bypass those security mechanisms by renaming the utility prior to utilization (ex: rename rundll32.exe). An alternative case occurs when a legitimate utility is copied or moved to a different directory and renamed to avoid detections based on system utilities executing from non-standard paths.\
|
||||
The following content is here to assist with binaries within `system32` or `syswow64` being moved to a new location or an adversary bringing a the binary in to execute.\
|
||||
There will be false positives as some native Windows processes are moved or ran by third party applications from different paths. If file names are mismatched between the file name on disk and that of the binarys PE metadata, this is a likely indicator that a binary was renamed after it was compiled. Collecting and comparing disk and resource filenames for binaries by looking to see if the InternalName, OriginalFilename, and or ProductName match what is expected could provide useful leads, but may not always be indicative of malicious activity. Do not focus on the possible names a file could have, but instead on the command-line arguments that are known to be used and are distinct because it will have a better rate of detection.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Meterpreter]
|
||||
category = Adversary Tactics
|
||||
@@ -849,7 +866,7 @@ description = Meterpreter provides red teams, pen testers and threat actors inte
|
||||
narrative = This Analytic Story supports you to detect Tactics, Techniques and Procedures (TTPs) from Meterpreter. Meterpreter is a Metasploit payload for remote execution that leverages DLL injection to make it extremely difficult to detect. Since the software runs in memory, no new processes are created upon injection. It also leverages encrypted communication channels.\
|
||||
Meterpreter enables the operator to remotely run commands on the target machine, upload payloads, download files, dump password hashes, and much more. It is difficult to determine from the forensic evidence what actions the operator performed. Splunk Research, however, has observed anomalous behaviors on the compromised hosts that seem to only appear when Meterpreter is executing various commands. With that, we have written new detections targeted to these detections.\
|
||||
While investigating a detection related to this analytic story, please bear in mind that the detections look for anomalies in system behavior. It will be imperative to look for other signs in the endpoint and network logs for lateral movement, discovery and other actions to confirm that the host was compromised and a remote actor used it to progress on their objectives.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Monitor for Updates]
|
||||
category = Best Practices
|
||||
@@ -868,7 +885,7 @@ description = Monitor your enterprise to ensure that your endpoints are being pa
|
||||
narrative = It is a common best practice to ensure that endpoints are being patched and updated in a timely manner, in order to reduce the risk of compromise via a publicly disclosed vulnerability. Timely application of updates/patches is important to eliminate known vulnerabilities that may be exploited by various threat actors.\
|
||||
Searches in this analytic story are designed to help analysts monitor endpoints for system patches and/or updates. This helps analysts identify any systems that are not successfully updated in a timely matter.\
|
||||
Microsoft releases updates for Windows systems on a monthly cadence. They should be installed as soon as possible after following internal testing and validation procedures. Patches and updates for other systems or applications are typically released as needed.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[NOBELIUM Group]
|
||||
category = Adversary Tactics
|
||||
@@ -885,7 +902,7 @@ data_models = ["Endpoint", "Network_Traffic", "Web"]
|
||||
providing_technologies = none
|
||||
description = Sunburst is a trojanized updates to SolarWinds Orion IT monitoring and management software. It was discovered by FireEye in December 2020. The actors behind this campaign gained access to numerous public and private organizations around the world.
|
||||
narrative = This Analytic Story supports you to detect Tactics, Techniques and Procedures (TTPs) of the NOBELIUM Group. The threat actor behind sunburst compromised the SolarWinds.Orion.Core.BusinessLayer.dll, is a SolarWinds digitally-signed component of the Orion software framework that contains a backdoor that communicates via HTTP to third party servers. The detections in this Analytic Story are focusing on the dll loading events, file create events and network events to detect This malware.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Netsh Abuse]
|
||||
category = Abuse
|
||||
@@ -903,7 +920,7 @@ providing_technologies = none
|
||||
description = Detect activities and various techniques associated with the abuse of `netsh.exe`, which can disable local firewall settings or set up a remote connection to a host from an infected system.
|
||||
narrative = It is a common practice for attackers of all types to leverage native Windows tools and functionality to execute commands for malicious reasons. One such tool on Windows OS is `netsh.exe`,a command-line scripting utility that allows you to--either locally or remotely--display or modify the network configuration of a computer that is currently running. `Netsh.exe` can be used to discover and disable local firewall settings. It can also be used to set up a remote connection to a host from an infected system.\
|
||||
To get started, run the detection search to identify parent processes of `netsh.exe`.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Office 365 Detections]
|
||||
category = Cloud Security
|
||||
@@ -920,7 +937,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = This story is focused around detecting Office 365 Attacks.
|
||||
narrative = More and more companies are using Microsofts Office 365 cloud offering. Therefore, we see more and more attacks against Office 365. This story provides various detections for Office 365 attacks.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Orangeworm Attack Group]
|
||||
category = Malware
|
||||
@@ -940,7 +957,7 @@ narrative = In May of 2018, the attack group Orangeworm was implicated for insta
|
||||
Awareness of the Orangeworm group first surfaced in January, 2015. It has conducted targeted attacks against related industries, as well, such as pharmaceuticals and healthcare IT solution providers.\
|
||||
Healthcare may be a promising target, because it is notoriously behind in technology, often using older operating systems and neglecting to patch computers. Even so, the group was able to evade detection for a full three years. Sources say that the malware spread quickly within the target networks, infecting computers used to control medical devices, such as MRI and X-ray machines.\
|
||||
This Analytic Story is designed to help you detect and investigate suspicious activities that may be indicative of an Orangeworm attack. One detection search looks for command-line arguments. Another monitors for uses of sc.exe, a non-essential Windows file that can manipulate Windows services. One of the investigative searches helps you get more information on web hosts that you suspect have been compromised.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Possible Backdoor Activity Associated With MUDCARP Espionage Campaigns]
|
||||
category = Adversary Tactics
|
||||
@@ -957,8 +974,8 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Monitor your environment for suspicious behaviors that resemble the techniques employed by the MUDCARP threat group.
|
||||
narrative = This story was created as a joint effort between iDefense and Splunk.\
|
||||
iDefense analysts have recently discovered a Windows executable file that, upon execution, spoofs a decryption tool and then drops a file that appears to be the custom-built javascript backdoor, "Orz," which is associated with the threat actors known as MUDCARP (as well as "temp.Periscope" and "Leviathan"). The file is executed using Wscript.\
|
||||
The MUDCARP techniques include the use of the compressed-folders module from Microsoft, zipfldr.dll, with RouteTheCall export to run the malicious process or command. After a successful reboot, the malware is made persistent by a manipulating `[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]'help'='c:\\windows\\system32\\rundll32.exe c:\\windows\\system32\\zipfldr.dll,RouteTheCall c:\\programdata\\winapp.exe'`. Though this technique is not exclusive to MUDCARP, it has been spotted in the group's arsenal of advanced techniques seen in the wild.\
|
||||
iDefense analysts have recently discovered a Windows executable file that, upon execution, spoofs a decryption tool and then drops a file that appears to be the custom-built javascript backdoor, "Orz," which is associated with the threat actors known as MUDCARP (as well as "temp.Periscope" and "Leviathan"). The file is executed using Wscript.\
|
||||
The MUDCARP techniques include the use of the compressed-folders module from Microsoft, zipfldr.dll, with RouteTheCall export to run the malicious process or command. After a successful reboot, the malware is made persistent by a manipulating `[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]'help'='c:\\windows\\system32\\rundll32.exe c:\\windows\\system32\\zipfldr.dll,RouteTheCall c:\\programdata\\winapp.exe'`. Though this technique is not exclusive to MUDCARP, it has been spotted in the group's arsenal of advanced techniques seen in the wild.\
|
||||
This Analytic Story searches for evidence of tactics, techniques, and procedures (TTPs) that allow for the use of a endpoint detection-and-response (EDR) bypass technique to mask the true parent of a malicious process. It can also be set as a registry key for further sandbox evasion and to allow the malware to launch only after reboot.\
|
||||
If behavioral searches included in this story yield positive hits, iDefense recommends conducting IOC searches for the following:\
|
||||
\
|
||||
@@ -984,7 +1001,7 @@ If behavioral searches included in this story yield positive hits, iDefense reco
|
||||
1. 889a9b52566448231f112a5ce9b5dfaf\
|
||||
1. b8ec65dab97cdef3cd256cc4753f0c54\
|
||||
1. 04d83cd3813698de28cfbba326d7647c
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[PrintNightmare CVE-2021-34527]
|
||||
category = Lateral Movement
|
||||
@@ -1006,7 +1023,7 @@ The prerequisites for successful exploitation consist of: \
|
||||
1. Network connectivity to the target system (initial access has been obtained) \
|
||||
1. Hash or password for a low privileged user ( or computer ) account. \
|
||||
In the most impactful scenario, an attacker would be able to leverage this vulnerability to obtain a SYSTEM shell on a domain controller and so escalate their privileges from a low privileged domain account to full domain access in the target environment as shown below.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Prohibited Traffic Allowed or Protocol Mismatch]
|
||||
category = Best Practices
|
||||
@@ -1023,7 +1040,7 @@ data_models = ["Endpoint", "Network_Resolution", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Detect instances of prohibited network traffic allowed in the environment, as well as protocols running on non-standard ports. Both of these types of behaviors typically violate policy and can be leveraged by attackers.
|
||||
narrative = A traditional security best practice is to control the ports, protocols, and services allowed within your environment. By limiting the services and protocols to those explicitly approved by policy, administrators can minimize the attack surface. The combined effect allows both network defenders and security controls to focus and not be mired in superfluous traffic or data types. Looking for deviations to policy can identify attacker activity that abuses services and protocols to run on alternate or non-standard ports in the attempt to avoid detection or frustrate forensic analysts.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Ransomware]
|
||||
category = Malware
|
||||
@@ -1040,7 +1057,7 @@ data_models = ["Endpoint", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to ransomware--spikes in SMB traffic, suspicious wevtutil usage, the presence of common ransomware extensions, and system processes run from unexpected locations, and many others.
|
||||
narrative = Ransomware is an ever-present risk to the enterprise, wherein an infected host encrypts business-critical data, holding it hostage until the victim pays the attacker a ransom. There are many types and varieties of ransomware that can affect an enterprise. Attackers can deploy ransomware to enterprises through spearphishing campaigns and driveby downloads, as well as through traditional remote service-based exploitation. In the case of the WannaCry campaign, there was self-propagating wormable functionality that was used to maximize infection. Fortunately, organizations can apply several techniques--such as those in this Analytic Story--to detect and or mitigate the effects of ransomware.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Ransomware Cloud]
|
||||
category = Malware
|
||||
@@ -1057,7 +1074,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to ransomware. These searches include cloud related objects that may be targeted by malicious actors via cloud providers own encryption features.
|
||||
narrative = Ransomware is an ever-present risk to the enterprise, wherein an infected host encrypts business-critical data, holding it hostage until the victim pays the attacker a ransom. There are many types and varieties of ransomware that can affect an enterprise.Cloud ransomware can be deployed by obtaining high privilege credentials from targeted users or resources.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Revil Ransomware]
|
||||
category = Malware
|
||||
@@ -1074,7 +1091,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the Revil ransomware, including looking for file writes associated with Revil, encrypting network shares, deleting shadow volume storage, registry key modification, deleting of security logs, and more.
|
||||
narrative = Revil ransomware is a RaaS,that a single group may operates and manges the development of this ransomware. It involve the use of ransomware payloads along with exfiltration of data. Malicious actors demand payment for ransome of data and threaten deletion and exposure of exfiltrated data.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Router and Infrastructure Security]
|
||||
category = Best Practices
|
||||
@@ -1091,8 +1108,8 @@ data_models = ["Authentication", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Validate the security configuration of network infrastructure and verify that only authorized users and systems are accessing critical assets. Core routing and switching infrastructure are common strategic targets for attackers.
|
||||
narrative = Networking devices, such as routers and switches, are often overlooked as resources that attackers will leverage to subvert an enterprise. Advanced threats actors have shown a proclivity to target these critical assets as a means to siphon and redirect network traffic, flash backdoored operating systems, and implement cryptographic weakened algorithms to more easily decrypt network traffic.\
|
||||
This Analytic Story helps you gain a better understanding of how your network devices are interacting with your hosts. By compromising your network devices, attackers can obtain direct access to the company's internal infrastructure— effectively increasing the attack surface and accessing private services/data.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
This Analytic Story helps you gain a better understanding of how your network devices are interacting with your hosts. By compromising your network devices, attackers can obtain direct access to the company's internal infrastructure&#151; effectively increasing the attack surface and accessing private services/data.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Ryuk Ransomware]
|
||||
category = Malware
|
||||
@@ -1109,7 +1126,7 @@ data_models = ["Endpoint", "Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the Ryuk ransomware, including looking for file writes associated with Ryuk, Stopping Security Access Manager, DisableAntiSpyware registry key modification, suspicious psexec use, and more.
|
||||
narrative = Cybersecurity Infrastructure Security Agency (CISA) released Alert (AA20-302A) on October 28th called “Ransomware Activity Targeting the Healthcare and Public Health Sector.” This alert details TTPs associated with ongoing and possible imminent attacks against the Healthcare sector, and is a joint advisory in coordination with other U.S. Government agencies. The objective of these malicious campaigns is to infiltrate targets in named sectors and to drop ransomware payloads, which will likely cause disruption of service and increase risk of actual harm to the health and safety of patients at hospitals, even with the aggravant of an ongoing COVID-19 pandemic. This document specifically refers to several crimeware exploitation frameworks, emphasizing the use of Ryuk ransomware as payload. The Ryuk ransomware payload is not new. It has been well documented and identified in multiple variants. Payloads need a carrier, and for Ryuk it has often been exploitation frameworks such as Cobalt Strike, or popular crimeware frameworks such as Emotet or Trickbot.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[SQL Injection]
|
||||
category = Adversary Tactics
|
||||
@@ -1127,7 +1144,7 @@ providing_technologies = none
|
||||
description = Use the searches in this Analytic Story to help you detect structured query language (SQL) injection attempts characterized by long URLs that contain malicious parameters.
|
||||
narrative = It is very common for attackers to inject SQL parameters into vulnerable web applications, which then interpret the malicious SQL statements.\
|
||||
This Analytic Story contains a search designed to identify attempts by attackers to leverage this technique to compromise a host and gain a foothold in the target environment.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[SamSam Ransomware]
|
||||
category = Malware
|
||||
@@ -1144,12 +1161,12 @@ data_models = ["Endpoint", "Network_Traffic", "Web"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the SamSam ransomware, including looking for file writes associated with SamSam, RDP brute force attacks, the presence of files with SamSam ransomware extensions, suspicious psexec use, and more.
|
||||
narrative = The first version of the SamSam ransomware (a.k.a. Samas or SamsamCrypt) was launched in 2015 by a group of Iranian threat actors. The malicious software has affected and continues to affect thousands of victims and has raised almost $6M in ransom.\
|
||||
Although categorized under the heading of ransomware, SamSam campaigns have some importance distinguishing characteristics. Most notable is the fact that conventional ransomware is a numbers game. Perpetrators use a "spray-and-pray" approach with phishing campaigns or other mechanisms, charging a small ransom (typically under $1,000). The goal is to find a large number of victims willing to pay these mini-ransoms, adding up to a lucrative payday. They use relatively simple methods for infecting systems.\
|
||||
SamSam attacks are different beasts. They have become progressively more targeted and skillful than typical ransomware attacks. First, malicious actors break into a victim's network, surveil it, then run the malware manually. The attacks are tailored to cause maximum damage and the threat actors usually demand amounts in the tens of thousands of dollars.\
|
||||
In a typical attack on one large healthcare organization in 2018, the company ended up paying a ransom of four Bitcoins, then worth $56,707. Reports showed that access to the company's files was restored within two hours of paying the sum.\
|
||||
Although categorized under the heading of ransomware, SamSam campaigns have some importance distinguishing characteristics. Most notable is the fact that conventional ransomware is a numbers game. Perpetrators use a "spray-and-pray" approach with phishing campaigns or other mechanisms, charging a small ransom (typically under $1,000). The goal is to find a large number of victims willing to pay these mini-ransoms, adding up to a lucrative payday. They use relatively simple methods for infecting systems.\
|
||||
SamSam attacks are different beasts. They have become progressively more targeted and skillful than typical ransomware attacks. First, malicious actors break into a victim's network, surveil it, then run the malware manually. The attacks are tailored to cause maximum damage and the threat actors usually demand amounts in the tens of thousands of dollars.\
|
||||
In a typical attack on one large healthcare organization in 2018, the company ended up paying a ransom of four Bitcoins, then worth $56,707. Reports showed that access to the company's files was restored within two hours of paying the sum.\
|
||||
According to Sophos, SamSam previously leveraged RDP to gain access to targeted networks via brute force. SamSam is not spread automatically, like other malware. It requires skill because it forces the attacker to adapt their tactics to the individual environment. Next, the actors escalate their privileges to admin level. They scan the networks for worthy targets, using conventional tools, such as PsExec or PaExec, to deploy/execute, quickly encrypting files.\
|
||||
This Analytic Story includes searches designed to help detect and investigate signs of the SamSam ransomware, such as the creation of fileswrites to system32, writes with tell-tale extensions, batch files written to system32, and evidence of brute-force attacks via RDP.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Silver Sparrow]
|
||||
category = Adversary Tactics
|
||||
@@ -1166,7 +1183,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Silver Sparrow, identified by Red Canary Intelligence, is a new forward looking MacOS (Intel and M1) malicious software downloader utilizing JavaScript for execution and a launchAgent to establish persistence.
|
||||
narrative = Silver Sparrow works is a dropper and uses typical persistence mechanisms on a Mac. It is cross platform, covering both Intel and Apple M1 architecture. To this date, no implant has been downloaded for malicious purposes. During installation of the update.pkg or updater.pkg file, the malicious software utilizes JavaScript to generate files and scripts on disk for persistence.These files later download a implant from an S3 bucket every hour. This analytic assists with identifying different types of macOS malware families establishing LaunchAgent persistence. Per SentinelOne source, it is predicted that Silver Sparrow is likely selling itself as a mechanism to 3rd party “affiliates” or pay-per-install (PPI) partners, typically seen as commodity adware/malware. Additional indicators and behaviors may be found within the references.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Spearphishing Attachments]
|
||||
category = Adversary Tactics
|
||||
@@ -1183,14 +1200,14 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Detect signs of malicious payloads that may indicate that your environment has been breached via a phishing attack.
|
||||
narrative = Despite its simplicity, phishing remains the most pervasive and dangerous cyberthreat. In fact, research shows that as many as [91% of all successful attacks](https://digitalguardian.com/blog/91-percent-cyber-attacks-start-phishing-email-heres-how-protect-against-phishing) are initiated via a phishing email. \
|
||||
As most people know, these emails use fraudulent domains, [email scraping](https://www.cyberscoop.com/emotet-trojan-phishing-scraping-templates-cofense-geodo/), familiar contact names inserted as senders, and other tactics to lure targets into clicking a malicious link, opening an attachment with a [nefarious payload](https://www.cyberscoop.com/emotet-trojan-phishing-scraping-templates-cofense-geodo/), or entering sensitive personal information that perpetrators may intercept. This attack technique requires a relatively low level of skill and allows adversaries to easily cast a wide net. Worse, because its success relies on the gullibility of humans, it's impossible to completely "automate" it out of your environment. However, you can use ES and ESCU to detect and investigate potentially malicious payloads injected into your environment subsequent to a phishing attack. \
|
||||
While any kind of file may contain a malicious payload, some are more likely to be perceived as benign (and thus more often escape notice) by the average victim—especially when the attacker sends an email that seems to be from one of their contacts. An example is Microsoft Office files. Most corporate users are familiar with documents with the following suffixes: .doc/.docx (MS Word), .xls/.xlsx (MS Excel), and .ppt/.pptx (MS PowerPoint), so they may click without a second thought, slashing a hole in their organizations' security. \
|
||||
As most people know, these emails use fraudulent domains, [email scraping](https://www.cyberscoop.com/emotet-trojan-phishing-scraping-templates-cofense-geodo/), familiar contact names inserted as senders, and other tactics to lure targets into clicking a malicious link, opening an attachment with a [nefarious payload](https://www.cyberscoop.com/emotet-trojan-phishing-scraping-templates-cofense-geodo/), or entering sensitive personal information that perpetrators may intercept. This attack technique requires a relatively low level of skill and allows adversaries to easily cast a wide net. Worse, because its success relies on the gullibility of humans, it's impossible to completely "automate" it out of your environment. However, you can use ES and ESCU to detect and investigate potentially malicious payloads injected into your environment subsequent to a phishing attack. \
|
||||
While any kind of file may contain a malicious payload, some are more likely to be perceived as benign (and thus more often escape notice) by the average victim&#151;especially when the attacker sends an email that seems to be from one of their contacts. An example is Microsoft Office files. Most corporate users are familiar with documents with the following suffixes: .doc/.docx (MS Word), .xls/.xlsx (MS Excel), and .ppt/.pptx (MS PowerPoint), so they may click without a second thought, slashing a hole in their organizations' security. \
|
||||
Following is a typical series of events, according to an [article by Trend Micro](https://blog.trendmicro.com/trendlabs-security-intelligence/rising-trend-attackers-using-lnk-files-download-malware/):\
|
||||
1. Attacker sends a phishing email. Recipient downloads the attached file, which is typically a .docx or .zip file with an embedded .lnk file\
|
||||
1. The .lnk file executes a PowerShell script\
|
||||
1. Powershell executes a reverse shell, rendering the exploit successful </ol>As a side note, adversaries are likely to use a tool like Empire to craft and obfuscate payloads and their post-injection activities, such as [exfiltration, lateral movement, and persistence](https://github.com/EmpireProject/Empire).\
|
||||
1. Powershell executes a reverse shell, rendering the exploit successful </ol>As a side note, adversaries are likely to use a tool like Empire to craft and obfuscate payloads and their post-injection activities, such as [exfiltration, lateral movement, and persistence](https://github.com/EmpireProject/Empire).\
|
||||
This Analytic Story focuses on detecting signs that a malicious payload has been injected into your environment. For example, one search detects outlook.exe writing a .zip file. Another looks for suspicious .lnk files launching processes.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious AWS Login Activities]
|
||||
category = Cloud Security
|
||||
@@ -1207,7 +1224,7 @@ data_models = ["Authentication"]
|
||||
providing_technologies = none
|
||||
description = Monitor your AWS authentication events using your CloudTrail logs. Searches within this Analytic Story will help you stay aware of and investigate suspicious logins.
|
||||
narrative = It is important to monitor and control who has access to your AWS infrastructure. Detecting suspicious logins to your AWS infrastructure will provide good starting points for investigations. Abusive behaviors caused by compromised credentials can lead to direct monetary costs, as you will be billed for any EC2 instances created by the attacker.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious AWS S3 Activities]
|
||||
category = Cloud Security
|
||||
@@ -1224,9 +1241,9 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Use the searches in this Analytic Story to monitor your AWS S3 buckets for evidence of anomalous activity and suspicious behaviors, such as detecting open S3 buckets and buckets being accessed from a new IP. The contextual and investigative searches will give you more information, when required.
|
||||
narrative = As cloud computing has exploded, so has the number of creative attacks on virtual environments. And as the number-two cloud-service provider, Amazon Web Services (AWS) has certainly had its share.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Among things to look out for are S3 access from unfamiliar locations and by unfamiliar users. Some of the searches in this Analytic Story help you detect suspicious behavior and others help you investigate more deeply, when the situation warrants.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious AWS Traffic]
|
||||
category = Cloud Security
|
||||
@@ -1243,10 +1260,10 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Leverage these searches to monitor your AWS network traffic for evidence of anomalous activity and suspicious behaviors, such as a spike in blocked outbound traffic in your virtual private cloud (VPC).
|
||||
narrative = A virtual private cloud (VPC) is an on-demand managed cloud-computing service that isolates computing resources for each client. Inside the VPC container, the environment resembles a physical network. \
|
||||
Amazon's VPC service enables you to launch EC2 instances and leverage other Amazon resources. The traffic that flows in and out of this VPC can be controlled via network access-control rules and security groups. Amazon also has a feature called VPC Flow Logs that enables you to log IP traffic going to and from the network interfaces in your VPC. This data is stored using Amazon CloudWatch Logs.\
|
||||
Amazon's VPC service enables you to launch EC2 instances and leverage other Amazon resources. The traffic that flows in and out of this VPC can be controlled via network access-control rules and security groups. Amazon also has a feature called VPC Flow Logs that enables you to log IP traffic going to and from the network interfaces in your VPC. This data is stored using Amazon CloudWatch Logs.\
|
||||
Attackers may abuse the AWS infrastructure with insecure VPCs so they can co-opt AWS resources for command-and-control nodes, data exfiltration, and more. Once an EC2 instance is compromised, an attacker may initiate outbound network connections for malicious reasons. Monitoring these network traffic behaviors is crucial for understanding the type of traffic flowing in and out of your network and to alert you to suspicious activities.\
|
||||
The searches in this Analytic Story will monitor your AWS network traffic for evidence of anomalous activity and suspicious behaviors.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud Authentication Activities]
|
||||
category = Cloud Security
|
||||
@@ -1264,7 +1281,7 @@ providing_technologies = none
|
||||
description = Monitor your cloud authentication events. Searches within this Analytic Story leverage the recent cloud updates to the Authentication data model to help you stay aware of and investigate suspicious login activity.
|
||||
narrative = It is important to monitor and control who has access to your cloud infrastructure. Detecting suspicious logins will provide good starting points for investigations. Abusive behaviors caused by compromised credentials can lead to direct monetary costs, as you will be billed for any compute activity whether legitimate or otherwise.\
|
||||
This Analytic Story has data model versions of cloud searches leveraging Authentication data, including those looking for suspicious login activity, and cross-account activity for AWS.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud Instance Activities]
|
||||
category = Cloud Security
|
||||
@@ -1281,7 +1298,7 @@ data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Monitor your cloud infrastructure provisioning activities for behaviors originating from unfamiliar or unusual locations. These behaviors may indicate that malicious activities are occurring somewhere within your cloud environment.
|
||||
narrative = Monitoring your cloud infrastructure logs allows you enable governance, compliance, and risk auditing. It is crucial for a company to monitor events and actions taken in the their cloud environments to ensure that your instances are not vulnerable to attacks. This Analytic Story identifies suspicious activities in your cloud compute instances and helps you respond and investigate those activities.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud Provisioning Activities]
|
||||
category = Cloud Security
|
||||
@@ -1298,8 +1315,8 @@ data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Monitor your cloud infrastructure provisioning activities for behaviors originating from unfamiliar or unusual locations. These behaviors may indicate that malicious activities are occurring somewhere within your cloud environment.
|
||||
narrative = Because most enterprise cloud infrastructure activities originate from familiar geographic locations, monitoring for activity from unknown or unusual regions is an important security measure. This indicator can be especially useful in environments where it is impossible to add specific IPs to an allow list because they vary.\
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud User Activities]
|
||||
category = Cloud Security
|
||||
@@ -1315,9 +1332,9 @@ support_searches = ["ESCU - Baseline Of Cloud Infrastructure API Calls Per User"
|
||||
data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Detect and investigate suspicious activities by users and roles in your cloud environments.
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
In addition to compromising the security of your data, when bad actors leverage your compute resources, it can incur monumental costs, since you will be billed for any new instances and increased bandwidth usage.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Command-Line Executions]
|
||||
category = Adversary Tactics
|
||||
@@ -1332,9 +1349,9 @@ investigative_searches = ["ESCU - Get Notable History - Response Task", "ESCU -
|
||||
support_searches = ["ESCU - Baseline of Command Line Length - MLTK", "ESCU - Previously seen command line arguments"]
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
description = Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
narrative = The ability to execute arbitrary commands via the Windows CLI is a primary goal for the adversary. With access to the shell, an attacker can easily run scripts and interact with the target system. Often, attackers may only have limited access to the shell or may obtain access in unusual ways. In addition, malware may execute and interact with the CLI in ways that would be considered unusual and inconsistent with typical user activity. This provides defenders with opportunities to identify suspicious use and investigate, as appropriate. This Analytic Story contains various searches to help identify this suspicious activity, as well as others to aid you in deeper investigation.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious DNS Traffic]
|
||||
category = Adversary Tactics
|
||||
@@ -1350,8 +1367,8 @@ support_searches = ["ESCU - Baseline of DNS Query Length - MLTK"]
|
||||
data_models = ["Endpoint", "Network_Resolution"]
|
||||
providing_technologies = none
|
||||
description = Attackers often attempt to hide within or otherwise abuse the domain name system (DNS). You can thwart attempts to manipulate this omnipresent protocol by monitoring for these types of abuses.
|
||||
narrative = Although DNS is one of the fundamental underlying protocols that make the Internet work, it is often ignored (perhaps because of its complexity and effectiveness). However, attackers have discovered ways to abuse the protocol to meet their objectives. One potential abuse involves manipulating DNS to hijack traffic and redirect it to an IP address under the attacker's control. This could inadvertently send users intending to visit google.com, for example, to an unrelated malicious website. Another technique involves using the DNS protocol for command-and-control activities with the attacker's malicious code or to covertly exfiltrate data. The searches within this Analytic Story look for these types of abuses.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = Although DNS is one of the fundamental underlying protocols that make the Internet work, it is often ignored (perhaps because of its complexity and effectiveness). However, attackers have discovered ways to abuse the protocol to meet their objectives. One potential abuse involves manipulating DNS to hijack traffic and redirect it to an IP address under the attacker's control. This could inadvertently send users intending to visit google.com, for example, to an unrelated malicious website. Another technique involves using the DNS protocol for command-and-control activities with the attacker's malicious code or to covertly exfiltrate data. The searches within this Analytic Story look for these types of abuses.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Emails]
|
||||
category = Adversary Tactics
|
||||
@@ -1372,7 +1389,7 @@ Once a phishing message has been detected, the next steps are to answer the foll
|
||||
1. Which users have received this or a similar message in the past?\
|
||||
1. When did the targeted campaign begin?\
|
||||
1. Have any users interacted with the content of the messages (by downloading an attachment or clicking on a malicious URL)?This Analytic Story provides detection searches to identify suspicious emails, as well as contextual and investigative searches to help answer some of these questions.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious GCP Storage Activities]
|
||||
category = Cloud Security
|
||||
@@ -1389,7 +1406,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Use the searches in this Analytic Story to monitor your GCP Storage buckets for evidence of anomalous activity and suspicious behaviors, such as detecting open storage buckets and buckets being accessed from a new IP. The contextual and investigative searches will give you more information, when required.
|
||||
narrative = Similar to other cloud providers, GCP operates on a shared responsibility model. This means the end user, you, are responsible for setting appropriate access control lists and permissions on your GCP resources.\ This Analytics Story concentrates on detecting things like open storage buckets (both read and write) along with storage bucket access from unfamiliar users and IP addresses.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious MSHTA Activity]
|
||||
category = Adversary Tactics
|
||||
@@ -1418,7 +1435,7 @@ The objective of this step is meant to identify suspicious behavioral indicators
|
||||
1. Network connections. Any network connections? Review the reputation of the remote IP or domain.\
|
||||
Retrieval of script code\
|
||||
The objective of this step is to confirm the executed script code is benign or malicious.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Okta Activity]
|
||||
category = Adversary Tactics
|
||||
@@ -1437,7 +1454,7 @@ description = Monitor your Okta environment for suspicious activities. Due to th
|
||||
narrative = Okta is the leading single sign on (SSO) provider, allowing users to authenticate once to Okta, and from there access a variety of web-based applications. These applications are assigned to users and allow administrators to centrally manage which users are allowed to access which applications. It also provides centralized logging to help understand how the applications are used and by whom. \
|
||||
While SSO is a major convenience for users, it also provides attackers with an opportunity. If the attacker can gain access to Okta, they can access a variety of applications. As such monitoring the environment is important. \
|
||||
With people moving quickly to adopt web-based applications and ways to manage them, many are still struggling to understand how best to monitor these environments. This analytic story provides searches to help monitor this environment, and identify events and activity that warrant further investigation such as credential stuffing or password spraying attacks, and users logging in from multiple locations when travel is disallowed.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Regsvr32 Activity]
|
||||
category = Adversary Tactics
|
||||
@@ -1453,8 +1470,8 @@ support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Monitor and detect techniques used by attackers who leverage the regsvr32.exe process to execute malicious code.
|
||||
narrative = One common adversary tactic is to bypass application control solutions via the regsvr32.exe process. This particular bypass was popularized with "SquiblyDoo" using the "scrobj.dll" dll to load .sct scriptlets. This technique is still widely used by adversaries to bypass detection and prevention controls. The file extension of the DLL is irrelevant (it may load a .txt file extension for example). The searches in this story help you detect and investigate suspicious activity that may indicate that an adversary is leveraging regsvr32.exe to execute malicious code. Validate execution Determine if regsvr32.exe executed. Validate the OriginalFileName of regsvr32.exe and further PE metadata. If executed outside of c:\windows\system32 or c:\windows\syswow64, it should be highly suspect. Determine if script code was executed with regsvr32. Situational Awareness - The objective of this step is meant to identify suspicious behavioral indicators related to executed of Script code by regsvr32.exe. Parent process. Is the parent process a known LOLBin? Is the parent process an Office Application? Module loads. Is regsvr32 loading any suspicious .DLLs? Unsigned or signed from non-standard paths. Network connections. Any network connections? Review the reputation of the remote IP or domain. Retrieval of Script Code - confirm the executed script code is benign or malicious.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = One common adversary tactic is to bypass application control solutions via the regsvr32.exe process. This particular bypass was popularized with "SquiblyDoo" using the "scrobj.dll" dll to load .sct scriptlets. This technique is still widely used by adversaries to bypass detection and prevention controls. The file extension of the DLL is irrelevant (it may load a .txt file extension for example). The searches in this story help you detect and investigate suspicious activity that may indicate that an adversary is leveraging regsvr32.exe to execute malicious code. Validate execution Determine if regsvr32.exe executed. Validate the OriginalFileName of regsvr32.exe and further PE metadata. If executed outside of c:\windows\system32 or c:\windows\syswow64, it should be highly suspect. Determine if script code was executed with regsvr32. Situational Awareness - The objective of this step is meant to identify suspicious behavioral indicators related to executed of Script code by regsvr32.exe. Parent process. Is the parent process a known LOLBin? Is the parent process an Office Application? Module loads. Is regsvr32 loading any suspicious .DLLs? Unsigned or signed from non-standard paths. Network connections. Any network connections? Review the reputation of the remote IP or domain. Retrieval of Script Code - confirm the executed script code is benign or malicious.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Rundll32 Activity]
|
||||
category = Adversary Tactics
|
||||
@@ -1471,7 +1488,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Monitor and detect techniques used by attackers who leverage rundll32.exe to execute arbitrary malicious code.
|
||||
narrative = One common adversary tactic is to bypass application control solutions via the rundll32.exe process. Natively, rundll32.exe will load DLLs and is a great example of a Living off the Land Binary. Rundll32.exe may load malicious DLLs by ordinals, function names or directly. The queries in this story focus on loading default DLLs, syssetup.dll, ieadvpack.dll, advpack.dll and setupapi.dll from disk that may be abused by adversaries. Additionally, two analytics developed to assist with identifying DLLRegisterServer, Start and StartW functions being called. The searches in this story help you detect and investigate suspicious activity that may indicate that an adversary is leveraging rundll32.exe to execute malicious code.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious WMI Use]
|
||||
category = Adversary Tactics
|
||||
@@ -1488,7 +1505,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Attackers are increasingly abusing Windows Management Instrumentation (WMI), a framework and associated utilities available on all modern Windows operating systems. Because WMI can be leveraged to manage both local and remote systems, it is important to identify the processes executed and the user context within which the activity occurred.
|
||||
narrative = WMI is a Microsoft infrastructure for management data and operations on Windows operating systems. It includes of a set of utilities that can be leveraged to manage both local and remote Windows systems. Attackers are increasingly turning to WMI abuse in their efforts to conduct nefarious tasks, such as reconnaissance, detection of antivirus and virtual machines, code execution, lateral movement, persistence, and data exfiltration. The detection searches included in this Analytic Story are used to look for suspicious use of WMI commands that attackers may leverage to interact with remote systems. The searches specifically look for the use of WMI to run processes on remote systems. In the event that unauthorized WMI execution occurs, it will be important for analysts and investigators to determine the context of the event. These details may provide insights related to how WMI was used and to what end.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Windows Registry Activities]
|
||||
category = Adversary Tactics
|
||||
@@ -1505,9 +1522,9 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Monitor and detect registry changes initiated from remote locations, which can be a sign that an attacker has infiltrated your system.
|
||||
narrative = Attackers are developing increasingly sophisticated techniques for hijacking target servers, while evading detection. One such technique that has become progressively more common is registry modification.\
|
||||
The registry is a key component of the Windows operating system. It has a hierarchical database called "registry" that contains settings, options, and values for executables. Once the threat actor gains access to a machine, they can use reg.exe to modify their account to obtain administrator-level privileges, maintain persistence, and move laterally within the environment.\
|
||||
The registry is a key component of the Windows operating system. It has a hierarchical database called "registry" that contains settings, options, and values for executables. Once the threat actor gains access to a machine, they can use reg.exe to modify their account to obtain administrator-level privileges, maintain persistence, and move laterally within the environment.\
|
||||
The searches in this story are designed to help you detect behaviors associated with manipulation of the Windows registry.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Zoom Child Processes]
|
||||
category = Adversary Tactics
|
||||
@@ -1525,7 +1542,7 @@ providing_technologies = none
|
||||
description = Attackers are using Zoom as an vector to increase privileges on a sytems. This story detects new child processes of zoom and provides investigative actions for this detection.
|
||||
narrative = Zoom is a leader in modern enterprise video communications and its usage has increased dramatically with a large amount of the population under stay-at-home orders due to the COVID-19 pandemic. With increased usage has come increased scrutiny and several security flaws have been found with this application on both Windows and macOS systems.\
|
||||
Current detections focus on finding new child processes of this application on a per host basis. Investigative searches are included to gather information needed during an investigation.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Trickbot]
|
||||
category = Malware
|
||||
@@ -1542,7 +1559,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the trickbot banking trojan, including looking for file writes associated with its payload, process injection, shellcode execution and data collection even in LDAP environment.
|
||||
narrative = trickbot banking trojan campaigns targeting banks and other vertical sectors.This malware is known in Microsoft Windows OS where target security Microsoft Defender to prevent its detection and removal. steal Verizon credentials and targeting banks using its multi component modules that collect and exfiltrate data.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Trusted Developer Utilities Proxy Execution]
|
||||
category = Adversary Tactics
|
||||
@@ -1560,7 +1577,7 @@ providing_technologies = none
|
||||
description = Monitor and detect behaviors used by attackers who leverage trusted developer utilities to execute malicious code.
|
||||
narrative = Adversaries may take advantage of trusted developer utilities to proxy execution of malicious payloads. There are many utilities used for software development related tasks that can be used to execute code in various forms to assist in development, debugging, and reverse engineering. These utilities may often be signed with legitimate certificates that allow them to execute on a system and proxy execution of malicious code through a trusted process that effectively bypasses application control solutions.\
|
||||
The searches in this story help you detect and investigate suspicious activity that may indicate that an adversary is leveraging microsoft.workflow.compiler.exe to execute malicious code.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Trusted Developer Utilities Proxy Execution MSBuild]
|
||||
category = Adversary Tactics
|
||||
@@ -1590,7 +1607,7 @@ The objective of this step is meant to identify suspicious behavioral indicators
|
||||
1. Network connections. Any network connections? Review the reputation of the remote IP or domain.\
|
||||
Retrieval of script code\
|
||||
The objective of this step is to confirm the executed script code is benign or malicious.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Unusual Processes]
|
||||
category = Malware
|
||||
@@ -1606,10 +1623,10 @@ support_searches = ["ESCU - Baseline of Command Line Length - MLTK"]
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Quickly identify systems running new or unusual processes in your environment that could be indicators of suspicious activity. Processes run from unusual locations, those with conspicuously long command lines, and rare executables are all examples of activities that may warrant deeper investigation.
|
||||
narrative = Being able to profile a host's processes within your environment can help you more quickly identify processes that seem out of place when compared to the rest of the population of hosts or asset types.\
|
||||
narrative = Being able to profile a host's processes within your environment can help you more quickly identify processes that seem out of place when compared to the rest of the population of hosts or asset types.\
|
||||
This Analytic Story lets you identify processes that are either a) not typically seen running or b) have some sort of suspicious command-line arguments associated with them. This Analytic Story will also help you identify the user running these processes and the associated process activity on the host.\
|
||||
In the event an unusual process is identified, it is imperative to better understand how that process was able to execute on the host, when it first executed, and whether other hosts are affected. This extra information may provide clues that can help the analyst further investigate any suspicious activity.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Use of Cleartext Protocols]
|
||||
category = Best Practices
|
||||
@@ -1626,7 +1643,7 @@ data_models = ["Network_Traffic"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that detect cleartext network protocols that may leak credentials or should otherwise be encrypted.
|
||||
narrative = Various legacy protocols operate by default in the clear, without the protections of encryption. This potentially leaks sensitive information that can be exploited by passively sniffing network traffic. Depending on the protocol, this information could be highly sensitive, or could allow for session hijacking. In addition, these protocols send authentication information, which would allow for the harvesting of usernames and passwords that could potentially be used to authenticate and compromise secondary systems.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows DNS SIGRed CVE-2020-1350]
|
||||
category = Adversary Tactics
|
||||
@@ -1642,8 +1659,8 @@ support_searches = []
|
||||
data_models = ["Network_Resolution"]
|
||||
providing_technologies = none
|
||||
description = Uncover activity consistent with CVE-2020-1350, or SIGRed. Discovered by Checkpoint researchers, this vulnerability affects Windows 2003 to 2019, and is triggered by a malicious DNS response (only affects DNS over TCP). An attacker can use the malicious payload to cause a buffer overflow on the vulnerable system, leading to compromise. The included searches in this Analytic Story are designed to identify the large response payload for SIG and KEY DNS records which can be used for the exploit.
|
||||
narrative = When a client requests a DNS record for a particular domain, that request gets routed first through the client's locally configured DNS server, then to any DNS server(s) configured as forwarders, and then onto the target domain's own DNS server(s). If a attacker wanted to, they could host a malicious DNS server that responds to the initial request with a specially crafted large response (~65KB). This response would flow through to the client's local DNS server, which if not patched for CVE-2020-1350, would cause the buffer overflow. The detection searches in this Analytic Story use wire data to detect the malicious behavior. Searches for Splunk Stream and Zeek are included. The Splunk Stream search correlates across stream:dns and stream:tcp, while the Zeek search correlates across bro:dns:json and bro:conn:json. These correlations are required to pick up both the DNS record types (SIG and KEY) along with the payload size (>65KB).
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = When a client requests a DNS record for a particular domain, that request gets routed first through the client's locally configured DNS server, then to any DNS server(s) configured as forwarders, and then onto the target domain's own DNS server(s). If a attacker wanted to, they could host a malicious DNS server that responds to the initial request with a specially crafted large response (~65KB). This response would flow through to the client's local DNS server, which if not patched for CVE-2020-1350, would cause the buffer overflow. The detection searches in this Analytic Story use wire data to detect the malicious behavior. Searches for Splunk Stream and Zeek are included. The Splunk Stream search correlates across stream:dns and stream:tcp, while the Zeek search correlates across bro:dns:json and bro:conn:json. These correlations are required to pick up both the DNS record types (SIG and KEY) along with the payload size (>65KB).
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows Defense Evasion Tactics]
|
||||
category = Adversary Tactics
|
||||
@@ -1659,8 +1676,8 @@ support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Detect tactics used by malware to evade defenses on Windows endpoints. A few of these include suspicious `reg.exe` processes, files hidden with `attrib.exe` and disabling user-account control, among many others
|
||||
narrative = Defense evasion is a tactic--identified in the MITRE ATT&CK framework--that adversaries employ in a variety of ways to bypass or defeat defensive security measures. There are many techniques enumerated by the MITRE ATT&CK framework that are applicable in this context. This Analytic Story includes searches designed to identify the use of such techniques on Windows platforms.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = Defense evasion is a tactic--identified in the MITRE ATT&CK framework--that adversaries employ in a variety of ways to bypass or defeat defensive security measures. There are many techniques enumerated by the MITRE ATT&CK framework that are applicable in this context. This Analytic Story includes searches designed to identify the use of such techniques on Windows platforms.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows File Extension and Association Abuse]
|
||||
category = Malware
|
||||
@@ -1678,10 +1695,10 @@ providing_technologies = none
|
||||
description = Detect and investigate suspected abuse of file extensions and Windows file associations. Some of the malicious behaviors involved may include inserting spaces before file extensions or prepending the file extension with a different one, among other techniques.
|
||||
narrative = Attackers use a variety of techniques to entice users to run malicious code or to persist on an endpoint. One way to accomplish these goals is to leverage file extensions and the mechanism Windows uses to associate files with specific applications. \
|
||||
Since its earliest days, Windows has used extensions to identify file types. Users have become familiar with these extensions and their application associations. For example, if users see that a file ends in `.doc` or `.docx`, they will assume that it is a Microsoft Word document and expect that double-clicking will open it using `winword.exe`. The user will typically also presume that the `.docx` file is safe. \
|
||||
Attackers take advantage of this expectation by obfuscating the true file extension. They can accomplish this in a couple of ways. One technique involves inserting multiple spaces in the file name before the extension to hide the extension from the GUI, obscuring the true nature of the file. Another approach involves prepending the real extension with a different one. This is especially effective when Windows is configured to "hide extensions for known file types." In this case, the real extension is not displayed, but the prepended one is, leading end users to believe the file is a different type than it actually is.\
|
||||
Changing the association between a file extension and an application can allow an attacker to execute arbitrary code. The technique typically involves changing the association for an often-launched file type to associate instead with a malicious program the attacker has dropped on the endpoint. When the end user launches a file that has been manipulated in this way, it will execute the attacker's malware. It will also execute the application the end user expected to run, cleverly obscuring the fact that something suspicious has occurred.\
|
||||
Attackers take advantage of this expectation by obfuscating the true file extension. They can accomplish this in a couple of ways. One technique involves inserting multiple spaces in the file name before the extension to hide the extension from the GUI, obscuring the true nature of the file. Another approach involves prepending the real extension with a different one. This is especially effective when Windows is configured to "hide extensions for known file types." In this case, the real extension is not displayed, but the prepended one is, leading end users to believe the file is a different type than it actually is.\
|
||||
Changing the association between a file extension and an application can allow an attacker to execute arbitrary code. The technique typically involves changing the association for an often-launched file type to associate instead with a malicious program the attacker has dropped on the endpoint. When the end user launches a file that has been manipulated in this way, it will execute the attacker's malware. It will also execute the application the end user expected to run, cleverly obscuring the fact that something suspicious has occurred.\
|
||||
Run the searches in this story to detect and investigate suspicious behavior that may indicate abuse or manipulation of Windows file extensions and/or associations.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows Log Manipulation]
|
||||
category = Adversary Tactics
|
||||
@@ -1699,7 +1716,7 @@ providing_technologies = none
|
||||
description = Adversaries often try to cover their tracks by manipulating Windows logs. Use these searches to help you monitor for suspicious activity surrounding log files--an essential component of an effective defense.
|
||||
narrative = Because attackers often modify system logs to cover their tracks and/or to thwart the investigative process, log monitoring is an industry-recognized best practice. While there are legitimate reasons to manipulate system logs, it is still worthwhile to keep track of who manipulated the logs, when they manipulated them, and in what way they manipulated them (determining which accesses, tools, or utilities were employed). Even if no malicious activity is detected, the knowledge of an attempt to manipulate system logs may be indicative of a broader security risk that should be thoroughly investigated.\
|
||||
The Analytic Story gives users two different ways to detect manipulation of Windows Event Logs and one way to detect deletion of the Update Sequence Number (USN) Change Journal. The story helps determine the history of the host and the users who have accessed it. Finally, the story aides in investigation by retrieving all the information on the process that caused these events (if the process has been identified).
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows Persistence Techniques]
|
||||
category = Adversary Tactics
|
||||
@@ -1716,7 +1733,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Monitor for activities and techniques associated with maintaining persistence on a Windows system--a sign that an adversary may have compromised your environment.
|
||||
narrative = Maintaining persistence is one of the first steps taken by attackers after the initial compromise. Attackers leverage various custom and built-in tools to ensure survivability and persistent access within a compromised enterprise. This Analytic Story provides searches to help you identify various behaviors used by attackers to maintain persistent access to a Windows environment.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows Privilege Escalation]
|
||||
category = Adversary Tactics
|
||||
@@ -1732,8 +1749,8 @@ support_searches = []
|
||||
data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Monitor for and investigate activities that may be associated with a Windows privilege-escalation attack, including unusual processes running on endpoints, modified registry keys, and more.
|
||||
narrative = Privilege escalation is a "land-and-expand" technique, wherein an adversary gains an initial foothold on a host and then exploits its weaknesses to increase his privileges. The motivation is simple: certain actions on a Windows machine--such as installing software--may require higher-level privileges than those the attacker initially acquired. By increasing his privilege level, the attacker can gain the control required to carry out his malicious ends. This Analytic Story provides searches to detect and investigate behaviors that attackers may use to elevate their privileges in your environment.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
narrative = Privilege escalation is a "land-and-expand" technique, wherein an adversary gains an initial foothold on a host and then exploits its weaknesses to increase his privileges. The motivation is simple: certain actions on a Windows machine--such as installing software--may require higher-level privileges than those the attacker initially acquired. By increasing his privilege level, the attacker can gain the control required to carry out his malicious ends. This Analytic Story provides searches to detect and investigate behaviors that attackers may use to elevate their privileges in your environment.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Windows Service Abuse]
|
||||
category = Malware
|
||||
@@ -1750,7 +1767,7 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Windows services are often used by attackers for persistence and the ability to load drivers or otherwise interact with the Windows kernel. This Analytic Story helps you monitor your environment for indications that Windows services are being modified or created in a suspicious manner.
|
||||
narrative = The Windows operating system uses a services architecture to allow for running code in the background, similar to a UNIX daemon. Attackers will often leverage Windows services for persistence, hiding in plain sight, seeking the ability to run privileged code that can interact with the kernel. In many cases, attackers will create a new service to host their malicious code. Attackers have also been observed modifying unnecessary or unused services to point to their own code, as opposed to what was intended. In these cases, attackers often use tools to create or modify services in ways that are not typical for most environments, providing opportunities for detection.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[XMRig]
|
||||
category = Malware
|
||||
@@ -1767,6 +1784,6 @@ data_models = ["Endpoint"]
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the xmrig monero, including looking for file writes associated with its payload, process command-line, defense evasion (killing services, deleting users, modifying files or folder permission, killing other malware or other coin miner) and hacking tools including Telegram as mean of command and control (C2) to download other files. Adversaries may leverage the resources of co-opted systems in order to solve resource intensive problems which may impact system and/or hosted service availability. One common purpose for Resource Hijacking is to validate transactions of cryptocurrency networks and earn virtual currency. Adversaries may consume enough system resources to negatively impact and/or cause affected machines to become unresponsive. (1) Servers and cloud-based (2) systems are common targets because of the high potential for available resources, but user endpoint systems may also be compromised and used for Resource Hijacking and cryptocurrency mining.
|
||||
narrative = XMRig is a high performance, open source, cross platform RandomX, KawPow, CryptoNight and AstroBWT unified CPU/GPU miner. This monero is seen in the wild on May 2017.
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
#### END STORIES ####
|
||||
+439
-298
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
@@ -4,7 +4,7 @@
|
||||
is_configured = false
|
||||
state = enabled
|
||||
state_change_requires_restart = false
|
||||
build = 159
|
||||
build = 179
|
||||
|
||||
[triggers]
|
||||
reload.analytic_stories = simple
|
||||
|
||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:43:54 UTC
|
||||
# On Date: 2021-08-12T23:58:40 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search sourcetype="netbackup_logs" dest=$dest$</query>
|
||||
<query>| search sourcetype="netbackup_logs" dest=$dest$</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>sourcetype="aws:cloudwatchlogs:eks" |rename sourceIPs{} as src_ip |search src_ip=$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(user.username) values(requestURI) values(verb) values(userAgent) by source annotations.authorization.k8s.io/decision src_ip</query>
|
||||
<query>sourcetype="aws:cloudwatchlogs:eks" |rename sourceIPs{} as src_ip |search src_ip=$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(user.username) values(requestURI) values(verb) values(userAgent) by source annotations.authorization.k8s.io/decision src_ip</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>sourcetype="aws:securityhub:firehose" "findings{}.Resources{}.Type"=AWSEC2Instance | rex field=findings{}.Resources{}.Id .*instance/(?<instance>.*)| rename instance as dest| search dest = $dest$ |rename findings{}.* as * | rename Remediation.Recommendation.Text as Remediation | table dest Title ProductArn Description FirstObservedAt RecordState Remediation</query>
|
||||
<query>sourcetype="aws:securityhub:firehose" "findings{}.Resources{}.Type"=AWSEC2Instance | rex field=findings{}.Resources{}.Id .*instance/(?&lt;instance&gt;.*)| rename instance as dest| search dest = $dest$ |rename findings{}.* as * | rename Remediation.Recommendation.Text as Remediation | table dest Title ProductArn Description FirstObservedAt RecordState Remediation</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>sourcetype="google:gcp:pubsub:message" | rename data.protoPayload.requestMetadata.callerIp as src_ip | search src_ip =$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(data.protoPayload.methodName) as method_names values(data.protoPayload.resourceName) as resource_name values(data.protoPayload.requestMetadata.callerSuppliedUserAgent) as http_user_agent values(data.protoPayload.authenticationInfo.principalEmail) as user values(data.protoPayload.status.message) by src_ip data.resource.labels.cluster_name data.resource.type</query>
|
||||
<query>sourcetype="google:gcp:pubsub:message" | rename data.protoPayload.requestMetadata.callerIp as src_ip | search src_ip =$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(data.protoPayload.methodName) as method_names values(data.protoPayload.resourceName) as resource_name values(data.protoPayload.requestMetadata.callerSuppliedUserAgent) as http_user_agent values(data.protoPayload.authenticationInfo.principalEmail) as user values(data.protoPayload.status.message) by src_ip data.resource.labels.cluster_name data.resource.type</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search sourcetype="netbackup_logs" COMPUTERNAME=$dest$ | rename COMPUTERNAME as dest, MESSAGE as signature | table _time, dest, signature</query>
|
||||
<query>| search sourcetype="netbackup_logs" COMPUTERNAME=$dest$ | rename COMPUTERNAME as dest, MESSAGE as signature | table _time, dest, signature</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats allow_old_summaries=true sum(All_Traffic.bytes_out) as "bytes_out" sum(All_Traffic.bytes_in) as "bytes_in" from datamodel=Network_Traffic where nodename=All_Traffic All_Traffic.dest_port=53 by All_Traffic.src All_Traffic.dest| `drop_dm_object_name(All_Traffic)` | rename src as src_ip | rename dest as dest_ip | search src_ip=$src_ip$ | search dest_ip = $dest_ip | eval ratio = (bytes_out/bytes_in) | table ratio</query>
|
||||
<query>| tstats allow_old_summaries=true sum(All_Traffic.bytes_out) as "bytes_out" sum(All_Traffic.bytes_in) as "bytes_in" from datamodel=Network_Traffic where nodename=All_Traffic All_Traffic.dest_port=53 by All_Traffic.src All_Traffic.dest| `drop_dm_object_name(All_Traffic)` | rename src as src_ip | rename dest as dest_ip | search src_ip=$src_ip$ | search dest_ip = $dest_ip | eval ratio = (bytes_out/bytes_in) | table ratio</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search sourcetype="aws:description" source="*:ec2_instances"| dedup id sortby -_time |rename id as instanceId| search instanceId=$instanceId$ | spath output=tags path=tags | eval tags=mvzip(key,value," = "), ip_address=if((ip_address == "null"),private_ip_address,ip_address) | table id, tags.Name, aws_account_id, placement, instance_type, key_name, ip_address, launch_time, state, vpc_id, subnet_id, tags | rename aws_account_id as "Account ID", id as ID, instance_type as Type, ip_address as "IP Address", key_name as "Key Pair", launch_time as "Launch Time", placement as "Availability Zone", state as State, subnet_id as Subnet, "tags.Name" as Name, vpc_id as VPC</query>
|
||||
<query>| search sourcetype="aws:description" source="*:ec2_instances"| dedup id sortby -_time |rename id as instanceId| search instanceId=$instanceId$ | spath output=tags path=tags | eval tags=mvzip(key,value," = "), ip_address=if((ip_address == "null"),private_ip_address,ip_address) | table id, tags.Name, aws_account_id, placement, instance_type, key_name, ip_address, launch_time, state, vpc_id, subnet_id, tags | rename aws_account_id as "Account ID", id as ID, instance_type as Type, ip_address as "IP Address", key_name as "Key Pair", launch_time as "Launch Time", placement as "Availability Zone", state as State, subnet_id as Subnet, "tags.Name" as Name, vpc_id as VPC</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search eventtype=wineventlog_security (signature_id=4718 OR signature_id=4717) dest=$dest$ | rename user as "Account Modified" | table _time, dest, "Account Modified", Access_Right, signature</query>
|
||||
<query>| search eventtype=wineventlog_security (signature_id=4718 OR signature_id=4717) dest=$dest$ | rename user as "Account Modified" | table _time, dest, "Account Modified", Access_Right, signature</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search eventtype=wineventlog_security (signature_id=4718 OR signature_id=4717) user=$user$ | rename user as "Account Modified" | table _time, dest, "Account Modified", Access_Right, signature</query>
|
||||
<query>| search eventtype=wineventlog_security (signature_id=4718 OR signature_id=4717) user=$user$ | rename user as "Account Modified" | table _time, dest, "Account Modified", Access_Right, signature</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats `summariesonly` count values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes by Processes.user Processes.parent_process_name Processes.process_name Processes.dest | `drop_dm_object_name("Processes")` | search parent_process_name= $parent_process_name$ |search dest = $dest$ | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`</query>
|
||||
<query>| tstats `summariesonly` count values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes by Processes.user Processes.parent_process_name Processes.process_name Processes.dest | `drop_dm_object_name("Processes")` | search parent_process_name= $parent_process_name$ |search dest = $dest$ | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats `summariesonly` count values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes by Processes.user Processes.parent_process_name Processes.process_name Processes.dest | `drop_dm_object_name("Processes")` | search process_name= $process_name$ | search dest = $dest$ | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`</query>
|
||||
<query>| tstats `summariesonly` count values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes by Processes.user Processes.parent_process_name Processes.process_name Processes.dest | `drop_dm_object_name("Processes")` | search process_name= $process_name$ | search dest = $dest$ | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode>18 EventCode<22 | rename host as dest | search dest=$dest$| table _time, dest, user, Name, Operation, EventType, Type, Query, Consumer, Filter</query>
|
||||
<query>sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode&gt;18 EventCode&lt;22 | rename host as dest | search dest=$dest$| table _time, dest, user, Name, Operation, EventType, Type, Query, Consumer, Filter</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats count `security_content_summariesonly` earliest(_time) as first_login latest(_time) as last_login dc(Authentication.dest) AS distinct_count_dest values(Authentication.dest) AS Authentication.dest values(Authentication.app) AS Authentication.app from datamodel=Authentication where Authentication.action=failure by Authentication.user | where distinct_count_dest > 1 | `security_content_ctime(first_login)` | `security_content_ctime(last_login)` | `drop_dm_object_name("Authentication")` | search user=$user$</query>
|
||||
<query>| tstats count `security_content_summariesonly` earliest(_time) as first_login latest(_time) as last_login dc(Authentication.dest) AS distinct_count_dest values(Authentication.dest) AS Authentication.dest values(Authentication.app) AS Authentication.app from datamodel=Authentication where Authentication.action=failure by Authentication.user | where distinct_count_dest &gt; 1 | `security_content_ctime(first_login)` | `security_content_ctime(last_login)` | `drop_dm_object_name("Authentication")` | search user=$user$</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>`wineventlog_security` EventCode=4768 OR EventCode=4769 | rex field=user "(?<new_user>[^\@]+)" | stats count BY new_user, dest, EventCode | stats max(count) AS max_count sum(count) AS sum_count BY new_user, dest| search dest=$dest$ | where sum_count/max_count!=2 | rename new_user AS user </query>
|
||||
<query>`wineventlog_security` EventCode=4768 OR EventCode=4769 | rex field=user "(?&lt;new_user&gt;[^\@]+)" | stats count BY new_user, dest, EventCode | stats max(count) AS max_count sum(count) AS sum_count BY new_user, dest| search dest=$dest$ | where sum_count/max_count!=2 | rename new_user AS user </query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats count `security_content_summariesonly` earliest(_time) as first_login latest(_time) as last_login values(Authentication.dest) AS Authentication.dest values(Authentication.app) AS Authentication.app values(Authentication.action) AS Authentication.action from datamodel=Authentication where Authentication.action=success by _time, Authentication.user | bucket _time span=30d | stats count min(first_login) as first_login max(last_login) as last_login values(Authentication.dest) AS Authentication.dest by Authentication.user | where count=1 | where first_login >= relative_time(now(), "-30d") | `security_content_ctime(first_login)` | `security_content_ctime(last_login)` | `drop_dm_object_name("Authentication")` | search dest=$dest$</query>
|
||||
<query>| tstats count `security_content_summariesonly` earliest(_time) as first_login latest(_time) as last_login values(Authentication.dest) AS Authentication.dest values(Authentication.app) AS Authentication.app values(Authentication.action) AS Authentication.action from datamodel=Authentication where Authentication.action=success by _time, Authentication.user | bucket _time span=30d | stats count min(first_login) as first_login max(last_login) as last_login values(Authentication.dest) AS Authentication.dest by Authentication.user | where count=1 | where first_login &gt;= relative_time(now(), "-30d") | `security_content_ctime(first_login)` | `security_content_ctime(last_login)` | `drop_dm_object_name("Authentication")` | search dest=$dest$</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Authentication where Authentication.signature_id=4624 Authentication.app=win:remote by Authentication.src Authentication.dest Authentication.app Authentication.user Authentication.signature Authentication.src_nt_domain | `security_content_ctime(lastTime)` | `security_content_ctime(firstTime)` | `drop_dm_object_name("Authentication")` | search dest=$dest$ | table firstTime lastTime src src_nt_domain dest user app count | sort count</query>
|
||||
<query>| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Authentication where Authentication.signature_id=4624 Authentication.app=win:remote by Authentication.src Authentication.dest Authentication.app Authentication.user Authentication.signature Authentication.src_nt_domain | `security_content_ctime(lastTime)` | `security_content_ctime(firstTime)` | `drop_dm_object_name("Authentication")` | search dest=$dest$ | table firstTime lastTime src src_nt_domain dest user app count | sort count</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search sourcetype=stream:http | search src_ip=$src_ip$ | search dest_ip=$dest_ip$ | eval cs_content_type_length = len(cs_content_type) | search cs_content_type_length > 100 | rex field="cs_content_type" (?<suspicious_strings>cmd.exe) | eval suspicious_strings_found=if(match(cs_content_type, "application"), "True", "False") | rename suspicious_strings_found AS "Suspicious Content-Type Found" | fields "Suspicious Content-Type Found", dest_ip, src_ip, suspicious_strings, cs_content_type, cs_content_type_length, url</query>
|
||||
<query>| search sourcetype=stream:http | search src_ip=$src_ip$ | search dest_ip=$dest_ip$ | eval cs_content_type_length = len(cs_content_type) | search cs_content_type_length &gt; 100 | rex field="cs_content_type" (?&lt;suspicious_strings&gt;cmd.exe) | eval suspicious_strings_found=if(match(cs_content_type, "application"), "True", "False") | rename suspicious_strings_found AS "Suspicious Content-Type Found" | fields "Suspicious Content-Type Found", dest_ip, src_ip, suspicious_strings, cs_content_type, cs_content_type_length, url</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| tstats `security_content_summariesonly` values(Web.url) as url from datamodel=Web by Web.src,Web.http_user_agent,Web.http_method | `drop_dm_object_name("Web")`| search http_method, "POST" | search src=$src$</query>
|
||||
<query>| tstats `security_content_summariesonly` values(Web.url) as url from datamodel=Web by Web.src,Web.http_user_agent,Web.http_method | `drop_dm_object_name("Web")`| search http_method, "POST" | search src=$src$</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+18
-11
@@ -29,7 +29,7 @@ panels = ["panel://workbench_panel_aws_investigate_user_activities_by_arn___resp
|
||||
|
||||
[panel_group://workbench_panel_group_aws_user_monitoring]
|
||||
label = AWS User Monitoring
|
||||
description = Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
description = Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_notable_history___response_task", "panel://workbench_panel_investigate_aws_user_activities_by_user_field___response_task"]
|
||||
@@ -92,7 +92,7 @@ panels = ["panel://workbench_panel_aws_investigate_security_hub_alerts_by_dest__
|
||||
|
||||
[panel_group://workbench_panel_group_cloud_federated_credential_abuse]
|
||||
label = Cloud Federated Credential Abuse
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_notable_history___response_task"]
|
||||
@@ -127,7 +127,7 @@ panels = ["panel://workbench_panel_aws_investigate_user_activities_by_arn___resp
|
||||
|
||||
[panel_group://workbench_panel_group_container_implantation_monitoring_and_investigation]
|
||||
label = Container Implantation Monitoring and Investigation
|
||||
description = Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
description = Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_notable_history___response_task"]
|
||||
@@ -148,7 +148,7 @@ panels = ["panel://workbench_panel_get_notable_history___response_task", "panel:
|
||||
|
||||
[panel_group://workbench_panel_group_dns_amplification_attacks]
|
||||
label = DNS Amplification Attacks
|
||||
description = DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
description = DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_notable_history___response_task"]
|
||||
@@ -251,6 +251,13 @@ disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_dns_server_history_for_a_host___response_task", "panel://workbench_panel_get_dns_traffic_ratio___response_task", "panel://workbench_panel_get_history_of_email_sources___response_task", "panel://workbench_panel_get_notable_history___response_task", "panel://workbench_panel_get_outbound_emails_to_hidden_cobra_threat_actors___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_get_process_responsible_for_the_dns_traffic___response_task", "panel://workbench_panel_investigate_successful_remote_desktop_authentications___response_task"]
|
||||
|
||||
[panel_group://workbench_panel_group_icedid]
|
||||
label = Icedid
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to the IcedID banking trojan, including looking for file writes associated with its payload, process injection, shellcode execution and data collection.
|
||||
disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_notable_history___response_task"]
|
||||
|
||||
[panel_group://workbench_panel_group_ingress_tool_transfer]
|
||||
label = Ingress Tool Transfer
|
||||
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.
|
||||
@@ -288,7 +295,7 @@ panels = ["panel://workbench_panel_get_history_of_email_sources___response_task"
|
||||
|
||||
[panel_group://workbench_panel_group_malicious_powershell]
|
||||
label = Malicious PowerShell
|
||||
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.
|
||||
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.
|
||||
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"]
|
||||
@@ -477,7 +484,7 @@ panels = ["panel://workbench_panel_aws_investigate_user_activities_by_arn___resp
|
||||
|
||||
[panel_group://workbench_panel_group_suspicious_command_line_executions]
|
||||
label = Suspicious Command-Line Executions
|
||||
description = Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
description = Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
disabled = 0
|
||||
|
||||
panels = ["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"]
|
||||
@@ -663,7 +670,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_aws_investigate_user_activities_by_arn___response_task]
|
||||
label = AWS Investigate User Activities By ARN
|
||||
description = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
description = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"user": {\
|
||||
@@ -871,7 +878,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_get_certificate_logs_for_a_domain___response_task]
|
||||
label = Get Certificate logs for a domain
|
||||
description = This search queries the Certificates datamodel and give you all the information for a specific domain. Please note that the certificates issued by "Let's Encrypt" are widely used by attackers.
|
||||
description = This search queries the Certificates datamodel and give you all the information for a specific domain. Please note that the certificates issued by "Let's Encrypt" are widely used by attackers.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"domain": {\
|
||||
@@ -1247,7 +1254,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_investigate_aws_user_activities_by_user_field___response_task]
|
||||
label = Investigate AWS User Activities by user field
|
||||
description = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
description = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"user": {\
|
||||
@@ -1375,7 +1382,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_investigate_previous_unseen_user___response_task]
|
||||
label = Investigate Previous Unseen User
|
||||
description = This search returns previous unseen user, which didn't log in for 30 days.
|
||||
description = This search returns previous unseen user, which didn't log in for 30 days.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"dest": {\
|
||||
@@ -1407,7 +1414,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_investigate_suspicious_strings_in_http_header___response_task]
|
||||
label = Investigate Suspicious Strings in HTTP Header
|
||||
description = This search helps an analyst investigate a notable event related to a potential Apache Struts exploitation. To investigate, we will want to isolate and analyze the "payload" or the commands that were passed to the vulnerable hosts by creating a few regular expressions to carve out the commands focusing on common keywords from the payload, such as cmd.exe, /bin/bash and whois. The search returns these suspicious strings found in the HTTP logs of the system of interest.
|
||||
description = This search helps an analyst investigate a notable event related to a potential Apache Struts exploitation. To investigate, we will want to isolate and analyze the "payload" or the commands that were passed to the vulnerable hosts by creating a few regular expressions to carve out the commands focusing on common keywords from the payload, such as cmd.exe, /bin/bash and whois. The search returns these suspicious strings found in the HTTP logs of the system of interest.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"src_ip": {\
|
||||
|
||||
Vendored
+90
-38
@@ -1,13 +1,13 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:43:54 UTC
|
||||
# On Date: 2021-08-12T23:58:41 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
|
||||
[aws_cloudwatchlogs_eks]
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[aws_s3_accesslogs]
|
||||
@@ -15,7 +15,7 @@ definition = sourcetype=aws:s3:accesslogs
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[aws_securityhub_finding]
|
||||
definition = sourcetype="aws:securityhub:finding"
|
||||
definition = sourcetype="aws:securityhub:finding"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[brand_abuse_dns]
|
||||
@@ -35,7 +35,7 @@ definition = eventtype=cisco_ios
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[cloud_api_calls_from_previously_unseen_user_roles_activity_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new commands from user roles
|
||||
|
||||
[cloudtrail]
|
||||
@@ -43,7 +43,7 @@ definition = sourcetype=aws:cloudtrail
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[cloudwatch_eks]
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype) for AWS cloudwatch eks logs. Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[cloudwatch_vpc]
|
||||
@@ -95,19 +95,19 @@ definition = (query=outlook* AND query=login* AND query=account*)
|
||||
description = This limits the query fields to domains that are associated with evilginx masquerading as Outlook
|
||||
|
||||
[f5_bigip_rogue]
|
||||
definition = index=netops sourcetype="f5:bigip:rogue"
|
||||
definition = index=netops sourcetype="f5:bigip:rogue"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[filter_rare_process_allow_list]
|
||||
definition = lookup update=true lookup_rare_process_allow_list_default process as process OUTPUTNEW allow_list | where allow_list="false" | lookup update=true lookup_rare_process_allow_list_local process as process OUTPUT allow_list | where allow_list="false"
|
||||
definition = lookup update=true lookup_rare_process_allow_list_default process as process OUTPUTNEW allow_list | where allow_list="false" | lookup update=true lookup_rare_process_allow_list_local process as process OUTPUT allow_list | where allow_list="false"
|
||||
description = This macro is intended to allow_list processes that have been definied as rare
|
||||
|
||||
[google_gcp_pubnet_message]
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype) for Google GCP. Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[google_gcp_pubsub_message]
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[is_windows_system_file]
|
||||
@@ -123,7 +123,7 @@ definition = index=*
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[netbackup]
|
||||
definition = sourcetype="netbackup_logs"
|
||||
definition = sourcetype="netbackup_logs"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[network_acl_events]
|
||||
@@ -139,79 +139,79 @@ definition = eventtype=okta_log
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[osquery_process]
|
||||
definition = eventtype="osquery-process"
|
||||
definition = eventtype="osquery-process"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[powershell]
|
||||
definition = (source=WinEventLog:Microsoft-Windows-PowerShell/Operational OR source="XmlWinEventLog:Microsoft-Windows-PowerShell/Operational")
|
||||
definition = (source=WinEventLog:Microsoft-Windows-PowerShell/Operational OR source="XmlWinEventLog:Microsoft-Windows-PowerShell/Operational")
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[previously_seen_cloud_api_calls_per_user_role_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud api calls per user role
|
||||
|
||||
[previously_seen_cloud_compute_creations_by_user_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the user is new or not
|
||||
|
||||
[previously_seen_cloud_compute_image_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the image is new or not
|
||||
|
||||
[previously_seen_cloud_compute_images_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud instance images
|
||||
|
||||
[previously_seen_cloud_compute_instance_type_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud instance types
|
||||
|
||||
[previously_seen_cloud_compute_instance_types_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the instance type is new or not
|
||||
|
||||
[previously_seen_cloud_instance_modifications_by_user_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the user is new or not
|
||||
|
||||
[previously_seen_cloud_provisioning_activity_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud provisioning locations
|
||||
|
||||
[previously_seen_cloud_region_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud regions
|
||||
|
||||
[previously_seen_cloud_regions_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the region is new or not
|
||||
|
||||
[previously_seen_windows_services_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of Windows services
|
||||
|
||||
[previously_seen_windows_services_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new Windows services
|
||||
|
||||
[previously_seen_zoom_child_processes_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of zoom child processes
|
||||
|
||||
[previously_seen_zoom_child_processes_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new zoom child processes
|
||||
|
||||
[previously_unseen_cloud_provisioning_activity_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new provisioning activities
|
||||
|
||||
[printservice]
|
||||
definition = source="wineventlog:microsoft-windows-printservice/operational" OR sourcetype="WinEventLog:Microsoft-Windows-PrintService/Admin"
|
||||
definition = source="wineventlog:microsoft-windows-printservice/operational" OR sourcetype="WinEventLog:Microsoft-Windows-PrintService/Admin"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[prohibited_apps_launching_cmd]
|
||||
definition = | inputlookup prohibited_apps_launching_cmd | rename prohibited_applications as parent_process_name | eval parent_process_name="*" . parent_process_name | table parent_process_name
|
||||
definition = | inputlookup prohibited_apps_launching_cmd | rename prohibited_applications as parent_process_name | eval parent_process_name="*" . parent_process_name | table parent_process_name
|
||||
description = This macro outputs a list of process that should not be the parent process of cmd.exe
|
||||
|
||||
[prohibited_softwares]
|
||||
@@ -223,11 +223,11 @@ definition = lookup update=true ransomware_extensions_lookup Extensions AS file_
|
||||
description = This macro limits the output to files that have extensions associated with ransomware
|
||||
|
||||
[ransomware_notes]
|
||||
definition = lookup ransomware_notes_lookup ransomware_notes as file_name OUTPUT status as "Known Ransomware Notes" | search "Known Ransomware Notes"=True
|
||||
definition = lookup ransomware_notes_lookup ransomware_notes as file_name OUTPUT status as "Known Ransomware Notes" | search "Known Ransomware Notes"=True
|
||||
description = This macro limits the output to files that have been identified as a ransomware note
|
||||
|
||||
[remove_valid_domains]
|
||||
definition = eval domain=trim(domain,"*") | search NOT[| inputlookup domains] NOT[ |inputlookup cim_corporate_email_domain_lookup] NOT[inputlookup cim_corporate_web_domain_lookup] | eval domain="*"+domain+"*"
|
||||
definition = eval domain=trim(domain,"*") | search NOT[| inputlookup domains] NOT[ |inputlookup cim_corporate_email_domain_lookup] NOT[inputlookup cim_corporate_web_domain_lookup] | eval domain="*"+domain+"*"
|
||||
description = This macro removes valid domains from the output
|
||||
|
||||
[s3_accesslogs]
|
||||
@@ -236,12 +236,12 @@ description = customer specific splunk configurations(eg- index, source, sourcet
|
||||
|
||||
[security_content_ctime(1)]
|
||||
args = field
|
||||
definition = convert timeformat="%Y-%m-%dT%H:%M:%S" ctime($field$)
|
||||
definition = convert timeformat="%Y-%m-%dT%H:%M:%S" ctime($field$)
|
||||
description = convert epoch time to string
|
||||
|
||||
[security_content_summariesonly]
|
||||
definition = summariesonly=false allow_old_summaries=true
|
||||
description = search data model's summaries only
|
||||
description = search data model's summaries only
|
||||
|
||||
[security_group_api_calls]
|
||||
definition = (eventName=AuthorizeSecurityGroupIngress OR eventName=CreateSecurityGroup OR eventName=DeleteSecurityGroup OR eventName=DescribeClusterSecurityGroups OR eventName=DescribeDBSecurityGroups OR eventName=DescribeSecurityGroupReferences OR eventName=DescribeSecurityGroups OR eventName=DescribeStaleSecurityGroups OR eventName=RevokeSecurityGroupIngress OR eventName=UpdateSecurityGroupRuleDescriptionsIngress)
|
||||
@@ -264,7 +264,7 @@ definition = lookup update=true is_suspicious_file_extension_lookup file_name OU
|
||||
description = This macro limits the output to email attachments that have suspicious extensions
|
||||
|
||||
[suspicious_writes]
|
||||
definition = lookup suspicious_writes_lookup file as file_name OUTPUT note as "Reference" | search "Reference" != False
|
||||
definition = lookup suspicious_writes_lookup file as file_name OUTPUT note as "Reference" | search "Reference" != False
|
||||
description = This macro limites the output to file names that have been marked as suspicious
|
||||
|
||||
[sysmon]
|
||||
@@ -272,7 +272,7 @@ definition = sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR s
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[system_network_configuration_discovery_tools]
|
||||
definition = (process_name= "arp.exe" OR process_name= "at.exe" OR process_name= "attrib.exe" OR process_name= "cscript.exe" OR process_name= "dsquery.exe" OR process_name= "hostname.exe" OR process_name= "ipconfig.exe" OR process_name= "mimikatz.exe" OR process_name= "nbstat.exe" OR process_name= "net.exe" OR process_name= "netsh.exe" OR process_name= "nslookup.exe" OR process_name= "ping.exe" OR process_name= "quser.exe" OR process_name= "qwinsta.exe" OR process_name= "reg.exe" OR process_name= "runas.exe" OR process_name= "sc.exe" OR process_name= "schtasks.exe" OR process_name= "ssh.exe" OR process_name= "systeminfo.exe" OR process_name= "taskkill.exe" OR process_name= "telnet.exe" OR process_name= "tracert.exe" OR process_name="wscript.exe" OR process_name= "xcopy.exe")
|
||||
definition = (process_name= "arp.exe" OR process_name= "at.exe" OR process_name= "attrib.exe" OR process_name= "cscript.exe" OR process_name= "dsquery.exe" OR process_name= "hostname.exe" OR process_name= "ipconfig.exe" OR process_name= "mimikatz.exe" OR process_name= "nbstat.exe" OR process_name= "net.exe" OR process_name= "netsh.exe" OR process_name= "nslookup.exe" OR process_name= "ping.exe" OR process_name= "quser.exe" OR process_name= "qwinsta.exe" OR process_name= "reg.exe" OR process_name= "runas.exe" OR process_name= "sc.exe" OR process_name= "schtasks.exe" OR process_name= "ssh.exe" OR process_name= "systeminfo.exe" OR process_name= "taskkill.exe" OR process_name= "telnet.exe" OR process_name= "tracert.exe" OR process_name="wscript.exe" OR process_name= "xcopy.exe")
|
||||
description = This macro is a list of process that can be used to discover the network configuration
|
||||
|
||||
[uncommon_processes]
|
||||
@@ -288,15 +288,15 @@ definition = eventtype=wineventlog_system
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[wmi]
|
||||
definition = sourcetype="wineventlog:microsoft-windows-wmi-activity/operational"
|
||||
definition = sourcetype="wineventlog:microsoft-windows-wmi-activity/operational"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[zeek_rpc]
|
||||
definition = index=zeek sourcetype="zeek:rpc:json"
|
||||
definition = index=zeek sourcetype="zeek:rpc:json"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[zeek_ssl]
|
||||
definition = index=zeek sourcetype="zeek:ssl:json"
|
||||
definition = index=zeek sourcetype="zeek:ssl:json"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[aws_cloud_provisioning_from_previously_unseen_city_filter]
|
||||
@@ -503,6 +503,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.
|
||||
|
||||
[chcp_command_execution_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[cmd_echo_pipe___escalation_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -607,6 +611,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.
|
||||
|
||||
[create_remote_thread_in_shell_application_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[create_remote_thread_into_lsass_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -1139,6 +1147,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.
|
||||
|
||||
[drop_icedid_license_dat_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[dump_lsass_via_comsvcs_dll_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -1351,6 +1363,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.
|
||||
|
||||
[icedid_exfiltrated_archived_file_creation_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[identify_new_user_accounts_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -1615,6 +1631,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.
|
||||
|
||||
[office_application_spawn_regsvr32_process_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[office_application_spawn_rundll32_process_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -1863,6 +1883,22 @@ 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.
|
||||
|
||||
[rundll32_create_remote_thread_to_a_process_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[rundll32_createremotethread_in_browser_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[rundll32_dnsquery_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[rundll32_process_creating_exe_dll_files_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[rundll32_with_no_command_line_arguments_with_network_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -2011,6 +2047,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.
|
||||
|
||||
[sqlite_module_in_temp_folder_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[start_up_during_safe_mode_boot_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -2059,6 +2099,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.
|
||||
|
||||
[suspicious_icedid_regsvr32_cmdline_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[suspicious_icedid_rundll32_cmdline_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[suspicious_java_classes_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
@@ -2091,6 +2139,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.
|
||||
|
||||
[suspicious_rundll32_plugininit_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
[suspicious_rundll32_rename_filter]
|
||||
definition = search *
|
||||
description = Update this macro to limit the output results to filter out false positives.
|
||||
|
||||
Vendored
+1737
-1159
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:43:54 UTC
|
||||
# On Date: 2021-08-12T23:58:40 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
+439
-298
File diff suppressed because it is too large
Load Diff
+20
-20
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
@@ -23,7 +23,7 @@ providing_technologies = none
|
||||
description = This analytic story contains detections that query your AWS Cloudtrail for activities related to privilege escalation.
|
||||
narrative = Amazon Web Services provides a neat feature called Identity and Access Management (IAM) that enables organizations to manage various AWS services and resources in a secure way. All IAM users have roles, groups and policies associated with them which governs and sets permissions to allow a user to access specific restrictions.\
|
||||
However, if these IAM policies are misconfigured and have specific combinations of weak permissions; it can allow attackers to escalate their privileges and further compromise the organization. Rhino Security Labs have published comprehensive blogs detailing various AWS Escalation methods. By using this as an inspiration, Splunk’s research team wants to highlight how these attack vectors look in AWS Cloudtrail logs and provide you with detection queries to uncover these potentially malicious events via this Analytic Story. \
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[AWS Network ACL Activity]
|
||||
category = Cloud Security
|
||||
@@ -40,7 +40,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Monitor your AWS network infrastructure for bad configurations and malicious activity. Investigative searches help you probe deeper, when the facts warrant it.
|
||||
narrative = AWS CloudTrail is an AWS service that helps you enable governance, compliance, and operational/risk auditing of your AWS account. Actions taken by a user, role, or an AWS service are recorded as events in CloudTrail. It is crucial for a company to monitor events and actions taken in the AWS Management Console, AWS Command Line Interface, and AWS SDKs and APIs to ensure that your servers are not vulnerable to attacks. This analytic story contains detection searches that leverage CloudTrail logs from AWS to check for bad configurations and malicious activity in your AWS network access controls.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[AWS Security Hub Alerts]
|
||||
category = Cloud Security
|
||||
@@ -57,7 +57,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = This story is focused around detecting Security Hub alerts generated from AWS
|
||||
narrative = AWS Security Hub collects and consolidates findings from AWS security services enabled in your environment, such as intrusion detection findings from Amazon GuardDuty, vulnerability scans from Amazon Inspector, S3 bucket policy findings from Amazon Macie, publicly accessible and cross-account resources from IAM Access Analyzer, and resources lacking WAF coverage from AWS Firewall Manager.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Cloud Cryptomining]
|
||||
category = Cloud Security
|
||||
@@ -73,11 +73,11 @@ support_searches = ["ESCU - Baseline Of Cloud Instances Destroyed", "ESCU - Base
|
||||
data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Monitor your cloud compute instances for activities related to cryptojacking/cryptomining. New instances that originate from previously unseen regions, users who launch abnormally high numbers of instances, or compute instances started by previously unseen users are just a few examples of potentially malicious behavior.
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
When malicious miners appropriate a cloud instance, often spinning up hundreds of new instances, the costs can become astronomical for the account holder. So it is critically important to monitor your systems for suspicious activities that could indicate that your network has been infiltrated. \
|
||||
This Analytic Story is focused on detecting suspicious new instances in your cloud environment to help prevent cryptominers from gaining a foothold. It contains detection searches that will detect when a previously unused instance type or AMI is used. It also contains support searches to build lookup files to ensure proper execution of the detection searches.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Cloud Federated Credential Abuse]
|
||||
category = Cloud Security
|
||||
@@ -92,9 +92,9 @@ investigative_searches = []
|
||||
support_searches = []
|
||||
data_models = []
|
||||
providing_technologies = none
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
narrative = This story is composed of detection searches based on endpoint that addresses the use of Mimikatz, Escalation of Privileges and Abnormal processes that may indicate the extraction of Federated directory objects such as passwords, Oauth2 tokens, certificates and keys. Cloud environment (AWS, Azure) related events are also addressed in specific cloud environment detection searches.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Office 365 Detections]
|
||||
category = Cloud Security
|
||||
@@ -111,7 +111,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = This story is focused around detecting Office 365 Attacks.
|
||||
narrative = More and more companies are using Microsofts Office 365 cloud offering. Therefore, we see more and more attacks against Office 365. This story provides various detections for Office 365 attacks.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Ransomware Cloud]
|
||||
category = Malware
|
||||
@@ -128,7 +128,7 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Leverage searches that allow you to detect and investigate unusual activities that might relate to ransomware. These searches include cloud related objects that may be targeted by malicious actors via cloud providers own encryption features.
|
||||
narrative = Ransomware is an ever-present risk to the enterprise, wherein an infected host encrypts business-critical data, holding it hostage until the victim pays the attacker a ransom. There are many types and varieties of ransomware that can affect an enterprise.Cloud ransomware can be deployed by obtaining high privilege credentials from targeted users or resources.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious AWS Login Activities]
|
||||
category = Cloud Security
|
||||
@@ -145,7 +145,7 @@ data_models = ["Authentication"]
|
||||
providing_technologies = none
|
||||
description = Monitor your AWS authentication events using your CloudTrail logs. Searches within this Analytic Story will help you stay aware of and investigate suspicious logins.
|
||||
narrative = It is important to monitor and control who has access to your AWS infrastructure. Detecting suspicious logins to your AWS infrastructure will provide good starting points for investigations. Abusive behaviors caused by compromised credentials can lead to direct monetary costs, as you will be billed for any EC2 instances created by the attacker.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious AWS S3 Activities]
|
||||
category = Cloud Security
|
||||
@@ -162,9 +162,9 @@ data_models = []
|
||||
providing_technologies = none
|
||||
description = Use the searches in this Analytic Story to monitor your AWS S3 buckets for evidence of anomalous activity and suspicious behaviors, such as detecting open S3 buckets and buckets being accessed from a new IP. The contextual and investigative searches will give you more information, when required.
|
||||
narrative = As cloud computing has exploded, so has the number of creative attacks on virtual environments. And as the number-two cloud-service provider, Amazon Web Services (AWS) has certainly had its share.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Among things to look out for are S3 access from unfamiliar locations and by unfamiliar users. Some of the searches in this Analytic Story help you detect suspicious behavior and others help you investigate more deeply, when the situation warrants.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud Authentication Activities]
|
||||
category = Cloud Security
|
||||
@@ -182,7 +182,7 @@ providing_technologies = none
|
||||
description = Monitor your cloud authentication events. Searches within this Analytic Story leverage the recent cloud updates to the Authentication data model to help you stay aware of and investigate suspicious login activity.
|
||||
narrative = It is important to monitor and control who has access to your cloud infrastructure. Detecting suspicious logins will provide good starting points for investigations. Abusive behaviors caused by compromised credentials can lead to direct monetary costs, as you will be billed for any compute activity whether legitimate or otherwise.\
|
||||
This Analytic Story has data model versions of cloud searches leveraging Authentication data, including those looking for suspicious login activity, and cross-account activity for AWS.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud Instance Activities]
|
||||
category = Cloud Security
|
||||
@@ -199,7 +199,7 @@ data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Monitor your cloud infrastructure provisioning activities for behaviors originating from unfamiliar or unusual locations. These behaviors may indicate that malicious activities are occurring somewhere within your cloud environment.
|
||||
narrative = Monitoring your cloud infrastructure logs allows you enable governance, compliance, and risk auditing. It is crucial for a company to monitor events and actions taken in the their cloud environments to ensure that your instances are not vulnerable to attacks. This Analytic Story identifies suspicious activities in your cloud compute instances and helps you respond and investigate those activities.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud Provisioning Activities]
|
||||
category = Cloud Security
|
||||
@@ -216,8 +216,8 @@ data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Monitor your cloud infrastructure provisioning activities for behaviors originating from unfamiliar or unusual locations. These behaviors may indicate that malicious activities are occurring somewhere within your cloud environment.
|
||||
narrative = Because most enterprise cloud infrastructure activities originate from familiar geographic locations, monitoring for activity from unknown or unusual regions is an important security measure. This indicator can be especially useful in environments where it is impossible to add specific IPs to an allow list because they vary.\
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
[Suspicious Cloud User Activities]
|
||||
category = Cloud Security
|
||||
@@ -233,8 +233,8 @@ support_searches = ["ESCU - Baseline Of Cloud Infrastructure API Calls Per User"
|
||||
data_models = ["Change"]
|
||||
providing_technologies = none
|
||||
description = Detect and investigate suspicious activities by users and roles in your cloud environments.
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
In addition to compromising the security of your data, when bad actors leverage your compute resources, it can incur monumental costs, since you will be billed for any new instances and increased bandwidth usage.
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
product = ['Splunk Security Analytics for AWS', 'Splunk Enterprise', 'Splunk Enterprise Security', 'Splunk Cloud']
|
||||
|
||||
#### END STORIES ####
|
||||
+23
-23
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
@@ -50,8 +50,8 @@ maintainers = [{"company": "Splunk", "email": "-", "name": "David Dorsey"}]
|
||||
spec_version = 3
|
||||
searches = ["ESCU - Abnormally High Number Of Cloud Instances Launched - Rule", "ESCU - Cloud Compute Instance Created By Previously Unseen User - Rule", "ESCU - Cloud Compute Instance Created In Previously Unused Region - Rule", "ESCU - Cloud Compute Instance Created With Previously Unseen Image - Rule", "ESCU - Cloud Compute Instance Created With Previously Unseen Instance Type - Rule", "ESCU - AWS Investigate Security Hub alerts by dest - Response Task", "ESCU - AWS Investigate User Activities By ARN - Response Task", "ESCU - Get EC2 Instance Details by instanceId - Response Task", "ESCU - Get EC2 Launch Details - Response Task", "ESCU - Investigate AWS activities via region name - Response Task"]
|
||||
description = Monitor your cloud compute instances for activities related to cryptojacking/cryptomining. New instances that originate from previously unseen regions, users who launch abnormally high numbers of instances, or compute instances started by previously unseen users are just a few examples of potentially malicious behavior.
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
When malicious miners appropriate a cloud instance, often spinning up hundreds of new instances, the costs can become astronomical for the account holder. So it is critically important to monitor your systems for suspicious activities that could indicate that your network has been infiltrated. \
|
||||
This Analytic Story is focused on detecting suspicious new instances in your cloud environment to help prevent cryptominers from gaining a foothold. It contains detection searches that will detect when a previously unused instance type or AMI is used. It also contains support searches to build lookup files to ensure proper execution of the detection searches.
|
||||
|
||||
@@ -63,7 +63,7 @@ references = ["https://www.cyberark.com/resources/threat-research-blog/golden-sa
|
||||
maintainers = [{"company": "Splunk", "email": "-", "name": "Rod Soto"}]
|
||||
spec_version = 3
|
||||
searches = ["ESCU - AWS SAML Access by Provider User and Principal - Rule", "ESCU - AWS SAML Update identity provider - Rule", "ESCU - O365 Add App Role Assignment Grant User - Rule", "ESCU - O365 Added Service Principal - Rule", "ESCU - O365 Excessive SSO logon errors - Rule", "ESCU - O365 New Federated Domain Added - Rule"]
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
narrative = This story is composed of detection searches based on endpoint that addresses the use of Mimikatz, Escalation of Privileges and Abnormal processes that may indicate the extraction of Federated directory objects such as passwords, Oauth2 tokens, certificates and keys. Cloud environment (AWS, Azure) related events are also addressed in specific cloud environment detection searches.
|
||||
|
||||
[analytic_story://Office 365 Detections]
|
||||
@@ -109,7 +109,7 @@ spec_version = 3
|
||||
searches = ["ESCU - Detect New Open S3 Buckets over AWS CLI - Rule", "ESCU - Detect New Open S3 buckets - Rule", "ESCU - AWS Investigate User Activities By ARN - Response Task", "ESCU - AWS S3 Bucket details via bucketName - Response Task", "ESCU - Get All AWS Activity From IP Address - Response Task", "ESCU - Investigate AWS activities via region name - Response Task"]
|
||||
description = Use the searches in this Analytic Story to monitor your AWS S3 buckets for evidence of anomalous activity and suspicious behaviors, such as detecting open S3 buckets and buckets being accessed from a new IP. The contextual and investigative searches will give you more information, when required.
|
||||
narrative = As cloud computing has exploded, so has the number of creative attacks on virtual environments. And as the number-two cloud-service provider, Amazon Web Services (AWS) has certainly had its share.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Among things to look out for are S3 access from unfamiliar locations and by unfamiliar users. Some of the searches in this Analytic Story help you detect suspicious behavior and others help you investigate more deeply, when the situation warrants.
|
||||
|
||||
[analytic_story://Suspicious Cloud Authentication Activities]
|
||||
@@ -145,7 +145,7 @@ spec_version = 3
|
||||
searches = ["ESCU - Cloud Provisioning Activity From Previously Unseen City - Rule", "ESCU - Cloud Provisioning Activity From Previously Unseen Country - Rule", "ESCU - Cloud Provisioning Activity From Previously Unseen IP Address - Rule", "ESCU - Cloud Provisioning Activity From Previously Unseen Region - Rule"]
|
||||
description = Monitor your cloud infrastructure provisioning activities for behaviors originating from unfamiliar or unusual locations. These behaviors may indicate that malicious activities are occurring somewhere within your cloud environment.
|
||||
narrative = Because most enterprise cloud infrastructure activities originate from familiar geographic locations, monitoring for activity from unknown or unusual regions is an important security measure. This indicator can be especially useful in environments where it is impossible to add specific IPs to an allow list because they vary.\
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
|
||||
[analytic_story://Suspicious Cloud User Activities]
|
||||
category = Cloud Security
|
||||
@@ -156,7 +156,7 @@ maintainers = [{"company": "Splunk", "email": "-", "name": "David Dorsey"}]
|
||||
spec_version = 3
|
||||
searches = ["ESCU - AWS IAM AccessDenied Discovery Events - Rule", "ESCU - Abnormally High Number Of Cloud Infrastructure API Calls - Rule", "ESCU - Abnormally High Number Of Cloud Security Group API Calls - Rule", "ESCU - Cloud API Calls From Previously Unseen User Roles - Rule", "ESCU - AWS Investigate User Activities By ARN - Response Task"]
|
||||
description = Detect and investigate suspicious activities by users and roles in your cloud environments.
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
In addition to compromising the security of your data, when bad actors leverage your compute resources, it can incur monumental costs, since you will be billed for any new instances and increased bandwidth usage.
|
||||
|
||||
### END STORIES ###
|
||||
@@ -200,7 +200,7 @@ confidence = medium
|
||||
explanation = This search looks for AssumeRole events where an IAM role in a different account is requested for the first time.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen AWS Cross Account Activity - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen AWS Cross Account Activity - Update` to keep this table up to date and to age out old data. You can also provide additional filtering for this search by customizing the `aws_cross_account_activity_from_previously_unseen_account_filter` macro.
|
||||
annotations = {"cis20": ["CIS 16"], "kill_chain_phases": ["Actions on Objectives"], "nist": ["PR.AC", "PR.DS", "DE.AE"]}
|
||||
known_false_positives = Using multiple AWS accounts and roles is perfectly valid behavior. It's suspicious when an account requests privileges of an account it hasn't before. You should validate with the account owner that this is a legitimate request.
|
||||
known_false_positives = Using multiple AWS accounts and roles is perfectly valid behavior. It's suspicious when an account requests privileges of an account it hasn't before. You should validate with the account owner that this is a legitimate request.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - AWS Detect Users creating keys with encrypt policy without MFA - Rule]
|
||||
@@ -290,7 +290,7 @@ confidence = medium
|
||||
explanation = The search looks for AWS CloudTrail events to detect if any network ACLs were created with all the ports open to a specified CIDR.
|
||||
how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS, version 4.4.0 or later, and configure your AWS CloudTrail inputs.
|
||||
annotations = {"cis20": ["CIS 11"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1562.007"], "nist": ["DE.DP", "DE.AE"]}
|
||||
known_false_positives = It's possible that an admin has created this ACL with all ports open for some legitimate purpose however, this should be scoped and not allowed in production environment.
|
||||
known_false_positives = It's possible that an admin has created this ACL with all ports open for some legitimate purpose however, this should be scoped and not allowed in production environment.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - AWS Network Access Control List Deleted - Rule]
|
||||
@@ -300,7 +300,7 @@ confidence = medium
|
||||
explanation = Enforcing network-access controls is one of the defensive mechanisms used by cloud administrators to restrict access to a cloud instance. After the attacker has gained control of the AWS console by compromising an admin account, they can delete a network ACL and gain access to the instance from anywhere. This search will query the AWS CloudTrail logs to detect users deleting network ACLs.
|
||||
how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS (version 4.4.0 or later), then configure your AWS CloudTrail inputs.
|
||||
annotations = {"cis20": ["CIS 11"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1562.007"], "nist": ["DE.DP", "DE.AE"]}
|
||||
known_false_positives = It's possible that a user has legitimately deleted a network ACL.
|
||||
known_false_positives = It's possible that a user has legitimately deleted a network ACL.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - AWS SAML Access by Provider User and Principal - Rule]
|
||||
@@ -398,9 +398,9 @@ type = detection
|
||||
asset_type = Cloud Compute Instance
|
||||
confidence = medium
|
||||
explanation = This search looks for cloud compute instances created by users who have not created them before.
|
||||
how_to_implement = You must be ingesting the appropriate cloud-infrastructure logs Run the "Previously Seen Cloud Compute Creations By User" support search to create of baseline of previously seen users.
|
||||
how_to_implement = You must be ingesting the appropriate cloud-infrastructure logs Run the "Previously Seen Cloud Compute Creations By User" support search to create of baseline of previously seen users.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078.004"], "nist": ["ID.AM"]}
|
||||
known_false_positives = It's possible that a user will start to create compute instances for the first time, for any number of reasons. Verify with the user launching instances that this is the intended behavior.
|
||||
known_false_positives = It's possible that a user will start to create compute instances for the first time, for any number of reasons. Verify with the user launching instances that this is the intended behavior.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Cloud Compute Instance Created In Previously Unused Region - Rule]
|
||||
@@ -410,7 +410,7 @@ confidence = medium
|
||||
explanation = This search looks at cloud-infrastructure events where an instance is created in any region within the last hour and then compares it to a lookup file of previously seen regions where instances have been created.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Regions - Initial` to build the initial table of images observed and times. You must also enable the second baseline search `Previously Seen Cloud Regions - Update` to keep this table up to date and to age out old data. You can also provide additional filtering for this search by customizing the `cloud_compute_instance_created_in_previously_unused_region_filter` macro.
|
||||
annotations = {"cis20": ["CIS 12"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1535"], "nist": ["DE.DP", "DE.AE"]}
|
||||
known_false_positives = It's possible that a user has unknowingly started an instance in a new region. Please verify that this activity is legitimate.
|
||||
known_false_positives = It's possible that a user has unknowingly started an instance in a new region. Please verify that this activity is legitimate.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Cloud Compute Instance Created With Previously Unseen Image - Rule]
|
||||
@@ -438,9 +438,9 @@ type = detection
|
||||
asset_type = AWS Instance
|
||||
confidence = medium
|
||||
explanation = This search looks for cloud instances being modified by users who have not previously modified them.
|
||||
how_to_implement = This search has a dependency on other searches to create and update a baseline of users observed to be associated with this activity. The search "Previously Seen Cloud Instance Modifications By User - Update" should be enabled for this detection to properly work.
|
||||
how_to_implement = This search has a dependency on other searches to create and update a baseline of users observed to be associated with this activity. The search "Previously Seen Cloud Instance Modifications By User - Update" should be enabled for this detection to properly work.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078.004"], "nist": ["ID.AM"]}
|
||||
known_false_positives = It's possible that a new user will start to modify EC2 instances when they haven't before for any number of reasons. Verify with the user that is modifying instances that this is the intended behavior.
|
||||
known_false_positives = It's possible that a new user will start to modify EC2 instances when they haven't before for any number of reasons. Verify with the user that is modifying instances that this is the intended behavior.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Cloud Provisioning Activity From Previously Unseen City - Rule]
|
||||
@@ -450,7 +450,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen cities. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_city_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -461,7 +461,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen countries. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_country_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -472,7 +472,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen IP addresses. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_ip_address_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -483,7 +483,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen regions. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_region_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -534,7 +534,7 @@ confidence = medium
|
||||
explanation = This search looks for AWS CloudTrail events where a user has created an open/public S3 bucket over the aws cli.
|
||||
how_to_implement =
|
||||
annotations = {"cis20": ["CIS 13"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1530"], "nist": ["PR.DS", "PR.AC", "DE.CM"]}
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Detect New Open S3 buckets - Rule]
|
||||
@@ -544,7 +544,7 @@ confidence = medium
|
||||
explanation = This search looks for AWS CloudTrail events where a user has created an open/public S3 bucket.
|
||||
how_to_implement = You must install the AWS App for Splunk.
|
||||
annotations = {"cis20": ["CIS 13"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1530"], "nist": ["PR.DS", "PR.AC", "DE.CM"]}
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Detect Spike in AWS Security Hub Alerts for EC2 Instance - Rule]
|
||||
@@ -934,14 +934,14 @@ providing_technologies = none
|
||||
|
||||
[savedsearch://ESCU - Previously Seen Cloud Regions - Initial]
|
||||
type = support
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
known_false_positives = not defined
|
||||
providing_technologies = none
|
||||
|
||||
[savedsearch://ESCU - Previously Seen Cloud Regions - Update]
|
||||
type = support
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
known_false_positives = not defined
|
||||
providing_technologies = none
|
||||
|
||||
Vendored
+1
-1
@@ -4,7 +4,7 @@
|
||||
is_configured = false
|
||||
state = enabled
|
||||
state_change_requires_restart = false
|
||||
build = 159
|
||||
build = 179
|
||||
|
||||
[triggers]
|
||||
reload.analytic_stories = simple
|
||||
|
||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>sourcetype="aws:cloudwatchlogs:eks" |rename sourceIPs{} as src_ip |search src_ip=$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(user.username) values(requestURI) values(verb) values(userAgent) by source annotations.authorization.k8s.io/decision src_ip</query>
|
||||
<query>sourcetype="aws:cloudwatchlogs:eks" |rename sourceIPs{} as src_ip |search src_ip=$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(user.username) values(requestURI) values(verb) values(userAgent) by source annotations.authorization.k8s.io/decision src_ip</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>sourcetype="aws:securityhub:firehose" "findings{}.Resources{}.Type"=AWSEC2Instance | rex field=findings{}.Resources{}.Id .*instance/(?<instance>.*)| rename instance as dest| search dest = $dest$ |rename findings{}.* as * | rename Remediation.Recommendation.Text as Remediation | table dest Title ProductArn Description FirstObservedAt RecordState Remediation</query>
|
||||
<query>sourcetype="aws:securityhub:firehose" "findings{}.Resources{}.Type"=AWSEC2Instance | rex field=findings{}.Resources{}.Id .*instance/(?&lt;instance&gt;.*)| rename instance as dest| search dest = $dest$ |rename findings{}.* as * | rename Remediation.Recommendation.Text as Remediation | table dest Title ProductArn Description FirstObservedAt RecordState Remediation</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<panel>
|
||||
<table>
|
||||
<search>
|
||||
<query>| search sourcetype="aws:description" source="*:ec2_instances"| dedup id sortby -_time |rename id as instanceId| search instanceId=$instanceId$ | spath output=tags path=tags | eval tags=mvzip(key,value," = "), ip_address=if((ip_address == "null"),private_ip_address,ip_address) | table id, tags.Name, aws_account_id, placement, instance_type, key_name, ip_address, launch_time, state, vpc_id, subnet_id, tags | rename aws_account_id as "Account ID", id as ID, instance_type as Type, ip_address as "IP Address", key_name as "Key Pair", launch_time as "Launch Time", placement as "Availability Zone", state as State, subnet_id as Subnet, "tags.Name" as Name, vpc_id as VPC</query>
|
||||
<query>| search sourcetype="aws:description" source="*:ec2_instances"| dedup id sortby -_time |rename id as instanceId| search instanceId=$instanceId$ | spath output=tags path=tags | eval tags=mvzip(key,value," = "), ip_address=if((ip_address == "null"),private_ip_address,ip_address) | table id, tags.Name, aws_account_id, placement, instance_type, key_name, ip_address, launch_time, state, vpc_id, subnet_id, tags | rename aws_account_id as "Account ID", id as ID, instance_type as Type, ip_address as "IP Address", key_name as "Key Pair", launch_time as "Launch Time", placement as "Availability Zone", state as State, subnet_id as Subnet, "tags.Name" as Name, vpc_id as VPC</query>
|
||||
</search>
|
||||
<option name="drilldown">cell</option>
|
||||
<option name="wrap">false</option>
|
||||
|
||||
+3
-3
@@ -29,7 +29,7 @@ panels = ["panel://workbench_panel_aws_investigate_security_hub_alerts_by_dest__
|
||||
|
||||
[panel_group://workbench_panel_group_cloud_federated_credential_abuse]
|
||||
label = Cloud Federated Credential Abuse
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
disabled = 0
|
||||
|
||||
panels = ["panel://workbench_panel_get_notable_history___response_task"]
|
||||
@@ -110,7 +110,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_aws_investigate_user_activities_by_arn___response_task]
|
||||
label = AWS Investigate User Activities By ARN
|
||||
description = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
description = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"user": {\
|
||||
@@ -302,7 +302,7 @@ tokens = {\
|
||||
|
||||
[panel://workbench_panel_investigate_aws_user_activities_by_user_field___response_task]
|
||||
label = Investigate AWS User Activities by user field
|
||||
description = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
description = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
disabled = 0
|
||||
tokens = {\
|
||||
"user": {\
|
||||
|
||||
Vendored
+38
-38
@@ -1,13 +1,13 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
|
||||
[aws_cloudwatchlogs_eks]
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[aws_s3_accesslogs]
|
||||
@@ -15,7 +15,7 @@ definition = sourcetype=aws:s3:accesslogs
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[aws_securityhub_finding]
|
||||
definition = sourcetype="aws:securityhub:finding"
|
||||
definition = sourcetype="aws:securityhub:finding"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[brand_abuse_dns]
|
||||
@@ -35,7 +35,7 @@ definition = eventtype=cisco_ios
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[cloud_api_calls_from_previously_unseen_user_roles_activity_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new commands from user roles
|
||||
|
||||
[cloudtrail]
|
||||
@@ -43,7 +43,7 @@ definition = sourcetype=aws:cloudtrail
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[cloudwatch_eks]
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
definition = sourcetype="aws:cloudwatchlogs:eks"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype) for AWS cloudwatch eks logs. Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[cloudwatch_vpc]
|
||||
@@ -95,19 +95,19 @@ definition = (query=outlook* AND query=login* AND query=account*)
|
||||
description = This limits the query fields to domains that are associated with evilginx masquerading as Outlook
|
||||
|
||||
[f5_bigip_rogue]
|
||||
definition = index=netops sourcetype="f5:bigip:rogue"
|
||||
definition = index=netops sourcetype="f5:bigip:rogue"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[filter_rare_process_allow_list]
|
||||
definition = lookup update=true lookup_rare_process_allow_list_default process as process OUTPUTNEW allow_list | where allow_list="false" | lookup update=true lookup_rare_process_allow_list_local process as process OUTPUT allow_list | where allow_list="false"
|
||||
definition = lookup update=true lookup_rare_process_allow_list_default process as process OUTPUTNEW allow_list | where allow_list="false" | lookup update=true lookup_rare_process_allow_list_local process as process OUTPUT allow_list | where allow_list="false"
|
||||
description = This macro is intended to allow_list processes that have been definied as rare
|
||||
|
||||
[google_gcp_pubnet_message]
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype) for Google GCP. Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[google_gcp_pubsub_message]
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
definition = sourcetype="google:gcp:pubsub:message"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[is_windows_system_file]
|
||||
@@ -123,7 +123,7 @@ definition = index=*
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[netbackup]
|
||||
definition = sourcetype="netbackup_logs"
|
||||
definition = sourcetype="netbackup_logs"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[network_acl_events]
|
||||
@@ -139,79 +139,79 @@ definition = eventtype=okta_log
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[osquery_process]
|
||||
definition = eventtype="osquery-process"
|
||||
definition = eventtype="osquery-process"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[powershell]
|
||||
definition = (source=WinEventLog:Microsoft-Windows-PowerShell/Operational OR source="XmlWinEventLog:Microsoft-Windows-PowerShell/Operational")
|
||||
definition = (source=WinEventLog:Microsoft-Windows-PowerShell/Operational OR source="XmlWinEventLog:Microsoft-Windows-PowerShell/Operational")
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[previously_seen_cloud_api_calls_per_user_role_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud api calls per user role
|
||||
|
||||
[previously_seen_cloud_compute_creations_by_user_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the user is new or not
|
||||
|
||||
[previously_seen_cloud_compute_image_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the image is new or not
|
||||
|
||||
[previously_seen_cloud_compute_images_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud instance images
|
||||
|
||||
[previously_seen_cloud_compute_instance_type_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud instance types
|
||||
|
||||
[previously_seen_cloud_compute_instance_types_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the instance type is new or not
|
||||
|
||||
[previously_seen_cloud_instance_modifications_by_user_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the user is new or not
|
||||
|
||||
[previously_seen_cloud_provisioning_activity_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud provisioning locations
|
||||
|
||||
[previously_seen_cloud_region_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of cloud regions
|
||||
|
||||
[previously_seen_cloud_regions_search_window_begin_offset]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far into the past the window should be to determine if the region is new or not
|
||||
|
||||
[previously_seen_windows_services_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of Windows services
|
||||
|
||||
[previously_seen_windows_services_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new Windows services
|
||||
|
||||
[previously_seen_zoom_child_processes_forget_window]
|
||||
definition = "-90d@d"
|
||||
definition = "-90d@d"
|
||||
description = Use this macro to determine how long to keep track of zoom child processes
|
||||
|
||||
[previously_seen_zoom_child_processes_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new zoom child processes
|
||||
|
||||
[previously_unseen_cloud_provisioning_activity_window]
|
||||
definition = "-70m@m"
|
||||
definition = "-70m@m"
|
||||
description = Use this macro to determine how far back you should be checking for new provisioning activities
|
||||
|
||||
[printservice]
|
||||
definition = source="wineventlog:microsoft-windows-printservice/operational" OR sourcetype="WinEventLog:Microsoft-Windows-PrintService/Admin"
|
||||
definition = source="wineventlog:microsoft-windows-printservice/operational" OR sourcetype="WinEventLog:Microsoft-Windows-PrintService/Admin"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[prohibited_apps_launching_cmd]
|
||||
definition = | inputlookup prohibited_apps_launching_cmd | rename prohibited_applications as parent_process_name | eval parent_process_name="*" . parent_process_name | table parent_process_name
|
||||
definition = | inputlookup prohibited_apps_launching_cmd | rename prohibited_applications as parent_process_name | eval parent_process_name="*" . parent_process_name | table parent_process_name
|
||||
description = This macro outputs a list of process that should not be the parent process of cmd.exe
|
||||
|
||||
[prohibited_softwares]
|
||||
@@ -223,11 +223,11 @@ definition = lookup update=true ransomware_extensions_lookup Extensions AS file_
|
||||
description = This macro limits the output to files that have extensions associated with ransomware
|
||||
|
||||
[ransomware_notes]
|
||||
definition = lookup ransomware_notes_lookup ransomware_notes as file_name OUTPUT status as "Known Ransomware Notes" | search "Known Ransomware Notes"=True
|
||||
definition = lookup ransomware_notes_lookup ransomware_notes as file_name OUTPUT status as "Known Ransomware Notes" | search "Known Ransomware Notes"=True
|
||||
description = This macro limits the output to files that have been identified as a ransomware note
|
||||
|
||||
[remove_valid_domains]
|
||||
definition = eval domain=trim(domain,"*") | search NOT[| inputlookup domains] NOT[ |inputlookup cim_corporate_email_domain_lookup] NOT[inputlookup cim_corporate_web_domain_lookup] | eval domain="*"+domain+"*"
|
||||
definition = eval domain=trim(domain,"*") | search NOT[| inputlookup domains] NOT[ |inputlookup cim_corporate_email_domain_lookup] NOT[inputlookup cim_corporate_web_domain_lookup] | eval domain="*"+domain+"*"
|
||||
description = This macro removes valid domains from the output
|
||||
|
||||
[s3_accesslogs]
|
||||
@@ -236,12 +236,12 @@ description = customer specific splunk configurations(eg- index, source, sourcet
|
||||
|
||||
[security_content_ctime(1)]
|
||||
args = field
|
||||
definition = convert timeformat="%Y-%m-%dT%H:%M:%S" ctime($field$)
|
||||
definition = convert timeformat="%Y-%m-%dT%H:%M:%S" ctime($field$)
|
||||
description = convert epoch time to string
|
||||
|
||||
[security_content_summariesonly]
|
||||
definition = summariesonly=false allow_old_summaries=true
|
||||
description = search data model's summaries only
|
||||
description = search data model's summaries only
|
||||
|
||||
[security_group_api_calls]
|
||||
definition = (eventName=AuthorizeSecurityGroupIngress OR eventName=CreateSecurityGroup OR eventName=DeleteSecurityGroup OR eventName=DescribeClusterSecurityGroups OR eventName=DescribeDBSecurityGroups OR eventName=DescribeSecurityGroupReferences OR eventName=DescribeSecurityGroups OR eventName=DescribeStaleSecurityGroups OR eventName=RevokeSecurityGroupIngress OR eventName=UpdateSecurityGroupRuleDescriptionsIngress)
|
||||
@@ -264,7 +264,7 @@ definition = lookup update=true is_suspicious_file_extension_lookup file_name OU
|
||||
description = This macro limits the output to email attachments that have suspicious extensions
|
||||
|
||||
[suspicious_writes]
|
||||
definition = lookup suspicious_writes_lookup file as file_name OUTPUT note as "Reference" | search "Reference" != False
|
||||
definition = lookup suspicious_writes_lookup file as file_name OUTPUT note as "Reference" | search "Reference" != False
|
||||
description = This macro limites the output to file names that have been marked as suspicious
|
||||
|
||||
[sysmon]
|
||||
@@ -272,7 +272,7 @@ definition = sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR s
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[system_network_configuration_discovery_tools]
|
||||
definition = (process_name= "arp.exe" OR process_name= "at.exe" OR process_name= "attrib.exe" OR process_name= "cscript.exe" OR process_name= "dsquery.exe" OR process_name= "hostname.exe" OR process_name= "ipconfig.exe" OR process_name= "mimikatz.exe" OR process_name= "nbstat.exe" OR process_name= "net.exe" OR process_name= "netsh.exe" OR process_name= "nslookup.exe" OR process_name= "ping.exe" OR process_name= "quser.exe" OR process_name= "qwinsta.exe" OR process_name= "reg.exe" OR process_name= "runas.exe" OR process_name= "sc.exe" OR process_name= "schtasks.exe" OR process_name= "ssh.exe" OR process_name= "systeminfo.exe" OR process_name= "taskkill.exe" OR process_name= "telnet.exe" OR process_name= "tracert.exe" OR process_name="wscript.exe" OR process_name= "xcopy.exe")
|
||||
definition = (process_name= "arp.exe" OR process_name= "at.exe" OR process_name= "attrib.exe" OR process_name= "cscript.exe" OR process_name= "dsquery.exe" OR process_name= "hostname.exe" OR process_name= "ipconfig.exe" OR process_name= "mimikatz.exe" OR process_name= "nbstat.exe" OR process_name= "net.exe" OR process_name= "netsh.exe" OR process_name= "nslookup.exe" OR process_name= "ping.exe" OR process_name= "quser.exe" OR process_name= "qwinsta.exe" OR process_name= "reg.exe" OR process_name= "runas.exe" OR process_name= "sc.exe" OR process_name= "schtasks.exe" OR process_name= "ssh.exe" OR process_name= "systeminfo.exe" OR process_name= "taskkill.exe" OR process_name= "telnet.exe" OR process_name= "tracert.exe" OR process_name="wscript.exe" OR process_name= "xcopy.exe")
|
||||
description = This macro is a list of process that can be used to discover the network configuration
|
||||
|
||||
[uncommon_processes]
|
||||
@@ -288,15 +288,15 @@ definition = eventtype=wineventlog_system
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[wmi]
|
||||
definition = sourcetype="wineventlog:microsoft-windows-wmi-activity/operational"
|
||||
definition = sourcetype="wineventlog:microsoft-windows-wmi-activity/operational"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[zeek_rpc]
|
||||
definition = index=zeek sourcetype="zeek:rpc:json"
|
||||
definition = index=zeek sourcetype="zeek:rpc:json"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[zeek_ssl]
|
||||
definition = index=zeek sourcetype="zeek:ssl:json"
|
||||
definition = index=zeek sourcetype="zeek:ssl:json"
|
||||
description = customer specific splunk configurations(eg- index, source, sourcetype). Replace the macro definition with configurations for your Splunk Environmnent.
|
||||
|
||||
[aws_create_policy_version_to_allow_all_resources_filter]
|
||||
|
||||
+86
-86
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
@@ -44,7 +44,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventName=CreatePolicyVersion eventSource = iam.amazonaws.com errorCode = success | spath input=requestParameters.policyDocument output=key_policy_statements path=Statement{} | mvexpand key_policy_statements | spath input=key_policy_statements output=key_policy_action_1 path=Action | search key_policy_action_1 = "*" | stats count min(_time) as firstTime max(_time) as lastTime values(key_policy_statements) as policy_added by eventName eventSource aws_account_id errorCode userAgent eventID awsRegion userIdentity.principalId user_arn | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`|`aws_create_policy_version_to_allow_all_resources_filter`
|
||||
search = `cloudtrail` eventName=CreatePolicyVersion eventSource = iam.amazonaws.com errorCode = success | spath input=requestParameters.policyDocument output=key_policy_statements path=Statement{} | mvexpand key_policy_statements | spath input=key_policy_statements output=key_policy_action_1 path=Action | search key_policy_action_1 = "*" | stats count min(_time) as firstTime max(_time) as lastTime values(key_policy_statements) as policy_added by eventName eventSource aws_account_id errorCode userAgent eventID awsRegion userIdentity.principalId user_arn | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`|`aws_create_policy_version_to_allow_all_resources_filter`
|
||||
|
||||
[ESCU - AWS CreateAccessKey - Rule]
|
||||
action.escu = 0
|
||||
@@ -132,7 +132,7 @@ action.escu.mappings = {"cis20": ["CIS 16"], "kill_chain_phases": ["Actions on O
|
||||
action.escu.data_models = ["Authentication"]
|
||||
action.escu.eli5 = This search looks for AssumeRole events where an IAM role in a different account is requested for the first time.
|
||||
action.escu.how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen AWS Cross Account Activity - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen AWS Cross Account Activity - Update` to keep this table up to date and to age out old data. You can also provide additional filtering for this search by customizing the `aws_cross_account_activity_from_previously_unseen_account_filter` macro.
|
||||
action.escu.known_false_positives = Using multiple AWS accounts and roles is perfectly valid behavior. It's suspicious when an account requests privileges of an account it hasn't before. You should validate with the account owner that this is a legitimate request.
|
||||
action.escu.known_false_positives = Using multiple AWS accounts and roles is perfectly valid behavior. It's suspicious when an account requests privileges of an account it hasn't before. You should validate with the account owner that this is a legitimate request.
|
||||
action.escu.creation_date = 2020-05-28
|
||||
action.escu.modification_date = 2020-05-28
|
||||
action.escu.confidence = high
|
||||
@@ -161,7 +161,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats min(_time) as firstTime max(_time) as lastTime from datamodel=Authentication where Authentication.signature=AssumeRole by Authentication.vendor_account Authentication.user Authentication.src Authentication.user_role | `drop_dm_object_name(Authentication)` | rex field=user_role "arn:aws:sts:*:(?<dest_account>.*):" | where vendor_account != dest_account | rename vendor_account as requestingAccountId dest_account as requestedAccountId | lookup previously_seen_aws_cross_account_activity requestingAccountId, requestedAccountId, OUTPUTNEW firstTime | eval status = if(firstTime > relative_time(now(), "-24h@h"),"New Cross Account Activity","Previously Seen") | where status = "New Cross Account Activity" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `aws_cross_account_activity_from_previously_unseen_account_filter`
|
||||
search = | tstats min(_time) as firstTime max(_time) as lastTime from datamodel=Authentication where Authentication.signature=AssumeRole by Authentication.vendor_account Authentication.user Authentication.src Authentication.user_role | `drop_dm_object_name(Authentication)` | rex field=user_role "arn:aws:sts:*:(?<dest_account>.*):" | where vendor_account != dest_account | rename vendor_account as requestingAccountId dest_account as requestedAccountId | lookup previously_seen_aws_cross_account_activity requestingAccountId, requestedAccountId, OUTPUTNEW firstTime | eval status = if(firstTime > relative_time(now(), "-24h@h"),"New Cross Account Activity","Previously Seen") | where status = "New Cross Account Activity" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `aws_cross_account_activity_from_previously_unseen_account_filter`
|
||||
|
||||
[ESCU - AWS Detect Users creating keys with encrypt policy without MFA - Rule]
|
||||
action.escu = 0
|
||||
@@ -200,7 +200,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventName=CreateKey OR eventName=PutKeyPolicy | spath input=requestParameters.policy output=key_policy_statements path=Statement{} | mvexpand key_policy_statements | spath input=key_policy_statements output=key_policy_action_1 path=Action | spath input=key_policy_statements output=key_policy_action_2 path=Action{} | eval key_policy_action=mvappend(key_policy_action_1, key_policy_action_2) | spath input=key_policy_statements output=key_policy_principal path=Principal.AWS | search key_policy_action="kms:Encrypt" AND key_policy_principal="*" | stats count min(_time) as firstTime max(_time) as lastTime by eventName eventSource eventID awsRegion userIdentity.principalId | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` |`aws_detect_users_creating_keys_with_encrypt_policy_without_mfa_filter`
|
||||
search = `cloudtrail` eventName=CreateKey OR eventName=PutKeyPolicy | spath input=requestParameters.policy output=key_policy_statements path=Statement{} | mvexpand key_policy_statements | spath input=key_policy_statements output=key_policy_action_1 path=Action | spath input=key_policy_statements output=key_policy_action_2 path=Action{} | eval key_policy_action=mvappend(key_policy_action_1, key_policy_action_2) | spath input=key_policy_statements output=key_policy_principal path=Principal.AWS | search key_policy_action="kms:Encrypt" AND key_policy_principal="*" | stats count min(_time) as firstTime max(_time) as lastTime by eventName eventSource eventID awsRegion userIdentity.principalId | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` |`aws_detect_users_creating_keys_with_encrypt_policy_without_mfa_filter`
|
||||
|
||||
[ESCU - AWS Detect Users with KMS keys performing encryption S3 - Rule]
|
||||
action.escu = 0
|
||||
@@ -239,7 +239,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventName=CopyObject requestParameters.x-amz-server-side-encryption="aws:kms" | rename requestParameters.bucketName AS bucket_name, requestParameters.x-amz-copy-source AS src_file, requestParameters.key AS dest_file | stats count min(_time) as firstTime max(_time) as lastTime values(src_file) AS src_file values(dest_file) AS dest_file values(userAgent) AS userAgent values(region) AS region values(src) AS src by user | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` |`aws_detect_users_with_kms_keys_performing_encryption_s3_filter`
|
||||
search = `cloudtrail` eventName=CopyObject requestParameters.x-amz-server-side-encryption="aws:kms" | rename requestParameters.bucketName AS bucket_name, requestParameters.x-amz-copy-source AS src_file, requestParameters.key AS dest_file | stats count min(_time) as firstTime max(_time) as lastTime values(src_file) AS src_file values(dest_file) AS dest_file values(userAgent) AS userAgent values(region) AS region values(src) AS src by user | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` |`aws_detect_users_with_kms_keys_performing_encryption_s3_filter`
|
||||
|
||||
[ESCU - AWS Excessive Security Scanning - Rule]
|
||||
action.escu = 0
|
||||
@@ -278,7 +278,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventName=Describe* OR eventName=List* OR eventName=Get* | stats dc(eventName) as dc_events min(_time) as firstTime max(_time) as lastTime values(eventName) as eventName values(src) as src values(userAgent) as userAgent by user userIdentity.arn | where dc_events > 50 | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`|`aws_excessive_security_scanning_filter`
|
||||
search = `cloudtrail` eventName=Describe* OR eventName=List* OR eventName=Get* | stats dc(eventName) as dc_events min(_time) as firstTime max(_time) as lastTime values(eventName) as eventName values(src) as src values(userAgent) as userAgent by user userIdentity.arn | where dc_events > 50 | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`|`aws_excessive_security_scanning_filter`
|
||||
|
||||
[ESCU - AWS IAM AccessDenied Discovery Events - Rule]
|
||||
action.escu = 0
|
||||
@@ -317,7 +317,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` (errorCode = "AccessDenied") user_type=IAMUser (userAgent!=*.amazonaws.com) | bucket _time span=1h | stats count as failures min(_time) as firstTime max(_time) as lastTime, dc(eventName) as methods, dc(eventSource) as sources values(userIdentity.arn) by src_ip, userIdentity.arn, _time | where failures >= 5 and methods >= 1 and sources >= 1 | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_iam_accessdenied_discovery_events_filter`
|
||||
search = `cloudtrail` (errorCode = "AccessDenied") user_type=IAMUser (userAgent!=*.amazonaws.com) | bucket _time span=1h | stats count as failures min(_time) as firstTime max(_time) as lastTime, dc(eventName) as methods, dc(eventSource) as sources values(userIdentity.arn) by src_ip, userIdentity.arn, _time | where failures >= 5 and methods >= 1 and sources >= 1 | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_iam_accessdenied_discovery_events_filter`
|
||||
|
||||
[ESCU - AWS IAM Assume Role Policy Brute Force - Rule]
|
||||
action.escu = 0
|
||||
@@ -356,7 +356,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` (errorCode=MalformedPolicyDocumentException) status=failure (userAgent!=*.amazonaws.com) | stats count min(_time) as firstTime max(_time) as lastTime values(requestParameters.policyName) as policy_name by src eventName eventSource aws_account_id errorCode requestParameters.policyDocument userAgent eventID awsRegion userIdentity.principalId user_arn | where count >= 2 | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_iam_assume_role_policy_brute_force_filter`
|
||||
search = `cloudtrail` (errorCode=MalformedPolicyDocumentException) status=failure (userAgent!=*.amazonaws.com) | stats count min(_time) as firstTime max(_time) as lastTime values(requestParameters.policyName) as policy_name by src eventName eventSource aws_account_id errorCode requestParameters.policyDocument userAgent eventID awsRegion userIdentity.principalId user_arn | where count >= 2 | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_iam_assume_role_policy_brute_force_filter`
|
||||
|
||||
[ESCU - AWS IAM Delete Policy - Rule]
|
||||
action.escu = 0
|
||||
@@ -483,7 +483,7 @@ action.escu.mappings = {"cis20": ["CIS 11"], "kill_chain_phases": ["Actions on O
|
||||
action.escu.data_models = []
|
||||
action.escu.eli5 = The search looks for AWS CloudTrail events to detect if any network ACLs were created with all the ports open to a specified CIDR.
|
||||
action.escu.how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS, version 4.4.0 or later, and configure your AWS CloudTrail inputs.
|
||||
action.escu.known_false_positives = It's possible that an admin has created this ACL with all ports open for some legitimate purpose however, this should be scoped and not allowed in production environment.
|
||||
action.escu.known_false_positives = It's possible that an admin has created this ACL with all ports open for some legitimate purpose however, this should be scoped and not allowed in production environment.
|
||||
action.escu.creation_date = 2021-01-11
|
||||
action.escu.modification_date = 2021-01-11
|
||||
action.escu.confidence = high
|
||||
@@ -512,7 +512,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventName=CreateNetworkAclEntry OR eventName=ReplaceNetworkAclEntry requestParameters.ruleAction=allow requestParameters.egress=false requestParameters.aclProtocol=-1 | append [search `cloudtrail` eventName=CreateNetworkAclEntry OR eventName=ReplaceNetworkAclEntry requestParameters.ruleAction=allow requestParameters.egress=false requestParameters.aclProtocol!=-1 | eval port_range='requestParameters.portRange.to' - 'requestParameters.portRange.from' | where port_range>1024] | fillnull | stats count min(_time) as firstTime max(_time) as lastTime by userName userIdentity.principalId eventName requestParameters.ruleAction requestParameters.egress requestParameters.aclProtocol requestParameters.portRange.to requestParameters.portRange.from src userAgent requestParameters.cidrBlock | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `aws_network_access_control_list_created_with_all_open_ports_filter`
|
||||
search = `cloudtrail` eventName=CreateNetworkAclEntry OR eventName=ReplaceNetworkAclEntry requestParameters.ruleAction=allow requestParameters.egress=false requestParameters.aclProtocol=-1 | append [search `cloudtrail` eventName=CreateNetworkAclEntry OR eventName=ReplaceNetworkAclEntry requestParameters.ruleAction=allow requestParameters.egress=false requestParameters.aclProtocol!=-1 | eval port_range='requestParameters.portRange.to' - 'requestParameters.portRange.from' | where port_range>1024] | fillnull | stats count min(_time) as firstTime max(_time) as lastTime by userName userIdentity.principalId eventName requestParameters.ruleAction requestParameters.egress requestParameters.aclProtocol requestParameters.portRange.to requestParameters.portRange.from src userAgent requestParameters.cidrBlock | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `aws_network_access_control_list_created_with_all_open_ports_filter`
|
||||
|
||||
[ESCU - AWS Network Access Control List Deleted - Rule]
|
||||
action.escu = 0
|
||||
@@ -522,7 +522,7 @@ action.escu.mappings = {"cis20": ["CIS 11"], "kill_chain_phases": ["Actions on O
|
||||
action.escu.data_models = []
|
||||
action.escu.eli5 = Enforcing network-access controls is one of the defensive mechanisms used by cloud administrators to restrict access to a cloud instance. After the attacker has gained control of the AWS console by compromising an admin account, they can delete a network ACL and gain access to the instance from anywhere. This search will query the AWS CloudTrail logs to detect users deleting network ACLs.
|
||||
action.escu.how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS (version 4.4.0 or later), then configure your AWS CloudTrail inputs.
|
||||
action.escu.known_false_positives = It's possible that a user has legitimately deleted a network ACL.
|
||||
action.escu.known_false_positives = It's possible that a user has legitimately deleted a network ACL.
|
||||
action.escu.creation_date = 2021-01-12
|
||||
action.escu.modification_date = 2021-01-12
|
||||
action.escu.confidence = high
|
||||
@@ -746,7 +746,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats count as api_calls values(All_Changes.command) as command from datamodel=Change where All_Changes.user!=unknown All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join user HourOfDay isWeekend [ summary cloud_excessive_api_calls_v1] | where cardinality >=16 | apply cloud_excessive_api_calls_v1 threshold=0.005 | rename "IsOutlier(api_calls)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | where api_calls > expected_upper_threshold | eval distance_from_threshold = api_calls - expected_upper_threshold | table _time, user, command, api_calls, expected_upper_threshold, distance_from_threshold | `abnormally_high_number_of_cloud_infrastructure_api_calls_filter`
|
||||
search = | tstats count as api_calls values(All_Changes.command) as command from datamodel=Change where All_Changes.user!=unknown All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join user HourOfDay isWeekend [ summary cloud_excessive_api_calls_v1] | where cardinality >=16 | apply cloud_excessive_api_calls_v1 threshold=0.005 | rename "IsOutlier(api_calls)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | where api_calls > expected_upper_threshold | eval distance_from_threshold = api_calls - expected_upper_threshold | table _time, user, command, api_calls, expected_upper_threshold, distance_from_threshold | `abnormally_high_number_of_cloud_infrastructure_api_calls_filter`
|
||||
|
||||
[ESCU - Abnormally High Number Of Cloud Instances Destroyed - Rule]
|
||||
action.escu = 0
|
||||
@@ -785,7 +785,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats count as instances_destroyed values(All_Changes.object_id) as object_id from datamodel=Change where All_Changes.action=deleted AND All_Changes.status=success AND All_Changes.object_category=instance by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join HourOfDay isWeekend [summary cloud_excessive_instances_destroyed_v1] | where cardinality >=16 | apply cloud_excessive_instances_destroyed_v1 threshold=0.005 | rename "IsOutlier(instances_destroyed)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | eval distance_from_threshold = instances_destroyed - expected_upper_threshold | table _time, user, instances_destroyed, expected_upper_threshold, distance_from_threshold, object_id | `abnormally_high_number_of_cloud_instances_destroyed_filter`
|
||||
search = | tstats count as instances_destroyed values(All_Changes.object_id) as object_id from datamodel=Change where All_Changes.action=deleted AND All_Changes.status=success AND All_Changes.object_category=instance by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join HourOfDay isWeekend [summary cloud_excessive_instances_destroyed_v1] | where cardinality >=16 | apply cloud_excessive_instances_destroyed_v1 threshold=0.005 | rename "IsOutlier(instances_destroyed)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | eval distance_from_threshold = instances_destroyed - expected_upper_threshold | table _time, user, instances_destroyed, expected_upper_threshold, distance_from_threshold, object_id | `abnormally_high_number_of_cloud_instances_destroyed_filter`
|
||||
|
||||
[ESCU - Abnormally High Number Of Cloud Instances Launched - Rule]
|
||||
action.escu = 0
|
||||
@@ -824,7 +824,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats count as instances_launched values(All_Changes.object_id) as object_id from datamodel=Change where (All_Changes.action=created) AND All_Changes.status=success AND All_Changes.object_category=instance by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join HourOfDay isWeekend [summary cloud_excessive_instances_created_v1] | where cardinality >=16 | apply cloud_excessive_instances_created_v1 threshold=0.005 | rename "IsOutlier(instances_launched)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | eval distance_from_threshold = instances_launched - expected_upper_threshold | table _time, user, instances_launched, expected_upper_threshold, distance_from_threshold, object_id | `abnormally_high_number_of_cloud_instances_launched_filter`
|
||||
search = | tstats count as instances_launched values(All_Changes.object_id) as object_id from datamodel=Change where (All_Changes.action=created) AND All_Changes.status=success AND All_Changes.object_category=instance by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join HourOfDay isWeekend [summary cloud_excessive_instances_created_v1] | where cardinality >=16 | apply cloud_excessive_instances_created_v1 threshold=0.005 | rename "IsOutlier(instances_launched)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | eval distance_from_threshold = instances_launched - expected_upper_threshold | table _time, user, instances_launched, expected_upper_threshold, distance_from_threshold, object_id | `abnormally_high_number_of_cloud_instances_launched_filter`
|
||||
|
||||
[ESCU - Abnormally High Number Of Cloud Security Group API Calls - Rule]
|
||||
action.escu = 0
|
||||
@@ -863,7 +863,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats count as security_group_api_calls values(All_Changes.command) as command from datamodel=Change where All_Changes.object_category=firewall AND All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join user HourOfDay isWeekend [ summary cloud_excessive_security_group_api_calls_v1] | where cardinality >=16 | apply cloud_excessive_security_group_api_calls_v1 threshold=0.005 | rename "IsOutlier(security_group_api_calls)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | where security_group_api_calls > expected_upper_threshold | eval distance_from_threshold = security_group_api_calls - expected_upper_threshold | table _time, user, command, security_group_api_calls, expected_upper_threshold, distance_from_threshold | `abnormally_high_number_of_cloud_security_group_api_calls_filter`
|
||||
search = | tstats count as security_group_api_calls values(All_Changes.command) as command from datamodel=Change where All_Changes.object_category=firewall AND All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | join user HourOfDay isWeekend [ summary cloud_excessive_security_group_api_calls_v1] | where cardinality >=16 | apply cloud_excessive_security_group_api_calls_v1 threshold=0.005 | rename "IsOutlier(security_group_api_calls)" as isOutlier | where isOutlier=1 | eval expected_upper_threshold = mvindex(split(mvindex(BoundaryRanges, -1), ":"), 0) | where security_group_api_calls > expected_upper_threshold | eval distance_from_threshold = security_group_api_calls - expected_upper_threshold | table _time, user, command, security_group_api_calls, expected_upper_threshold, distance_from_threshold | `abnormally_high_number_of_cloud_security_group_api_calls_filter`
|
||||
|
||||
[ESCU - Cloud API Calls From Previously Unseen User Roles - Rule]
|
||||
action.escu = 0
|
||||
@@ -902,7 +902,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where All_Changes.user_type=AssumedRole AND All_Changes.status=success by All_Changes.user, All_Changes.command All_Changes.object | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_api_calls_per_user_role user as user, command as command OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenUserApiCall=min(firstTimeSeen) | where isnull(firstTimeSeenUserApiCall) OR firstTimeSeenUserApiCall > relative_time(now(),"-24h@h") | table firstTime, user, object, command |`security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `cloud_api_calls_from_previously_unseen_user_roles_filter`
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where All_Changes.user_type=AssumedRole AND All_Changes.status=success by All_Changes.user, All_Changes.command All_Changes.object | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_api_calls_per_user_role user as user, command as command OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenUserApiCall=min(firstTimeSeen) | where isnull(firstTimeSeenUserApiCall) OR firstTimeSeenUserApiCall > relative_time(now(),"-24h@h") | table firstTime, user, object, command |`security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `cloud_api_calls_from_previously_unseen_user_roles_filter`
|
||||
|
||||
[ESCU - Cloud Compute Instance Created By Previously Unseen User - Rule]
|
||||
action.escu = 0
|
||||
@@ -911,8 +911,8 @@ description = This search looks for cloud compute instances created by users who
|
||||
action.escu.mappings = {"cis20": ["CIS 1"], "mitre_attack": ["T1078.004"], "nist": ["ID.AM"]}
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks for cloud compute instances created by users who have not created them before.
|
||||
action.escu.how_to_implement = You must be ingesting the appropriate cloud-infrastructure logs Run the "Previously Seen Cloud Compute Creations By User" support search to create of baseline of previously seen users.
|
||||
action.escu.known_false_positives = It's possible that a user will start to create compute instances for the first time, for any number of reasons. Verify with the user launching instances that this is the intended behavior.
|
||||
action.escu.how_to_implement = You must be ingesting the appropriate cloud-infrastructure logs Run the "Previously Seen Cloud Compute Creations By User" support search to create of baseline of previously seen users.
|
||||
action.escu.known_false_positives = It's possible that a user will start to create compute instances for the first time, for any number of reasons. Verify with the user launching instances that this is the intended behavior.
|
||||
action.escu.creation_date = 2021-07-13
|
||||
action.escu.modification_date = 2021-07-13
|
||||
action.escu.confidence = high
|
||||
@@ -941,7 +941,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats `security_content_summariesonly` count earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object) as dest from datamodel=Change where All_Changes.action=created by All_Changes.user All_Changes.vendor_region | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_compute_creations_by_user user as user OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenUser=min(firstTimeSeen) | where isnull(firstTimeSeenUser) OR firstTimeSeenUser > relative_time(now(), "-24h@h") | table firstTime, user, dest, count vendor_region | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_by_previously_unseen_user_filter`
|
||||
search = | tstats `security_content_summariesonly` count earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object) as dest from datamodel=Change where All_Changes.action=created by All_Changes.user All_Changes.vendor_region | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_compute_creations_by_user user as user OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenUser=min(firstTimeSeen) | where isnull(firstTimeSeenUser) OR firstTimeSeenUser > relative_time(now(), "-24h@h") | table firstTime, user, dest, count vendor_region | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_by_previously_unseen_user_filter`
|
||||
|
||||
[ESCU - Cloud Compute Instance Created In Previously Unused Region - Rule]
|
||||
action.escu = 0
|
||||
@@ -951,7 +951,7 @@ action.escu.mappings = {"cis20": ["CIS 12"], "kill_chain_phases": ["Actions on O
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks at cloud-infrastructure events where an instance is created in any region within the last hour and then compares it to a lookup file of previously seen regions where instances have been created.
|
||||
action.escu.how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Regions - Initial` to build the initial table of images observed and times. You must also enable the second baseline search `Previously Seen Cloud Regions - Update` to keep this table up to date and to age out old data. You can also provide additional filtering for this search by customizing the `cloud_compute_instance_created_in_previously_unused_region_filter` macro.
|
||||
action.escu.known_false_positives = It's possible that a user has unknowingly started an instance in a new region. Please verify that this activity is legitimate.
|
||||
action.escu.known_false_positives = It's possible that a user has unknowingly started an instance in a new region. Please verify that this activity is legitimate.
|
||||
action.escu.creation_date = 2020-09-02
|
||||
action.escu.modification_date = 2020-09-02
|
||||
action.escu.confidence = high
|
||||
@@ -980,7 +980,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime values(All_Changes.object_id) as dest, count from datamodel=Change where All_Changes.action=created by All_Changes.vendor_region, All_Changes.user | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_regions vendor_region as vendor_region OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenRegion=min(firstTimeSeen) | where isnull(firstTimeSeenRegion) OR firstTimeSeenRegion > relative_time(now(), "-24h@h") | table firstTime, user, dest, count , vendor_region | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_in_previously_unused_region_filter`
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime values(All_Changes.object_id) as dest, count from datamodel=Change where All_Changes.action=created by All_Changes.vendor_region, All_Changes.user | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_regions vendor_region as vendor_region OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenRegion=min(firstTimeSeen) | where isnull(firstTimeSeenRegion) OR firstTimeSeenRegion > relative_time(now(), "-24h@h") | table firstTime, user, dest, count , vendor_region | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_in_previously_unused_region_filter`
|
||||
|
||||
[ESCU - Cloud Compute Instance Created With Previously Unseen Image - Rule]
|
||||
action.escu = 0
|
||||
@@ -1019,7 +1019,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats count earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object_id) as dest from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.image_id, All_Changes.user | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where image_id != "unknown" | lookup previously_seen_cloud_compute_images image_id as image_id OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenImage=min(firstTimeSeen) | where isnull(firstTimeSeenImage) OR firstTimeSeenImage > relative_time(now(), "-24h@h") | table firstTime, user, image_id, count, dest | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_with_previously_unseen_image_filter`
|
||||
search = | tstats count earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object_id) as dest from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.image_id, All_Changes.user | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where image_id != "unknown" | lookup previously_seen_cloud_compute_images image_id as image_id OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenImage=min(firstTimeSeen) | where isnull(firstTimeSeenImage) OR firstTimeSeenImage > relative_time(now(), "-24h@h") | table firstTime, user, image_id, count, dest | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_with_previously_unseen_image_filter`
|
||||
|
||||
[ESCU - Cloud Compute Instance Created With Previously Unseen Instance Type - Rule]
|
||||
action.escu = 0
|
||||
@@ -1058,7 +1058,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object_id) as dest, count from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.instance_type, All_Changes.user | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where instance_type != "unknown" | lookup previously_seen_cloud_compute_instance_types instance_type as instance_type OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenInstanceType=min(firstTimeSeen) | where isnull(firstTimeSeenInstanceType) OR firstTimeSeenInstanceType > relative_time(now(), "-24h@h") | table firstTime, user, dest, count, instance_type | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_with_previously_unseen_instance_type_filter`
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object_id) as dest, count from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.instance_type, All_Changes.user | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where instance_type != "unknown" | lookup previously_seen_cloud_compute_instance_types instance_type as instance_type OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenInstanceType=min(firstTimeSeen) | where isnull(firstTimeSeenInstanceType) OR firstTimeSeenInstanceType > relative_time(now(), "-24h@h") | table firstTime, user, dest, count, instance_type | `security_content_ctime(firstTime)` | `cloud_compute_instance_created_with_previously_unseen_instance_type_filter`
|
||||
|
||||
[ESCU - Cloud Instance Modified By Previously Unseen User - Rule]
|
||||
action.escu = 0
|
||||
@@ -1067,8 +1067,8 @@ description = This search looks for cloud instances being modified by users who
|
||||
action.escu.mappings = {"cis20": ["CIS 1"], "mitre_attack": ["T1078.004"], "nist": ["ID.AM"]}
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks for cloud instances being modified by users who have not previously modified them.
|
||||
action.escu.how_to_implement = This search has a dependency on other searches to create and update a baseline of users observed to be associated with this activity. The search "Previously Seen Cloud Instance Modifications By User - Update" should be enabled for this detection to properly work.
|
||||
action.escu.known_false_positives = It's possible that a new user will start to modify EC2 instances when they haven't before for any number of reasons. Verify with the user that is modifying instances that this is the intended behavior.
|
||||
action.escu.how_to_implement = This search has a dependency on other searches to create and update a baseline of users observed to be associated with this activity. The search "Previously Seen Cloud Instance Modifications By User - Update" should be enabled for this detection to properly work.
|
||||
action.escu.known_false_positives = It's possible that a new user will start to modify EC2 instances when they haven't before for any number of reasons. Verify with the user that is modifying instances that this is the intended behavior.
|
||||
action.escu.creation_date = 2020-07-29
|
||||
action.escu.modification_date = 2020-07-29
|
||||
action.escu.confidence = high
|
||||
@@ -1097,7 +1097,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats `security_content_summariesonly` count earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object_id) as object_id values(All_Changes.command) as command from datamodel=Change where All_Changes.action=modified All_Changes.change_type=EC2 All_Changes.status=success by All_Changes.user | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_instance_modifications_by_user user as user OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenUser=min(firstTimeSeen) | where isnull(firstTimeSeenUser) OR firstTimeSeenUser > relative_time(now(), "-24h@h") | table firstTime user command object_id count | `security_content_ctime(firstTime)` | `cloud_instance_modified_by_previously_unseen_user_filter`
|
||||
search = | tstats `security_content_summariesonly` count earliest(_time) as firstTime, latest(_time) as lastTime values(All_Changes.object_id) as object_id values(All_Changes.command) as command from datamodel=Change where All_Changes.action=modified All_Changes.change_type=EC2 All_Changes.status=success by All_Changes.user | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_instance_modifications_by_user user as user OUTPUTNEW firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenUser=min(firstTimeSeen) | where isnull(firstTimeSeenUser) OR firstTimeSeenUser > relative_time(now(), "-24h@h") | table firstTime user command object_id count | `security_content_ctime(firstTime)` | `cloud_instance_modified_by_previously_unseen_user_filter`
|
||||
|
||||
[ESCU - Cloud Provisioning Activity From Previously Unseen City - Rule]
|
||||
action.escu = 0
|
||||
@@ -1107,7 +1107,7 @@ action.escu.mappings = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": [
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks for cloud provisioning activities from previously unseen cities. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
action.escu.how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_city_filter` macro.
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
action.escu.creation_date = 2020-10-09
|
||||
action.escu.modification_date = 2020-10-09
|
||||
@@ -1137,7 +1137,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.object, All_Changes.command | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(City) | lookup previously_seen_cloud_provisioning_activity_sources City as City OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenCity=min(firstTimeSeen) | where isnull(firstTimeSeenCity) OR firstTimeSeenCity > relative_time(now(), `previously_unseen_cloud_provisioning_activity_window`) | table firstTime, src, City, user, object, command | `cloud_provisioning_activity_from_previously_unseen_city_filter` | `security_content_ctime(firstTime)`
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.object, All_Changes.command | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(City) | lookup previously_seen_cloud_provisioning_activity_sources City as City OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenCity=min(firstTimeSeen) | where isnull(firstTimeSeenCity) OR firstTimeSeenCity > relative_time(now(), `previously_unseen_cloud_provisioning_activity_window`) | table firstTime, src, City, user, object, command | `cloud_provisioning_activity_from_previously_unseen_city_filter` | `security_content_ctime(firstTime)`
|
||||
|
||||
[ESCU - Cloud Provisioning Activity From Previously Unseen Country - Rule]
|
||||
action.escu = 0
|
||||
@@ -1147,7 +1147,7 @@ action.escu.mappings = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": [
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks for cloud provisioning activities from previously unseen countries. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
action.escu.how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_country_filter` macro.
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
action.escu.creation_date = 2020-10-09
|
||||
action.escu.modification_date = 2020-10-09
|
||||
@@ -1177,7 +1177,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.object, All_Changes.command | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Country) | lookup previously_seen_cloud_provisioning_activity_sources Country as Country OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenCountry=min(firstTimeSeen) | where isnull(firstTimeSeenCountry) OR firstTimeSeenCountry > relative_time(now(), "-24h@h") | table firstTime, src, Country, user, object, command | `cloud_provisioning_activity_from_previously_unseen_country_filter` | `security_content_ctime(firstTime)`
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.object, All_Changes.command | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Country) | lookup previously_seen_cloud_provisioning_activity_sources Country as Country OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenCountry=min(firstTimeSeen) | where isnull(firstTimeSeenCountry) OR firstTimeSeenCountry > relative_time(now(), "-24h@h") | table firstTime, src, Country, user, object, command | `cloud_provisioning_activity_from_previously_unseen_country_filter` | `security_content_ctime(firstTime)`
|
||||
|
||||
[ESCU - Cloud Provisioning Activity From Previously Unseen IP Address - Rule]
|
||||
action.escu = 0
|
||||
@@ -1187,7 +1187,7 @@ action.escu.mappings = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": [
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks for cloud provisioning activities from previously unseen IP addresses. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
action.escu.how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_ip_address_filter` macro.
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
action.escu.creation_date = 2020-08-16
|
||||
action.escu.modification_date = 2020-08-16
|
||||
@@ -1217,7 +1217,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime, values(All_Changes.object_id) as object_id from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.command | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_provisioning_activity_sources src as src OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenSrc=min(firstTimeSeen) | where isnull(firstTimeSeenSrc) OR firstTimeSeenSrc > relative_time(now(), `previously_unseen_cloud_provisioning_activity_window`) | table firstTime, src, user, object_id, command | `cloud_provisioning_activity_from_previously_unseen_ip_address_filter` | `security_content_ctime(firstTime)`
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime, values(All_Changes.object_id) as object_id from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.command | `drop_dm_object_name("All_Changes")` | lookup previously_seen_cloud_provisioning_activity_sources src as src OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenSrc=min(firstTimeSeen) | where isnull(firstTimeSeenSrc) OR firstTimeSeenSrc > relative_time(now(), `previously_unseen_cloud_provisioning_activity_window`) | table firstTime, src, user, object_id, command | `cloud_provisioning_activity_from_previously_unseen_ip_address_filter` | `security_content_ctime(firstTime)`
|
||||
|
||||
[ESCU - Cloud Provisioning Activity From Previously Unseen Region - Rule]
|
||||
action.escu = 0
|
||||
@@ -1227,7 +1227,7 @@ action.escu.mappings = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": [
|
||||
action.escu.data_models = ["Change"]
|
||||
action.escu.eli5 = This search looks for cloud provisioning activities from previously unseen regions. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
action.escu.how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_region_filter` macro.
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
action.escu.known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
action.escu.creation_date = 2020-08-16
|
||||
action.escu.modification_date = 2020-08-16
|
||||
@@ -1257,7 +1257,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.object, All_Changes.command | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Region) | lookup previously_seen_cloud_provisioning_activity_sources Region as Region OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenRegion=min(firstTimeSeen) | where isnull(firstTimeSeenRegion) OR firstTimeSeenRegion > relative_time(now(), `previously_unseen_cloud_provisioning_activity_window`) | table firstTime, src, Region, user, object, command | `cloud_provisioning_activity_from_previously_unseen_region_filter` | `security_content_ctime(firstTime)`
|
||||
search = | tstats earliest(_time) as firstTime, latest(_time) as lastTime from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src, All_Changes.user, All_Changes.object, All_Changes.command | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Region) | lookup previously_seen_cloud_provisioning_activity_sources Region as Region OUTPUT firstTimeSeen, enough_data | eventstats max(enough_data) as enough_data | where enough_data=1 | eval firstTimeSeenRegion=min(firstTimeSeen) | where isnull(firstTimeSeenRegion) OR firstTimeSeenRegion > relative_time(now(), `previously_unseen_cloud_provisioning_activity_window`) | table firstTime, src, Region, user, object, command | `cloud_provisioning_activity_from_previously_unseen_region_filter` | `security_content_ctime(firstTime)`
|
||||
|
||||
[ESCU - Detect AWS Console Login by New User - Rule]
|
||||
action.escu = 0
|
||||
@@ -1296,7 +1296,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user | `drop_dm_object_name(Authentication)` | inputlookup append=t previously_seen_users_console_logins | stats min(firstTime) as firstTime max(lastTime) as lastTime by user | eval userStatus=if(firstTime >=relative_time(now(),"-24h@h"), "First Time Logging into AWS Console", "Previously Seen User") |where userStatus="First Time Logging into AWS Console" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `detect_aws_console_login_by_new_user_filter`
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user | `drop_dm_object_name(Authentication)` | inputlookup append=t previously_seen_users_console_logins | stats min(firstTime) as firstTime max(lastTime) as lastTime by user | eval userStatus=if(firstTime >=relative_time(now(),"-24h@h"), "First Time Logging into AWS Console", "Previously Seen User") |where userStatus="First Time Logging into AWS Console" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `detect_aws_console_login_by_new_user_filter`
|
||||
|
||||
[ESCU - Detect AWS Console Login by User from New City - Rule]
|
||||
action.escu = 0
|
||||
@@ -1335,7 +1335,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user Authentication.src | iplocation Authentication.src | `drop_dm_object_name(Authentication)` | table firstTime lastTime user City | join user type=outer [| inputlookup previously_seen_users_console_logins | stats earliest(firstTime) AS earliestseen by user City | fields earliestseen user City] | eval userCity=if(firstTime >= relative_time(now(), "-24h@h"), "New City","Previously Seen City") | eval userStatus=if(earliestseen >= relative_time(now(), "-24h@h") OR isnull(earliestseen), "New User","Old User") | where userCity = "New City" AND userStatus != "Old User" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime lastTime user City userStatus userCity | `detect_aws_console_login_by_user_from_new_city_filter`
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user Authentication.src | iplocation Authentication.src | `drop_dm_object_name(Authentication)` | table firstTime lastTime user City | join user type=outer [| inputlookup previously_seen_users_console_logins | stats earliest(firstTime) AS earliestseen by user City | fields earliestseen user City] | eval userCity=if(firstTime >= relative_time(now(), "-24h@h"), "New City","Previously Seen City") | eval userStatus=if(earliestseen >= relative_time(now(), "-24h@h") OR isnull(earliestseen), "New User","Old User") | where userCity = "New City" AND userStatus != "Old User" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime lastTime user City userStatus userCity | `detect_aws_console_login_by_user_from_new_city_filter`
|
||||
|
||||
[ESCU - Detect AWS Console Login by User from New Country - Rule]
|
||||
action.escu = 0
|
||||
@@ -1374,7 +1374,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user Authentication.src | iplocation Authentication.src | `drop_dm_object_name(Authentication)` | table firstTime lastTime user Country | join user type=outer [| inputlookup previously_seen_users_console_logins | stats earliest(firstTime) AS earliestseen by user Country | fields earliestseen user Country] | eval userCountry=if(firstTime >= relative_time(now(), "-24h@h"), "New Country","Previously Seen Country") | eval userStatus=if(earliestseen >= relative_time(now(),"-24h@h") OR isnull(earliestseen), "New User","Old User") | where userCountry = "New Country" AND userStatus != "Old User" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime lastTime user Country userStatus userCountry | `detect_aws_console_login_by_user_from_new_country_filter`
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user Authentication.src | iplocation Authentication.src | `drop_dm_object_name(Authentication)` | table firstTime lastTime user Country | join user type=outer [| inputlookup previously_seen_users_console_logins | stats earliest(firstTime) AS earliestseen by user Country | fields earliestseen user Country] | eval userCountry=if(firstTime >= relative_time(now(), "-24h@h"), "New Country","Previously Seen Country") | eval userStatus=if(earliestseen >= relative_time(now(),"-24h@h") OR isnull(earliestseen), "New User","Old User") | where userCountry = "New Country" AND userStatus != "Old User" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime lastTime user Country userStatus userCountry | `detect_aws_console_login_by_user_from_new_country_filter`
|
||||
|
||||
[ESCU - Detect AWS Console Login by User from New Region - Rule]
|
||||
action.escu = 0
|
||||
@@ -1413,7 +1413,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user Authentication.src | iplocation Authentication.src | `drop_dm_object_name(Authentication)` | table firstTime lastTime user Region | join user type=outer [| inputlookup previously_seen_users_console_logins | stats earliest(firstTime) AS earliestseen by user Region | fields earliestseen user Region] | eval userRegion=if(firstTime >= relative_time(now(), "-24h@h"), "New Region","Previously Seen Region") | eval userStatus=if(earliestseen >= relative_time(now(), "-24h@h") OR isnull(earliestseen), "New User","Old User") | where userRegion = "New Region" AND userStatus != "Old User" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime lastTime user Region userStatus userRegion | `detect_aws_console_login_by_user_from_new_region_filter`
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=ConsoleLogin by Authentication.user Authentication.src | iplocation Authentication.src | `drop_dm_object_name(Authentication)` | table firstTime lastTime user Region | join user type=outer [| inputlookup previously_seen_users_console_logins | stats earliest(firstTime) AS earliestseen by user Region | fields earliestseen user Region] | eval userRegion=if(firstTime >= relative_time(now(), "-24h@h"), "New Region","Previously Seen Region") | eval userStatus=if(earliestseen >= relative_time(now(), "-24h@h") OR isnull(earliestseen), "New User","Old User") | where userRegion = "New Region" AND userStatus != "Old User" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime lastTime user Region userStatus userRegion | `detect_aws_console_login_by_user_from_new_region_filter`
|
||||
|
||||
[ESCU - Detect New Open S3 Buckets over AWS CLI - Rule]
|
||||
action.escu = 0
|
||||
@@ -1423,7 +1423,7 @@ action.escu.mappings = {"cis20": ["CIS 13"], "kill_chain_phases": ["Actions on O
|
||||
action.escu.data_models = []
|
||||
action.escu.eli5 = This search looks for AWS CloudTrail events where a user has created an open/public S3 bucket over the aws cli.
|
||||
action.escu.how_to_implement =
|
||||
action.escu.known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
action.escu.known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
action.escu.creation_date = 2021-07-19
|
||||
action.escu.modification_date = 2021-07-19
|
||||
action.escu.confidence = high
|
||||
@@ -1452,7 +1452,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventSource="s3.amazonaws.com" (userAgent="[aws-cli*" OR userAgent=aws-cli* ) eventName=PutBucketAcl OR requestParameters.accessControlList.x-amz-grant-read-acp IN ("*AuthenticatedUsers","*AllUsers") OR requestParameters.accessControlList.x-amz-grant-write IN ("*AuthenticatedUsers","*AllUsers") OR requestParameters.accessControlList.x-amz-grant-write-acp IN ("*AuthenticatedUsers","*AllUsers") OR requestParameters.accessControlList.x-amz-grant-full-control IN ("*AuthenticatedUsers","*AllUsers") | rename requestParameters.bucketName AS bucketName | fillnull | stats count min(_time) as firstTime max(_time) as lastTime by userIdentity.userName userIdentity.principalId userAgent bucketName requestParameters.accessControlList.x-amz-grant-read requestParameters.accessControlList.x-amz-grant-read-acp requestParameters.accessControlList.x-amz-grant-write requestParameters.accessControlList.x-amz-grant-write-acp requestParameters.accessControlList.x-amz-grant-full-control | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `detect_new_open_s3_buckets_over_aws_cli_filter`
|
||||
search = `cloudtrail` eventSource="s3.amazonaws.com" (userAgent="[aws-cli*" OR userAgent=aws-cli* ) eventName=PutBucketAcl OR requestParameters.accessControlList.x-amz-grant-read-acp IN ("*AuthenticatedUsers","*AllUsers") OR requestParameters.accessControlList.x-amz-grant-write IN ("*AuthenticatedUsers","*AllUsers") OR requestParameters.accessControlList.x-amz-grant-write-acp IN ("*AuthenticatedUsers","*AllUsers") OR requestParameters.accessControlList.x-amz-grant-full-control IN ("*AuthenticatedUsers","*AllUsers") | rename requestParameters.bucketName AS bucketName | fillnull | stats count min(_time) as firstTime max(_time) as lastTime by userIdentity.userName userIdentity.principalId userAgent bucketName requestParameters.accessControlList.x-amz-grant-read requestParameters.accessControlList.x-amz-grant-read-acp requestParameters.accessControlList.x-amz-grant-write requestParameters.accessControlList.x-amz-grant-write-acp requestParameters.accessControlList.x-amz-grant-full-control | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `detect_new_open_s3_buckets_over_aws_cli_filter`
|
||||
|
||||
[ESCU - Detect New Open S3 buckets - Rule]
|
||||
action.escu = 0
|
||||
@@ -1462,7 +1462,7 @@ action.escu.mappings = {"cis20": ["CIS 13"], "kill_chain_phases": ["Actions on O
|
||||
action.escu.data_models = []
|
||||
action.escu.eli5 = This search looks for AWS CloudTrail events where a user has created an open/public S3 bucket.
|
||||
action.escu.how_to_implement = You must install the AWS App for Splunk.
|
||||
action.escu.known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
action.escu.known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
action.escu.creation_date = 2021-07-19
|
||||
action.escu.modification_date = 2021-07-19
|
||||
action.escu.confidence = high
|
||||
@@ -1491,7 +1491,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventSource=s3.amazonaws.com eventName=PutBucketAcl | rex field=_raw "(?<json_field>{.+})" | spath input=json_field output=grantees path=requestParameters.AccessControlPolicy.AccessControlList.Grant{} | search grantees=* | mvexpand grantees | spath input=grantees output=uri path=Grantee.URI | spath input=grantees output=permission path=Permission | search uri IN ("http://acs.amazonaws.com/groups/global/AllUsers","http://acs.amazonaws.com/groups/global/AuthenticatedUsers") | search permission IN ("READ","READ_ACP","WRITE","WRITE_ACP","FULL_CONTROL") | rename requestParameters.bucketName AS bucketName | stats count min(_time) as firstTime max(_time) as lastTime by user_arn userIdentity.principalId userAgent uri permission bucketName | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `detect_new_open_s3_buckets_filter`
|
||||
search = `cloudtrail` eventSource=s3.amazonaws.com eventName=PutBucketAcl | rex field=_raw "(?<json_field>{.+})" | spath input=json_field output=grantees path=requestParameters.AccessControlPolicy.AccessControlList.Grant{} | search grantees=* | mvexpand grantees | spath input=grantees output=uri path=Grantee.URI | spath input=grantees output=permission path=Permission | search uri IN ("http://acs.amazonaws.com/groups/global/AllUsers","http://acs.amazonaws.com/groups/global/AuthenticatedUsers") | search permission IN ("READ","READ_ACP","WRITE","WRITE_ACP","FULL_CONTROL") | rename requestParameters.bucketName AS bucketName | stats count min(_time) as firstTime max(_time) as lastTime by user_arn userIdentity.principalId userAgent uri permission bucketName | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `detect_new_open_s3_buckets_filter`
|
||||
|
||||
[ESCU - Detect Spike in AWS Security Hub Alerts for EC2 Instance - Rule]
|
||||
action.escu = 0
|
||||
@@ -1530,7 +1530,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `aws_securityhub_finding` "Resources{}.Type"=AWSEC2Instance | bucket span=4h _time | stats count AS alerts values(Title) as Title values(Types{}) as Types values(vendor_account) as vendor_account values(vendor_region) as vendor_region values(severity) as severity by _time dest | eventstats avg(alerts) as total_alerts_avg, stdev(alerts) as total_alerts_stdev | eval threshold_value = 3 | eval isOutlier=if(alerts > total_alerts_avg+(total_alerts_stdev * threshold_value), 1, 0) | search isOutlier=1 | table _time dest alerts Title Types vendor_account vendor_region severity isOutlier total_alerts_avg | `detect_spike_in_aws_security_hub_alerts_for_ec2_instance_filter`
|
||||
search = `aws_securityhub_finding` "Resources{}.Type"=AWSEC2Instance | bucket span=4h _time | stats count AS alerts values(Title) as Title values(Types{}) as Types values(vendor_account) as vendor_account values(vendor_region) as vendor_region values(severity) as severity by _time dest | eventstats avg(alerts) as total_alerts_avg, stdev(alerts) as total_alerts_stdev | eval threshold_value = 3 | eval isOutlier=if(alerts > total_alerts_avg+(total_alerts_stdev * threshold_value), 1, 0) | search isOutlier=1 | table _time dest alerts Title Types vendor_account vendor_region severity isOutlier total_alerts_avg | `detect_spike_in_aws_security_hub_alerts_for_ec2_instance_filter`
|
||||
|
||||
[ESCU - Detect shared ec2 snapshot - Rule]
|
||||
action.escu = 0
|
||||
@@ -1569,7 +1569,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `cloudtrail` eventName=ModifySnapshotAttribute | rename requestParameters.createVolumePermission.add.items{}.userId as requested_account_id | search requested_account_id != NULL | eval match=if(requested_account_id==aws_account_id,"Match","No Match") | table _time user_arn src_ip requestParameters.attributeType requested_account_id aws_account_id match vendor_region user_agent | where match = "No Match" | `detect_shared_ec2_snapshot_filter`
|
||||
search = `cloudtrail` eventName=ModifySnapshotAttribute | rename requestParameters.createVolumePermission.add.items{}.userId as requested_account_id | search requested_account_id != NULL | eval match=if(requested_account_id==aws_account_id,"Match","No Match") | table _time user_arn src_ip requestParameters.attributeType requested_account_id aws_account_id match vendor_region user_agent | where match = "No Match" | `detect_shared_ec2_snapshot_filter`
|
||||
|
||||
[ESCU - O365 Add App Role Assignment Grant User - Rule]
|
||||
action.escu = 0
|
||||
@@ -1608,7 +1608,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory Operation="Add app role assignment grant to user." | stats count min(_time) as firstTime max(_time) as lastTime values(Actor{}.ID) as Actor.ID values(Actor{}.Type) as Actor.Type by ActorIpAddress dest ResultStatus | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `o365_add_app_role_assignment_grant_user_filter`
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory Operation="Add app role assignment grant to user." | stats count min(_time) as firstTime max(_time) as lastTime values(Actor{}.ID) as Actor.ID values(Actor{}.Type) as Actor.Type by ActorIpAddress dest ResultStatus | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `o365_add_app_role_assignment_grant_user_filter`
|
||||
|
||||
[ESCU - O365 Added Service Principal - Rule]
|
||||
action.escu = 0
|
||||
@@ -1647,7 +1647,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory signature="Add service principal credentials." | stats min(_time) as firstTime max(_time) as lastTime values(Actor{}.ID) as Actor.ID values(ModifiedProperties{}.Name) as ModifiedProperties.Name values(ModifiedProperties{}.NewValue) as ModifiedProperties.NewValue values(Target{}.ID) as Target.ID by ActorIpAddress signature | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `o365_added_service_principal_filter`
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory signature="Add service principal credentials." | stats min(_time) as firstTime max(_time) as lastTime values(Actor{}.ID) as Actor.ID values(ModifiedProperties{}.Name) as ModifiedProperties.Name values(ModifiedProperties{}.NewValue) as ModifiedProperties.NewValue values(Target{}.ID) as Target.ID by ActorIpAddress signature | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `o365_added_service_principal_filter`
|
||||
|
||||
[ESCU - O365 Bypass MFA via Trusted IP - Rule]
|
||||
action.escu = 0
|
||||
@@ -1686,7 +1686,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` signature="Set Company Information." ModifiedProperties{}.Name=StrongAuthenticationPolicy | rex max_match=100 field=ModifiedProperties{}.NewValue "(?<ip_addresses_new_added>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2})" | rex max_match=100 field=ModifiedProperties{}.OldValue "(?<ip_addresses_old>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2})" | eval ip_addresses_old=if(isnotnull(ip_addresses_old),ip_addresses_old,"0") | mvexpand ip_addresses_new_added | where isnull(mvfind(ip_addresses_old,ip_addresses_new_added)) |stats count min(_time) as firstTime max(_time) as lastTime values(ip_addresses_old) as ip_addresses_old by user ip_addresses_new_added signature Workload vendor_account status user_id action | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)`| `o365_bypass_mfa_via_trusted_ip_filter`
|
||||
search = `o365_management_activity` signature="Set Company Information." ModifiedProperties{}.Name=StrongAuthenticationPolicy | rex max_match=100 field=ModifiedProperties{}.NewValue "(?<ip_addresses_new_added>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2})" | rex max_match=100 field=ModifiedProperties{}.OldValue "(?<ip_addresses_old>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2})" | eval ip_addresses_old=if(isnotnull(ip_addresses_old),ip_addresses_old,"0") | mvexpand ip_addresses_new_added | where isnull(mvfind(ip_addresses_old,ip_addresses_new_added)) |stats count min(_time) as firstTime max(_time) as lastTime values(ip_addresses_old) as ip_addresses_old by user ip_addresses_new_added signature Workload vendor_account status user_id action | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)`| `o365_bypass_mfa_via_trusted_ip_filter`
|
||||
|
||||
[ESCU - O365 Disable MFA - Rule]
|
||||
action.escu = 0
|
||||
@@ -1725,7 +1725,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Operation="Disable Strong Authentication." | stats count earliest(_time) as firstTime latest(_time) as lastTime by UserType Operation user status signature dest ResultStatus |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` | `o365_disable_mfa_filter`
|
||||
search = `o365_management_activity` Operation="Disable Strong Authentication." | stats count earliest(_time) as firstTime latest(_time) as lastTime by UserType Operation user status signature dest ResultStatus |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` | `o365_disable_mfa_filter`
|
||||
|
||||
[ESCU - O365 Excessive Authentication Failures Alert - Rule]
|
||||
action.escu = 0
|
||||
@@ -1764,7 +1764,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory UserAuthenticationMethod=* status=Failed | stats count earliest(_time) as firstTime latest(_time) values(UserAuthenticationMethod) AS UserAuthenticationMethod values(UserAgent) AS UserAgent values(status) AS status values(src_ip) AS src_ip by user | where count > 10 |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` | `o365_excessive_authentication_failures_alert_filter`
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory UserAuthenticationMethod=* status=Failed | stats count earliest(_time) as firstTime latest(_time) values(UserAuthenticationMethod) AS UserAuthenticationMethod values(UserAgent) AS UserAgent values(status) AS status values(src_ip) AS src_ip by user | where count > 10 |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` | `o365_excessive_authentication_failures_alert_filter`
|
||||
|
||||
[ESCU - O365 Excessive SSO logon errors - Rule]
|
||||
action.escu = 0
|
||||
@@ -1803,7 +1803,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory LogonError=SsoArtifactInvalidOrExpired | stats count min(_time) as firstTime max(_time) as lastTime by LogonError ActorIpAddress UserAgent UserId | where count > 5 | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `o365_excessive_sso_logon_errors_filter`
|
||||
search = `o365_management_activity` Workload=AzureActiveDirectory LogonError=SsoArtifactInvalidOrExpired | stats count min(_time) as firstTime max(_time) as lastTime by LogonError ActorIpAddress UserAgent UserId | where count > 5 | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `o365_excessive_sso_logon_errors_filter`
|
||||
|
||||
[ESCU - O365 New Federated Domain Added - Rule]
|
||||
action.escu = 0
|
||||
@@ -1842,7 +1842,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Workload=Exchange Operation="Add-FederatedDomain" | stats count min(_time) as firstTime max(_time) as lastTime values(Parameters{}.Value) as Parameters.Value by ObjectId Operation OrganizationName OriginatingServer UserId UserKey | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `o365_new_federated_domain_added_filter`
|
||||
search = `o365_management_activity` Workload=Exchange Operation="Add-FederatedDomain" | stats count min(_time) as firstTime max(_time) as lastTime values(Parameters{}.Value) as Parameters.Value by ObjectId Operation OrganizationName OriginatingServer UserId UserKey | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `o365_new_federated_domain_added_filter`
|
||||
|
||||
[ESCU - O365 PST export alert - Rule]
|
||||
action.escu = 0
|
||||
@@ -1881,7 +1881,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Category=ThreatManagement Name="eDiscovery search started or exported" | stats count earliest(_time) as firstTime latest(_time) as lastTime by Source Severity AlertEntityId Operation Name |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` | `o365_pst_export_alert_filter`
|
||||
search = `o365_management_activity` Category=ThreatManagement Name="eDiscovery search started or exported" | stats count earliest(_time) as firstTime latest(_time) as lastTime by Source Severity AlertEntityId Operation Name |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` | `o365_pst_export_alert_filter`
|
||||
|
||||
[ESCU - O365 Suspicious Admin Email Forwarding - Rule]
|
||||
action.escu = 0
|
||||
@@ -1920,7 +1920,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Operation=Set-Mailbox | spath input=Parameters | rename Identity AS src_user | search ForwardingAddress=* | stats dc(src_user) AS count_src_user earliest(_time) as firstTime latest(_time) as lastTime values(src_user) AS src_user values(user) AS user by ForwardingAddress | where count_src_user > 1 |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` |`o365_suspicious_admin_email_forwarding_filter`
|
||||
search = `o365_management_activity` Operation=Set-Mailbox | spath input=Parameters | rename Identity AS src_user | search ForwardingAddress=* | stats dc(src_user) AS count_src_user earliest(_time) as firstTime latest(_time) as lastTime values(src_user) AS src_user values(user) AS user by ForwardingAddress | where count_src_user > 1 |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` |`o365_suspicious_admin_email_forwarding_filter`
|
||||
|
||||
[ESCU - O365 Suspicious Rights Delegation - Rule]
|
||||
action.escu = 0
|
||||
@@ -1998,7 +1998,7 @@ relation = greater than
|
||||
quantity = 0
|
||||
realtime_schedule = 0
|
||||
is_visible = false
|
||||
search = `o365_management_activity` Operation=Set-Mailbox | spath input=Parameters | rename Identity AS src_user | search ForwardingSmtpAddress=* | stats dc(src_user) AS count_src_user earliest(_time) as firstTime latest(_time) as lastTime values(src_user) AS src_user values(user) AS user by ForwardingSmtpAddress | where count_src_user > 1 |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` |`o365_suspicious_user_email_forwarding_filter`
|
||||
search = `o365_management_activity` Operation=Set-Mailbox | spath input=Parameters | rename Identity AS src_user | search ForwardingSmtpAddress=* | stats dc(src_user) AS count_src_user earliest(_time) as firstTime latest(_time) as lastTime values(src_user) AS src_user values(user) AS user by ForwardingSmtpAddress | where count_src_user > 1 |`security_content_ctime(firstTime)` |`security_content_ctime(lastTime)` |`o365_suspicious_user_email_forwarding_filter`
|
||||
|
||||
### END ESCU DETECTIONS ###
|
||||
|
||||
@@ -2025,7 +2025,7 @@ action.escu.eli5 = This search is used to build a Machine Learning Toolkit (MLTK
|
||||
action.escu.how_to_implement = You must have Enterprise Security 6.0 or later, if not you will need to verify that the Machine Learning Toolkit (MLTK) version 4.2 or later is installed, along with any required dependencies. Depending on the number of users in your environment, you may also need to adjust the value for max_inputs in the MLTK settings for the DensityFunction algorithm, then ensure that the search completes in a reasonable timeframe. By default, the search builds the model using the past 90 days of data. You can modify the search window to build the model over a longer period of time, which may give you better results. You may also want to periodically re-run this search to rebuild the model with the latest data.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats count as api_calls from datamodel=Change where All_Changes.user!=unknown All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time api_calls, user, HourOfDay, isWeekend | eventstats dc(api_calls) as api_calls by user, HourOfDay, isWeekend | where api_calls >= 1 | fit DensityFunction api_calls by "user,HourOfDay,isWeekend" into cloud_excessive_api_calls_v1 dist=norm show_density=true
|
||||
search = | tstats count as api_calls from datamodel=Change where All_Changes.user!=unknown All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time api_calls, user, HourOfDay, isWeekend | eventstats dc(api_calls) as api_calls by user, HourOfDay, isWeekend | where api_calls >= 1 | fit DensityFunction api_calls by "user,HourOfDay,isWeekend" into cloud_excessive_api_calls_v1 dist=norm show_density=true
|
||||
|
||||
[ESCU - Baseline Of Cloud Instances Destroyed]
|
||||
action.escu = 0
|
||||
@@ -2048,7 +2048,7 @@ action.escu.how_to_implement = You must have Enterprise Security 6.0 or later, i
|
||||
More information on the algorithm used in the search can be found at `https://docs.splunk.com/Documentation/MLApp/4.2.0/User/Algorithms#DensityFunction`.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats count as instances_destroyed from datamodel=Change where All_Changes.action=deleted AND All_Changes.status=success AND All_Changes.object_category=instance by _time span=1h | makecontinuous span=1h _time | eval instances_destroyed=coalesce(instances_destroyed, (random()%2)*0.0000000001) | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time instances_destroyed, HourOfDay, isWeekend | fit DensityFunction instances_destroyed by "HourOfDay,isWeekend" into cloud_excessive_instances_destroyed_v1 dist=expon show_density=true
|
||||
search = | tstats count as instances_destroyed from datamodel=Change where All_Changes.action=deleted AND All_Changes.status=success AND All_Changes.object_category=instance by _time span=1h | makecontinuous span=1h _time | eval instances_destroyed=coalesce(instances_destroyed, (random()%2)*0.0000000001) | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time instances_destroyed, HourOfDay, isWeekend | fit DensityFunction instances_destroyed by "HourOfDay,isWeekend" into cloud_excessive_instances_destroyed_v1 dist=expon show_density=true
|
||||
|
||||
[ESCU - Baseline Of Cloud Instances Launched]
|
||||
action.escu = 0
|
||||
@@ -2071,7 +2071,7 @@ action.escu.how_to_implement = You must have Enterprise Security 6.0 or later, i
|
||||
More information on the algorithm used in the search can be found at `https://docs.splunk.com/Documentation/MLApp/4.2.0/User/Algorithms#DensityFunction`.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats count as instances_launched from datamodel=Change where (All_Changes.action=created) AND All_Changes.status=success AND All_Changes.object_category=instance by _time span=1h | makecontinuous span=1h _time | eval instances_launched=coalesce(instances_launched, (random()%2)*0.0000000001) | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time instances_launched, HourOfDay, isWeekend | fit DensityFunction instances_launched by "HourOfDay,isWeekend" into cloud_excessive_instances_created_v1 dist=expon show_density=true
|
||||
search = | tstats count as instances_launched from datamodel=Change where (All_Changes.action=created) AND All_Changes.status=success AND All_Changes.object_category=instance by _time span=1h | makecontinuous span=1h _time | eval instances_launched=coalesce(instances_launched, (random()%2)*0.0000000001) | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time instances_launched, HourOfDay, isWeekend | fit DensityFunction instances_launched by "HourOfDay,isWeekend" into cloud_excessive_instances_created_v1 dist=expon show_density=true
|
||||
|
||||
[ESCU - Baseline Of Cloud Security Group API Calls Per User]
|
||||
action.escu = 0
|
||||
@@ -2093,7 +2093,7 @@ action.escu.eli5 = This search is used to build a Machine Learning Toolkit (MLTK
|
||||
action.escu.how_to_implement = You must have Enterprise Security 6.0 or later, if not you will need to verify that the Machine Learning Toolkit (MLTK) version 4.2 or later is installed, along with any required dependencies. Depending on the number of users in your environment, you may also need to adjust the value for max_inputs in the MLTK settings for the DensityFunction algorithm, then ensure that the search completes in a reasonable timeframe. By default, the search builds the model using the past 90 days of data. You can modify the search window to build the model over a longer period of time, which may give you better results. You may also want to periodically re-run this search to rebuild the model with the latest data.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats count as security_group_api_calls from datamodel=Change where All_Changes.object_category=firewall All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time security_group_api_calls, user, HourOfDay, isWeekend | eventstats dc(security_group_api_calls) as security_group_api_calls by user, HourOfDay, isWeekend | where security_group_api_calls >= 1 | fit DensityFunction security_group_api_calls by "user,HourOfDay,isWeekend" into cloud_excessive_security_group_api_calls_v1 dist=norm show_density=true
|
||||
search = | tstats count as security_group_api_calls from datamodel=Change where All_Changes.object_category=firewall All_Changes.status=success by All_Changes.user _time span=1h | `drop_dm_object_name("All_Changes")` | eval HourOfDay=strftime(_time, "%H") | eval HourOfDay=floor(HourOfDay/4)*4 | eval DayOfWeek=strftime(_time, "%w") | eval isWeekend=if(DayOfWeek >= 1 AND DayOfWeek <= 5, 0, 1) | table _time security_group_api_calls, user, HourOfDay, isWeekend | eventstats dc(security_group_api_calls) as security_group_api_calls by user, HourOfDay, isWeekend | where security_group_api_calls >= 1 | fit DensityFunction security_group_api_calls by "user,HourOfDay,isWeekend" into cloud_excessive_security_group_api_calls_v1 dist=norm show_density=true
|
||||
|
||||
[ESCU - Previously Seen AWS Cross Account Activity - Initial]
|
||||
action.escu = 0
|
||||
@@ -2115,7 +2115,7 @@ action.escu.eli5 = This search looks for **AssumeRole** events where the request
|
||||
action.escu.how_to_implement = You must install and configure the Splunk Add-on for AWS (version 5.1.0 or later)and Enterprise Security 6.2, which contains the required updates to the Authentication data model for cloud use cases. Validate the user name entries in `previously_seen_aws_cross_account_activity.csv`, a lookup file created by this support search.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=AssumeRole by Authentication.vendor_account Authentication.user Authentication.src Authentication.user_role | `drop_dm_object_name(Authentication)` | rex field=user_role "arn:aws:sts:*:(?<dest_account>.*):" | where vendor_account != dest_account | rename vendor_account as requestingAccountId dest_account as requestedAccountId | table requestingAccountId requestedAccountId firstTime lastTime | outputlookup previously_seen_aws_cross_account_activity
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=AssumeRole by Authentication.vendor_account Authentication.user Authentication.src Authentication.user_role | `drop_dm_object_name(Authentication)` | rex field=user_role "arn:aws:sts:*:(?<dest_account>.*):" | where vendor_account != dest_account | rename vendor_account as requestingAccountId dest_account as requestedAccountId | table requestingAccountId requestedAccountId firstTime lastTime | outputlookup previously_seen_aws_cross_account_activity
|
||||
|
||||
[ESCU - Previously Seen AWS Cross Account Activity - Update]
|
||||
action.escu = 0
|
||||
@@ -2137,7 +2137,7 @@ action.escu.eli5 = This search looks for **AssumeRole** events where the request
|
||||
action.escu.how_to_implement = You must install and configure the Splunk Add-on for AWS (version 5.1.0 or later) and Enterprise Security 6.2, which contains the required updates to the Authentication data model for cloud use cases. Validate the user name entries in `previously_seen_aws_cross_account_activity.csv`, a lookup file created by this support search.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=AssumeRole by Authentication.vendor_account Authentication.user Authentication.src Authentication.user_role | `drop_dm_object_name(Authentication)` | rex field=user_role "arn:aws:sts:*:(?<dest_account>.*):" | where vendor_account != dest_account | rename vendor_account as requestingAccountId dest_account as requestedAccountId | inputlookup append=t previously_seen_aws_cross_account_activity | stats min(firstTime) as firstTime max(lastTime) as lastTime by requestingAccountId requestedAccountId | outputlookup previously_seen_aws_cross_account_activity
|
||||
search = | tstats earliest(_time) as firstTime latest(_time) as lastTime from datamodel=Authentication where Authentication.signature=AssumeRole by Authentication.vendor_account Authentication.user Authentication.src Authentication.user_role | `drop_dm_object_name(Authentication)` | rex field=user_role "arn:aws:sts:*:(?<dest_account>.*):" | where vendor_account != dest_account | rename vendor_account as requestingAccountId dest_account as requestedAccountId | inputlookup append=t previously_seen_aws_cross_account_activity | stats min(firstTime) as firstTime max(lastTime) as lastTime by requestingAccountId requestedAccountId | outputlookup previously_seen_aws_cross_account_activity
|
||||
|
||||
[ESCU - Previously Seen Cloud API Calls Per User Role - Initial]
|
||||
action.escu = 0
|
||||
@@ -2159,7 +2159,7 @@ action.escu.eli5 = This search builds a table of the first and last times seen f
|
||||
action.escu.how_to_implement = You must be ingesting Cloud infrastructure logs from your cloud provider.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.user_type=AssumedRole AND All_Changes.status=success by All_Changes.user, All_Changes.command | `drop_dm_object_name("All_Changes")` | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table user, command, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_api_calls_per_user_role
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.user_type=AssumedRole AND All_Changes.status=success by All_Changes.user, All_Changes.command | `drop_dm_object_name("All_Changes")` | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table user, command, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_api_calls_per_user_role
|
||||
|
||||
[ESCU - Previously Seen Cloud API Calls Per User Role - Update]
|
||||
action.escu = 0
|
||||
@@ -2181,7 +2181,7 @@ action.escu.eli5 = This search updates the table of the first and last times see
|
||||
action.escu.how_to_implement = You must be ingesting Cloud infrastructure logs from your cloud provider.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.user_type=AssumedRole AND All_Changes.status=success by All_Changes.user, All_Changes.command | `drop_dm_object_name("All_Changes")` | table user, command, firstTimeSeen, lastTimeSeen | inputlookup previously_seen_cloud_api_calls_per_user_role append=t | stats min(firstTimeSeen) as firstTimeSeen, max(lastTimeSeen) as lastTimeSeen by user, command | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_api_calls_per_user_role_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table user, command, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_api_calls_per_user_role
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.user_type=AssumedRole AND All_Changes.status=success by All_Changes.user, All_Changes.command | `drop_dm_object_name("All_Changes")` | table user, command, firstTimeSeen, lastTimeSeen | inputlookup previously_seen_cloud_api_calls_per_user_role append=t | stats min(firstTimeSeen) as firstTimeSeen, max(lastTimeSeen) as lastTimeSeen by user, command | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_api_calls_per_user_role_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table user, command, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_api_calls_per_user_role
|
||||
|
||||
[ESCU - Previously Seen Cloud Compute Creations By User - Initial]
|
||||
action.escu = 0
|
||||
@@ -2203,7 +2203,7 @@ action.escu.eli5 = This search builds a table of previously seen users that have
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the proper TAs installed.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created AND All_Changes.object_category=instance by All_Changes.user | `drop_dm_object_name("All_Changes")` | outputlookup previously_seen_cloud_compute_creations_by_user | stats count
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created AND All_Changes.object_category=instance by All_Changes.user | `drop_dm_object_name("All_Changes")` | outputlookup previously_seen_cloud_compute_creations_by_user | stats count
|
||||
|
||||
[ESCU - Previously Seen Cloud Compute Creations By User - Update]
|
||||
action.escu = 0
|
||||
@@ -2225,7 +2225,7 @@ action.escu.eli5 = This search builds a table of previously seen users that have
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the proper TAs installed.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created AND All_Changes.object_category=instance by All_Changes.user| `drop_dm_object_name("All_Changes")` | inputlookup append=t previously_seen_cloud_compute_creations_by_user | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by user | where lastTimeSeen > relative_time(now(), "-90d@d") | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_creations_by_user
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created AND All_Changes.object_category=instance by All_Changes.user| `drop_dm_object_name("All_Changes")` | inputlookup append=t previously_seen_cloud_compute_creations_by_user | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by user | where lastTimeSeen > relative_time(now(), "-90d@d") | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_creations_by_user
|
||||
|
||||
[ESCU - Previously Seen Cloud Compute Images - Initial]
|
||||
action.escu = 0
|
||||
@@ -2247,7 +2247,7 @@ action.escu.eli5 = This search builds a table of previously seen images used to
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the latest Change Datamodel accelerated
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.image_id | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where image_id != "unknown" | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_images
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.image_id | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where image_id != "unknown" | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_images
|
||||
|
||||
[ESCU - Previously Seen Cloud Compute Images - Update]
|
||||
action.escu = 0
|
||||
@@ -2269,7 +2269,7 @@ action.escu.eli5 = This search builds a table of previously seen images used to
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.image_id | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where image_id != "unknown" | inputlookup append=t previously_seen_cloud_compute_images | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by image_id | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_compute_images_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_images
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.image_id | `drop_dm_object_name("All_Changes")` | `drop_dm_object_name("Instance_Changes")` | where image_id != "unknown" | inputlookup append=t previously_seen_cloud_compute_images | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by image_id | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_compute_images_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_images
|
||||
|
||||
[ESCU - Previously Seen Cloud Compute Instance Types - Initial]
|
||||
action.escu = 0
|
||||
@@ -2291,7 +2291,7 @@ action.escu.eli5 = This search builds a table of previously seen cloud compute i
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.instance_type | `drop_dm_object_name("All_Changes.Instance_Changes")` | where instance_type != "unknown" | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_instance_types
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.instance_type | `drop_dm_object_name("All_Changes.Instance_Changes")` | where instance_type != "unknown" | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_instance_types
|
||||
|
||||
[ESCU - Previously Seen Cloud Compute Instance Types - Update]
|
||||
action.escu = 0
|
||||
@@ -2313,7 +2313,7 @@ action.escu.eli5 = This search builds a table of previously seen cloud compute i
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.instance_type | `drop_dm_object_name("All_Changes.Instance_Changes")` | where instance_type != "unknown" | inputlookup append=t previously_seen_cloud_compute_instance_types | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by instance_type | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_compute_instance_type_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_instance_types
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.Instance_Changes.instance_type | `drop_dm_object_name("All_Changes.Instance_Changes")` | where instance_type != "unknown" | inputlookup append=t previously_seen_cloud_compute_instance_types | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by instance_type | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_compute_instance_type_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_compute_instance_types
|
||||
|
||||
[ESCU - Previously Seen Cloud Instance Modifications By User - Initial]
|
||||
action.escu = 0
|
||||
@@ -2335,7 +2335,7 @@ action.escu.eli5 = This search builds a table of previously seen users that have
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the latest Change Datamodel accelerated.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=modified All_Changes.change_type=EC2 All_Changes.status=success by All_Changes.user | `drop_dm_object_name("All_Changes")` | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_instance_modifications_by_user
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=modified All_Changes.change_type=EC2 All_Changes.status=success by All_Changes.user | `drop_dm_object_name("All_Changes")` | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_instance_modifications_by_user
|
||||
|
||||
[ESCU - Previously Seen Cloud Instance Modifications By User - Update]
|
||||
action.escu = 0
|
||||
@@ -2357,7 +2357,7 @@ action.escu.eli5 = This search updates a table of previously seen Cloud Instance
|
||||
action.escu.how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS version (4.4.0 or later), then configure your CloudTrail inputs. To add or remove APIs that modify an EC2 instance, edit the macro `ec2_modification_api_calls`.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=modified All_Changes.change_type=EC2 All_Changes.status=success by All_Changes.user | `drop_dm_object_name("All_Changes")` | inputlookup append=t previously_seen_cloud_instance_modifications_by_user | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by user | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_compute_images_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_instance_modifications_by_user
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=modified All_Changes.change_type=EC2 All_Changes.status=success by All_Changes.user | `drop_dm_object_name("All_Changes")` | inputlookup append=t previously_seen_cloud_instance_modifications_by_user | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by user | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_compute_images_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | outputlookup previously_seen_cloud_instance_modifications_by_user
|
||||
|
||||
[ESCU - Previously Seen Cloud Provisioning Activity Sources - Initial]
|
||||
action.escu = 0
|
||||
@@ -2379,7 +2379,7 @@ action.escu.eli5 = This search builds a table of the first and last times seen f
|
||||
action.escu.how_to_implement = You must be ingesting Cloud infrastructure logs from your cloud provider.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Country) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table src, City, Country, Region, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_provisioning_activity_sources
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Country) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table src, City, Country, Region, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_provisioning_activity_sources
|
||||
|
||||
[ESCU - Previously Seen Cloud Provisioning Activity Sources - Update]
|
||||
action.escu = 0
|
||||
@@ -2401,14 +2401,14 @@ action.escu.eli5 = This returns the first and last times seen for every IP addre
|
||||
action.escu.how_to_implement = You must be ingesting Cloud infrastructure logs from your cloud provider.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Country) | table src, firstTimeSeen, lastTimeSeen, City, Country, Region | inputlookup previously_seen_cloud_provisioning_activity_sources append=t | stats min(firstTimeSeen) as firstTimeSeen, max(lastTimeSeen) as lastTimeSeen by src, City, Country, Region | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_provisioning_activity_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table src, City, Country, Region, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_provisioning_activity_sources
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where (All_Changes.action=started OR All_Changes.action=created) All_Changes.status=success by All_Changes.src | `drop_dm_object_name("All_Changes")` | iplocation src | where isnotnull(Country) | table src, firstTimeSeen, lastTimeSeen, City, Country, Region | inputlookup previously_seen_cloud_provisioning_activity_sources append=t | stats min(firstTimeSeen) as firstTimeSeen, max(lastTimeSeen) as lastTimeSeen by src, City, Country, Region | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_provisioning_activity_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-7d@d"), 1, 0) | table src, City, Country, Region, firstTimeSeen, lastTimeSeen, enough_data | outputlookup previously_seen_cloud_provisioning_activity_sources
|
||||
|
||||
[ESCU - Previously Seen Cloud Regions - Initial]
|
||||
action.escu = 0
|
||||
action.escu.enabled = 1
|
||||
action.escu.search_type = support
|
||||
action.escu.full_search_name = ESCU - Previously Seen Cloud Regions - Initial
|
||||
description = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
description = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
action.escu.creation_date = 2020-09-02
|
||||
action.escu.modification_date = 2020-09-02
|
||||
action.escu.analytic_story = ["Cloud Cryptomining"]
|
||||
@@ -2419,18 +2419,18 @@ dispatch.earliest_time = -90d@d
|
||||
dispatch.latest_time = -1d@d
|
||||
schedule_window = auto
|
||||
action.escu.providing_technologies = []
|
||||
action.escu.eli5 = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
action.escu.eli5 = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.vendor_region | `drop_dm_object_name("All_Changes")` | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_regions
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.vendor_region | `drop_dm_object_name("All_Changes")` | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_regions
|
||||
|
||||
[ESCU - Previously Seen Cloud Regions - Update]
|
||||
action.escu = 0
|
||||
action.escu.enabled = 1
|
||||
action.escu.search_type = support
|
||||
action.escu.full_search_name = ESCU - Previously Seen Cloud Regions - Update
|
||||
description = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
description = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
action.escu.creation_date = 2020-09-02
|
||||
action.escu.modification_date = 2020-09-02
|
||||
action.escu.analytic_story = ["Cloud Cryptomining"]
|
||||
@@ -2441,11 +2441,11 @@ dispatch.earliest_time = -1450m@m
|
||||
dispatch.latest_time = -10m@m
|
||||
schedule_window = auto
|
||||
action.escu.providing_technologies = []
|
||||
action.escu.eli5 = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
action.escu.eli5 = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
action.escu.how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
disabled = false
|
||||
is_visible = false
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.vendor_region | `drop_dm_object_name("All_Changes")` | inputlookup append=t previously_seen_cloud_regions | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by vendor_region | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_region_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_regions | stats count
|
||||
search = | tstats earliest(_time) as firstTimeSeen, latest(_time) as lastTimeSeen from datamodel=Change where All_Changes.action=created by All_Changes.vendor_region | `drop_dm_object_name("All_Changes")` | inputlookup append=t previously_seen_cloud_regions | stats min(firstTimeSeen) as firstTimeSeen max(lastTimeSeen) as lastTimeSeen by vendor_region | where lastTimeSeen > relative_time(now(), `previously_seen_cloud_region_forget_window`) | eventstats min(firstTimeSeen) as globalFirstTime | eval enough_data = if(globalFirstTime <= relative_time(now(), "-14d@d"), 1, 0) | outputlookup previously_seen_cloud_regions | stats count
|
||||
|
||||
[ESCU - Previously Seen Users In CloudTrail - Update]
|
||||
action.escu = 0
|
||||
@@ -2514,14 +2514,14 @@ action.escu.known_false_positives = None at this time
|
||||
disabled = true
|
||||
schedule_window = auto
|
||||
is_visible = false
|
||||
search = sourcetype="aws:securityhub:firehose" "findings{}.Resources{}.Type"=AWSEC2Instance | rex field=findings{}.Resources{}.Id .*instance/(?<instance>.*)| rename instance as dest| search dest = $dest$ |rename findings{}.* as * | rename Remediation.Recommendation.Text as Remediation | table dest Title ProductArn Description FirstObservedAt RecordState Remediation
|
||||
search = sourcetype="aws:securityhub:firehose" "findings{}.Resources{}.Type"=AWSEC2Instance | rex field=findings{}.Resources{}.Id .*instance/(?<instance>.*)| rename instance as dest| search dest = $dest$ |rename findings{}.* as * | rename Remediation.Recommendation.Text as Remediation | table dest Title ProductArn Description FirstObservedAt RecordState Remediation
|
||||
|
||||
[ESCU - AWS Investigate User Activities By ARN - Response Task]
|
||||
action.escu = 0
|
||||
action.escu.enabled = 1
|
||||
action.escu.search_type = investigative
|
||||
action.escu.full_search_name = ESCU - AWS Investigate User Activities By ARN - Response Task
|
||||
description = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
description = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
action.escu.creation_date = 2019-04-30
|
||||
action.escu.modification_date = 2019-04-30
|
||||
action.escu.analytic_story = ["AWS Cryptomining", "AWS Network ACL Activity", "Cloud Cryptomining", "Command and Control", "Suspicious AWS EC2 Activities", "Suspicious AWS Login Activities", "Suspicious AWS S3 Activities", "Suspicious AWS Traffic", "Unusual AWS EC2 Modifications", "Suspicious Cloud User Activities", "AWS Suspicious Provisioning Activities", "Suspicious Cloud Instance Activities", "AWS Security Hub Alerts"]
|
||||
@@ -2529,7 +2529,7 @@ action.escu.earliest_time_offset = 3600
|
||||
action.escu.latest_time_offset = 86400
|
||||
action.escu.providing_technologies = []
|
||||
action.escu.data_models = []
|
||||
action.escu.eli5 = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
action.escu.eli5 = This search lists all the logged CloudTrail activities by a specific user ARN and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and all the user's identity information.
|
||||
action.escu.how_to_implement = none
|
||||
action.escu.known_false_positives = None at this time
|
||||
disabled = true
|
||||
@@ -2640,7 +2640,7 @@ action.escu.known_false_positives = None at this time
|
||||
disabled = true
|
||||
schedule_window = auto
|
||||
is_visible = false
|
||||
search = sourcetype="aws:cloudwatchlogs:eks" |rename sourceIPs{} as src_ip |search src_ip=$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(user.username) values(requestURI) values(verb) values(userAgent) by source annotations.authorization.k8s.io/decision src_ip
|
||||
search = sourcetype="aws:cloudwatchlogs:eks" |rename sourceIPs{} as src_ip |search src_ip=$src_ip$ | stats count min(_time) as firstTime max(_time) as lastTime values(user.username) values(requestURI) values(verb) values(userAgent) by source annotations.authorization.k8s.io/decision src_ip
|
||||
|
||||
[ESCU - Get All AWS Activity From City - Response Task]
|
||||
action.escu = 0
|
||||
@@ -2745,7 +2745,7 @@ action.escu.known_false_positives = None at this time
|
||||
disabled = true
|
||||
schedule_window = auto
|
||||
is_visible = false
|
||||
search = | search sourcetype="aws:description" source="*:ec2_instances"| dedup id sortby -_time |rename id as instanceId| search instanceId=$instanceId$ | spath output=tags path=tags | eval tags=mvzip(key,value," = "), ip_address=if((ip_address == "null"),private_ip_address,ip_address) | table id, tags.Name, aws_account_id, placement, instance_type, key_name, ip_address, launch_time, state, vpc_id, subnet_id, tags | rename aws_account_id as "Account ID", id as ID, instance_type as Type, ip_address as "IP Address", key_name as "Key Pair", launch_time as "Launch Time", placement as "Availability Zone", state as State, subnet_id as Subnet, "tags.Name" as Name, vpc_id as VPC
|
||||
search = | search sourcetype="aws:description" source="*:ec2_instances"| dedup id sortby -_time |rename id as instanceId| search instanceId=$instanceId$ | spath output=tags path=tags | eval tags=mvzip(key,value," = "), ip_address=if((ip_address == "null"),private_ip_address,ip_address) | table id, tags.Name, aws_account_id, placement, instance_type, key_name, ip_address, launch_time, state, vpc_id, subnet_id, tags | rename aws_account_id as "Account ID", id as ID, instance_type as Type, ip_address as "IP Address", key_name as "Key Pair", launch_time as "Launch Time", placement as "Availability Zone", state as State, subnet_id as Subnet, "tags.Name" as Name, vpc_id as VPC
|
||||
|
||||
[ESCU - Get EC2 Launch Details - Response Task]
|
||||
action.escu = 0
|
||||
@@ -2773,7 +2773,7 @@ action.escu = 0
|
||||
action.escu.enabled = 1
|
||||
action.escu.search_type = investigative
|
||||
action.escu.full_search_name = ESCU - Investigate AWS User Activities by user field - Response Task
|
||||
description = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
description = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
action.escu.creation_date = 2018-03-12
|
||||
action.escu.modification_date = 2018-03-12
|
||||
action.escu.analytic_story = ["AWS User Monitoring", "Suspicious Cloud Authentication Activities"]
|
||||
@@ -2781,7 +2781,7 @@ action.escu.earliest_time_offset = 3600
|
||||
action.escu.latest_time_offset = 86400
|
||||
action.escu.providing_technologies = []
|
||||
action.escu.data_models = []
|
||||
action.escu.eli5 = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
action.escu.eli5 = This search lists all the logged CloudTrail activities by a specific user and will create a table containing the source of the user, the region of the activity, the name and type of the event, the action taken, and the user's identity information.
|
||||
action.escu.how_to_implement = none
|
||||
action.escu.known_false_positives = None at this time
|
||||
disabled = true
|
||||
|
||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
+23
-23
@@ -1,6 +1,6 @@
|
||||
#############
|
||||
# Automatically generated by generator.py in splunk/security_content
|
||||
# On Date: 2021-08-10T18:44:23 UTC
|
||||
# On Date: 2021-08-12T23:59:03 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
@@ -50,8 +50,8 @@ maintainers = [{"company": "Splunk", "email": "-", "name": "David Dorsey"}]
|
||||
spec_version = 3
|
||||
searches = ["ESCU - Abnormally High Number Of Cloud Instances Launched - Rule", "ESCU - Cloud Compute Instance Created By Previously Unseen User - Rule", "ESCU - Cloud Compute Instance Created In Previously Unused Region - Rule", "ESCU - Cloud Compute Instance Created With Previously Unseen Image - Rule", "ESCU - Cloud Compute Instance Created With Previously Unseen Instance Type - Rule", "ESCU - AWS Investigate Security Hub alerts by dest - Response Task", "ESCU - AWS Investigate User Activities By ARN - Response Task", "ESCU - Get EC2 Instance Details by instanceId - Response Task", "ESCU - Get EC2 Launch Details - Response Task", "ESCU - Investigate AWS activities via region name - Response Task"]
|
||||
description = Monitor your cloud compute instances for activities related to cryptojacking/cryptomining. New instances that originate from previously unseen regions, users who launch abnormally high numbers of instances, or compute instances started by previously unseen users are just a few examples of potentially malicious behavior.
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
narrative = Cryptomining is an intentionally difficult, resource-intensive business. Its complexity was designed into the process to ensure that the number of blocks mined each day would remain steady. So, it's par for the course that ambitious, but unscrupulous, miners make amassing the computing power of large enterprises--a practice known as cryptojacking--a top priority. \
|
||||
Cryptojacking has attracted an increasing amount of media attention since its explosion in popularity in the fall of 2017. The attacks have moved from in-browser exploits and mobile phones to enterprise cloud services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Azure. It's difficult to determine exactly how widespread the practice has become, since bad actors continually evolve their ability to escape detection, including employing unlisted endpoints, moderating their CPU usage, and hiding the mining pool's IP address behind a free CDN. \
|
||||
When malicious miners appropriate a cloud instance, often spinning up hundreds of new instances, the costs can become astronomical for the account holder. So it is critically important to monitor your systems for suspicious activities that could indicate that your network has been infiltrated. \
|
||||
This Analytic Story is focused on detecting suspicious new instances in your cloud environment to help prevent cryptominers from gaining a foothold. It contains detection searches that will detect when a previously unused instance type or AMI is used. It also contains support searches to build lookup files to ensure proper execution of the detection searches.
|
||||
|
||||
@@ -63,7 +63,7 @@ references = ["https://www.cyberark.com/resources/threat-research-blog/golden-sa
|
||||
maintainers = [{"company": "Splunk", "email": "-", "name": "Rod Soto"}]
|
||||
spec_version = 3
|
||||
searches = ["ESCU - AWS SAML Access by Provider User and Principal - Rule", "ESCU - AWS SAML Update identity provider - Rule", "ESCU - O365 Add App Role Assignment Grant User - Rule", "ESCU - O365 Added Service Principal - Rule", "ESCU - O365 Excessive SSO logon errors - Rule", "ESCU - O365 New Federated Domain Added - Rule"]
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
description = This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
narrative = This story is composed of detection searches based on endpoint that addresses the use of Mimikatz, Escalation of Privileges and Abnormal processes that may indicate the extraction of Federated directory objects such as passwords, Oauth2 tokens, certificates and keys. Cloud environment (AWS, Azure) related events are also addressed in specific cloud environment detection searches.
|
||||
|
||||
[analytic_story://Office 365 Detections]
|
||||
@@ -109,7 +109,7 @@ spec_version = 3
|
||||
searches = ["ESCU - Detect New Open S3 Buckets over AWS CLI - Rule", "ESCU - Detect New Open S3 buckets - Rule", "ESCU - AWS Investigate User Activities By ARN - Response Task", "ESCU - AWS S3 Bucket details via bucketName - Response Task", "ESCU - Get All AWS Activity From IP Address - Response Task", "ESCU - Investigate AWS activities via region name - Response Task"]
|
||||
description = Use the searches in this Analytic Story to monitor your AWS S3 buckets for evidence of anomalous activity and suspicious behaviors, such as detecting open S3 buckets and buckets being accessed from a new IP. The contextual and investigative searches will give you more information, when required.
|
||||
narrative = As cloud computing has exploded, so has the number of creative attacks on virtual environments. And as the number-two cloud-service provider, Amazon Web Services (AWS) has certainly had its share.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Amazon's "shared responsibility" model dictates that the company has responsibility for the environment outside of the VM and the customer is responsible for the security inside of the S3 container. As such, it's important to stay vigilant for activities that may belie suspicious behavior inside of your environment.\
|
||||
Among things to look out for are S3 access from unfamiliar locations and by unfamiliar users. Some of the searches in this Analytic Story help you detect suspicious behavior and others help you investigate more deeply, when the situation warrants.
|
||||
|
||||
[analytic_story://Suspicious Cloud Authentication Activities]
|
||||
@@ -145,7 +145,7 @@ spec_version = 3
|
||||
searches = ["ESCU - Cloud Provisioning Activity From Previously Unseen City - Rule", "ESCU - Cloud Provisioning Activity From Previously Unseen Country - Rule", "ESCU - Cloud Provisioning Activity From Previously Unseen IP Address - Rule", "ESCU - Cloud Provisioning Activity From Previously Unseen Region - Rule"]
|
||||
description = Monitor your cloud infrastructure provisioning activities for behaviors originating from unfamiliar or unusual locations. These behaviors may indicate that malicious activities are occurring somewhere within your cloud environment.
|
||||
narrative = Because most enterprise cloud infrastructure activities originate from familiar geographic locations, monitoring for activity from unknown or unusual regions is an important security measure. This indicator can be especially useful in environments where it is impossible to add specific IPs to an allow list because they vary.\
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
This Analytic Story was designed to provide you with flexibility in the precision you employ in specifying legitimate geographic regions. It can be as specific as an IP address or a city, or as broad as a region (think state) or an entire country. By determining how precise you want your geographical locations to be and monitoring for new locations that haven't previously accessed your environment, you can detect adversaries as they begin to probe your environment. Since there are legitimate reasons for activities from unfamiliar locations, this is not a standalone indicator. Nevertheless, location can be a relevant piece of information that you may wish to investigate further.
|
||||
|
||||
[analytic_story://Suspicious Cloud User Activities]
|
||||
category = Cloud Security
|
||||
@@ -156,7 +156,7 @@ maintainers = [{"company": "Splunk", "email": "-", "name": "David Dorsey"}]
|
||||
spec_version = 3
|
||||
searches = ["ESCU - AWS IAM AccessDenied Discovery Events - Rule", "ESCU - Abnormally High Number Of Cloud Infrastructure API Calls - Rule", "ESCU - Abnormally High Number Of Cloud Security Group API Calls - Rule", "ESCU - Cloud API Calls From Previously Unseen User Roles - Rule", "ESCU - AWS Investigate User Activities By ARN - Response Task"]
|
||||
description = Detect and investigate suspicious activities by users and roles in your cloud environments.
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
narrative = It seems obvious that it is critical to monitor and control the users who have access to your cloud infrastructure. Nevertheless, it's all too common for enterprises to lose track of ad-hoc accounts, leaving their servers vulnerable to attack. In fact, this was the very oversight that led to Tesla's cryptojacking attack in February, 2018.\
|
||||
In addition to compromising the security of your data, when bad actors leverage your compute resources, it can incur monumental costs, since you will be billed for any new instances and increased bandwidth usage.
|
||||
|
||||
### END STORIES ###
|
||||
@@ -200,7 +200,7 @@ confidence = medium
|
||||
explanation = This search looks for AssumeRole events where an IAM role in a different account is requested for the first time.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen AWS Cross Account Activity - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen AWS Cross Account Activity - Update` to keep this table up to date and to age out old data. You can also provide additional filtering for this search by customizing the `aws_cross_account_activity_from_previously_unseen_account_filter` macro.
|
||||
annotations = {"cis20": ["CIS 16"], "kill_chain_phases": ["Actions on Objectives"], "nist": ["PR.AC", "PR.DS", "DE.AE"]}
|
||||
known_false_positives = Using multiple AWS accounts and roles is perfectly valid behavior. It's suspicious when an account requests privileges of an account it hasn't before. You should validate with the account owner that this is a legitimate request.
|
||||
known_false_positives = Using multiple AWS accounts and roles is perfectly valid behavior. It's suspicious when an account requests privileges of an account it hasn't before. You should validate with the account owner that this is a legitimate request.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - AWS Detect Users creating keys with encrypt policy without MFA - Rule]
|
||||
@@ -290,7 +290,7 @@ confidence = medium
|
||||
explanation = The search looks for AWS CloudTrail events to detect if any network ACLs were created with all the ports open to a specified CIDR.
|
||||
how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS, version 4.4.0 or later, and configure your AWS CloudTrail inputs.
|
||||
annotations = {"cis20": ["CIS 11"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1562.007"], "nist": ["DE.DP", "DE.AE"]}
|
||||
known_false_positives = It's possible that an admin has created this ACL with all ports open for some legitimate purpose however, this should be scoped and not allowed in production environment.
|
||||
known_false_positives = It's possible that an admin has created this ACL with all ports open for some legitimate purpose however, this should be scoped and not allowed in production environment.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - AWS Network Access Control List Deleted - Rule]
|
||||
@@ -300,7 +300,7 @@ confidence = medium
|
||||
explanation = Enforcing network-access controls is one of the defensive mechanisms used by cloud administrators to restrict access to a cloud instance. After the attacker has gained control of the AWS console by compromising an admin account, they can delete a network ACL and gain access to the instance from anywhere. This search will query the AWS CloudTrail logs to detect users deleting network ACLs.
|
||||
how_to_implement = You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on for AWS (version 4.4.0 or later), then configure your AWS CloudTrail inputs.
|
||||
annotations = {"cis20": ["CIS 11"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1562.007"], "nist": ["DE.DP", "DE.AE"]}
|
||||
known_false_positives = It's possible that a user has legitimately deleted a network ACL.
|
||||
known_false_positives = It's possible that a user has legitimately deleted a network ACL.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - AWS SAML Access by Provider User and Principal - Rule]
|
||||
@@ -398,9 +398,9 @@ type = detection
|
||||
asset_type = Cloud Compute Instance
|
||||
confidence = medium
|
||||
explanation = This search looks for cloud compute instances created by users who have not created them before.
|
||||
how_to_implement = You must be ingesting the appropriate cloud-infrastructure logs Run the "Previously Seen Cloud Compute Creations By User" support search to create of baseline of previously seen users.
|
||||
how_to_implement = You must be ingesting the appropriate cloud-infrastructure logs Run the "Previously Seen Cloud Compute Creations By User" support search to create of baseline of previously seen users.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078.004"], "nist": ["ID.AM"]}
|
||||
known_false_positives = It's possible that a user will start to create compute instances for the first time, for any number of reasons. Verify with the user launching instances that this is the intended behavior.
|
||||
known_false_positives = It's possible that a user will start to create compute instances for the first time, for any number of reasons. Verify with the user launching instances that this is the intended behavior.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Cloud Compute Instance Created In Previously Unused Region - Rule]
|
||||
@@ -410,7 +410,7 @@ confidence = medium
|
||||
explanation = This search looks at cloud-infrastructure events where an instance is created in any region within the last hour and then compares it to a lookup file of previously seen regions where instances have been created.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Regions - Initial` to build the initial table of images observed and times. You must also enable the second baseline search `Previously Seen Cloud Regions - Update` to keep this table up to date and to age out old data. You can also provide additional filtering for this search by customizing the `cloud_compute_instance_created_in_previously_unused_region_filter` macro.
|
||||
annotations = {"cis20": ["CIS 12"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1535"], "nist": ["DE.DP", "DE.AE"]}
|
||||
known_false_positives = It's possible that a user has unknowingly started an instance in a new region. Please verify that this activity is legitimate.
|
||||
known_false_positives = It's possible that a user has unknowingly started an instance in a new region. Please verify that this activity is legitimate.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Cloud Compute Instance Created With Previously Unseen Image - Rule]
|
||||
@@ -438,9 +438,9 @@ type = detection
|
||||
asset_type = AWS Instance
|
||||
confidence = medium
|
||||
explanation = This search looks for cloud instances being modified by users who have not previously modified them.
|
||||
how_to_implement = This search has a dependency on other searches to create and update a baseline of users observed to be associated with this activity. The search "Previously Seen Cloud Instance Modifications By User - Update" should be enabled for this detection to properly work.
|
||||
how_to_implement = This search has a dependency on other searches to create and update a baseline of users observed to be associated with this activity. The search "Previously Seen Cloud Instance Modifications By User - Update" should be enabled for this detection to properly work.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078.004"], "nist": ["ID.AM"]}
|
||||
known_false_positives = It's possible that a new user will start to modify EC2 instances when they haven't before for any number of reasons. Verify with the user that is modifying instances that this is the intended behavior.
|
||||
known_false_positives = It's possible that a new user will start to modify EC2 instances when they haven't before for any number of reasons. Verify with the user that is modifying instances that this is the intended behavior.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Cloud Provisioning Activity From Previously Unseen City - Rule]
|
||||
@@ -450,7 +450,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen cities. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_city_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -461,7 +461,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen countries. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_country_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -472,7 +472,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen IP addresses. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_ip_address_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -483,7 +483,7 @@ confidence = medium
|
||||
explanation = This search looks for cloud provisioning activities from previously unseen regions. Provisioning activities are defined broadly as any event that runs or creates something.
|
||||
how_to_implement = You must be ingesting your cloud infrastructure logs from your cloud provider. You should run the baseline search `Previously Seen Cloud Provisioning Activity Sources - Initial` to build the initial table of source IP address, geographic locations, and times. You must also enable the second baseline search `Previously Seen Cloud Provisioning Activity Sources - Update` to keep this table up to date and to age out old data. You can adjust the time window for this search by updating the `previously_unseen_cloud_provisioning_activity_window` macro. You can also provide additional filtering for this search by customizing the `cloud_provisioning_activity_from_previously_unseen_region_filter` macro.
|
||||
annotations = {"cis20": ["CIS 1"], "mitre_attack": ["T1078"], "nist": ["ID.AM"]}
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
known_false_positives = This is a strictly behavioral search, so we define "false positive" slightly differently. Every time this fires, it will accurately reflect the first occurrence in the time period you're searching within, plus what is stored in the cache feature. But while there are really no "false positives" in a traditional sense, there is definitely lots of noise.\
|
||||
This search will fire any time a new IP address is seen in the **GeoIP** database for any kind of provisioning activity. If you typically do all provisioning from tools inside of your country, there should be few false positives. If you are located in countries where the free version of **MaxMind GeoIP** that ships by default with Splunk has weak resolution (particularly small countries in less economically powerful regions), this may be much less valuable to you.
|
||||
providing_technologies = []
|
||||
|
||||
@@ -534,7 +534,7 @@ confidence = medium
|
||||
explanation = This search looks for AWS CloudTrail events where a user has created an open/public S3 bucket over the aws cli.
|
||||
how_to_implement =
|
||||
annotations = {"cis20": ["CIS 13"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1530"], "nist": ["PR.DS", "PR.AC", "DE.CM"]}
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Detect New Open S3 buckets - Rule]
|
||||
@@ -544,7 +544,7 @@ confidence = medium
|
||||
explanation = This search looks for AWS CloudTrail events where a user has created an open/public S3 bucket.
|
||||
how_to_implement = You must install the AWS App for Splunk.
|
||||
annotations = {"cis20": ["CIS 13"], "kill_chain_phases": ["Actions on Objectives"], "mitre_attack": ["T1530"], "nist": ["PR.DS", "PR.AC", "DE.CM"]}
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
known_false_positives = While this search has no known false positives, it is possible that an AWS admin has legitimately created a public bucket for a specific purpose. That said, AWS strongly advises against granting full control to the "All Users" group.
|
||||
providing_technologies = []
|
||||
|
||||
[savedsearch://ESCU - Detect Spike in AWS Security Hub Alerts for EC2 Instance - Rule]
|
||||
@@ -934,14 +934,14 @@ providing_technologies = none
|
||||
|
||||
[savedsearch://ESCU - Previously Seen Cloud Regions - Initial]
|
||||
type = support
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
known_false_positives = not defined
|
||||
providing_technologies = none
|
||||
|
||||
[savedsearch://ESCU - Previously Seen Cloud Regions - Update]
|
||||
type = support
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
explanation = This search looks for cloud compute events where a compute instance is started and creates a baseline of most recent time, `lastTime` and the first time `firstTime` we've seen this region in our dataset grouped by the region for the last 30 days
|
||||
how_to_implement = You must be ingesting the approrpiate cloud infrastructure logs and have the Security Research cloud data model installed.
|
||||
known_false_positives = not defined
|
||||
providing_technologies = none
|
||||
|
||||
+2044
-846
File diff suppressed because it is too large
Load Diff
+1954
-847
File diff suppressed because it is too large
Load Diff
+411408
-407004
File diff suppressed because it is too large
Load Diff
+7707
-6239
File diff suppressed because it is too large
Load Diff
+276352
-271948
File diff suppressed because it is too large
Load Diff
+6372
-6005
File diff suppressed because it is too large
Load Diff
+127
-8
@@ -51,7 +51,7 @@ _version_: 1
|
||||
---
|
||||
|
||||
### DNS Amplification Attacks
|
||||
DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
|
||||
- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**: Network_Resolution
|
||||
@@ -1257,7 +1257,7 @@ _version_: 2
|
||||
---
|
||||
|
||||
### Malicious PowerShell
|
||||
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.
|
||||
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.
|
||||
|
||||
- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**: Endpoint
|
||||
@@ -1770,7 +1770,7 @@ _version_: 1
|
||||
---
|
||||
|
||||
### Suspicious Command-Line Executions
|
||||
Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
|
||||
- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**: Endpoint
|
||||
@@ -3388,7 +3388,7 @@ _version_: 1
|
||||
---
|
||||
|
||||
### AWS User Monitoring
|
||||
Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
|
||||
- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**:
|
||||
@@ -3473,7 +3473,7 @@ _version_: 1
|
||||
---
|
||||
|
||||
### Cloud Federated Credential Abuse
|
||||
This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
|
||||
- **Product**: Splunk Security Analytics for AWS, Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**: Endpoint
|
||||
@@ -3542,7 +3542,7 @@ _version_: 1
|
||||
---
|
||||
|
||||
### Container Implantation Monitoring and Investigation
|
||||
Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
|
||||
- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**:
|
||||
@@ -4667,6 +4667,116 @@ _version_: 2
|
||||
|
||||
---
|
||||
|
||||
### Icedid
|
||||
Leverage searches that allow you to detect and investigate unusual activities that might relate to the IcedID banking trojan, including looking for file writes associated with its payload, process injection, shellcode execution and data collection.
|
||||
|
||||
- **Product**: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
- **Datamodel**: Endpoint
|
||||
- **ATT&CK**: [T1005](https://attack.mitre.org/techniques/T1005/), [T1053](https://attack.mitre.org/techniques/T1053/), [T1053.005](https://attack.mitre.org/techniques/T1053.005/), [T1055](https://attack.mitre.org/techniques/T1055/), [T1059](https://attack.mitre.org/techniques/T1059/), [T1087.002](https://attack.mitre.org/techniques/T1087.002/), [T1112](https://attack.mitre.org/techniques/T1112/), [T1204.002](https://attack.mitre.org/techniques/T1204.002/), [T1218.005](https://attack.mitre.org/techniques/T1218.005/), [T1218.010](https://attack.mitre.org/techniques/T1218.010/), [T1218.011](https://attack.mitre.org/techniques/T1218.011/), [T1482](https://attack.mitre.org/techniques/T1482/), [T1547.001](https://attack.mitre.org/techniques/T1547.001/), [T1548.002](https://attack.mitre.org/techniques/T1548.002/), [T1560.001](https://attack.mitre.org/techniques/T1560.001/), [T1566.001](https://attack.mitre.org/techniques/T1566.001/)
|
||||
- **Last Updated**: 2021-07-29
|
||||
|
||||
<details>
|
||||
<summary>details</summary>
|
||||
|
||||
#### Detection Profile
|
||||
|
||||
* [Account Discovery With Net App](detections.md#account-discovery-with-net-app)
|
||||
|
||||
* [CHCP Command Execution](detections.md#chcp-command-execution)
|
||||
|
||||
* [Create Remote Thread In Shell Application](detections.md#create-remote-thread-in-shell-application)
|
||||
|
||||
* [Drop IcedID License dat](detections.md#drop-icedid-license-dat)
|
||||
|
||||
* [Eventvwr UAC Bypass](detections.md#eventvwr-uac-bypass)
|
||||
|
||||
* [FodHelper UAC Bypass](detections.md#fodhelper-uac-bypass)
|
||||
|
||||
* [IcedID Exfiltrated Archived File Creation](detections.md#icedid-exfiltrated-archived-file-creation)
|
||||
|
||||
* [Mshta spawning Rundll32 OR Regsvr32 Process](detections.md#mshta-spawning-rundll32-or-regsvr32-process)
|
||||
|
||||
* [NLTest Domain Trust Discovery](detections.md#nltest-domain-trust-discovery)
|
||||
|
||||
* [Office Application Spawn Regsvr32 process](detections.md#office-application-spawn-regsvr32-process)
|
||||
|
||||
* [Office Application Spawn rundll32 process](detections.md#office-application-spawn-rundll32-process)
|
||||
|
||||
* [Office Document Executing Macro Code](detections.md#office-document-executing-macro-code)
|
||||
|
||||
* [Office Product Spawning MSHTA](detections.md#office-product-spawning-mshta)
|
||||
|
||||
* [Registry Keys Used For Persistence](detections.md#registry-keys-used-for-persistence)
|
||||
|
||||
* [Rundll32 Create Remote Thread To A Process](detections.md#rundll32-create-remote-thread-to-a-process)
|
||||
|
||||
* [Rundll32 CreateRemoteThread In Browser](detections.md#rundll32-createremotethread-in-browser)
|
||||
|
||||
* [Rundll32 DNSQuery](detections.md#rundll32-dnsquery)
|
||||
|
||||
* [Rundll32 Process Creating Exe Dll Files](detections.md#rundll32-process-creating-exe-dll-files)
|
||||
|
||||
* [Schedule Task with Rundll32 Command Trigger](detections.md#schedule-task-with-rundll32-command-trigger)
|
||||
|
||||
* [Sqlite Module In Temp Folder](detections.md#sqlite-module-in-temp-folder)
|
||||
|
||||
* [Suspicious IcedID Regsvr32 Cmdline](detections.md#suspicious-icedid-regsvr32-cmdline)
|
||||
|
||||
* [Suspicious IcedID Rundll32 Cmdline](detections.md#suspicious-icedid-rundll32-cmdline)
|
||||
|
||||
* [Suspicious Rundll32 PluginInit](detections.md#suspicious-rundll32-plugininit)
|
||||
|
||||
* [WinEvent Scheduled Task Created Within Public Path](detections.md#winevent-scheduled-task-created-within-public-path)
|
||||
|
||||
|
||||
#### ATT&CK
|
||||
|
||||
| ID | Technique | Tactic |
|
||||
| ----------- | ----------- |--------------|
|
||||
| T1087.002 | Domain Account | Discovery |
|
||||
| T1562.001 | Disable or Modify Tools | Defense Evasion |
|
||||
| T1059 | Command and Scripting Interpreter | Execution |
|
||||
| T1055 | Process Injection | Defense Evasion, Privilege Escalation |
|
||||
| T1204.002 | Malicious File | Execution |
|
||||
| T1548.002 | Bypass User Account Control | Privilege Escalation, Defense Evasion |
|
||||
| T1112 | Modify Registry | Defense Evasion |
|
||||
| T1560.001 | Archive via Utility | Collection |
|
||||
| T1218.005 | Mshta | Defense Evasion |
|
||||
| T1482 | Domain Trust Discovery | Discovery |
|
||||
| T1566.001 | Spearphishing Attachment | Initial Access |
|
||||
| T1547.001 | Registry Run Keys / Startup Folder | Persistence, Privilege Escalation |
|
||||
| T1218.011 | Rundll32 | Defense Evasion |
|
||||
| T1053 | Scheduled Task/Job | Execution, Persistence, Privilege Escalation |
|
||||
| T1005 | Data from Local System | Collection |
|
||||
| T1218.010 | Regsvr32 | Defense Evasion |
|
||||
| T1590.005 | IP Addresses | Reconnaissance |
|
||||
| T1027 | Obfuscated Files or Information | Defense Evasion |
|
||||
| T1053.005 | Scheduled Task | Execution, Persistence, Privilege Escalation |
|
||||
| T1021.002 | SMB/Windows Admin Shares | Lateral Movement |
|
||||
|
||||
#### Kill Chain Phase
|
||||
|
||||
* Actions on Objectives
|
||||
|
||||
* Exploitation
|
||||
|
||||
* Privilege Escalation
|
||||
|
||||
* Reconnaissance
|
||||
|
||||
|
||||
#### Reference
|
||||
|
||||
* https://threatpost.com/icedid-banking-trojan-surges-emotet/165314/
|
||||
|
||||
* https://app.any.run/tasks/48414a33-3d66-4a46-afe5-c2003bb55ccf/
|
||||
|
||||
|
||||
_version_: 1
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
### Orangeworm Attack Group
|
||||
Detect activities and various techniques associated with the Orangeworm Attack Group, a group that frequently targets the healthcare industry.
|
||||
|
||||
@@ -5274,14 +5384,23 @@ Leverage searches that allow you to detect and investigate unusual activities th
|
||||
| ----------- | ----------- |--------------|
|
||||
| T1087.002 | Domain Account | Discovery |
|
||||
| T1562.001 | Disable or Modify Tools | Defense Evasion |
|
||||
| T1059 | Command and Scripting Interpreter | Execution |
|
||||
| T1055 | Process Injection | Defense Evasion, Privilege Escalation |
|
||||
| T1204.002 | Malicious File | Execution |
|
||||
| T1548.002 | Bypass User Account Control | Privilege Escalation, Defense Evasion |
|
||||
| T1112 | Modify Registry | Defense Evasion |
|
||||
| T1560.001 | Archive via Utility | Collection |
|
||||
| T1218.005 | Mshta | Defense Evasion |
|
||||
| T1482 | Domain Trust Discovery | Discovery |
|
||||
| T1566.001 | Spearphishing Attachment | Initial Access |
|
||||
| T1053 | Scheduled Task/Job | Execution, Persistence, Privilege Escalation |
|
||||
| T1547.001 | Registry Run Keys / Startup Folder | Persistence, Privilege Escalation |
|
||||
| T1218.011 | Rundll32 | Defense Evasion |
|
||||
| T1053 | Scheduled Task/Job | Execution, Persistence, Privilege Escalation |
|
||||
| T1005 | Data from Local System | Collection |
|
||||
| T1218.010 | Regsvr32 | Defense Evasion |
|
||||
| T1590.005 | IP Addresses | Reconnaissance |
|
||||
| T1027 | Obfuscated Files or Information | Defense Evasion |
|
||||
| T1059 | Command and Scripting Interpreter | Execution |
|
||||
| T1053.005 | Scheduled Task | Execution, Persistence, Privilege Escalation |
|
||||
| T1021.002 | SMB/Windows Admin Shares | Lateral Movement |
|
||||
|
||||
#### Kill Chain Phase
|
||||
|
||||
+224
-13
@@ -47,7 +47,7 @@ Detect and investigate activity that may indicate that an adversary is using fau
|
||||
----
|
||||
|
||||
===Dns amplification attacks===
|
||||
DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
DNS poses a serious threat as a Denial of Service (DOS) amplifier, if it responds to `ANY` queries. This Analytic Story can help you detect attackers who may be abusing your company's DNS infrastructure to launch amplification attacks, causing Denial of Service to other victims.
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''': Network_Resolution
|
||||
@@ -1712,7 +1712,7 @@ Detect and investigate tactics, techniques, and procedures around how attackers
|
||||
----
|
||||
|
||||
===Malicious powershell===
|
||||
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.
|
||||
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.
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''': Endpoint
|
||||
@@ -2424,7 +2424,7 @@ Detect signs of malicious payloads that may indicate that your environment has b
|
||||
----
|
||||
|
||||
===Suspicious command-line executions===
|
||||
Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
Leveraging the Windows command-line interface (CLI) is one of the most common attack techniques--one that is also detailed in the MITRE ATT&CK framework. Use this Analytic Story to help you identify unusual or suspicious use of the CLI on Windows systems.
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''': Endpoint
|
||||
@@ -4541,7 +4541,7 @@ This story is focused around detecting Security Hub alerts generated from AWS
|
||||
----
|
||||
|
||||
===Aws user monitoring===
|
||||
Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
Detect and investigate dormant user accounts for your AWS environment that have become active again. Because inactive and ad-hoc accounts are common attack targets, it's critical to enable governance within your environment.
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''':
|
||||
@@ -4645,7 +4645,7 @@ Monitor your cloud compute instances for activities related to cryptojacking/cry
|
||||
----
|
||||
|
||||
===Cloud federated credential abuse===
|
||||
This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
This analytical story addresses events that indicate abuse of cloud federated credentials. These credentials are usually extracted from endpoint desktop or servers specially those servers that provide federation services such as Windows Active Directory Federation Services. Identity Federation relies on objects such as Oauth2 tokens, cookies or SAML assertions in order to provide seamless access between cloud and perimeter environments. If these objects are either hijacked or forged then attackers will be able to pivot into victim's cloud environements.
|
||||
|
||||
* '''Product''': Splunk Security Analytics for AWS, Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''': Endpoint
|
||||
@@ -4734,7 +4734,7 @@ This analytical story addresses events that indicate abuse of cloud federated cr
|
||||
----
|
||||
|
||||
===Container implantation monitoring and investigation===
|
||||
Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
Use the searches in this story to monitor your Kubernetes registry repositories for upload, and deployment of potentially vulnerable, backdoor, or implanted containers. These searches provide information on source users, destination path, container names and repository names. The searches provide context to address Mitre T1525 which refers to container implantation upload to a company's repository either in Amazon Elastic Container Registry, Google Container Registry and Azure Container Registry.
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''':
|
||||
@@ -6175,6 +6175,181 @@ Monitor for and investigate activities, including the creation or deletion of hi
|
||||
|
||||
----
|
||||
|
||||
===Icedid===
|
||||
Leverage searches that allow you to detect and investigate unusual activities that might relate to the IcedID banking trojan, including looking for file writes associated with its payload, process injection, shellcode execution and data collection.
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''': Endpoint
|
||||
* '''ATT&CK''': [https://attack.mitre.org/techniques/T1087.002/ T1087.002], [https://attack.mitre.org/techniques/T1562.001/ T1562.001], [https://attack.mitre.org/techniques/T1059/ T1059], [https://attack.mitre.org/techniques/T1055/ T1055], [https://attack.mitre.org/techniques/T1204.002/ T1204.002], [https://attack.mitre.org/techniques/T1548.002/ T1548.002], [https://attack.mitre.org/techniques/T1112/ T1112], [https://attack.mitre.org/techniques/T1560.001/ T1560.001], [https://attack.mitre.org/techniques/T1218.005/ T1218.005], [https://attack.mitre.org/techniques/T1482/ T1482], [https://attack.mitre.org/techniques/T1566.001/ T1566.001], [https://attack.mitre.org/techniques/T1547.001/ T1547.001], [https://attack.mitre.org/techniques/T1218.011/ T1218.011], [https://attack.mitre.org/techniques/T1053/ T1053], [https://attack.mitre.org/techniques/T1005/ T1005], [https://attack.mitre.org/techniques/T1218.010/ T1218.010], [https://attack.mitre.org/techniques/T1590.005/ T1590.005], [https://attack.mitre.org/techniques/T1027/ T1027], [https://attack.mitre.org/techniques/T1053.005/ T1053.005], [https://attack.mitre.org/techniques/T1021.002/ T1021.002]
|
||||
* '''Last Updated''': 2021-07-29
|
||||
|
||||
<div class="toccolours mw-collapsible mw-collapsed">
|
||||
<div class="mw-collapsible-content">
|
||||
|
||||
====Detection Profile====
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Account_discovery_with_net_app|Account Discovery With Net App]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Chcp_command_execution|CHCP Command Execution]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Create_remote_thread_in_shell_application|Create Remote Thread In Shell Application]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Drop_icedid_license_dat|Drop IcedID License dat]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Eventvwr_uac_bypass|Eventvwr UAC Bypass]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Fodhelper_uac_bypass|FodHelper UAC Bypass]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Icedid_exfiltrated_archived_file_creation|IcedID Exfiltrated Archived File Creation]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Mshta_spawning_rundll32_or_regsvr32_process|Mshta spawning Rundll32 OR Regsvr32 Process]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Nltest_domain_trust_discovery|NLTest Domain Trust Discovery]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Office_application_spawn_regsvr32_process|Office Application Spawn Regsvr32 process]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Office_application_spawn_rundll32_process|Office Application Spawn rundll32 process]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Office_document_executing_macro_code|Office Document Executing Macro Code]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Office_product_spawning_mshta|Office Product Spawning MSHTA]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Registry_keys_used_for_persistence|Registry Keys Used For Persistence]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Rundll32_create_remote_thread_to_a_process|Rundll32 Create Remote Thread To A Process]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Rundll32_createremotethread_in_browser|Rundll32 CreateRemoteThread In Browser]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Rundll32_dnsquery|Rundll32 DNSQuery]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Rundll32_process_creating_exe_dll_files|Rundll32 Process Creating Exe Dll Files]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Schedule_task_with_rundll32_command_trigger|Schedule Task with Rundll32 Command Trigger]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Sqlite_module_in_temp_folder|Sqlite Module In Temp Folder]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Suspicious_icedid_regsvr32_cmdline|Suspicious IcedID Regsvr32 Cmdline]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Suspicious_icedid_rundll32_cmdline|Suspicious IcedID Rundll32 Cmdline]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Suspicious_rundll32_plugininit|Suspicious Rundll32 PluginInit]]
|
||||
|
||||
* [[Documentation:ESSOC:detections:Detections#Winevent_scheduled_task_created_within_public_path|WinEvent Scheduled Task Created Within Public Path]]
|
||||
|
||||
|
||||
|
||||
====ATT&CK====
|
||||
{|
|
||||
! style="text-align:left;"| ID
|
||||
! Technique
|
||||
! Tactic
|
||||
|-
|
||||
| T1087.002
|
||||
| Domain Account
|
||||
| Discovery
|
||||
|-
|
||||
| T1562.001
|
||||
| Disable or Modify Tools
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1059
|
||||
| Command and Scripting Interpreter
|
||||
| Execution
|
||||
|-
|
||||
| T1055
|
||||
| Process Injection
|
||||
| Defense Evasion, Privilege Escalation
|
||||
|-
|
||||
| T1204.002
|
||||
| Malicious File
|
||||
| Execution
|
||||
|-
|
||||
| T1548.002
|
||||
| Bypass User Account Control
|
||||
| Privilege Escalation, Defense Evasion
|
||||
|-
|
||||
| T1112
|
||||
| Modify Registry
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1560.001
|
||||
| Archive via Utility
|
||||
| Collection
|
||||
|-
|
||||
| T1218.005
|
||||
| Mshta
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1482
|
||||
| Domain Trust Discovery
|
||||
| Discovery
|
||||
|-
|
||||
| T1566.001
|
||||
| Spearphishing Attachment
|
||||
| Initial Access
|
||||
|-
|
||||
| T1547.001
|
||||
| Registry Run Keys / Startup Folder
|
||||
| Persistence, Privilege Escalation
|
||||
|-
|
||||
| T1218.011
|
||||
| Rundll32
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1053
|
||||
| Scheduled Task/Job
|
||||
| Execution, Persistence, Privilege Escalation
|
||||
|-
|
||||
| T1005
|
||||
| Data from Local System
|
||||
| Collection
|
||||
|-
|
||||
| T1218.010
|
||||
| Regsvr32
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1590.005
|
||||
| IP Addresses
|
||||
| Reconnaissance
|
||||
|-
|
||||
| T1027
|
||||
| Obfuscated Files or Information
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1053.005
|
||||
| Scheduled Task
|
||||
| Execution, Persistence, Privilege Escalation
|
||||
|-
|
||||
| T1021.002
|
||||
| SMB/Windows Admin Shares
|
||||
| Lateral Movement
|
||||
|}
|
||||
|
||||
|
||||
====Kill Chain Phase====
|
||||
|
||||
* Actions on Objectives
|
||||
|
||||
* Exploitation
|
||||
|
||||
* Privilege Escalation
|
||||
|
||||
* Reconnaissance
|
||||
|
||||
|
||||
====Reference====
|
||||
|
||||
* https://threatpost.com/icedid-banking-trojan-surges-emotet/165314/
|
||||
|
||||
* https://app.any.run/tasks/48414a33-3d66-4a46-afe5-c2003bb55ccf/
|
||||
|
||||
|
||||
''version'': 1
|
||||
</div>
|
||||
</div>
|
||||
|
||||
----
|
||||
|
||||
===Orangeworm attack group===
|
||||
Detect activities and various techniques associated with the Orangeworm Attack Group, a group that frequently targets the healthcare industry.
|
||||
|
||||
@@ -7028,7 +7203,7 @@ Leverage searches that allow you to detect and investigate unusual activities th
|
||||
|
||||
* '''Product''': Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
|
||||
* '''Datamodel''': Endpoint
|
||||
* '''ATT&CK''': [https://attack.mitre.org/techniques/T1087.002/ T1087.002], [https://attack.mitre.org/techniques/T1562.001/ T1562.001], [https://attack.mitre.org/techniques/T1055/ T1055], [https://attack.mitre.org/techniques/T1218.005/ T1218.005], [https://attack.mitre.org/techniques/T1566.001/ T1566.001], [https://attack.mitre.org/techniques/T1053/ T1053], [https://attack.mitre.org/techniques/T1218.011/ T1218.011], [https://attack.mitre.org/techniques/T1590.005/ T1590.005], [https://attack.mitre.org/techniques/T1027/ T1027], [https://attack.mitre.org/techniques/T1059/ T1059], [https://attack.mitre.org/techniques/T1021.002/ T1021.002]
|
||||
* '''ATT&CK''': [https://attack.mitre.org/techniques/T1087.002/ T1087.002], [https://attack.mitre.org/techniques/T1562.001/ T1562.001], [https://attack.mitre.org/techniques/T1059/ T1059], [https://attack.mitre.org/techniques/T1055/ T1055], [https://attack.mitre.org/techniques/T1204.002/ T1204.002], [https://attack.mitre.org/techniques/T1548.002/ T1548.002], [https://attack.mitre.org/techniques/T1112/ T1112], [https://attack.mitre.org/techniques/T1560.001/ T1560.001], [https://attack.mitre.org/techniques/T1218.005/ T1218.005], [https://attack.mitre.org/techniques/T1482/ T1482], [https://attack.mitre.org/techniques/T1566.001/ T1566.001], [https://attack.mitre.org/techniques/T1547.001/ T1547.001], [https://attack.mitre.org/techniques/T1218.011/ T1218.011], [https://attack.mitre.org/techniques/T1053/ T1053], [https://attack.mitre.org/techniques/T1005/ T1005], [https://attack.mitre.org/techniques/T1218.010/ T1218.010], [https://attack.mitre.org/techniques/T1590.005/ T1590.005], [https://attack.mitre.org/techniques/T1027/ T1027], [https://attack.mitre.org/techniques/T1053.005/ T1053.005], [https://attack.mitre.org/techniques/T1021.002/ T1021.002]
|
||||
* '''Last Updated''': 2021-04-20
|
||||
|
||||
<div class="toccolours mw-collapsible mw-collapsed">
|
||||
@@ -7082,24 +7257,60 @@ Leverage searches that allow you to detect and investigate unusual activities th
|
||||
| Disable or Modify Tools
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1059
|
||||
| Command and Scripting Interpreter
|
||||
| Execution
|
||||
|-
|
||||
| T1055
|
||||
| Process Injection
|
||||
| Defense Evasion, Privilege Escalation
|
||||
|-
|
||||
| T1204.002
|
||||
| Malicious File
|
||||
| Execution
|
||||
|-
|
||||
| T1548.002
|
||||
| Bypass User Account Control
|
||||
| Privilege Escalation, Defense Evasion
|
||||
|-
|
||||
| T1112
|
||||
| Modify Registry
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1560.001
|
||||
| Archive via Utility
|
||||
| Collection
|
||||
|-
|
||||
| T1218.005
|
||||
| Mshta
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1482
|
||||
| Domain Trust Discovery
|
||||
| Discovery
|
||||
|-
|
||||
| T1566.001
|
||||
| Spearphishing Attachment
|
||||
| Initial Access
|
||||
|-
|
||||
| T1547.001
|
||||
| Registry Run Keys / Startup Folder
|
||||
| Persistence, Privilege Escalation
|
||||
|-
|
||||
| T1218.011
|
||||
| Rundll32
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1053
|
||||
| Scheduled Task/Job
|
||||
| Execution, Persistence, Privilege Escalation
|
||||
|-
|
||||
| T1218.011
|
||||
| Rundll32
|
||||
| T1005
|
||||
| Data from Local System
|
||||
| Collection
|
||||
|-
|
||||
| T1218.010
|
||||
| Regsvr32
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1590.005
|
||||
@@ -7110,9 +7321,9 @@ Leverage searches that allow you to detect and investigate unusual activities th
|
||||
| Obfuscated Files or Information
|
||||
| Defense Evasion
|
||||
|-
|
||||
| T1059
|
||||
| Command and Scripting Interpreter
|
||||
| Execution
|
||||
| T1053.005
|
||||
| Scheduled Task
|
||||
| Execution, Persistence, Privilege Escalation
|
||||
|-
|
||||
| T1021.002
|
||||
| SMB/Windows Admin Shares
|
||||
@@ -7831,7 +8042,7 @@ In March of 2016, adversaries were seen using JexBoss--an open-source utility us
|
||||
<pre>
|
||||
#############
|
||||
# Automatically generated by doc_gen.py in https://github.com/splunk/security_content
|
||||
# On Date: 2021-08-10 18:57:16.336179 UTC
|
||||
# On Date: 2021-08-13 00:15:29.165728 UTC
|
||||
# Author: Splunk Security Research
|
||||
# Contact: research@splunk.com
|
||||
#############
|
||||
|
||||
Reference in New Issue
Block a user