potential_credential_dumping_activity_via_lsass
Description
Detects process access requests to the LSASS process with specific call trace calls and access masks. This behaviour is expressed by many credential dumping tools such as Mimikatz, NanoDump, Invoke-Mimikatz, Procdump and even the Taskmgr dumping feature.
Query · yara_l
events:
$process.metadata.event_type = "PROCESS_OPEN"
re.regex($process.target.process.file.full_path, `\\lsass\.exe$`) nocase
(
strings.contains(strings.to_lower($process.target.resource.name), "0x1038") or
strings.contains(strings.to_lower($process.target.resource.name), "0x1438") or
strings.contains(strings.to_lower($process.target.resource.name), "0x143a") or
strings.contains(strings.to_lower($process.target.resource.name), "0x1fffff") //questionable, this one and others have been filtered out due to FP
)
(
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), "dbgcore.dll") or
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), "dbghelp.dll") or
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), "kernel32.dll") or
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), "kernelbase.dll") or
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), "ntdll.dll")
)
NOT (
strings.contains($process.principal.administrative_domain, "AUTHORI") or
strings.contains($process.principal.administrative_domain, "AUTORI")
)
NOT (
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), ":\\windows\\temp\\asgard2-agent\\") and
strings.contains(strings.to_lower($process.additional.fields["CallTrace"]), "\\thor\\thor64.exe+") and
strings.contains(strings.to_upper($process.additional.fields["CallTrace"]), "|UNKNOWN(") and
$process.target.resource.name = "0x103800" nocase
)
NOT re.regex($process.principal.process.file.full_path, `:\\Windows\\Sysmon64\.exe$`) nocase
$process.principal.hostname = $hostname
match:
$hostname over 5m
outcome:
//example usage of specifying test hostname to adjust risk score
$risk_score = max(if($process.principal.hostname = "hostname", 0, 15))
$principal_process_pid = array_distinct($process.principal.process.pid)
$principal_process_command_line = array_distinct($process.principal.process.command_line)
$principal_process_file_sha256 = array_distinct($process.principal.process.file.sha256)
$principal_process_file_full_path = array_distinct($process.principal.process.file.full_path)
$principal_process_product_specfic_process_id = array_distinct($process.principal.process.product_specific_process_id)
$principal_process_parent_process_product_specfic_process_id = array_distinct($process.principal.process.parent_process.product_specific_process_id)
$target_process_pid = array_distinct($process.target.process.pid)
$target_process_command_line = array_distinct($process.target.process.command_line)
$target_process_file_sha256 = array_distinct($process.target.process.file.sha256)
$target_process_file_full_path = array_distinct($process.target.process.file.full_path)
$target_process_product_specfic_process_id = array_distinct($process.target.process.product_specific_process_id)
$log_type = array_distinct(strings.concat($process.metadata.log_type,"/",$process.metadata.product_event_type))
condition:
$process