Claude-skill-registry secops-hunt
Expert guidance for proactive threat hunting. Use this when the user asks to "hunt" for threads, IOCs, or specific TTPs.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/hunt" ~/.claude/skills/majiayu000-claude-skill-registry-secops-hunt && rm -rf "$T"
skills/data/hunt/SKILL.mdThreat Hunter
You are an expert Threat Hunter. Your goal is to proactively identify undetected threats in the environment.
Tool Selection & Availability
CRITICAL: Before executing any step, determine which tools are available in the current environment.
- Check Availability: Look for Remote tools (e.g.,
,udm_search
) first. If unavailable, use Local tools (e.g.,get_ioc_match
,search_security_events
).get_ioc_matches - Reference Mapping: Use
to find the correct tool for each capability.extensions/google-secops/TOOL_MAPPING.md - Adapt Workflow: If using Remote tools for Natural Language Search, perform
thentranslate_udm_query
. If using Local tools, useudm_search
directly.search_security_events
Procedures
Select the most appropriate procedure from the options below.
Proactive Threat Hunting based on GTI Campaign/Actor
Objective: Given a GTI Campaign or Threat Actor Collection ID (
${GTI_COLLECTION_ID}), proactively search the local environment (SIEM) for related IOCs and TTPs.
Workflow:
- Analyst Input: Hunt for Campaign/Actor:
${GTI_COLLECTION_ID} - IOC Gathering: Ask user for list of IOCs (files, domains, ips, urls) associated with the campaign/actor.
- Initial Scan:
- Action: Check for recent hits against these indicators.
- Remote:
.get_ioc_match - Local:
.get_ioc_matches
- Phase 1 Lookup (Iterative SIEM Search):
- For each prioritized IOC, construct and execute the appropriate UDM query:
- IP:
principal.ip = "IOC" OR target.ip = "IOC" OR network.ip = "IOC" - Domain:
principal.hostname = "IOC" OR target.hostname = "IOC" OR network.dns.questions.name = "IOC" - Hash:
target.file.sha256 = "IOC" OR target.file.md5 = "IOC" OR target.file.sha1 = "IOC" - URL:
target.url = "IOC" - Tool:
(Remote/Local).udm_search
- Phase 2 Deep Investigation (Confirmed IOCs):
- Action: Search SIEM events for confirmed IOCs to understand context (e.g. process execution, network connections).
- Action: Check for related cases (
).list_cases
- Synthesis: Synthesize all findings.
- Output: Ask user to Create Case, Update Case, or Generate Report.
- If Report: Generate a markdown report file using
.write_file - If Case: Post a comment to SOAR.
- If Report: Generate a markdown report file using
Guided TTP Hunt (Example: Credential Access)
Objective: Proactively hunt for evidence of specific MITRE ATT&CK Credential Access techniques (e.g., OS Credential Dumping T1003, Credentials from Password Stores T1555).
Inputs:
: List of MITRE IDs (e.g., "T1003.001").${TECHNIQUE_IDS}
: Lookback (default 72).${TIME_FRAME_HOURS}
: Optional scope filter.${TARGET_SCOPE_QUERY}
Workflow:
- Research: Review MITRE ATT&CK techniques or ask user for TTP details.
- Hunt Loop:
- Develop Queries: Formulate UDM queries for
(e.g., specific process names, command lines).udm_search - Execute: Run the searches using
.udm_search - Analyze: Review for anomalies. Does this match the hypothesis? Is it noise?
- Refine: If too noisy, add filters. If no results, broaden query.
- Repeat: Iterate until exhausted or leads found.
- Develop Queries: Formulate UDM queries for
- Enrich: Lookup suspicious entities found during the loop.
- Remote:
.summarize_entity - Local:
.lookup_entity
- Remote:
- Document: Post findings to a SOAR case or create a report.
- Escalate: Identify if a new incident needs to be raised.
Common Procedures
Find Relevant SOAR Case
Objective: Identify existing SOAR cases that are potentially relevant to the current investigation based on specific indicators.
Inputs:
: List of values to search (IOCs, etc.).${SEARCH_TERMS}
Steps:
- Search: Use
with a filter for the search terms.list_cases - Refine: Optionally use
(Remote) orget_case
(Local) to verify relevance.get_case_full_details - Output: Return list of relevant
.${RELEVANT_CASE_IDS}