Apply David Bianco's threat hunting frameworks including the Pyramid of Pain and Threat Hunting Maturity Model. Emphasizes prioritizing detection by adversary cost and building mature hunting programs. Use when designing detection strategies or assessing hunting capability.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Instruções da origem · Visualização somente leitura
name
bianco-pyramid-of-pain
description
Apply David Bianco's threat hunting frameworks including the Pyramid of Pain and Threat Hunting Maturity Model. Emphasizes prioritizing detection by adversary cost and building mature hunting programs. Use when designing detection strategies or assessing hunting capability.
David Bianco — Threat Hunting Frameworks
Overview
David Bianco is a SANS instructor with 20+ years in information security, primarily in detection and response. He created two foundational frameworks: the Pyramid of Pain (2013), which prioritizes indicators by adversary impact, and the Threat Hunting Maturity Model, which guides organizations in building hunting capability.
References
Pyramid of Pain: Original 2013 blog post, SANS documentation
"The more pain you cause adversaries, the more effective your detection."
"Hunting is not about finding evil—it's about finding evil that your automated defenses missed."
Bianco's insight: not all indicators are equal. Detecting hash values is trivial for adversaries to evade; detecting their tactics, techniques, and procedures (TTPs) forces them to fundamentally change how they operate.
Level 0: Initial
├── Relies primarily on automated alerting
├── Little to no routine data collection
└── Hunting: None
Level 1: Minimal
├── Incorporates threat intelligence indicators
├── Moderate data collection
└── Hunting: IOC searches only
Level 2: Procedural
├── Follows procedures from others
├── High/very high data collection
└── Hunting: Follows published playbooks
Level 3: Innovative
├── Creates new procedures
├── High/very high data collection
└── Hunting: Creates original hypotheses
Level 4: Leading
├── Automates successful hunts
├── Very high data collection
└── Hunting: Continuous, automated
When Implementing
Always
Prioritize TTP-based detections over IOC matching
Measure detection effectiveness by adversary pain
Document and share successful hunt methodologies
Automate proven hunts into continuous detection
Assess your organization's hunting maturity honestly
Never
Rely solely on hash-based detection
Treat all indicators as equally valuable
Hunt without a hypothesis
Fail to document findings
Ignore organizational maturity constraints
Prefer
Behavioral detection over signature matching
Hypothesis-driven hunts over random searching
Automated continuous hunting over periodic campaigns
What pyramid level is this? Prioritize TTP-based detection
What pain does this cause? Measure detection value by adversary impact
What's our maturity level? Match hunting to organizational capability
Can we automate this? Successful hunts become continuous detection
What did we learn? Every hunt improves the program
Signature Bianco Moves
Pyramid of Pain for indicator prioritization
Maturity model for program development
TTP focus over IOC collection
Hypothesis-driven hunting
Automation of proven hunts
Continuous improvement mindset
self
@property
def
priority_score
self
float
"""Higher score = better detection to invest in"""
# Weight by pyramid level, penalize false positives
return
self
10
1
self
class
DetectionPortfolio
"""Manage detections with pyramid awareness"""
def
__init__
self
self
List
def
add
self, detection: Detection
self
def
coverage_by_level
self
dict
"""Assess coverage at each pyramid level"""
for
in
for
in
self
return
def
maturity_assessment
self
str
"""Assess detection maturity based on pyramid distribution"""
self
len
len
len
len
len
len
self
if
0
return
"No detections - Level 0"
if
0.5
return
"Mature - Strong TTP focus"
elif
0.25
return
"Developing - Building TTP coverage"
else
return
"Immature - Over-reliant on IOCs"
def
improvement_recommendations
self
List
str
"""Suggest where to invest detection effort"""
self
if
len
10
"Priority: Add more TTP-based detections. "
"These cause maximum adversary pain."
if
len
5
"Add tool-based detections for common attack frameworks "
"(Cobalt Strike, Mimikatz, etc.)"
len
len
if
len
self
0.5
"Warning: Over 50% of detections are low-value IOCs. "
"Consider retiring stale IOC rules."
return
# Example: TTP-level detection
"Suspicious PowerShell Download Cradle"
"Detects PowerShell download and execute patterns"
"T1059.001"
"""
process_name:powershell.exe AND
(command_line:*DownloadString* OR
command_line:*IEX* OR
command_line:*Invoke-Expression*)
"""
0.05
# Example: Hash-level detection (low value)
"Known Malware Hash"
"Matches specific malware sample hash"
None
"file_hash:e99a18c428cb38d5f260853678922e03"
0.001
self
"""Determine maturity level"""
# Level 4: Leading
if
self
and
self
and
self
and
self
8
return
# Level 3: Innovative
if
self
and
self
and
self
4
return
# Level 2: Procedural
if
self
and
self
and
self
2
return
# Level 1: Minimal
if
self
return
# Level 0: Initial
return
def
roadmap_to_next_level
self
List
str
"""What's needed to advance"""
self
if
return
"Implement threat intelligence feeds"
"Begin IOC-based hunting"
"Ensure basic telemetry collection"
"Identify potential hunting analysts"
elif
return
"Develop or adopt hunting playbooks"
"Dedicate analyst time to hunting"
"Increase data collection coverage"
"Hunt at least 2x per month"
elif
return
"Train hunters to create original hypotheses"
"Document all hunt findings"
"Begin measuring hunt effectiveness"
"Increase hunt frequency to 4x/month"
elif
return
"Automate successful hunts into detections"
"Build metrics dashboard for hunting"
"Share methodologies with community"
"Achieve continuous hunting capability"
return
"You've achieved hunting mastery! 🏆"
{t}
for
in
for
in
self
f"### {platform}\n```\n{query}\n```\n\n"
f"""
## Expected Benign Activity
{chr(10).join(f'- {b}'for b in self.expected_benign)}
## Indicators of Compromise
{chr(10).join(f'- {i}'for i in self.indicators_of_compromise)}
## References
{chr(10).join(f'- {r}'for r in self.references)}
"""
return
# Example: Credential Dumping Hunt (TTP-level)
"LSASS Memory Access"
"Adversaries are accessing LSASS memory to dump credentials"
"Credential Access"
"T1003.001"
"Process creation with command line"
"Process access events (Sysmon Event 10)"
"Memory read operations"
"Splunk"
"""
index=windows sourcetype=sysmon EventCode=10
TargetImage="*lsass.exe"
NOT SourceImage IN ("*\\\\MsMpEng.exe", "*\\\\csrss.exe")
| stats count by SourceImage, SourceProcessGUID
| where count > 1
"""
"Elastic"
"""
event.code:10 AND
process.target.name:lsass.exe AND
NOT process.name:(MsMpEng.exe OR csrss.exe)
"""