Skip to content

Commit ebf3af5

Browse files
Aegrahtradebot-elastic
authored andcommitted
[New Rule] Web Server Unusual Spike in Error Response Codes (#5338)
* [New Rule] Web Server Unusual Spike in Error Response Codes * Update reconnaissance_web_server_unusual_spike_in_error_response_codes.toml * Update tags in reconnaissance web server rule * Add network domain tag and modify ESQL queries * Remove url.path from error response rules * ++ * Update reconnaissance_web_server_unusual_spike_in_error_response_codes.toml * Update reconnaissance_web_server_unusual_spike_in_error_response_codes.toml * fixing from indices formatting --------- Co-authored-by: Terrance DeJesus <[email protected]> Co-authored-by: terrancedejesus <[email protected]> (cherry picked from commit 296049e)
1 parent f588e6d commit ebf3af5

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
[metadata]
2+
creation_date = "2025/11/19"
3+
integration = ["network_traffic", "nginx", "apache", "apache_tomcat", "iis"]
4+
maturity = "production"
5+
updated_date = "2025/11/19"
6+
7+
[rule]
8+
author = ["Elastic"]
9+
description = """
10+
This rule detects unusual spikes in error response codes (500, 502, 503, 504) from web servers, which may indicate
11+
reconnaissance activities such as vulnerability scanning or fuzzing attempts by adversaries. These activities often
12+
generate a high volume of error responses as they probe for weaknesses in web applications. Error response codes
13+
may potentially indicate server-side issues that could be exploited.
14+
"""
15+
from = "now-9m"
16+
interval = "10m"
17+
language = "esql"
18+
license = "Elastic License v2"
19+
name = "Web Server Potential Spike in Error Response Codes"
20+
risk_score = 21
21+
rule_id = "6fa3abe3-9cd8-41de-951b-51ed8f710523"
22+
severity = "low"
23+
tags = [
24+
"Domain: Web",
25+
"Domain: Network",
26+
"Use Case: Threat Detection",
27+
"Tactic: Reconnaissance",
28+
"Data Source: Network Packet Capture",
29+
"Data Source: Nginx",
30+
"Data Source: Apache",
31+
"Data Source: Apache Tomcat",
32+
"Data Source: IIS",
33+
]
34+
timestamp_override = "event.ingested"
35+
type = "esql"
36+
query = '''
37+
from logs-network_traffic.http-*, logs-network_traffic.tls-*, logs-nginx.access-*, logs-apache.access-*, logs-apache_tomcat.access-*, logs-iis.access-*
38+
| where
39+
(url.original is not null or url.full is not null) and
40+
http.request.method == "GET" and
41+
http.response.status_code in (
42+
500, // Internal Server Error
43+
502, // Bad Gateway
44+
503, // Service Unavailable
45+
504 // Gateway Timeout
46+
)
47+
| eval Esql.url_text = case(url.original is not null, url.original, url.full)
48+
| eval Esql.url_lower = to_lower(Esql.url_text)
49+
50+
| keep
51+
@timestamp,
52+
event.dataset,
53+
http.request.method,
54+
http.response.status_code,
55+
source.ip,
56+
agent.id,
57+
host.name,
58+
Esql.url_lower
59+
| stats
60+
Esql.event_count = count(),
61+
Esql.http_response_status_code_count = count(http.response.status_code),
62+
Esql.http_response_status_code_values = values(http.response.status_code),
63+
Esql.host_name_values = values(host.name),
64+
Esql.agent_id_values = values(agent.id),
65+
Esql.http_request_method_values = values(http.request.method),
66+
Esql.http_response_status_code_values = values(http.response.status_code),
67+
Esql.url_path_values = values(Esql.url_lower),
68+
Esql.event_dataset_values = values(event.dataset)
69+
by source.ip, agent.id
70+
| where
71+
Esql.http_response_status_code_count > 10
72+
'''
73+
74+
[[rule.threat]]
75+
framework = "MITRE ATT&CK"
76+
77+
[[rule.threat.technique]]
78+
id = "T1595"
79+
name = "Active Scanning"
80+
reference = "https://attack.mitre.org/techniques/T1595/"
81+
82+
[[rule.threat.technique.subtechnique]]
83+
id = "T1595.002"
84+
name = "Vulnerability Scanning"
85+
reference = "https://attack.mitre.org/techniques/T1595/002/"
86+
87+
[[rule.threat.technique.subtechnique]]
88+
id = "T1595.003"
89+
name = "Wordlist Scanning"
90+
reference = "https://attack.mitre.org/techniques/T1595/003/"
91+
92+
[rule.threat.tactic]
93+
id = "TA0043"
94+
name = "Reconnaissance"
95+
reference = "https://attack.mitre.org/tactics/TA0043/"

0 commit comments

Comments
 (0)