new_run_key_pointing_to_suspicious_folder
Description
Detects suspicious new RUN key element pointing to an executable in a suspicious folder
Query · yara_l
events:
$reg.metadata.event_type = "REGISTRY_MODIFICATION"
(
strings.contains(strings.to_lower($reg.target.registry.registry_key), "\\software\\microsoft\\windows\\currentversion\\run") or
strings.contains(strings.to_lower($reg.target.registry.registry_key), "\\software\\wow6432node\\microsoft\\windows\\currentversion\\run") or
strings.contains(strings.to_lower($reg.target.registry.registry_key), "\\software\\microsoft\\windows\\currentversion\\policies\\explorer\\run")
)
and
(
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\perflogs") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\programdata") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\windows\\temp") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\temp") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\appdata\\local\\temp") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\appdata\\roaming") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\$recycle.bin") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\users\\default") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\users\\public") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "%temp%") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "%tmp%") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "%public%") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "%appdata%") or
(
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), ":\\users\\") and
(
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\favorites") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\favourites") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\contacts") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\music") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\pictures") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\documents") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\photos")
)
)
)
not (
strings.contains(strings.to_lower($reg.target.registry.registry_key), "\\microsoft\\windows\\currentversion\\runonce\\") and
strings.starts_with(strings.to_lower($reg.principal.process.file.full_path), "c:\\windows\\softwaredistribution\\download\\") and
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "rundll32.exe ") and
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "c:\\windows\\system32\\advpack.dll,delnoderundll32") and
(
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "\\appdata\\local\\temp\\") or
strings.contains(strings.to_lower($reg.target.registry.registry_value_data), "c:\\windows\\temp\\")
)
)
$reg.principal.hostname = $hostname
match:
$hostname over 5m
outcome:
//example usage of specifying test user and hostname to adjust risk score
$risk_score = max(if($reg.principal.user.userid = "user" and $reg.principal.hostname = "hostname", 0, 15))
$principal_hostname = array_distinct($reg.principal.hostname)
$principal_process_pid = array_distinct($reg.principal.process.pid)
$principal_process_file_full_path = array_distinct($reg.principal.process.file.full_path)
$principal_process_product_specific_process_id = array_distinct($reg.principal.process.product_specific_process_id)
$principal_user_userid = array_distinct($reg.principal.user.userid)
$target_registry_key = array_distinct($reg.target.registry.registry_key)
$target_registry_value_data = array_distinct($reg.target.registry.registry_value_data)
$log_type = array_distinct(strings.concat($reg.metadata.log_type,"/",$reg.metadata.product_event_type))
condition:
$reg