| name | domain-search-dns-chronicle |
| description | Use when searching UDM DNS query and resolution logs for a domain in Chronicle. |
| category | atomic |
| version | 1.0.0 |
| type | Skill |
| title | Skill: Atomic Runbook: Search Domain DNS Queries in Chronicle |
| generated | {"by":"process:google-labs-jules","at":"2026-08-20T02:00:00Z"} |
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 to hours_back.
- Map
max_events to max_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. Extract principal.hostname, principal.ip (client resolving), network.dns.question.name, and network.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 of principal.hostname or principal.ip that queried the domain.
resolved_ips_from_dns: list - Unique list of IPs found in network.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 using asset_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 of dns_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