mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
Branch was auto-updated.
This commit is contained in:
@@ -50,11 +50,12 @@ class GithubService:
|
||||
|
||||
# changed detections
|
||||
if file_path.startswith('detections'):
|
||||
if os.path.basename(file_path).startswith('ssa'):
|
||||
file_path_base = os.path.splitext(file_path)[0].replace('detections', 'tests') + '.test'
|
||||
file_path_new = file_path_base + '.yml'
|
||||
if file_path_new not in changed_ssa_test_files:
|
||||
changed_ssa_test_files.append(file_path_new)
|
||||
if not 'deprecated' in file_path:
|
||||
if os.path.basename(file_path).startswith('ssa'):
|
||||
file_path_base = os.path.splitext(file_path)[0].replace('detections', 'tests') + '.test'
|
||||
file_path_new = file_path_base + '.yml'
|
||||
if file_path_new not in changed_ssa_test_files:
|
||||
changed_ssa_test_files.append(file_path_new)
|
||||
|
||||
# changed CI code
|
||||
if file_path == '.gitlab-ci.yml' or file_path.startswith('bin/ssa-end-to-end-testing'):
|
||||
@@ -76,4 +77,3 @@ class GithubService:
|
||||
return changed_ssa_test_files, ci_changes
|
||||
|
||||
|
||||
|
||||
|
||||
+22
-10
@@ -17,12 +17,24 @@ from pathlib import Path
|
||||
from os import path, walk
|
||||
|
||||
|
||||
def validate_schema(REPO_PATH, type, objects, verbose):
|
||||
def validate_schema(REPO_PATH, detection_type, objects, verbose):
|
||||
#Default regex does NOT match ssa___*.yml files: "^(?!ssa___).*\.yml$"
|
||||
#The following search will match ssa___*.yml files: "^ssa___.*\.yml$"
|
||||
if detection_type.startswith("ba_"):
|
||||
filename_regex = "^ssa___.*\.yml$"
|
||||
else:
|
||||
filename_regex = "^(?!ssa___).*\.yml$"
|
||||
|
||||
|
||||
|
||||
error = False
|
||||
errors = []
|
||||
|
||||
schema_file = path.join(path.expanduser(REPO_PATH), 'spec/' + type + '.spec.json')
|
||||
schema_file = path.join(path.expanduser(REPO_PATH), 'spec/' + detection_type + '.spec.json')
|
||||
#remove the prefix if the detection type starts with ba_ so we can
|
||||
#get the files from the proper folders and proceed correctly
|
||||
if detection_type.startswith("ba_"):
|
||||
detection_type = detection_type[3:]
|
||||
|
||||
try:
|
||||
schema = json.loads(open(schema_file, 'rb').read())
|
||||
@@ -30,11 +42,10 @@ def validate_schema(REPO_PATH, type, objects, verbose):
|
||||
print("ERROR: reading schema file {0}".format(schema_file))
|
||||
|
||||
manifest_files = []
|
||||
for root, dirs, files in walk(REPO_PATH + "/" + type):
|
||||
for root, dirs, files in walk(REPO_PATH + "/" + detection_type):
|
||||
for file in files:
|
||||
if file.endswith(".yml"):
|
||||
if re.search(filename_regex, path.basename(file)) is not None:
|
||||
manifest_files.append((path.join(root, file)))
|
||||
|
||||
for manifest_file in manifest_files:
|
||||
if verbose:
|
||||
print("processing manifest {0}".format(manifest_file))
|
||||
@@ -54,13 +65,13 @@ def validate_schema(REPO_PATH, type, objects, verbose):
|
||||
errors.append("ERROR: {0} at:\n\t{1}".format(json.dumps(schema_error.message), manifest_file))
|
||||
error = True
|
||||
|
||||
if type in objects:
|
||||
objects[type].append(object)
|
||||
if detection_type in objects:
|
||||
objects[detection_type].append(object)
|
||||
else:
|
||||
arr = []
|
||||
arr.append(object)
|
||||
objects[type] = arr
|
||||
|
||||
objects[detection_type] = arr
|
||||
print("***END OF VALIDATE SCHEMA ***")
|
||||
return objects, error, errors
|
||||
|
||||
|
||||
@@ -244,7 +255,8 @@ def validate_tests(REPO_PATH, object):
|
||||
|
||||
def main(REPO_PATH, verbose):
|
||||
|
||||
validation_objects = ['macros','lookups','stories','detections','deployments', 'tests']
|
||||
validation_objects = ['macros','lookups','stories','detections', 'ba_detections','deployments', 'tests']
|
||||
|
||||
|
||||
objects = {}
|
||||
schema_error = False
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-21'
|
||||
author: Xiao Lin, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Authentication
|
||||
description: This search looks for specific authentication events from the Windows
|
||||
Security Event logs to detect potential attempts using Pass-the-Hash technique.
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-11-22'
|
||||
author: Patrick Bareiss, Splunk
|
||||
type: Anomaly
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: The following detection identifies the usage of archive tools from the command line.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event,"_time"), "string", null)),
|
||||
@@ -75,4 +75,4 @@ tags:
|
||||
- Processes.parent_process
|
||||
risk_score: 42
|
||||
security_domain: endpoint
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection indicates use of Mimikatz modules that facilitate Pass-the-Token
|
||||
attack, Golden or Silver kerberos ticket attack, and Skeleton key attack.
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Stolen credentials are applied by methods such as user impersonation,
|
||||
credential injection, spoofing of authentication processes or getting hold of critical
|
||||
accounts. This detection indicates such activities carried out by PowerSploit exploit
|
||||
@@ -87,3 +88,4 @@ tags:
|
||||
risk_score: 90
|
||||
risk_severity: high
|
||||
security_domain: endpoint
|
||||
|
||||
|
||||
@@ -4,9 +4,10 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of DSInternals modules that verify password
|
||||
strength, i.e., identify week accounts that would be easily compromised.
|
||||
strength, i.e., identify weak accounts that would be easily compromised.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-11-30'
|
||||
author: Teoderick Contreras, splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: 'The following analytic identifies Windows Service Control, `sc.exe`, attempting to delete a service. This is typically identified in parallel with other instances of service enumeration of attempts to stop a service and then delete it. Adversaries utilize this technique to terminate security services or other related services to continue
|
||||
there objective and evade detections.'
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
@@ -81,4 +81,4 @@ tags:
|
||||
- name: process_name
|
||||
type: Process
|
||||
role:
|
||||
- Child Process
|
||||
- Child Process
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-11-30'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: 'The following analytic identifies Windows Service Control, `sc.exe`, attempting to disable a service. This is typically identified in parallel with other instances of service enumeration of attempts to stop a service and then disable it. Adversaries utilize this technique to terminate security services or other related services to continue
|
||||
there objective and evade detections.'
|
||||
search: '| from read_ssa_enriched_events() | eval _datamodels=ucast(map_get(input_event,
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: 2020-6-04
|
||||
author: Jose Hernandez, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Monitor for execution of reg.exe with parameters specifying an export
|
||||
of keys that contain hashed credentials that attackers may try to crack offline.
|
||||
search: ' | from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
|
||||
@@ -5,7 +5,8 @@ version: 1
|
||||
date: '2020-10-21'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. DSInternals
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-21'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. DSInternals
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-18'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. FGdump is
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-18'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. FGdump is
|
||||
|
||||
@@ -5,7 +5,8 @@ version: 1
|
||||
date: '2020-10-18'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. PowerSploit
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-18'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. LaZagne is
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-21'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. Mimikatz
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-18'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. Native Microsoft
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-18'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. Native Microsoft
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-21'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. PowerSploit
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-11-30'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: Anomaly
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This analytic will detect a suspicious net.exe/net1.exe command-line
|
||||
to delete a user on a system. This technique may be use by an administrator for
|
||||
legitimate purposes, however this behavior has been used in the wild to impair some
|
||||
@@ -86,4 +86,4 @@ tags:
|
||||
- name: process_name
|
||||
type: Process
|
||||
role:
|
||||
- Child Process
|
||||
- Child Process
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-06-14'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This analytic identifies a potential adversary that changes the security
|
||||
permission of a specific file or directory. This technique is commonly seen in APT
|
||||
tradecraft, ransomware or coinminer scripts. This behavior is meant to evade detection
|
||||
|
||||
@@ -1,21 +1,24 @@
|
||||
name: Detect Dump LSASS Memory using comsvcs
|
||||
id: 76bb9e35-f314-4c3d-a385-83c72a13ce4e
|
||||
version: 1
|
||||
version: 2
|
||||
date: '2020-09-15'
|
||||
author: Jose Hernandez, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This search detects the memory of lsass.exe being dumped for offline
|
||||
credential theft attack.
|
||||
search: '| from read_ssa_enriched_events() | eval tenant=ucast(map_get(input_event,
|
||||
"_tenant"), "string", null), machine=ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), timestamp=parse_long(ucast(map_get(input_event, "_time"), "string",
|
||||
null)), process=lower(ucast(map_get(input_event, "process"), "string", null)), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where process_name LIKE "%rundll32.exe%" AND match_regex(process,
|
||||
/(?i)comsvcs.dll[,\s]+MiniDump/)=true | eval start_time = timestamp, end_time =
|
||||
timestamp, entities = mvappend(machine), body=create_map(["event_id", event_id,
|
||||
"process_name", process_name, "process", process]) | into write_ssa_detected_events();'
|
||||
search: '| from read_ssa_enriched_events()
|
||||
| where "Endpoint_Processes" IN(_datamodels)
|
||||
| eval dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
process_name=lower(ucast(map_get(input_event, "process_name"), "string", null)),
|
||||
timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
process=lower(ucast(map_get(input_event, "process"), "string", null)),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where process_name LIKE "%rundll32.exe%" AND match_regex(process, /(?i)comsvcs.dll[,\s]+MiniDump/)=true
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend(dest_device_id)
|
||||
| eval body=create_map(["event_id", event_id, "process_name", process_name, "process", process])
|
||||
| into write_ssa_detected_events();'
|
||||
how_to_implement: You must be ingesting endpoint data that tracks process activity,
|
||||
including Windows command line logging. You can see how we test this with [Event
|
||||
Code 4688](https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=4688a)
|
||||
|
||||
@@ -4,24 +4,28 @@ version: 2
|
||||
date: '2020-10-21'
|
||||
author: Xiao Lin, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Certificates
|
||||
description: This search detects a potential kerberoasting attack via service principal
|
||||
name requests
|
||||
search: ' | from read_ssa_enriched_events() | eval _time=map_get(input_event, "_time"),
|
||||
EventCode=map_get(input_event, "event_code"), TicketOptions=map_get(input_event,
|
||||
"ticket_options"), TicketEncryptionType=map_get(input_event, "ticket_encryption_type"),
|
||||
ServiceName=map_get(input_event, "service_name"), ServiceID=map_get(input_event,
|
||||
"service_id"), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string",
|
||||
null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null) | where EventCode="4769"
|
||||
AND TicketOptions="0x40810000" AND TicketEncryptionType="0x17" | first_time_event
|
||||
input_columns=["EventCode","TicketOptions","TicketEncryptionType","ServiceName","ServiceID"]
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
| eval _time=map_get(input_event, "_time"),
|
||||
EventCode=map_get(input_event, "event_code"),
|
||||
TicketOptions=map_get(input_event, "ticket_options"),
|
||||
TicketEncryptionType=map_get(input_event, "ticket_encryption_type"),
|
||||
ServiceName=map_get(input_event, "service_name"),
|
||||
ServiceID=map_get(input_event, "service_id"),
|
||||
dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string", null),
|
||||
dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where EventCode="4769" AND TicketOptions="0x40810000" AND TicketEncryptionType="0x17"
|
||||
| first_time_event input_columns=["EventCode","TicketOptions","TicketEncryptionType","ServiceName","ServiceID"]
|
||||
| where first_time_EventCode_TicketOptions_TicketEncryptionType_ServiceName_ServiceID
|
||||
| eval start_time=_time, end_time=_time, body=create_map(["event_id", event_id,
|
||||
"EventCode", EventCode, "ServiceName", ServiceName, "TicketOptions", TicketOptions,
|
||||
"TicketEncryptionType", TicketEncryptionType]), entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null))| select start_time, end_time, entities, body | into write_ssa_detected_events();'
|
||||
| eval start_time=_time, end_time=_time
|
||||
| eval body=create_map(["event_id", event_id, "EventCode", EventCode, "ServiceName", ServiceName,
|
||||
"TicketOptions", TicketOptions, "TicketEncryptionType", TicketEncryptionType]),
|
||||
entities = mvappend(ucast(map_get(input_event, "dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"), "string", null))
|
||||
| select start_time, end_time, entities, body | into write_ssa_detected_events();'
|
||||
how_to_implement: The test data is converted from Windows Security Event logs generated
|
||||
from Attach Range simulation and used in SPL search and extended to SPL2
|
||||
known_false_positives: Older systems that support kerberos RC4 by default NetApp may
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-12-01'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This analytic will identify a suspicious command-line that disables a
|
||||
user account using the native `net.exe` or `net1.exe` utility to Windows. This technique may used
|
||||
by the adversaries to interrupt availability of accounts and continue the impact against the organization.
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 3
|
||||
date: 2021-2-1
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
type: Anomaly
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This search looks for command-line arguments that use a `/c` parameter
|
||||
to execute a command that has not previously been seen. This is an implementation
|
||||
on SPL2 of the rule `First time seen command line argument` by @bpatel.
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-06-14'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This analytic identifies potential adversaries that modify the security
|
||||
permission of a specific file or directory. This technique is commonly seen in APT
|
||||
tradecraft, ransomware and coinminer scripts to evade detections and restrict access
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that enable illegaly
|
||||
access user content, such as key logging, audio recording, screenshots, tapping
|
||||
into http and RDP sessions, etc.
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that create accounts
|
||||
illegaly.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of DSInternals modules that enable or disable
|
||||
accounts illegaly.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that delete event
|
||||
logs.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of DSInternals modules for illegal management
|
||||
of Active Directoty elements and policies.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that enable illegal
|
||||
management of computers and Active Directory elements.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that illegaly
|
||||
elevate general privileges or ensure persistence, e.g., enable manipulation of registry,
|
||||
task scheduling, persistent WMI, access to OS objects under desired identities.
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for illegal privilege
|
||||
elevation.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for illegal control
|
||||
over services and processes, including the authentication service.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-09'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that enable illegal
|
||||
control of services and processes, such as installing or spoofing of malicious services,
|
||||
injecting malicious code in DLLs and EXEs, invoking shell code and WMI commands,
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-06-15'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: Anomaly
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This analytic identifies suspicious modification of ACL permission to
|
||||
a files or folder to make it available to everyone or to a specific user. This technique
|
||||
may be used by the adversary to evade ACLs or protected files access. This changes
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-04'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of PowerSploit modules that facilitate
|
||||
access probing with admin credentials as well as probing access to system services.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
name: Detect Prohibited Applications Spawning cmd exe
|
||||
id: c10a18cb-fd80-4ffa-a844-25026e0a0c94
|
||||
version: 2
|
||||
date: '2021-11-10'
|
||||
date: '2020-11-10'
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
type: Anomaly
|
||||
datamodel: []
|
||||
description: 'The following analytic identifies parent processes, browsers, Windows terminal applications, Office Products and Java spawning cmd.exe. By its very nature, many applications spawn cmd.exe natively or built into macros. Much of this will need to be tuned to further enhance the risk.
|
||||
During triage, review parallel process execution and identify any file modifications that may have occurred. Capture any artifacts and review further.'
|
||||
description: 'The following analytic identifies parent processes, browsers, Windows terminal applications, Office Products and Java spawning cmd.exe. By its very nature, many applications spawn cmd.exe natively or built into macros. Much of this will need to be tuned to further enhance the risk. During triage, review parallel process execution and identify any file modifications that may have occurred. Capture any artifacts and review further.'
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| where "Endpoint_Processes" IN(_datamodels)
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null))
|
||||
| eval process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
parent_process=lower(ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null)), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string", null),
|
||||
dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null)
|
||||
|
||||
| where process_name="cmd.exe" | rex field=parent_process "(?<field0>[^\\\\]+)$"
|
||||
| where field0="winword.exe" OR field0="excel.exe" OR field0="outlook.exe" OR field0="powerpnt.exe"
|
||||
OR field0="visio.exe" OR field0="mspub.exe" OR field0="acrobat.exe" OR field0="acrord32.exe"
|
||||
OR field0="chrome.exe" OR field0="iexplore.exe" OR field0="opera.exe" OR field0="firefox.exe"
|
||||
OR field0="java.exe" OR field0="powershell.exe"
|
||||
|
||||
null)), cmd_line=lower(ucast(map_get(input_event, "process"),"string", null)),
|
||||
dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string", null),
|
||||
dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
event_id=ucast(map_get(input_event,"event_id"), "string", null)
|
||||
| where process_name="cmd.exe" | rex field=parent_process "(?<ParentBaseFileName>[^\\\\]+)$"
|
||||
| where ParentBaseFileName="winword.exe" OR ParentBaseFileName="excel.exe" OR ParentBaseFileName="outlook.exe" OR ParentBaseFileName="powerpnt.exe"
|
||||
OR ParentBaseFileName="visio.exe" OR ParentBaseFileName="mspub.exe" OR ParentBaseFileName="acrobat.exe" OR ParentBaseFileName="acrord32.exe"
|
||||
OR ParentBaseFileName="iexplore.exe" OR ParentBaseFileName="opera.exe" OR ParentBaseFileName="firefox.exe"
|
||||
OR ParentBaseFileName="java.exe" OR ParentBaseFileName="powershell.exe"
|
||||
OR (ParentBaseFileName="chrome.exe" AND (cmd_line IS NULL OR (cmd_line IS NOT NULL AND NOT like(cmd_line, "%chrome-extension%"))))
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(dest_device_id,
|
||||
dest_user_id), body=create_map(["event_id", event_id, "process_name", process_name,
|
||||
"parent_process_name", parent_process]) | into write_ssa_detected_events();'
|
||||
"parent_process_name", parent_process, "cmd_line", cmd_line]) | into write_ssa_detected_events();'
|
||||
how_to_implement: In order to successfully implement this analytic, you will need endpoint process data from a EDR product or Sysmon. This search has been modified
|
||||
to process raw sysmon data from attack_range's nxlogs on DSP.
|
||||
known_false_positives: There are circumstances where an application may legitimately
|
||||
@@ -76,4 +76,4 @@ tags:
|
||||
- dest_user_id
|
||||
risk_score: 35
|
||||
risk_severity: low
|
||||
security_domain: endpoint
|
||||
security_domain: endpoint
|
||||
|
||||
@@ -4,13 +4,16 @@ version: 2
|
||||
date: '2021-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Authentication
|
||||
description: This detection identifies potential Pass the Token or Pass the Hash credential
|
||||
exploits. We detect the main side effect of these attacks, which is a transition
|
||||
from the dominant Kerberos logins to rare NTLM logins for a given user, as reported
|
||||
by a detination device.
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp= parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), dest_user= lower(ucast(map_get(input_event, "dest_user_primary_artifact"),
|
||||
search: '| from read_ssa_enriched_events()
|
||||
| where "Authentication" IN(_datamodels)
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
dest_user=lower(ucast(map_get(input_event, "dest_user_primary_artifact"),
|
||||
"string", null)), dest_user_id= ucast(map_get(input_event, "dest_user_id"), "string",
|
||||
null), dest_device_id= ucast(map_get(input_event, "dest_device_id"), "string",
|
||||
null), signature_id= lower(ucast(map_get(input_event, "signature_id"), "string",
|
||||
|
||||
@@ -4,13 +4,17 @@ version: 2
|
||||
date: '2021-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Authentication
|
||||
description: This detection identifies potential Pass the Token or Pass the Hash credential
|
||||
exploits. We detect the main side effect of these attacks, which is a transition
|
||||
from the dominant Kerberos logins to rare NTLM logins for a given user, as reported
|
||||
by an event-collecting device (i.e., a specific domain controller or an endpoint
|
||||
destination).
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp= parse_long(ucast(map_get(input_event,
|
||||
search: '| from read_ssa_enriched_events()
|
||||
| where "Authentication" IN(_datamodels)
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), dest_user= lower(ucast(map_get(input_event, "dest_user_primary_artifact"),
|
||||
"string", null)), dest_user_id= ucast(map_get(input_event, "dest_user_id"), "string",
|
||||
null), origin_device_id= ucast(map_get(input_event, "origin_device_id"), "string",
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2021-05-20'
|
||||
author: Peter Gael, Splunk; Ignacio Bermudez Corrales, Splunk
|
||||
type: Anomaly
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: An attacker may use LOLBAS tools spawned from vulnerable applications
|
||||
not typically used by system administrators. This search leverages the Splunk Streaming
|
||||
ML DSP plugin to find rare parent/child relationships. The list of application has
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of PowerSploit modules that discover opportunities
|
||||
for malicious access and persistence. Some examples include access to admin accounts,
|
||||
weak access control policies, landing paths for dropping malicious software or data
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
accounts, groups and policies that can be accessed or taken over.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for discovery of accounts
|
||||
and groups and access to them.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules for reconnaissance
|
||||
and access to elements of Active Directory infrastructure, such as domain identifiers,
|
||||
AD sites and forests, and trust relations.
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
computers, servers and domains that can be accessed or taken over.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for discovery of computers
|
||||
and servers and access to them.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
and access operating system elements, such as processes, services, registry locations,
|
||||
security packages and files.
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for discovery and access
|
||||
to network shares.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
and access network and distributed file system shares.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies access to PowerSploit modules for reconnaissance
|
||||
of connectivity.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies reconnaissance of credential stores and use
|
||||
of CryptoAPI services by Mimikatz modules.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of PowerSploit modules for assessment of
|
||||
presence of defensive tools.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
+2
-1
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of PowerSploit modules for assessment of
|
||||
privilege escalation opportunities.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-05'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for discovery of process
|
||||
or service hijacking opportunities via Microsoft Detours compatibility. Microsoft
|
||||
Detours is an open source library for intercepting, monitoring and instrumenting
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-06'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies use of Mimikatz modules for discovery and access
|
||||
to services and processes.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -5,9 +5,13 @@ date: '2021-06-21'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
description: The following analytic identifies the resizing of shadowstorage using vssadmin.exe to avoid the shadow volumes being made again. This technique is typically found used by adversaries during a ransomware event
|
||||
and a precursor to deleting the shadowstorage.
|
||||
- Endpoint_Processes
|
||||
description: The following analytics identifies the resizing of shadowstorage by ransomware
|
||||
malware to avoid the shadow volumes being made again. this technique is an alternative
|
||||
by ransomware attacker than deleting the shadowstorage which is known alert in defensive
|
||||
team. one example of ransomware that use this technique is CLOP ransomware where
|
||||
it drops a .bat file that will resize the shadowstorage to minimum size as much
|
||||
as possible
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=lower(ucast(map_get(input_event, "process"),
|
||||
"string", null)), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
|
||||
@@ -5,7 +5,7 @@ date: '2021-11-15'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: Anomaly
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This analytic will detect the execution of sdelete.exe attempting to delete potentially important files
|
||||
that may related to adversary or insider threats to destroy evidence or information sabotage. Sdelete is a SysInternals utility
|
||||
meant to securely delete files on disk. This tool is commonly used to clear tracks and artifact on the targeted host.
|
||||
@@ -84,4 +84,4 @@ tags:
|
||||
role:
|
||||
- Child Process
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies illegal setting of credentials via DSInternals
|
||||
modules.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies illegal setting of credentials via Mimikatz
|
||||
modules.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-11-03'
|
||||
author: Stanislav Miskovic, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: This detection identifies illegal setting of credentials via PowerSploit
|
||||
modules.
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 3
|
||||
date: '2020-08-25'
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
type: Anomaly
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: An attacker tries might try to use different version of a system command
|
||||
without overriding original, or they might try to avoid some detection running the
|
||||
process from a different folder. This detection checks that a list of system processes
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 2
|
||||
date: '2020-08-25'
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
type: Anomaly
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Attacker activity may compromise executing several LOLBAS applications
|
||||
in conjunction to accomplish their objectives. We are looking for more than usual
|
||||
LOLBAS applications over a window of time, by building profiles per machine.
|
||||
|
||||
@@ -4,7 +4,8 @@ version: 1
|
||||
date: '2020-10-06'
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
type: Anomaly
|
||||
datamodel: []
|
||||
datamodel:
|
||||
- Endpoint_Processes
|
||||
description: Command lines that are extremely long may be indicative of malicious
|
||||
activity on your hosts. This search leverages the Splunk Streaming ML DSP plugin
|
||||
to help identify command lines with lengths that are unusual for a given user. This
|
||||
|
||||
@@ -5,23 +5,26 @@ date: '2021-06-15'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: The wevtutil.exe application is the windows event log utility. This searches
|
||||
for wevtutil.exe with parameters for clearing the application, security, setup,
|
||||
powershell, sysmon, or system event logs.
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND like(cmd_line, "% cl %") AND (match_regex(cmd_line,
|
||||
/(?i)security/)=true OR match_regex(cmd_line, /(?i)system/)=true OR match_regex(cmd_line,
|
||||
/(?i)sysmon/)=true OR match_regex(cmd_line, /(?i)application/)=true OR match_regex(cmd_line,
|
||||
/(?i)setup/)=true OR match_regex(cmd_line, /(?i)powershell/)=true) AND process_name="wevtutil.exe"
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
search: '| from read_ssa_enriched_events()
|
||||
| where "Endpoint_Processes" IN(_datamodels)
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null),
|
||||
process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null),
|
||||
parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string", null),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line IS NOT NULL AND like(cmd_line, "% cl %")
|
||||
AND (match_regex(cmd_line, /(?i)security/)=true OR match_regex(cmd_line, /(?i)system/)=true OR match_regex(cmd_line,
|
||||
/(?i)sysmon/)=true OR match_regex(cmd_line, /(?i)application/)=true OR match_regex(cmd_line,
|
||||
/(?i)setup/)=true OR match_regex(cmd_line, /(?i)powershell/)=true) AND process_name="wevtutil.exe"
|
||||
| eval start_time=timestamp, end_time=timestamp,
|
||||
entities=mvappend(ucast(map_get(input_event, "dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"), "string", null))
|
||||
| eval body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name", process_name,
|
||||
"parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
how_to_implement: You must be ingesting data that records process activity from your
|
||||
hosts to populate the Endpoint data model in the Processes node. You must also be
|
||||
@@ -79,3 +82,4 @@ tags:
|
||||
risk_score: 63
|
||||
risk_severity: medium
|
||||
security_domain: endpoint
|
||||
|
||||
|
||||
@@ -5,21 +5,24 @@ date: '2021-06-15'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
- Endpoint
|
||||
- Endpoint_Processes
|
||||
description: This search is to detect execution of wevtutil.exe to disable logs. This
|
||||
technique was seen in several ransomware to disable the event logs to evade alerts
|
||||
and detections in compromised host.
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND like(cmd_line, "% sl %") AND like(cmd_line,
|
||||
"%/e:false%") AND process_name="wevtutil.exe" | eval start_time=timestamp, end_time=timestamp,
|
||||
entities=mvappend(ucast(map_get(input_event, "dest_user_id"), "string", null), ucast(map_get(input_event,
|
||||
"dest_device_id"), "string", null)), body=create_map(["event_id", event_id, "cmd_line",
|
||||
cmd_line, "process_name", process_name, "parent_process_name", parent_process_name,
|
||||
"process_path", process_path]) | into write_ssa_detected_events();'
|
||||
search: '| from read_ssa_enriched_events()
|
||||
| where "Endpoint_Processes" IN(_datamodels)
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null),
|
||||
process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null),
|
||||
parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string", null),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line IS NOT NULL AND like(cmd_line, "% sl %") AND like(cmd_line, "%/e:false%") AND process_name="wevtutil.exe"
|
||||
| eval start_time=timestamp, end_time=timestamp,
|
||||
entities=mvappend(ucast(map_get(input_event, "dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"), "string", null))
|
||||
| eval body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name", process_name,
|
||||
"parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
how_to_implement: You must be ingesting data that records process activity from your
|
||||
hosts to populate the Endpoint data model in the Processes node. You must also be
|
||||
ingesting logs with both the process name and command line from your endpoints.
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
{
|
||||
"$id": "http://example.com/example.json",
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"additionalProperties": true,
|
||||
"description": "schema for detections",
|
||||
"properties": {
|
||||
"author": {
|
||||
"$id": "#/properties/author",
|
||||
"default": "",
|
||||
"description": "Author of the detection",
|
||||
"examples": [
|
||||
"Patrick Bareiss, Splunk"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"date": {
|
||||
"$id": "#/properties/date",
|
||||
"default": "",
|
||||
"description": "date of creation or modification, format yyyy-mm-dd",
|
||||
"examples": [
|
||||
"2019-12-06"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"$id": "#/properties/description",
|
||||
"default": "",
|
||||
"description": "A detailed description of the detection",
|
||||
"examples": [
|
||||
"dbgcore.dll is a specifc DLL for Windows core debugging. It is used to obtain a memory dump of a process. This search detects the usage of this DLL for creating a memory dump of LSASS process. Memory dumps of the LSASS process can be created with tools such as Windows Task Manager or procdump."
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"how_to_implement": {
|
||||
"$id": "#/properties/how_to_implement",
|
||||
"default": "",
|
||||
"description": "information about how to implement. Only needed for non standard implementations.",
|
||||
"examples": [
|
||||
"This search requires Sysmon Logs and a Sysmon configuration, which includes EventCode 10 for lsass.exe."
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"$id": "#/properties/id",
|
||||
"default": "",
|
||||
"description": "UUID as unique identifier",
|
||||
"examples": [
|
||||
"fb4c31b0-13e8-4155-8aa5-24de4b8d6717"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"known_false_positives": {
|
||||
"$id": "#/properties/knwon_false_positives",
|
||||
"default": "",
|
||||
"description": "known false postives",
|
||||
"examples": [
|
||||
"Administrators can create memory dumps for debugging purposes, but memory dumps of the LSASS process would be unusual."
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"$id": "#/properties/name",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"Access LSASS Memory for Dump Creation"
|
||||
],
|
||||
"title": "Name of detection",
|
||||
"type": "string"
|
||||
},
|
||||
"references": {
|
||||
"$id": "#/properties/references",
|
||||
"additionalItems": true,
|
||||
"default": [],
|
||||
"description": "A list of references for this detection",
|
||||
"examples": [
|
||||
[
|
||||
"https://2017.zeronights.org/wp-content/uploads/materials/ZN17_Kheirkhabarov_Hunting_for_Credentials_Dumping_in_Windows_Environment.pdf"
|
||||
]
|
||||
],
|
||||
"items": {
|
||||
"$id": "#/properties/references/items",
|
||||
"default": "",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"examples": [
|
||||
"https://2017.zeronights.org/wp-content/uploads/materials/ZN17_Kheirkhabarov_Hunting_for_Credentials_Dumping_in_Windows_Environment.pdf"
|
||||
],
|
||||
"title": "The Items Schema",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"search": {
|
||||
"$id": "#/properties/search",
|
||||
"default": "",
|
||||
"description": "The Splunk search for the detection",
|
||||
"examples": [
|
||||
"`sysmon` EventCode=10 TargetImage=*lsass.exe CallTrace=*dbgcore.dll* OR CallTrace=*dbghelp.dll* | stats count min(_time) as firstTime max(_time) as lastTime by Computer, TargetImage, TargetProcessId, SourceImage, SourceProcessId | rename Computer as dest | `security_content_ctime(firstTime)`| `security_content_ctime(lastTime)` | `access_lsass_memory_for_dump_creation_filter`"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"tags": {
|
||||
"$id": "#/properties/tags",
|
||||
"additionalProperties": true,
|
||||
"default": {},
|
||||
"description": "An array of key value pairs for tagging",
|
||||
"examples": [
|
||||
{
|
||||
"analytic_story": "credential_dumping",
|
||||
"kill_chain_phases": "Action on Objectives",
|
||||
"mitre_attack_id": "T1078.004",
|
||||
"cis20": "CIS 13",
|
||||
"nist": "DE.DP",
|
||||
"security domain": "network",
|
||||
"asset_type": "AWS Instance",
|
||||
"risk_object": "user",
|
||||
"risk_object_type": "network_artifacts",
|
||||
"risk score": "60",
|
||||
"custom_key": "custom_value"
|
||||
}
|
||||
],
|
||||
"minItems": 1,
|
||||
"type": "object",
|
||||
"uniqueItems": true
|
||||
},
|
||||
"type": {
|
||||
"$id": "#/properties/type",
|
||||
"default": "",
|
||||
"description": "type of detection",
|
||||
"examples": [
|
||||
"Anomaly"
|
||||
],
|
||||
"items": {
|
||||
"enum": [
|
||||
"TTP",
|
||||
"Anomaly",
|
||||
"Hunting",
|
||||
"Baseline",
|
||||
"Investigation",
|
||||
"Correlation"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"datamodel": {
|
||||
"$id": "#/properties/datamodel",
|
||||
"default": "",
|
||||
"description": "datamodel used in the search",
|
||||
"examples": [
|
||||
"Endpoint_Processes"
|
||||
],
|
||||
"items": {
|
||||
"enum": [
|
||||
"Alerts",
|
||||
"Authentication",
|
||||
"Certificates",
|
||||
"Data Loss Prevention",
|
||||
"Email",
|
||||
"Endpoint_AccountManagement",
|
||||
"Endpoint_Filesystem",
|
||||
"Endpoint_Processes",
|
||||
"Endpoint_Registry",
|
||||
"Endpoint_ResourceAccess",
|
||||
"Intrusion_Detection",
|
||||
"Inventory_User",
|
||||
"Malware_Attacks",
|
||||
"Network_Traffic",
|
||||
"Network_Sessions",
|
||||
"Network_Resolution",
|
||||
"Web",
|
||||
"Web.Proxy"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"version": {
|
||||
"$id": "#/properties/version",
|
||||
"default": 0,
|
||||
"description": "version of detection, e.g. 1 or 2 ...",
|
||||
"examples": [
|
||||
2
|
||||
],
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"id",
|
||||
"version",
|
||||
"date",
|
||||
"datamodel",
|
||||
"description",
|
||||
"type",
|
||||
"author",
|
||||
"search",
|
||||
"known_false_positives",
|
||||
"tags"
|
||||
],
|
||||
"title": "Detection Schema",
|
||||
"type": "object"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user