agentic-threat-hunting-framework 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentic_threat_hunting_framework-0.1.0/LICENSE +21 -0
- agentic_threat_hunting_framework-0.1.0/MANIFEST.in +45 -0
- agentic_threat_hunting_framework-0.1.0/PKG-INFO +339 -0
- agentic_threat_hunting_framework-0.1.0/README.md +289 -0
- agentic_threat_hunting_framework-0.1.0/USING_ATHF.md +434 -0
- agentic_threat_hunting_framework-0.1.0/agentic_threat_hunting_framework.egg-info/PKG-INFO +339 -0
- agentic_threat_hunting_framework-0.1.0/agentic_threat_hunting_framework.egg-info/SOURCES.txt +53 -0
- agentic_threat_hunting_framework-0.1.0/agentic_threat_hunting_framework.egg-info/dependency_links.txt +1 -0
- agentic_threat_hunting_framework-0.1.0/agentic_threat_hunting_framework.egg-info/entry_points.txt +2 -0
- agentic_threat_hunting_framework-0.1.0/agentic_threat_hunting_framework.egg-info/requires.txt +19 -0
- agentic_threat_hunting_framework-0.1.0/agentic_threat_hunting_framework.egg-info/top_level.txt +1 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf-cli-workflow.gif +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf-level0.gif +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf-level1.gif +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf-level2.gif +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf-level3.gif +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf_fivelevels.png +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf_level_3.png +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf_lock.png +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf_logo.png +0 -0
- agentic_threat_hunting_framework-0.1.0/assets/athf_manual_v_ai.png +0 -0
- agentic_threat_hunting_framework-0.1.0/athf/__init__.py +9 -0
- agentic_threat_hunting_framework-0.1.0/athf/__version__.py +3 -0
- agentic_threat_hunting_framework-0.1.0/athf/cli.py +127 -0
- agentic_threat_hunting_framework-0.1.0/athf/commands/__init__.py +1 -0
- agentic_threat_hunting_framework-0.1.0/athf/commands/hunt.py +596 -0
- agentic_threat_hunting_framework-0.1.0/athf/commands/init.py +411 -0
- agentic_threat_hunting_framework-0.1.0/athf/core/__init__.py +1 -0
- agentic_threat_hunting_framework-0.1.0/athf/core/hunt_manager.py +245 -0
- agentic_threat_hunting_framework-0.1.0/athf/core/hunt_parser.py +169 -0
- agentic_threat_hunting_framework-0.1.0/athf/core/template_engine.py +224 -0
- agentic_threat_hunting_framework-0.1.0/athf/utils/__init__.py +1 -0
- agentic_threat_hunting_framework-0.1.0/docs/CHANGELOG.md +94 -0
- agentic_threat_hunting_framework-0.1.0/docs/CLI_REFERENCE.md +956 -0
- agentic_threat_hunting_framework-0.1.0/docs/INSTALL.md +594 -0
- agentic_threat_hunting_framework-0.1.0/docs/README.md +31 -0
- agentic_threat_hunting_framework-0.1.0/docs/environment.md +256 -0
- agentic_threat_hunting_framework-0.1.0/docs/getting-started.md +419 -0
- agentic_threat_hunting_framework-0.1.0/docs/level4-agentic-workflows.md +480 -0
- agentic_threat_hunting_framework-0.1.0/docs/lock-pattern.md +149 -0
- agentic_threat_hunting_framework-0.1.0/docs/maturity-model.md +400 -0
- agentic_threat_hunting_framework-0.1.0/docs/why-athf.md +44 -0
- agentic_threat_hunting_framework-0.1.0/hunts/FORMAT_GUIDELINES.md +507 -0
- agentic_threat_hunting_framework-0.1.0/hunts/H-0001.md +453 -0
- agentic_threat_hunting_framework-0.1.0/hunts/H-0002.md +436 -0
- agentic_threat_hunting_framework-0.1.0/hunts/H-0003.md +546 -0
- agentic_threat_hunting_framework-0.1.0/hunts/README.md +231 -0
- agentic_threat_hunting_framework-0.1.0/integrations/MCP_CATALOG.md +45 -0
- agentic_threat_hunting_framework-0.1.0/integrations/README.md +129 -0
- agentic_threat_hunting_framework-0.1.0/integrations/quickstart/splunk.md +162 -0
- agentic_threat_hunting_framework-0.1.0/knowledge/hunting-knowledge.md +2375 -0
- agentic_threat_hunting_framework-0.1.0/pyproject.toml +161 -0
- agentic_threat_hunting_framework-0.1.0/setup.cfg +4 -0
- agentic_threat_hunting_framework-0.1.0/setup.py +12 -0
- agentic_threat_hunting_framework-0.1.0/templates/HUNT_LOCK.md +228 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Sydney Marrone
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# MANIFEST.in - Package data inclusion rules for ATHF
|
|
2
|
+
|
|
3
|
+
# Include documentation files
|
|
4
|
+
include README.md
|
|
5
|
+
include LICENSE
|
|
6
|
+
include USING_ATHF.md
|
|
7
|
+
include INSTALL.md
|
|
8
|
+
include CHANGELOG.md
|
|
9
|
+
|
|
10
|
+
# Include all markdown documentation in docs/
|
|
11
|
+
recursive-include docs *.md
|
|
12
|
+
|
|
13
|
+
# Include templates
|
|
14
|
+
recursive-include templates *.md
|
|
15
|
+
|
|
16
|
+
# Include example hunts
|
|
17
|
+
recursive-include hunts *.md
|
|
18
|
+
|
|
19
|
+
# Include example queries
|
|
20
|
+
recursive-include queries *.spl *.kql *.sql
|
|
21
|
+
|
|
22
|
+
# Include knowledge base
|
|
23
|
+
recursive-include knowledge *.md
|
|
24
|
+
|
|
25
|
+
# Include integration documentation
|
|
26
|
+
recursive-include integrations *.md
|
|
27
|
+
|
|
28
|
+
# Include visual assets
|
|
29
|
+
recursive-include assets *.png *.gif *.svg
|
|
30
|
+
|
|
31
|
+
# Exclude development and test files
|
|
32
|
+
exclude .gitignore
|
|
33
|
+
exclude .athfconfig.yaml
|
|
34
|
+
exclude pytest.ini
|
|
35
|
+
exclude .coveragerc
|
|
36
|
+
recursive-exclude tests *
|
|
37
|
+
recursive-exclude .github *
|
|
38
|
+
prune tests
|
|
39
|
+
prune .github
|
|
40
|
+
|
|
41
|
+
# Exclude cached files
|
|
42
|
+
global-exclude __pycache__
|
|
43
|
+
global-exclude *.py[cod]
|
|
44
|
+
global-exclude *$py.class
|
|
45
|
+
global-exclude .DS_Store
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentic-threat-hunting-framework
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Agentic Threat Hunting Framework - Memory and AI for threat hunters
|
|
5
|
+
Author-email: Sydney Marrone <athf@nebulock.io>
|
|
6
|
+
Maintainer-email: Sydney Marrone <athf@nebulock.io>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
9
|
+
Project-URL: Documentation, https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/tree/main/docs
|
|
10
|
+
Project-URL: Repository, https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
11
|
+
Project-URL: Issues, https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/issues
|
|
12
|
+
Project-URL: Discussions, https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions
|
|
13
|
+
Keywords: threat-hunting,security,cybersecurity,mitre-attack,detection-engineering,soc,blue-team,incident-response,threat-intelligence,agentic-ai
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: Intended Audience :: Information Technology
|
|
16
|
+
Classifier: Intended Audience :: System Administrators
|
|
17
|
+
Classifier: Topic :: Security
|
|
18
|
+
Classifier: Topic :: System :: Monitoring
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
27
|
+
Classifier: Operating System :: OS Independent
|
|
28
|
+
Classifier: Environment :: Console
|
|
29
|
+
Requires-Python: >=3.8
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
License-File: LICENSE
|
|
32
|
+
Requires-Dist: click>=8.0.0
|
|
33
|
+
Requires-Dist: pyyaml>=6.0
|
|
34
|
+
Requires-Dist: rich>=10.0.0
|
|
35
|
+
Requires-Dist: jinja2>=3.0.0
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
39
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
40
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
41
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
42
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
43
|
+
Requires-Dist: bandit[toml]>=1.7.0; extra == "dev"
|
|
44
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
45
|
+
Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
|
|
46
|
+
Provides-Extra: docs
|
|
47
|
+
Requires-Dist: mkdocs>=1.5.0; extra == "docs"
|
|
48
|
+
Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
|
|
49
|
+
Dynamic: license-file
|
|
50
|
+
|
|
51
|
+
<p align="center">
|
|
52
|
+
<img src="assets/athf_logo.png" alt="ATHF Logo" width="400"/>
|
|
53
|
+
</p>
|
|
54
|
+
|
|
55
|
+
<h1 align="center">Agentic Threat Hunting Framework (ATHF)</h1>
|
|
56
|
+
|
|
57
|
+
<p align="center">
|
|
58
|
+
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.8%2B-blue" alt="Python Version"></a>
|
|
59
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
|
60
|
+
<a href="https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/stargazers"><img src="https://img.shields.io/github/stars/Nebulock-Inc/agentic-threat-hunting-framework?style=social" alt="GitHub stars"></a>
|
|
61
|
+
</p>
|
|
62
|
+
|
|
63
|
+
<p align="center">
|
|
64
|
+
<strong><a href="#-quick-start">Quick Start</a></strong> •
|
|
65
|
+
<strong><a href="#installation">Installation</a></strong> •
|
|
66
|
+
<strong><a href="#documentation">Documentation</a></strong> •
|
|
67
|
+
<strong><a href="SHOWCASE.md">Examples</a></strong>
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<p align="center">
|
|
71
|
+
<em>Give your threat hunting program memory and agency.</em>
|
|
72
|
+
</p>
|
|
73
|
+
|
|
74
|
+
The **Agentic Threat Hunting Framework (ATHF)** is the memory and automation layer for your threat hunting program. It gives your hunts structure, persistence, and context - making every past investigation accessible to both humans and AI.
|
|
75
|
+
|
|
76
|
+
ATHF works with any hunting methodology (PEAK, TaHiTI, or your own process). It's not a replacement; it's the layer that makes your existing process AI-ready.
|
|
77
|
+
|
|
78
|
+
## What is ATHF?
|
|
79
|
+
|
|
80
|
+
ATHF provides structure and persistence for threat hunting programs. It's a markdown-based framework that:
|
|
81
|
+
|
|
82
|
+
- Documents hunts using the LOCK pattern (Learn → Observe → Check → Keep)
|
|
83
|
+
- Maintains a searchable repository of past investigations
|
|
84
|
+
- Enables AI assistants to reference your environment and previous work
|
|
85
|
+
- Works with any SIEM/EDR platform
|
|
86
|
+
|
|
87
|
+
## The Problem
|
|
88
|
+
|
|
89
|
+
Most threat hunting programs lose valuable context once a hunt ends. Notes live in Slack or tickets, queries are written once and forgotten, and lessons learned exist only in analysts' heads.
|
|
90
|
+
|
|
91
|
+
Even AI tools start from zero every time without access to your environment, your data, or your past hunts.
|
|
92
|
+
|
|
93
|
+
ATHF changes that by giving your hunts structure, persistence, and context.
|
|
94
|
+
|
|
95
|
+
**Read more:** [docs/why-athf.md](docs/why-athf.md)
|
|
96
|
+
|
|
97
|
+
## The LOCK Pattern
|
|
98
|
+
|
|
99
|
+
Every threat hunt follows the same basic loop: **Learn → Observe → Check → Keep**.
|
|
100
|
+
|
|
101
|
+

