Atomic Runbook: Search Domain DNS Queries in Chronicle#
ID: RB-ATOM-DOMAIN-004
Version: 1.0
Last_Updated: 2025-05-30
Purpose: To perform a detailed search for DNS query events associated with a specific domain/FQDN in Chronicle SIEM using the search_security_events
tool. This helps identify which internal hosts resolved or attempted to resolve the domain.
Parent_Runbook(s)/Protocol(s): rules-bank/indicator_handling_protocols.md#2-atomic-indicator-domain-name--fqdn
, rb_domain_lookup_entity_chronicle.md
Trigger: When detailed DNS resolution logs for a domain are needed, often after an initial entity lookup or if suspicious domain activity is suspected.
Inputs Required#
domain_name
: string - The domain name or FQDN to search for in DNS queries.Source Example: Alert field, output from other enrichment runbooks.
hours_back
(optional): integer - How many hours of historical data to search. Defaults to 72 (3 days).max_events
(optional): integer - Maximum event records to return. Defaults to 100.
Execution Steps#
Tool Selection:
Primary_Tool_MCP_Server:
secops-mcp
Primary_Tool_Name:
search_security_events
Query Construction (for
text
parameter of the tool):Base query: “DNS lookups for ‘{domain_name}’”
Append time window: “… in the last {hours_back} hours”
Example
text
value: “DNS lookups for ‘malicious-example.com’ in the last 48 hours”
Parameter Mapping:
Map constructed query to
text
.Map
hours_back
tohours_back
.Map
max_events
tomax_events
.
Execute Tool: Call
search_security_events
.AI Agent Note: Refer to
rules-bank/mcp_tool_best_practices.md
.
Data Transformation/Extraction:
Focus on
events.events
list. Extractprincipal.hostname
,principal.ip
(client resolving),network.dns.question.name
, andnetwork.dns.answers.rdata
(resolved IPs).
Outputs Expected#
dns_query_events
: list - List of UDM DNS event records.translated_udm_query
: string - The actual UDM query executed.total_events_matched
: integer.clients_resolving_domain
: list - Unique list ofprincipal.hostname
orprincipal.ip
that queried the domain.resolved_ips_from_dns
: list - Unique list of IPs found innetwork.dns.answers.rdata
.output_status
: string - [“Success”, “NoEventsFound”, “Failure”]output_message
: string (if Failure).
Decision Logic / Next Steps (If Applicable)#
IF
output_status
is “Success”:Log key findings (e.g., number of clients, list of resolved IPs).
For each unique IP in
resolved_ips_from_dns
, consider initiating IP-specific atomic runbooks (e.g.,RB-ATOM-IP-001
,RB-ATOM-IP-003
).For each client in
clients_resolving_domain
, assess criticality usingasset_inventory_guidelines.md
.If many clients resolved a known malicious domain, escalate.
Proceed to
rb_domain_search_network_traffic_chronicle.md
to look for actual connections to resolved IPs.
IF
output_status
is “NoEventsFound”:Log “No DNS queries found for domain {domain_name} in Chronicle for the last {hours_back} hours.”
ELSE (
output_status
is “Failure”):Log error:
output_message
.Escalate: “Failed to search DNS queries for domain {domain_name} in Chronicle.”
AI Agent Execution Notes#
If
total_events_matched
is high, AI should summarize findings (e.g., top 5 client IPs, count of unique resolved IPs) rather than listing all events.Correlate
resolved_ips_from_dns
with GTI reputation data if available.
Metrics Collection Points#
Log execution time.
Log
output_status
, number ofdns_query_events
returned.(Reference
rules-bank/ai_performance_logging_requirements.md
)
References#
rules-bank/mcp_tool_best_practices.md
rules-bank/indicator_handling_protocols.md
rules-bank/analytical_query_patterns.md
rules-bank/ai_performance_logging_requirements.md