triage-alert

$npx mdskill add dandye/ai-runbooks/triage-alert

Assess security alerts to distinguish real threats from false positives.

  • Evaluates alert severity and context to determine investigation necessity.
  • Integrates with SOAR tools and SIEM for comprehensive threat enrichment.
  • Cross-references case metadata and triggering events for accurate analysis.
  • Outputs clear recommendations for closing or escalating security incidents.
SKILL.md
.github/skills/triage-alertView on GitHub ↗
---
name: triage-alert
description: "Triage a security alert or case. Use when given an ALERT_ID or CASE_ID to assess if it's a real threat. Enriches IOCs, searches SIEM for context, and determines if the alert should be closed (false positive) or escalated for investigation."
required_roles:
  chronicle: roles/chronicle.viewer
  soar: roles/chronicle.editor
  gti: GTI Standard
personas: [tier1-analyst, tier2-analyst, tier3-analyst, incident-responder]
---

# Alert Triage Skill

Perform standardized initial assessment of security alerts to determine if they represent real threats requiring investigation or can be closed as false positives.

## Inputs

You need one of these identifiers to begin:
- `ALERT_ID` - The alert identifier
- `CASE_ID` - The case identifier

## Workflow

### Step 1: Gather Initial Context

Retrieve full details about the alert/case:

```
Use secops-soar tools:
- get_case_full_details(case_id) - Get case metadata and context
- list_alerts_by_case(case_id) - List all alerts in the case
- list_events_by_alert(alert_id) - Get triggering events
```

Extract and note:
- Alert type and severity
- Key entities involved (IPs, domains, hashes, users, hostnames)
- Triggering events and timestamps

> **Note:** Duplicate detection should be handled by invoking `/check-duplicates`
> before this skill, or by using the `/full-triage-alert` workflow which
> orchestrates both skills in the correct sequence.

### Step 2: Find Related Open Cases

Search for other open cases involving the same entities:

```
Use secops-soar.list_cases with:
- Search terms = key entities from Step 1
- Status filter = "Opened"
```

Note any related cases for correlation.

### Step 3: Alert-Specific SIEM Search

Perform a targeted SIEM search based on the alert type:

```
Use secops-mcp.search_security_events with relevant query
```

**By alert type:**
- **Suspicious Login**: Search login events (success/failure) for user/source IP around alert time
- **Malware Detection**: Search process execution, file mods, network events for the hash/endpoint
- **Network Alert**: Search network flows, DNS lookups for source/destination IPs/domains

### Step 4: Enrich Key Entities

For each key entity (IP, domain, hash, URL), gather threat intelligence:

**GTI Enrichment** (use gti-mcp tools):
- `get_ip_address_report(ip)` - IP reputation and context
- `get_domain_report(domain)` - Domain reputation
- `get_file_report(hash)` - File/hash analysis
- `get_url_report(url)` - URL reputation

**SIEM Enrichment** (use secops-mcp tools):
- `lookup_entity(entity)` - Entity summary from SIEM
- `get_ioc_matches(hours_back)` - Check if IOC appears in threat feeds

### Step 5: Make Assessment

Based on all gathered evidence, classify the alert:

| Classification | Criteria | Action |
|---------------|----------|--------|
| **False Positive (FP)** | No malicious indicators, known benign activity | Close |
| **Benign True Positive (BTP)** | Real detection but authorized/expected activity | Close |
| **True Positive (TP)** | Confirmed malicious indicators or suspicious behavior | Escalate |
| **Suspicious** | Inconclusive but warrants investigation | Escalate |

### Step 6: Take Action

**If FP or BTP:**
1. Document findings in case comments explaining the rationale
2. Close the case/alert:
   - Use `secops-soar.siemplify_close_case` or `siemplify_close_alert`
   - Closure reason: `NOT_MALICIOUS`
   - Root cause: Use `get_case_settings_root_causes` to get valid options (e.g., "Legit action", "Normal behavior")

**If TP or Suspicious:**
1. Optionally adjust priority with `secops-soar.change_case_priority`
2. Document initial findings and assessment in case comments
3. Escalate to Tier 2 or trigger appropriate investigation runbook:
   - Suspicious login → `suspicious_login_triage`
   - Malware → `malware_triage`
   - IOC-focused → `deep_dive_ioc_analysis`

## Output Requirements

After completing triage, provide:

1. **Alert Status**: Closed (with reason) or Escalated
2. **Classification**: FP, BTP, TP, or Suspicious
3. **Evidence Summary**: Key findings from enrichment and SIEM searches
4. **Rationale**: Why this classification was chosen
5. **Next Steps**: What happens next (closed, assigned to whom, which runbook triggered)

## Quick Reference

**SOAR Tools:**
- `get_case_full_details`, `list_alerts_by_case`, `list_events_by_alert`
- `post_case_comment`, `change_case_priority`
- `siemplify_get_similar_cases`, `siemplify_close_case`, `siemplify_close_alert`

**SIEM Tools:**
- `lookup_entity`, `get_ioc_matches`, `search_security_events`

**GTI Tools:**
- `get_file_report`, `get_domain_report`, `get_ip_address_report`, `get_url_report`

---

For detailed workflow diagrams, completion criteria, and evaluation rubric, see [reference.md](./reference.md).
More from dandye/ai-runbooks