|
|
102
|
+
|
|
103
|
+
- **Learn:** Gather context from threat intel, alerts, or anomalies
|
|
104
|
+
- **Observe:** Form a hypothesis about adversary behavior
|
|
105
|
+
- **Check:** Test hypotheses with targeted queries
|
|
106
|
+
- **Keep:** Record findings and lessons learned
|
|
107
|
+
|
|
108
|
+
**Why LOCK?** It's small enough to use and strict enough for agents to interpret. By capturing every hunt in this format, ATHF makes it possible for AI assistants to recall prior work and suggest refined queries based on past results.
|
|
109
|
+
|
|
110
|
+
**Read more:** [docs/lock-pattern.md](docs/lock-pattern.md)
|
|
111
|
+
|
|
112
|
+
## The Five Levels of Agentic Hunting
|
|
113
|
+
|
|
114
|
+
ATHF defines a simple maturity model. Each level builds on the previous one.
|
|
115
|
+
|
|
116
|
+
**Most teams will live at Levels 1–2. Everything beyond that is optional maturity.**
|
|
117
|
+
|
|
118
|
+

|
|
119
|
+
|
|
120
|
+
| Level | Capability | What You Get |
|
|
121
|
+
|-------|-----------|--------------|
|
|
122
|
+
| **0** | Ad-hoc | Hunts exist in Slack, tickets, or analyst notes |
|
|
123
|
+
| **1** | Documented | Persistent hunt records using LOCK |
|
|
124
|
+
| **2** | Searchable | AI reads and recalls your hunts |
|
|
125
|
+
| **3** | Generative | AI executes queries via MCP tools |
|
|
126
|
+
| **4** | Agentic | Autonomous agents monitor and act |
|
|
127
|
+
|
|
128
|
+
**Level 1:** Operational within a day
|
|
129
|
+
**Level 2:** Operational within a week
|
|
130
|
+
**Level 3:** 2-4 weeks (optional)
|
|
131
|
+
**Level 4:** 1-3 months (optional)
|
|
132
|
+
|
|
133
|
+
**Read more:** [docs/maturity-model.md](docs/maturity-model.md)
|
|
134
|
+
|
|
135
|
+
## 🚀 Quick Start
|
|
136
|
+
|
|
137
|
+
### Option 1: Python CLI (Recommended)
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Clone and install from source
|
|
141
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
142
|
+
cd agentic-threat-hunting-framework
|
|
143
|
+
pip install -e .
|
|
144
|
+
|
|
145
|
+
# Initialize your hunt program
|
|
146
|
+
athf init
|
|
147
|
+
|
|
148
|
+
# Create your first hunt
|
|
149
|
+
athf hunt new --technique T1003.001 --title "LSASS Credential Dumping"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Option 2: Pure Markdown (No Installation)
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Clone the repository
|
|
156
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
157
|
+
cd agentic-threat-hunting-framework
|
|
158
|
+
|
|
159
|
+
# Copy a template and start documenting
|
|
160
|
+
cp templates/HUNT_LOCK.md hunts/H-0001.md
|
|
161
|
+
|
|
162
|
+
# Customize AGENTS.md with your environment
|
|
163
|
+
# Add your SIEM, EDR, and data sources
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Choose your AI assistant:** Claude Code, GitHub Copilot, or Cursor - any tool that can read your repository files.
|
|
167
|
+
|
|
168
|
+
**Full guide:** [docs/getting-started.md](docs/getting-started.md)
|
|
169
|
+
|
|
170
|
+
## 🔧 CLI Commands
|
|
171
|
+
|
|
172
|
+
ATHF includes a full-featured CLI for managing your hunts. Here's a quick reference:
|
|
173
|
+
|
|
174
|
+
### Initialize Workspace
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
athf init # Interactive setup
|
|
178
|
+
athf init --non-interactive # Use defaults
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Create Hunts
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
athf hunt new # Interactive mode
|
|
185
|
+
athf hunt new \
|
|
186
|
+
--technique T1003.001 \
|
|
187
|
+
--title "LSASS Dumping Detection" \
|
|
188
|
+
--platform windows
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### List & Search
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
athf hunt list # Show all hunts
|
|
195
|
+
athf hunt list --status completed # Filter by status
|
|
196
|
+
athf hunt list --output json # JSON output
|
|
197
|
+
athf hunt search "kerberoasting" # Full-text search
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Validate & Stats
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
athf hunt validate # Validate all hunts
|
|
204
|
+
athf hunt validate H-0001 # Validate specific hunt
|
|
205
|
+
athf hunt stats # Show statistics
|
|
206
|
+
athf hunt coverage # MITRE ATT&CK coverage
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Full documentation:** [CLI Reference](docs/CLI_REFERENCE.md)
|
|
210
|
+
|
|
211
|
+
## 📺 See It In Action
|
|
212
|
+
|
|
213
|
+

