Installs into .claude/skills of the current project.
Are you the author of Splunk Es?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chrishuffman5-splunk-es)
---
name: splunk-es
description: "Splunk Enterprise Security (ES), the premium SIEM app on top of Splunk: correlation searches, notable events, risk-based alerting (RBA), MITRE ATT&CK framework mapping, adaptive response actions, asset/identity correlation, threat intelligence framework, and ES content management. WHEN: \"Splunk ES\", \"Enterprise Security\", \"notable events\", \"risk-based alerting\", \"RBA\", \"correlation search\", \"adaptive response\", \"glass tables\", \"investigation workbench\", \"ES content update\". Do NOT use for core SPL/indexing/forwarder administration — that's the `splunk` skill (this plugin). Do NOT use for general log/metrics observability or ITSI — that's the `splunk` skill in the `monitoring` plugin."
license: MIT
---
# Splunk Enterprise Security (ES)
This skill covers Splunk Enterprise Security (ES), the premium SIEM application that runs on top of Splunk Enterprise or Splunk Cloud. It has deep knowledge of:
- Correlation searches and detection rule development
- Notable events lifecycle (creation, triage, investigation, closure)
- Risk-based alerting (RBA) methodology and implementation
- MITRE ATT&CK framework mapping and coverage measurement
- Adaptive response actions and automated response
- Asset and identity framework (correlation with business context)
- Threat intelligence framework (IOC management, TI feeds)
- ES content updates and Splunkbase security content
- Glass tables (executive visualization)
- Investigation workbench and timeline analysis
- CIM data model dependency and acceleration requirements
## How to Approach Tasks
1. **Classify** the request:
- **Detection engineering** -- Correlation search development, tuning, RBA implementation
- **Operations** -- Notable event triage, investigation workflows, SOC procedures
- **Architecture** -- ES deployment, data model acceleration, performance tuning
- **Content management** -- ES content updates, MITRE ATT&CK mapping, custom content
- **Threat intelligence** -- TI framework configuration, feed integration, IOC management
- **Core Splunk** -- Read the `splunk` skill for SPL, indexing, or infrastructure questions
2. **Determine ES version** -- ES versions are independent of Splunk platform versions. Features vary.
3. **Check CIM compliance** -- Most ES functionality depends on properly CIM-mapped data. If data isn't CIM-compliant, that's the first issue to solve.
4. **Recommend** actionable guidance with SPL examples and ES configuration steps.
## Core Expertise
### Correlation Searches
Correlation searches are the detection engine of ES. They run on a schedule, search for threat patterns, and create notable events.
**Anatomy of a correlation search:**
```spl
# Search logic (SPL)
| tstats summariesonly=true count from datamodel=Authentication
where Authentication.action=failure
by Authentication.src, Authentication.user, _time span=5m
| rename Authentication.* as *
| where count > 10
| lookup asset_lookup ip as src OUTPUT priority as asset_priority
| eval urgency=case(asset_priority=="critical","critical", asset_priority=="high","high", true(),"medium")
```
**Configuration components:**
- **Search** -- SPL query that identifies the threat pattern
- **Schedule** -- Cron expression for execution frequency (e.g., every 5 minutes)
- **Alert actions** -- What happens when the search returns results:
- Create notable event
- Contribute to risk score (RBA)
- Send to adaptive response (API call, script, integration)
- Log event
- **Throttling** -- Suppress duplicate alerts per field(s) and time window
- **Severity** -- Maps to `urgency` field combined with asset/identity priority
### Notable Events
Notable events are the primary alert artifacts in ES:
| Field | Purpose |
|---|---|
| `rule_name` | Name of the correlation search that generated the event |
| `urgency` | Combined severity: rule severity x asset/identity priority |
| `status` | Lifecycle: New -> In Progress -> Pending -> Resolved -> Closed |
| `owner` | Assigned analyst |
| `security_domain` | Access, Endpoint, Network, Threat, Identity, Audit |
| `rule_description` | Human-readable description of what was detected |
| `drilldown_search` | Link to the underlying raw events for investigation |
**Notable event workflow:**
```
Correlation search fires
|
v
Notable event created (status: New, urgency: calculated)
|
v
Analyst reviews (Incident Review dashboard)
|
├── True positive --> Investigate, contain, remediate, close
├── False positive --> Document, add exception, tune correlation search
└── Needs enrichment --> Run adaptive response actions, gather context
```
### Risk-Based Alerting (RBA)
RBA shifts from individual alerts to entity-based risk accumulation:
**Traditional approach:** Each correlation search generates a notable event. 50 rules x 10 matches = 500 alerts/day for analysts to triage.
**RBA approach:** Each correlation search contributes a risk score to an entity (user or host). A single "risk threshold exceeded" rule generates a notable event only when cumulative risk is significant.
**Implementation:**
1. **Risk factors** -- Each correlation search outputs risk events instead of (or in addition to) notable events:
```spl
# Correlation search outputs a risk event
| eval risk_object=user, risk_object_type="user", risk_score=25
| eval risk_message="Multiple failed logins from ".src
| collect index=risk marker="search_name=\"Brute Force Detection\""
```
2. **Risk aggregation** -- The Risk Analysis data model accumulates scores:
```spl
| tstats summariesonly=true sum(All_Risk.calculated_risk_score) as total_risk,
dc(All_Risk.source) as source_count,
values(All_Risk.source) as contributing_rules
from datamodel=Risk.All_Risk
where All_Risk.risk_object_type="user"
by All_Risk.risk_object
| where total_risk > 100 AND source_count >= 3
```
3. **Risk notable** -- When cumulative risk exceeds the threshold, ONE notable event is created with full context of all contributing risk factors.
**RBA benefits:**
- 90%+ reduction in alert volume
- Captures low-and-slow attacks (no single event is alarming, but the accumulation is)
- Analysts see the complete risk story, not isolated events
- Naturally prioritizes high-risk entities
**RBA risk score guidelines:**
| Event Severity | Suggested Risk Score | Example |
|---|---|---|
| Informational | 5-10 | Successful login from new location |
| Low | 10-25 | Failed login attempt |
| Medium | 25-50 | PowerShell encoded command execution |
| High | 50-75 | Credential dumping tool detected |
| Critical | 75-100 | Known malware hash executed on critical asset |
### MITRE ATT&CK Integration
ES maps correlation searches to ATT&CK techniques:
- **ATT&CK Navigator** -- Visualize detection coverage as a heatmap
- **Technique annotations** -- Each correlation search tagged with ATT&CK technique IDs
- **Coverage gaps** -- Identify undetected techniques for detection engineering prioritization
```spl
# Audit ATT&CK coverage
| rest /services/saved/searches
| search disabled=0 action.correlationsearch.enabled=1
| rex field=action.correlationsearch.annotations "mitre_attack\":\"(?<techniques>[^\"]+)"
| mvexpand techniques
| stats count as detection_count, values(title) as detections by techniques
| sort techniques
```
### Asset and Identity Framework
ES correlates alerts with business context:
**Assets:** IP addresses, hostnames, MAC addresses mapped to:
- Business unit, location, owner
- Priority (critical, high, medium, low, informational)
- Category (server, workstation, network device, IoT)
**Identities:** Usernames, email addresses mapped to:
- Full name, manager, department
- Priority (executive, admin, standard)
- Risk score history
**Impact on urgency calculation:**
```
Urgency = f(rule severity, asset/identity priority)
Rule Severity: Critical + Asset Priority: Critical = Urgency: Critical
Rule Severity: High + Asset Priority: Low = Urgency: Medium
Rule Severity: Low + Asset Priority: Critical = Urgency: Medium
```
Populate asset and identity lookups from CMDB, AD, HR systems for maximum value.
### Threat Intelligence Framework
ES ingests and operationalizes threat intelligence:
- **TI feeds** -- STIX/TAXII, CSV, API-based feeds (Recorded Future, AlienVault OTX, MISP)
- **IOC types** -- IP addresses, domains, URLs, file hashes (MD5, SHA256), email addresses
- **Threat matching** -- Automated lookup of IOCs against indexed data
- **Threat activity detected** -- Notable events generated when IOC matches are found
- **Intel management** -- Weight, confidence, expiration for each IOC
```spl
# Check threat intel matches
| tstats summariesonly=true count from datamodel=Threat_Intelligence
where Threat_Intelligence.threat_match_field="*"
by Threat_Intelligence.threat_match_value, Threat_Intelligence.threat_collection_key
| sort -count
```
### Adaptive Response Actions
Adaptive response actions execute automated responses when correlation searches fire:
| Action Type | Example | Integration |
|---|---|---|
| **Notable event** | Create a triageable alert | Built-in |
| **Risk modifier** | Add risk score to entity | Built-in |
| **Send to UBA** | Forward to User Behavior Analytics | Splunk UBA |
| **Run script** | Execute a custom Python script | Custom |
| **Send to Phantom/SOAR** | Trigger SOAR playbook | Splunk SOAR |
| **Add to threat intel** | Block IOC across the environment | TI framework |
| **Stream to Kafka** | Forward alert to external system | Kafka add-on |
## ES Deployment Best Practices
1. **CIM first** -- ES is useless without CIM-compliant data. Map data models before enabling correlation searches.
2. **Accelerate data models** -- `tstats` performance depends on acceleration. Accelerate Authentication, Network_Traffic, Endpoint at minimum.
3. **Start with RBA** -- Don't enable all 100+ correlation searches at once. Start with RBA risk contributors and tune.
4. **Asset/identity enrichment** -- Populate asset and identity lookups before go-live. Without business context, urgency calculation is meaningless.
5. **Tune before operationalizing** -- Run correlation searches for 1-2 weeks in "log only" mode before creating notable events.
6. **ES content updates** -- Apply ES content updates regularly. They include new detections, bug fixes, and ATT&CK mapping updates.
## Common Pitfalls
1. **Alert fatigue** -- Enabling all default correlation searches creates hundreds of untuned notable events. Curate ruthlessly.
2. **Data model acceleration lag** -- Acceleration runs on a schedule. New data may not appear in `tstats` results for 5-15 minutes. Not suitable for real-time detection of fast-moving threats.
3. **Urgency without asset data** -- Without asset/identity lookups, all notable events default to the rule's severity. Critical assets generate the same urgency as test systems.
4. **RBA score inflation** -- Without careful score assignment, entities quickly exceed thresholds. Calibrate scores so the threshold represents genuine concern.
5. **CIM mapping gaps** -- A field alias that maps the wrong vendor field to a CIM field produces incorrect detection results. Validate CIM compliance with `| datamodel Authentication search | head 10`.
6. **ES performance** -- ES is resource-intensive. Dedicated search head(s) for ES. Don't share search heads with general user searches.
## Reference Files
For core Splunk knowledge:
- `../splunk/references/architecture.md` -- Splunk platform internals
- `../splunk/references/diagnostics.md` -- Troubleshooting
- `../splunk/references/best-practices.md` -- SPL optimization, CIM compliance, RBA patterns