mirror of
https://github.com/SHOGGOTH-SECTOR/sica-fondt.git
synced 2026-08-01 08:30:20 +00:00
Place useful parts of the surrounding repos into sica-fondt by layer, per the
body model (Ada = membrane; brain/endocrine/capabilities/knowledge non-Ada):
- brain/ LLM reasoning + providers (dapr, hermes, MoMoA)
- capabilities/ REPRAG sidecars: hermes tools/skills, dapr tools, parallel
dispatch, A51 channels, and the OSINT cluster
- knowledge/ LORAG corpus: 754 cyber-skills, agency personas, secure-coding,
MITRE ATT&CK data
- reference/ defensive threat-reference (C3, shhbruh doc) + AdaYaml parser
License handling: AGPL sources (worldosint, advanced_evolution, mercury,
Reticulum) and GPL DeTTECT are SPEC-only clean-room/port descriptions — no
copyleft code copied. MIT/Apache/data parts copied as working trees.
Safety: shhbruh escape/persistence material and C3 covert-C2 kept as reference
only, not wired into the running organism. See CONSOLIDATION.md.
https://claude.ai/code/session_01UehUqEXXJJCsHoA4voCU5c
286 lines
9.6 KiB
Markdown
286 lines
9.6 KiB
Markdown
---
|
|
name: performing-threat-hunting-with-elastic-siem
|
|
description: 'Performs proactive threat hunting in Elastic Security SIEM using KQL/EQL queries, detection rules, and Timeline
|
|
investigation to identify threats that evade automated detection. Use when SOC teams need to hunt for specific ATT&CK techniques,
|
|
investigate anomalous behaviors, or validate detection coverage gaps using Elasticsearch and Kibana Security.
|
|
|
|
'
|
|
domain: cybersecurity
|
|
subdomain: soc-operations
|
|
tags:
|
|
- soc
|
|
- elastic
|
|
- siem
|
|
- threat-hunting
|
|
- kql
|
|
- eql
|
|
- mitre-attack
|
|
- kibana
|
|
version: '1.0'
|
|
author: mahipal
|
|
license: Apache-2.0
|
|
nist_ai_rmf:
|
|
- MEASURE-2.7
|
|
- MAP-5.1
|
|
- MANAGE-2.4
|
|
atlas_techniques:
|
|
- AML.T0070
|
|
- AML.T0066
|
|
- AML.T0082
|
|
d3fend_techniques:
|
|
- Application Protocol Command Analysis
|
|
- Network Isolation
|
|
- Network Traffic Analysis
|
|
- Client-server Payload Profiling
|
|
- Network Traffic Community Deviation
|
|
nist_csf:
|
|
- DE.CM-01
|
|
- DE.AE-02
|
|
- RS.MA-01
|
|
- DE.AE-06
|
|
---
|
|
# Performing Threat Hunting with Elastic SIEM
|
|
|
|
## When to Use
|
|
|
|
Use this skill when:
|
|
- SOC teams need to proactively search for threats not caught by existing detection rules
|
|
- Threat intelligence reports describe new TTPs requiring validation against historical data
|
|
- Red team exercises reveal detection gaps that need hunting query development
|
|
- Periodic hunting cadence requires structured hypothesis-driven investigations
|
|
|
|
**Do not use** for real-time alert triage — that belongs in the Elastic Security Alerts queue with automated detection rules.
|
|
|
|
## Prerequisites
|
|
|
|
- Elastic Security 8.x+ with Security app enabled in Kibana
|
|
- Data ingestion via Elastic Agent (Endpoint Security integration) or Beats (Winlogbeat, Filebeat, Packetbeat)
|
|
- Data normalized to Elastic Common Schema (ECS) field mappings
|
|
- User role with `kibana_security_solution` and `read` access to relevant indices
|
|
- MITRE ATT&CK framework knowledge for hypothesis generation
|
|
|
|
## Workflow
|
|
|
|
### Step 1: Develop Hunting Hypothesis
|
|
|
|
Start with a hypothesis based on threat intelligence, ATT&CK technique, or anomaly:
|
|
|
|
**Example Hypothesis**: "Attackers are using living-off-the-land binaries (LOLBins) for execution, specifically certutil.exe for file downloads (T1105 — Ingress Tool Transfer)."
|
|
|
|
Define scope:
|
|
- **Data sources**: `logs-endpoint.events.process-*`, `logs-windows.sysmon_operational-*`
|
|
- **Time range**: Last 30 days
|
|
- **Expected indicators**: certutil.exe with `-urlcache`, `-split`, or `-decode` flags
|
|
|
|
### Step 2: Hunt Using KQL in Discover
|
|
|
|
Open Kibana Discover and query with KQL (Kibana Query Language):
|
|
|
|
```kql
|
|
process.name: "certutil.exe" and process.args: ("-urlcache" or "-split" or "-decode" or "-encode" or "-verifyctl")
|
|
```
|
|
|
|
Refine to exclude known legitimate use:
|
|
|
|
```kql
|
|
process.name: "certutil.exe"
|
|
and process.args: ("-urlcache" or "-split" or "-decode")
|
|
and not process.parent.name: ("sccm*.exe" or "ccmexec.exe")
|
|
and not user.name: "SYSTEM"
|
|
```
|
|
|
|
For PowerShell-based hunting with encoded commands (T1059.001):
|
|
|
|
```kql
|
|
process.name: "powershell.exe"
|
|
and process.args: ("-enc" or "-encodedcommand" or "-e " or "frombase64string" or "iex" or "invoke-expression")
|
|
and not process.parent.executable: "C:\\Windows\\System32\\svchost.exe"
|
|
```
|
|
|
|
### Step 3: Use EQL for Sequence Detection
|
|
|
|
Elastic Event Query Language (EQL) enables hunting for multi-step attack sequences:
|
|
|
|
**Detect parent-child process anomalies (T1055 — Process Injection):**
|
|
|
|
```eql
|
|
sequence by host.name with maxspan=5m
|
|
[process where event.type == "start" and process.name == "explorer.exe"]
|
|
[process where event.type == "start" and process.parent.name == "explorer.exe"
|
|
and process.name in ("cmd.exe", "powershell.exe", "rundll32.exe", "regsvr32.exe")]
|
|
```
|
|
|
|
**Detect credential dumping sequence (T1003):**
|
|
|
|
```eql
|
|
sequence by host.name with maxspan=2m
|
|
[process where event.type == "start"
|
|
and process.name in ("procdump.exe", "procdump64.exe", "rundll32.exe", "taskmgr.exe")
|
|
and process.args : "*lsass*"]
|
|
[file where event.type == "creation"
|
|
and file.extension in ("dmp", "dump", "bin")]
|
|
```
|
|
|
|
**Detect lateral movement via PsExec (T1021.002):**
|
|
|
|
```eql
|
|
sequence by source.ip with maxspan=1m
|
|
[authentication where event.outcome == "success" and winlog.logon.type == "Network"]
|
|
[process where event.type == "start"
|
|
and process.name == "psexesvc.exe"]
|
|
```
|
|
|
|
### Step 4: Investigate with Elastic Security Timeline
|
|
|
|
Create a Timeline investigation in Elastic Security for collaborative analysis:
|
|
|
|
1. Navigate to **Security > Timelines > Create new timeline**
|
|
2. Add events from hunting queries using "Add to timeline" from Discover
|
|
3. Pin critical events and add investigation notes
|
|
4. Use the Timeline query bar for additional filtering:
|
|
|
|
```kql
|
|
host.name: "WORKSTATION-042" and event.category: ("process" or "network" or "file")
|
|
```
|
|
|
|
Add columns for key fields: `@timestamp`, `event.action`, `process.name`, `process.args`, `user.name`, `source.ip`, `destination.ip`
|
|
|
|
### Step 5: Build Detection Rules from Findings
|
|
|
|
Convert successful hunting queries into Elastic detection rules:
|
|
|
|
```json
|
|
{
|
|
"name": "Certutil Download Activity",
|
|
"description": "Detects certutil.exe used for file download, a common LOLBin technique",
|
|
"risk_score": 73,
|
|
"severity": "high",
|
|
"type": "eql",
|
|
"query": "process where event.type == \"start\" and process.name == \"certutil.exe\" and process.args : (\"-urlcache\", \"-split\", \"-decode\") and not process.parent.name : (\"ccmexec.exe\", \"sccm*.exe\")",
|
|
"threat": [
|
|
{
|
|
"framework": "MITRE ATT&CK",
|
|
"tactic": {
|
|
"id": "TA0011",
|
|
"name": "Command and Control"
|
|
},
|
|
"technique": [
|
|
{
|
|
"id": "T1105",
|
|
"name": "Ingress Tool Transfer"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"tags": ["Hunting", "LOLBins", "T1105"],
|
|
"interval": "5m",
|
|
"from": "now-6m",
|
|
"enabled": true
|
|
}
|
|
```
|
|
|
|
Deploy via Elastic Security API:
|
|
|
|
```bash
|
|
curl -X POST "https://kibana:5601/api/detection_engine/rules" \
|
|
-H "kbn-xsrf: true" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: ApiKey YOUR_API_KEY" \
|
|
-d @certutil_rule.json
|
|
```
|
|
|
|
### Step 6: Aggregate and Visualize Findings
|
|
|
|
Create hunting dashboard with aggregations:
|
|
|
|
```json
|
|
GET logs-endpoint.events.process-*/_search
|
|
{
|
|
"size": 0,
|
|
"query": {
|
|
"bool": {
|
|
"must": [
|
|
{"term": {"process.name": "certutil.exe"}},
|
|
{"range": {"@timestamp": {"gte": "now-30d"}}}
|
|
]
|
|
}
|
|
},
|
|
"aggs": {
|
|
"by_host": {
|
|
"terms": {"field": "host.name", "size": 20},
|
|
"aggs": {
|
|
"by_user": {
|
|
"terms": {"field": "user.name", "size": 10}
|
|
},
|
|
"by_args": {
|
|
"terms": {"field": "process.args", "size": 10}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Step 7: Document Hunt and Close Loop
|
|
|
|
Record findings in a structured hunt report and update detection coverage:
|
|
|
|
- Hypothesis validated or refuted
|
|
- IOCs and affected hosts discovered
|
|
- Detection rules created or updated
|
|
- ATT&CK Navigator layer updated with new coverage
|
|
- Recommendations for security control improvements
|
|
|
|
## Key Concepts
|
|
|
|
| Term | Definition |
|
|
|------|-----------|
|
|
| **KQL** | Kibana Query Language — simplified query syntax for filtering data in Kibana Discover and dashboards |
|
|
| **EQL** | Event Query Language — Elastic's sequence-aware query language for detecting multi-step attack patterns |
|
|
| **ECS** | Elastic Common Schema — standardized field naming convention enabling cross-source correlation |
|
|
| **Timeline** | Elastic Security investigation workspace for collaborative event analysis and annotation |
|
|
| **Hypothesis-Driven Hunting** | Structured approach starting with a theory about attacker behavior, tested against telemetry data |
|
|
| **LOLBins** | Living Off the Land Binaries — legitimate Windows tools (certutil, mshta, rundll32) abused by attackers |
|
|
|
|
## Tools & Systems
|
|
|
|
- **Elastic Security**: SIEM platform built on Elasticsearch with detection rules, Timeline, and case management
|
|
- **Elastic Agent**: Unified data collection agent replacing Beats for endpoint and network telemetry
|
|
- **Elastic Endpoint Security**: EDR capabilities integrated into Elastic Agent for process, file, and network monitoring
|
|
- **ATT&CK Navigator**: MITRE tool for tracking detection and hunting coverage across the ATT&CK matrix
|
|
|
|
## Common Scenarios
|
|
|
|
- **LOLBin Abuse**: Hunt for mshta.exe, regsvr32.exe, rundll32.exe, certutil.exe with suspicious arguments
|
|
- **Persistence Mechanisms**: Query for scheduled task creation, registry run key modification, WMI subscriptions
|
|
- **C2 Beaconing**: Analyze network flow data for periodic outbound connections with consistent intervals
|
|
- **Data Staging**: Hunt for large file compression (7z, rar, zip) followed by outbound transfers
|
|
- **Account Manipulation**: Search for net.exe user creation, group membership changes, or password resets by non-admin users
|
|
|
|
## Output Format
|
|
|
|
```
|
|
THREAT HUNT REPORT — TH-2024-012
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
Hypothesis: Attackers using certutil.exe for tool download (T1105)
|
|
Period: 2024-02-15 to 2024-03-15
|
|
Data Sources: Elastic Endpoint (process events), Sysmon
|
|
|
|
Findings:
|
|
Total certutil executions: 342
|
|
With -urlcache flag: 12 (3.5%)
|
|
Suspicious (non-SCCM): 3 confirmed anomalous
|
|
|
|
Affected Hosts:
|
|
WORKSTATION-042 (Finance) — certutil downloading payload.exe from external IP
|
|
SERVER-DB-03 (Database) — certutil decoding base64 encoded binary
|
|
LAPTOP-EXEC-07 (Executive) — certutil downloading script from Pastebin
|
|
|
|
Actions Taken:
|
|
[DONE] 3 hosts isolated for forensic investigation
|
|
[DONE] Detection rule "Certutil Download Activity" deployed (ID: elastic-th012)
|
|
[DONE] ATT&CK Navigator updated: T1105 coverage = GREEN
|
|
|
|
Verdict: HYPOTHESIS CONFIRMED — 3 true positive findings escalated to IR
|
|
```
|