Skip to content

Commit 01c74e7

Browse files
SamirbousCopilotshashank-elastic
authored
[New] Elastic Defend and Email Alerts Correlation (#5336)
* Create multiple_alerts_email_elastic_defend_correlation.toml * Update multiple_alerts_email_elastic_defend_correlation.toml * Update multiple_alerts_email_elastic_defend_correlation.toml * Update rules/cross-platform/multiple_alerts_email_elastic_defend_correlation.toml Co-authored-by: Copilot <[email protected]> * Update multiple_alerts_email_elastic_defend_correlation.toml --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: shashank-elastic <[email protected]>
1 parent d946bb3 commit 01c74e7

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
[metadata]
2+
creation_date = "2025/11/19"
3+
maturity = "production"
4+
updated_date = "2025/11/19"
5+
6+
[rule]
7+
author = ["Elastic"]
8+
description = """
9+
This rule correlates any Elastic Defend alert with an email security related alert by target user name. This may indicate
10+
the successful execution of a phishing attack.
11+
"""
12+
from = "now-1h"
13+
interval = "45m"
14+
language = "esql"
15+
license = "Elastic License v2"
16+
name = "Elastic Defend and Email Alerts Correlation"
17+
risk_score = 73
18+
rule_id = "c562a800-cf97-464e-9d6f-84db91e86e10"
19+
severity = "high"
20+
tags = [
21+
"Use Case: Threat Detection",
22+
"Rule Type: Higher-Order Rule",
23+
"Resources: Investigation Guide",
24+
"Data Source: Elastic Defend",
25+
"Domain: Email",
26+
"Domain: Endpoint"
27+
]
28+
timestamp_override = "event.ingested"
29+
type = "esql"
30+
31+
query = '''
32+
from logs-* metadata _id
33+
// Email or Elastic Defend alerts where user name is populated
34+
| where
35+
(event.category == "email" and event.kind == "alert" and destination.user.name is not null) or
36+
(event.module == "endpoint" and event.dataset == "endpoint.alerts" and user.name is not null)
37+
38+
// extract target user name from email and endpoint alerts
39+
| eval email_alert_target_user_name = CASE(event.category == "email", destination.user.name, null),
40+
elastic_defend_alert_user_name = CASE(event.module == "endpoint" and event.dataset == "endpoint.alerts", user.name, null)
41+
| eval Esql.target_user_name = COALESCE(email_alert_target_user_name, elastic_defend_alert_user_name)
42+
| where Esql.target_user_name is not null
43+
44+
// group by Esql.target_user_name
45+
| stats Esql.alerts_count = COUNT(*),
46+
Esql.event_module_distinct_count = COUNT_DISTINCT(event.module),
47+
Esql.event_module_values = VALUES(event.module),
48+
Esql.message_values = VALUES(message),
49+
Esql.event_action_values = VALUES(event.action),
50+
Esql.process_executable_values = VALUES(process.executable),
51+
Esql.host_id_values = VALUES(host.id),
52+
Esql.source_user_name = VALUES(source.user.name),
53+
Esql.rule_name_values = VALUES(rule.name)
54+
by Esql.target_user_name
55+
// alert when same user is observed in an endpoint and email alert
56+
| where Esql.event_module_distinct_count >= 2
57+
| keep Esql.alerts_count, Esql.event_module_values, Esql.host_id_values, Esql.source_user_name, Esql.target_user_name, Esql.message_values, Esql.rule_name_values, Esql.event_action_values
58+
'''
59+
note = """## Triage and analysis
60+
### Investigating Elastic Defend and Email Alerts Correlation
61+
62+
This rule correlates any Elastic Defend alert with an email security related alert by target user name.
63+
64+
### Possible investigation steps
65+
- Review the alert details to identify the specific host and users involved.
66+
- Investigate the individual alerts for the target user name and see if they are related.
67+
- Review all emails received from Esql.source_user_name and if there are other impacted users.
68+
- Correlate the alert data with other logs and telemetry from the host, such as process creation, network connections, and file modifications, to gather additional context.
69+
- Assess the impact and scope of the potential compromise by determining if other hosts or systems have similar alerts or related activity.
70+
71+
### False positive analysis
72+
- Legitimate email marked as suspicious.
73+
- Legitimate file or behavior marked as suspicious by Elastic Defend.
74+
- Unrelated alerts where the target user name is too generic.
75+
76+
### Response and remediation
77+
- Isolate the affected host from the network immediately to prevent further lateral movement by the adversary.
78+
- Conduct a thorough forensic analysis of the host.
79+
- Remove any identified malicious software or unauthorized access tools from the host, ensuring all persistence mechanisms are eradicated.
80+
- Restore the host from a known good backup if necessary, ensuring that the backup is free from compromise.
81+
- Monitor the host and network for any signs of re-infection or further suspicious activity, using enhanced logging and alerting based on the identified attack patterns.
82+
- Escalate the incident to the appropriate internal or external cybersecurity teams for further investigation and potential legal action if the attack is part of a larger campaign."""

0 commit comments

Comments
 (0)