diff --git a/rules/windows/credential_access_rare_webdav_destination.toml b/rules/windows/credential_access_rare_webdav_destination.toml new file mode 100644 index 000000000..71454c22d --- /dev/null +++ b/rules/windows/credential_access_rare_webdav_destination.toml @@ -0,0 +1,82 @@ +[metadata] +creation_date = "2025/04/28" +integration = ["endpoint", "system", "windows", "m365_defender", "crowdstrike"] +maturity = "production" +updated_date = "2025/04/28" +min_stack_version = "8.17.0" +min_stack_comments = "Elastic ES|QL VALUES aggregation is more performant in 8.16.5 and above." + +[rule] +author = ["Elastic"] +description = """ +Identifies rare connection attempts to a Web Distributed Authoring and Versioning (WebDAV) resource. Attackers may inject +WebDAV paths in files or features opened by a victim user to leak their NTLM credentials via forced authentication. +""" +from = "now-3660s" +language = "esql" +license = "Elastic License v2" +name = "Rare Connection to WebDAV Target" +note = """## Triage and analysis + +### Investigating Rare Connection to WebDAV Target + +### Possible investigation steps + +- Examine the reputation of the destination domain or IP address. +- Verify if the target user opened any attachments or clicked links pointing to the same target within seconds from the alert timestamp. +- Correlate the findings with other security logs and alerts to identify any patterns or additional indicators of compromise related to the potential relay attack. + +### False positive analysis + +- User accessing legit WebDAV resources. + +### Response and remediation + +- Conduct a password reset for the target account that may have been compromised or are at risk, ensuring the use of strong, unique passwords. +- Verify whether other users were targeted but did not open the lure.. +- Escalate the incident to the security operations center (SOC) or incident response team for further investigation and to determine the full scope of the breach. +- Conduct a post-incident review to identify any gaps in security controls and update policies or procedures to prevent recurrence, ensuring lessons learned are applied to improve overall security posture.""" +references = ["https://attack.mitre.org/techniques/T1187/"] +risk_score = 47 +rule_id = "6756ee27-9152-479b-9b73-54b5bbda301c" +severity = "medium" +tags = [ + "Domain: Endpoint", + "OS: Windows", + "Use Case: Threat Detection", + "Tactic: Credential Access", + "Data Source: Elastic Defend", + "Data Source: Windows Security Event Logs", + "Data Source: Microsoft Defender for Endpoint", + "Data Source: Crowdstrike", + "Resources: Investigation Guide", +] +timestamp_override = "event.ingested" +type = "esql" + +query = ''' +FROM logs-* +| where @timestamp > NOW() - 8 hours +| WHERE event.category == "process" and event.type == "start" and process.name == "rundll32.exe" and process.command_line like "*DavSetCookie*" +| keep host.id, process.command_line, user.name +| grok process.command_line """(?DavSetCookie .* http)""" +| eval webdav_target = REPLACE(target, "(DavSetCookie | http)", "") +| where webdav_target is not null and webdav_target rlike """(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,3}(@SSL.*)*|(\d{1,3}\.){3}\d{1,3})""" and not webdav_target in ("www.google.com@SSL", "www.elastic.co@SSL") and not webdav_target rlike """(10\.(\d{1,3}\.){2}\d{1,3}|172\.(1[6-9]|2\d|3[0-1])\.(\d{1,3}\.)\d{1,3}|192\.168\.(\d{1,3}\.)\d{1,3})""" +| stats total = count(*), unique_count_host = count_distinct(host.id), hosts = VALUES(host.id), users = VALUES(user.name) by webdav_target +| where unique_count_host == 1 and total <= 3 +''' + + +[[rule.threat]] +framework = "MITRE ATT&CK" +[[rule.threat.technique]] +id = "T1187" +name = "Forced Authentication" +reference = "https://attack.mitre.org/techniques/T1187/" + + +[rule.threat.tactic] +id = "TA0006" +name = "Credential Access" +reference = "https://attack.mitre.org/tactics/TA0006/" +