|
|
214
|
+
|
|
215
|
+
Watch ATHF in action: initialize a workspace, create hunts, and explore your threat hunting catalog in under 60 seconds.
|
|
216
|
+
|
|
217
|
+
**[View example hunts →](SHOWCASE.md)**
|
|
218
|
+
|
|
219
|
+
## Installation
|
|
220
|
+
|
|
221
|
+
### Prerequisites
|
|
222
|
+
- Python 3.8-3.13 (for CLI option)
|
|
223
|
+
- Git
|
|
224
|
+
- Your favorite AI code assistant
|
|
225
|
+
|
|
226
|
+
### CLI Installation
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
230
|
+
cd agentic-threat-hunting-framework
|
|
231
|
+
pip install -e .
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Markdown-Only Setup (No CLI)
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
238
|
+
cd agentic-threat-hunting-framework
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Start documenting hunts in the `hunts/` directory using the LOCK pattern.
|
|
242
|
+
|
|
243
|
+
## Documentation
|
|
244
|
+
|
|
245
|
+
### Core Concepts
|
|
246
|
+
|
|
247
|
+
- [Why ATHF Exists](docs/why-athf.md) - The problem and solution
|
|
248
|
+
- [The LOCK Pattern](docs/lock-pattern.md) - Structure for all hunts
|
|
249
|
+
- [Maturity Model](docs/maturity-model.md) - The five levels explained
|
|
250
|
+
- [Getting Started](docs/getting-started.md) - Step-by-step onboarding
|
|
251
|
+
|
|
252
|
+
### Level-Specific Guides
|
|
253
|
+
|
|
254
|
+
- [Level 1: Documented Hunts](docs/maturity-model.md#level-1-documented-hunts)
|
|
255
|
+
- [Level 2: Searchable Memory](docs/maturity-model.md#level-2-searchable-memory)
|
|
256
|
+
- [Level 3: Generative Capabilities](docs/level4-agentic-workflows.md)
|
|
257
|
+
- [Level 4: Agentic Workflows](docs/level4-agentic-workflows.md)
|
|
258
|
+
|
|
259
|
+
### Integration & Customization
|
|
260
|
+
|
|
261
|
+
- [Installation & Development](docs/INSTALL.md) - Setup, fork customization, testing
|
|
262
|
+
- [MCP Catalog](integrations/MCP_CATALOG.md) - Available tool integrations
|
|
263
|
+
- [Quickstart Guides](integrations/quickstart/) - Setup for specific tools
|
|
264
|
+
- [Using ATHF](USING_ATHF.md) - Adoption and customization
|
|
265
|
+
|
|
266
|
+
## 🎖️ Featured Hunts
|
|
267
|
+
|
|
268
|
+
### H-0001: macOS Information Stealer Detection
|
|
269
|
+
|
|
270
|
+
Detected Atomic Stealer collecting Safari cookies via AppleScript.
|
|
271
|
+
**Result:** 1 true positive, host isolated before exfiltration.
|
|
272
|
+
|
|
273
|
+
**Key Insight:** Behavior-based detection outperformed signature-based approaches. Process signature validation identified unsigned malware attempting data collection.
|
|
274
|
+
|
|
275
|
+
[View full hunt →](hunts/H-0001.md) | [See more examples →](SHOWCASE.md)
|
|
276
|
+
|
|
277
|
+
## Why This Matters
|
|
278
|
+
|
|
279
|
+
You might wonder how this interacts with frameworks like [PEAK](https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html). PEAK gives you a solid method for how to hunt. ATHF builds on that foundation by giving you structure, memory, and continuity. PEAK guides the work. ATHF ensures you capture the work, organize it, and reuse it across future hunts.
|
|
280
|
+
|
|
281
|
+
Agentic threat hunting is not about replacing analysts. It's about building systems that can:
|
|
282
|
+
|
|
283
|
+
- Remember what has been done before
|
|
284
|
+
- Learn from past successes and mistakes
|
|
285
|
+
- Support human judgment with contextual recall
|
|
286
|
+
|
|
287
|
+
When your framework has memory, you stop losing knowledge to turnover or forgotten notes. When your AI assistant can reference that memory, it becomes a force multiplier.
|
|
288
|
+
|
|
289
|
+
## 💬 Community & Support
|
|
290
|
+
|
|
291
|
+
- **GitHub Discussions:** [Ask questions, share hunts](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)
|
|
292
|
+
- **Issues:** [Report bugs or request features](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/issues)
|
|
293
|
+
- **Adoption Guide:** See [USING_ATHF.md](USING_ATHF.md) for how to use ATHF in your organization
|
|
294
|
+
- **LinkedIn:** [Nebulock Inc.](https://www.linkedin.com/company/nebulock-inc) - Follow for updates
|
|
295
|
+
|
|
296
|
+
## 📖 Using ATHF
|
|
297
|
+
|
|
298
|
+
ATHF is a framework to internalize, not a platform to extend. Fork it, customize it, make it yours.
|
|
299
|
+
|
|
300
|
+
**Repository:** [https://github.com/Nebulock-Inc/agentic-threat-hunting-framework](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework)
|
|
301
|
+
|
|
302
|
+
See [USING_ATHF.md](USING_ATHF.md) for adoption guidance. Your hunts stay yours—sharing back is optional but appreciated ([Discussions](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)).
|
|
303
|
+
|
|
304
|
+
The goal is to help every threat hunting team move from ad-hoc memory to structured, agentic capability.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## 🛠️ Development & Customization
|
|
309
|
+
|
|
310
|
+
ATHF is designed to be forked and customized for your organization.
|
|
311
|
+
|
|
312
|
+
**See [docs/INSTALL.md#development--customization](docs/INSTALL.md#development--customization) for:**
|
|
313
|
+
- Setting up your fork for development
|
|
314
|
+
- Pre-commit hooks for code quality
|
|
315
|
+
- Testing and type checking
|
|
316
|
+
- Customization examples
|
|
317
|
+
- CI/CD integration
|
|
318
|
+
|
|
319
|
+
Quick start:
|
|
320
|
+
```bash
|
|
321
|
+
pip install -e ".[dev]" # Install dev dependencies
|
|
322
|
+
pre-commit install # Set up quality checks
|
|
323
|
+
pytest tests/ -v # Run tests
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## 👤 Author
|
|
329
|
+
|
|
330
|
+
Created by **Sydney Marrone** © 2025
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
**Start small. Document one hunt. Add structure. Build memory.**
|
|
335
|
+
|
|
336
|
+
Memory is the multiplier. Agency is the force.
|
|
337
|
+
Once your program can remember, everything else becomes possible.
|
|
338
|
+
|
|
339
|
+
Happy hunting!
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/athf_logo.png" alt="ATHF Logo" width="400"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Agentic Threat Hunting Framework (ATHF)</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.8%2B-blue" alt="Python Version"></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
|
10
|
+
<a href="https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/stargazers"><img src="https://img.shields.io/github/stars/Nebulock-Inc/agentic-threat-hunting-framework?style=social" alt="GitHub stars"></a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<strong><a href="#-quick-start">Quick Start</a></strong> •
|
|
15
|
+
<strong><a href="#installation">Installation</a></strong> •
|
|
16
|
+
<strong><a href="#documentation">Documentation</a></strong> •
|
|
17
|
+
<strong><a href="SHOWCASE.md">Examples</a></strong>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<em>Give your threat hunting program memory and agency.</em>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
The **Agentic Threat Hunting Framework (ATHF)** is the memory and automation layer for your threat hunting program. It gives your hunts structure, persistence, and context - making every past investigation accessible to both humans and AI.
|
|
25
|
+
|
|
26
|
+
ATHF works with any hunting methodology (PEAK, TaHiTI, or your own process). It's not a replacement; it's the layer that makes your existing process AI-ready.
|
|
27
|
+
|
|
28
|
+
## What is ATHF?
|
|
29
|
+
|
|
30
|
+
ATHF provides structure and persistence for threat hunting programs. It's a markdown-based framework that:
|
|
31
|
+
|
|
32
|
+
- Documents hunts using the LOCK pattern (Learn → Observe → Check → Keep)
|
|
33
|
+
- Maintains a searchable repository of past investigations
|
|
34
|
+
- Enables AI assistants to reference your environment and previous work
|
|
35
|
+
- Works with any SIEM/EDR platform
|
|
36
|
+
|
|
37
|
+
## The Problem
|
|
38
|
+
|
|
39
|
+
Most threat hunting programs lose valuable context once a hunt ends. Notes live in Slack or tickets, queries are written once and forgotten, and lessons learned exist only in analysts' heads.
|
|
40
|
+
|
|
41
|
+
Even AI tools start from zero every time without access to your environment, your data, or your past hunts.
|
|
42
|
+
|
|
43
|
+
ATHF changes that by giving your hunts structure, persistence, and context.
|
|
44
|
+
|
|
45
|
+
**Read more:** [docs/why-athf.md](docs/why-athf.md)
|
|
46
|
+
|
|
47
|
+
## The LOCK Pattern
|
|
48
|
+
|
|
49
|
+
Every threat hunt follows the same basic loop: **Learn → Observe → Check → Keep**.
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
- **Learn:** Gather context from threat intel, alerts, or anomalies
|
|
54
|
+
- **Observe:** Form a hypothesis about adversary behavior
|
|
55
|
+
- **Check:** Test hypotheses with targeted queries
|
|
56
|
+
- **Keep:** Record findings and lessons learned
|
|
57
|
+
|
|
58
|
+
**Why LOCK?** It's small enough to use and strict enough for agents to interpret. By capturing every hunt in this format, ATHF makes it possible for AI assistants to recall prior work and suggest refined queries based on past results.
|
|
59
|
+
|
|
60
|
+
**Read more:** [docs/lock-pattern.md](docs/lock-pattern.md)
|
|
61
|
+
|
|
62
|
+
## The Five Levels of Agentic Hunting
|
|
63
|
+
|
|
64
|
+
ATHF defines a simple maturity model. Each level builds on the previous one.
|
|
65
|
+
|
|
66
|
+
**Most teams will live at Levels 1–2. Everything beyond that is optional maturity.**
|
|
67
|
+
|
|
68
|
+

|
|
69
|
+
|
|
70
|
+
| Level | Capability | What You Get |
|
|
71
|
+
|-------|-----------|--------------|
|
|
72
|
+
| **0** | Ad-hoc | Hunts exist in Slack, tickets, or analyst notes |
|
|
73
|
+
| **1** | Documented | Persistent hunt records using LOCK |
|
|
74
|
+
| **2** | Searchable | AI reads and recalls your hunts |
|
|
75
|
+
| **3** | Generative | AI executes queries via MCP tools |
|
|
76
|
+
| **4** | Agentic | Autonomous agents monitor and act |
|
|
77
|
+
|
|
78
|
+
**Level 1:** Operational within a day
|
|
79
|
+
**Level 2:** Operational within a week
|
|
80
|
+
**Level 3:** 2-4 weeks (optional)
|
|
81
|
+
**Level 4:** 1-3 months (optional)
|
|
82
|
+
|
|
83
|
+
**Read more:** [docs/maturity-model.md](docs/maturity-model.md)
|
|
84
|
+
|
|
85
|
+
## 🚀 Quick Start
|
|
86
|
+
|
|
87
|
+
### Option 1: Python CLI (Recommended)
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Clone and install from source
|
|
91
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
92
|
+
cd agentic-threat-hunting-framework
|
|
93
|
+
pip install -e .
|
|
94
|
+
|
|
95
|
+
# Initialize your hunt program
|
|
96
|
+
athf init
|
|
97
|
+
|
|
98
|
+
# Create your first hunt
|
|
99
|
+
athf hunt new --technique T1003.001 --title "LSASS Credential Dumping"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Option 2: Pure Markdown (No Installation)
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Clone the repository
|
|
106
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
107
|
+
cd agentic-threat-hunting-framework
|
|
108
|
+
|
|
109
|
+
# Copy a template and start documenting
|
|
110
|
+
cp templates/HUNT_LOCK.md hunts/H-0001.md
|
|
111
|
+
|
|
112
|
+
# Customize AGENTS.md with your environment
|
|
113
|
+
# Add your SIEM, EDR, and data sources
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Choose your AI assistant:** Claude Code, GitHub Copilot, or Cursor - any tool that can read your repository files.
|
|
117
|
+
|
|
118
|
+
**Full guide:** [docs/getting-started.md](docs/getting-started.md)
|
|
119
|
+
|
|
120
|
+
## 🔧 CLI Commands
|
|
121
|
+
|
|
122
|
+
ATHF includes a full-featured CLI for managing your hunts. Here's a quick reference:
|
|
123
|
+
|
|
124
|
+
### Initialize Workspace
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
athf init # Interactive setup
|
|
128
|
+
athf init --non-interactive # Use defaults
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Create Hunts
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
athf hunt new # Interactive mode
|
|
135
|
+
athf hunt new \
|
|
136
|
+
--technique T1003.001 \
|
|
137
|
+
--title "LSASS Dumping Detection" \
|
|
138
|
+
--platform windows
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### List & Search
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
athf hunt list # Show all hunts
|
|
145
|
+
athf hunt list --status completed # Filter by status
|
|
146
|
+
athf hunt list --output json # JSON output
|
|
147
|
+
athf hunt search "kerberoasting" # Full-text search
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Validate & Stats
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
athf hunt validate # Validate all hunts
|
|
154
|
+
athf hunt validate H-0001 # Validate specific hunt
|
|
155
|
+
athf hunt stats # Show statistics
|
|
156
|
+
athf hunt coverage # MITRE ATT&CK coverage
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Full documentation:** [CLI Reference](docs/CLI_REFERENCE.md)
|
|
160
|
+
|
|
161
|
+
## 📺 See It In Action
|
|
162
|
+
|
|
163
|
+

|
|
164
|
+
|
|
165
|
+
Watch ATHF in action: initialize a workspace, create hunts, and explore your threat hunting catalog in under 60 seconds.
|
|
166
|
+
|
|
167
|
+
**[View example hunts →](SHOWCASE.md)**
|
|
168
|
+
|
|
169
|
+
## Installation
|
|
170
|
+
|
|
171
|
+
### Prerequisites
|
|
172
|
+
- Python 3.8-3.13 (for CLI option)
|
|
173
|
+
- Git
|
|
174
|
+
- Your favorite AI code assistant
|
|
175
|
+
|
|
176
|
+
### CLI Installation
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
180
|
+
cd agentic-threat-hunting-framework
|
|
181
|
+
pip install -e .
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Markdown-Only Setup (No CLI)
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
188
|
+
cd agentic-threat-hunting-framework
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Start documenting hunts in the `hunts/` directory using the LOCK pattern.
|
|
192
|
+
|
|
193
|
+
## Documentation
|
|
194
|
+
|
|
195
|
+
### Core Concepts
|
|
196
|
+
|
|
197
|
+
- [Why ATHF Exists](docs/why-athf.md) - The problem and solution
|
|
198
|
+
- [The LOCK Pattern](docs/lock-pattern.md) - Structure for all hunts
|
|
199
|
+
- [Maturity Model](docs/maturity-model.md) - The five levels explained
|
|
200
|
+
- [Getting Started](docs/getting-started.md) - Step-by-step onboarding
|
|
201
|
+
|
|
202
|
+
### Level-Specific Guides
|
|
203
|
+
|
|
204
|
+
- [Level 1: Documented Hunts](docs/maturity-model.md#level-1-documented-hunts)
|
|
205
|
+
- [Level 2: Searchable Memory](docs/maturity-model.md#level-2-searchable-memory)
|
|
206
|
+
- [Level 3: Generative Capabilities](docs/level4-agentic-workflows.md)
|
|
207
|
+
- [Level 4: Agentic Workflows](docs/level4-agentic-workflows.md)
|
|
208
|
+
|
|
209
|
+
### Integration & Customization
|
|
210
|
+
|
|
211
|
+
- [Installation & Development](docs/INSTALL.md) - Setup, fork customization, testing
|
|
212
|
+
- [MCP Catalog](integrations/MCP_CATALOG.md) - Available tool integrations
|
|
213
|
+
- [Quickstart Guides](integrations/quickstart/) - Setup for specific tools
|
|
214
|
+
- [Using ATHF](USING_ATHF.md) - Adoption and customization
|
|
215
|
+
|
|
216
|
+
## 🎖️ Featured Hunts
|
|
217
|
+
|
|
218
|
+
### H-0001: macOS Information Stealer Detection
|
|
219
|
+
|
|
220
|
+
Detected Atomic Stealer collecting Safari cookies via AppleScript.
|
|
221
|
+
**Result:** 1 true positive, host isolated before exfiltration.
|
|
222
|
+
|
|
223
|
+
**Key Insight:** Behavior-based detection outperformed signature-based approaches. Process signature validation identified unsigned malware attempting data collection.
|
|
224
|
+
|
|
225
|
+
[View full hunt →](hunts/H-0001.md) | [See more examples →](SHOWCASE.md)
|
|
226
|
+
|
|
227
|
+
## Why This Matters
|
|
228
|
+
|
|
229
|
+
You might wonder how this interacts with frameworks like [PEAK](https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html). PEAK gives you a solid method for how to hunt. ATHF builds on that foundation by giving you structure, memory, and continuity. PEAK guides the work. ATHF ensures you capture the work, organize it, and reuse it across future hunts.
|
|
230
|
+
|
|
231
|
+
Agentic threat hunting is not about replacing analysts. It's about building systems that can:
|
|
232
|
+
|
|
233
|
+
- Remember what has been done before
|
|
234
|
+
- Learn from past successes and mistakes
|
|
235
|
+
- Support human judgment with contextual recall
|
|
236
|
+
|
|
237
|
+
When your framework has memory, you stop losing knowledge to turnover or forgotten notes. When your AI assistant can reference that memory, it becomes a force multiplier.
|
|
238
|
+
|
|
239
|
+
## 💬 Community & Support
|
|
240
|
+
|
|
241
|
+
- **GitHub Discussions:** [Ask questions, share hunts](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)
|
|
242
|
+
- **Issues:** [Report bugs or request features](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/issues)
|
|
243
|
+
- **Adoption Guide:** See [USING_ATHF.md](USING_ATHF.md) for how to use ATHF in your organization
|
|
244
|
+
- **LinkedIn:** [Nebulock Inc.](https://www.linkedin.com/company/nebulock-inc) - Follow for updates
|
|
245
|
+
|
|
246
|
+
## 📖 Using ATHF
|
|
247
|
+
|
|
248
|
+
ATHF is a framework to internalize, not a platform to extend. Fork it, customize it, make it yours.
|
|
249
|
+
|
|
250
|
+
**Repository:** [https://github.com/Nebulock-Inc/agentic-threat-hunting-framework](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework)
|
|
251
|
+
|
|
252
|
+
See [USING_ATHF.md](USING_ATHF.md) for adoption guidance. Your hunts stay yours—sharing back is optional but appreciated ([Discussions](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)).
|
|
253
|
+
|
|
254
|
+
The goal is to help every threat hunting team move from ad-hoc memory to structured, agentic capability.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## 🛠️ Development & Customization
|
|
259
|
+
|
|
260
|
+
ATHF is designed to be forked and customized for your organization.
|
|
261
|
+
|
|
262
|
+
**See [docs/INSTALL.md#development--customization](docs/INSTALL.md#development--customization) for:**
|
|
263
|
+
- Setting up your fork for development
|
|
264
|
+
- Pre-commit hooks for code quality
|
|
265
|
+
- Testing and type checking
|
|
266
|
+
- Customization examples
|
|
267
|
+
- CI/CD integration
|
|
268
|
+
|
|
269
|
+
Quick start:
|
|
270
|
+
```bash
|
|
271
|
+
pip install -e ".[dev]" # Install dev dependencies
|
|
272
|
+
pre-commit install # Set up quality checks
|
|
273
|
+
pytest tests/ -v # Run tests
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 👤 Author
|
|
279
|
+
|
|
280
|
+
Created by **Sydney Marrone** © 2025
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
**Start small. Document one hunt. Add structure. Build memory.**
|
|
285
|
+
|
|
286
|
+
Memory is the multiplier. Agency is the force.
|
|
287
|
+
Once your program can remember, everything else becomes possible.
|
|
288
|
+
|
|
289
|
+
Happy hunting!
|