Atomic Runbook: Get URL Reputation from GTI#
ID: RB-ATOM-URL-001
Version: 1.0
Last_Updated: 2025-05-30
Purpose: To retrieve a comprehensive URL analysis report from Google Threat Intelligence (GTI) to assess its reputation, categorization, and any associated threats.
Parent_Runbook(s)/Protocol(s): rules-bank/indicator_handling_protocols.md#url-indicator (Assuming a future section for URLs)
Trigger: When a URL requires an external reputation check as part of an investigation (e.g., from a phishing email, web proxy logs, or EDR alert).
Inputs Required#
url: string - The full URL to query (e.g.,http://example.com/path/to/file.html).Source Example: Alert field
target.url, email body, web proxy logs.
Execution Steps#
Tool Selection:
Primary_Tool_MCP_Server:
Google Threat Intelligence MCPPrimary_Tool_Name:
get_url_report
Parameter Mapping:
Map
url(Input) to MCP Tool parameterurl.
Execute Tool: Call the
get_url_reporttool with the mappedurl.AI Agent Note: Refer to
rules-bank/mcp_tool_best_practices.mdfor specific guidance on GTI tools. Ensure URL is properly encoded if necessary, though the tool should handle standard cases.
Data Transformation/Extraction:
The primary output is a JSON object. Key fields for assessment include
data.attributes.last_analysis_stats(especiallymalicious),data.attributes.categories,data.attributes.final_url(after redirections), anddata.attributes.redirection_chain.
Outputs Expected#
gti_url_report: JSON - The full JSON report from the GTIget_url_reporttool.malicious_score: integer - Engines reporting the URL as malicious (fromgti_url_report.data.attributes.last_analysis_stats.malicious).suspicious_score: integer - Engines reporting as suspicious.harmless_score: integer - Engines reporting as harmless.categories: list - List of categories assigned to the URL by GTI (e.g., “phishing”, “malware”, “benign”).final_url: string (optional) - The final URL after any redirections.redirection_chain: list (optional) - List of URLs in a redirection chain.output_status: string - [“Success”, “Failure”, “NotFound”]“NotFound” if GTI has no information on the URL.
output_message: string (if Failure) - Details of the issue.
Decision Logic / Next Steps (If Applicable)#
IF
output_statusis “Success”:IF
malicious_score> 5 OR “phishing” INcategoriesOR “malware” INcategoriesTHENFlag URL as “High_Risk_GTI”.
Extract domain from
url(orfinal_url) and consider initiatingRB-ATOM-DOMAIN-001(Get Domain Reputation From GTI).Consider proceeding to containment (e.g., block URL/domain) or escalate immediately.
ELSE IF
malicious_score> 0 ORsuspicious_score> 0 THENFlag URL as “Medium_Risk_GTI_Needs_Correlation”.
Extract domain and proceed to
rb_url_search_chronicle.mdand domain-specific runbooks.
ELSE (low malicious/suspicious score)
Flag URL as “Low_Risk_GTI”.
Proceed to
rb_url_search_chronicle.mdfor internal context.
IF
output_statusis “NotFound”:Log “URL {url} not found in GTI.”
Flag URL as “Unknown_Reputation_GTI”.
Extract domain and proceed with domain reputation checks (
RB-ATOM-DOMAIN-001) and internal searches (rb_url_search_chronicle.md).
ELSE (
output_statusis “Failure”):Log error:
output_message.Consider executing
rb_url_get_secops_threat_intel.mdas an alternative.IF alternative also fails, escalate: “Failed to retrieve external reputation for URL {url}.”
AI Agent Execution Notes#
The AI should parse the
gti_url_reportto extract specific output parameters.If a
final_urlis present and different from the inputurl, the AI should note this and potentially perform checks on thefinal_urlas well.The domain of the URL should be extracted for separate domain reputation checks.
Metrics Collection Points#
Log execution time.
Log
output_status,malicious_score.(Reference
rules-bank/ai_performance_logging_requirements.md)
References#
rules-bank/mcp_tool_best_practices.mdrules-bank/indicator_handling_protocols.md(future URL section)rules-bank/ai_performance_logging_requirements.md