agentic-threat-hunting-framework 0.2.3__py3-none-any.whl → 0.3.0__py3-none-any.whl

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.
Files changed (43) hide show
  1. {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/METADATA +38 -40
  2. agentic_threat_hunting_framework-0.3.0.dist-info/RECORD +51 -0
  3. athf/__version__.py +1 -1
  4. athf/cli.py +7 -2
  5. athf/commands/__init__.py +4 -0
  6. athf/commands/agent.py +452 -0
  7. athf/commands/context.py +6 -9
  8. athf/commands/env.py +2 -2
  9. athf/commands/hunt.py +3 -3
  10. athf/commands/init.py +45 -0
  11. athf/commands/research.py +530 -0
  12. athf/commands/similar.py +5 -5
  13. athf/core/research_manager.py +419 -0
  14. athf/core/web_search.py +340 -0
  15. athf/data/__init__.py +19 -0
  16. athf/data/docs/CHANGELOG.md +147 -0
  17. athf/data/docs/CLI_REFERENCE.md +1797 -0
  18. athf/data/docs/INSTALL.md +594 -0
  19. athf/data/docs/README.md +31 -0
  20. athf/data/docs/environment.md +256 -0
  21. athf/data/docs/getting-started.md +419 -0
  22. athf/data/docs/level4-agentic-workflows.md +480 -0
  23. athf/data/docs/lock-pattern.md +149 -0
  24. athf/data/docs/maturity-model.md +400 -0
  25. athf/data/docs/why-athf.md +44 -0
  26. athf/data/hunts/FORMAT_GUIDELINES.md +507 -0
  27. athf/data/hunts/H-0001.md +453 -0
  28. athf/data/hunts/H-0002.md +436 -0
  29. athf/data/hunts/H-0003.md +546 -0
  30. athf/data/hunts/README.md +231 -0
  31. athf/data/integrations/MCP_CATALOG.md +45 -0
  32. athf/data/integrations/README.md +129 -0
  33. athf/data/integrations/quickstart/splunk.md +162 -0
  34. athf/data/knowledge/hunting-knowledge.md +2375 -0
  35. athf/data/prompts/README.md +172 -0
  36. athf/data/prompts/ai-workflow.md +581 -0
  37. athf/data/prompts/basic-prompts.md +316 -0
  38. athf/data/templates/HUNT_LOCK.md +228 -0
  39. agentic_threat_hunting_framework-0.2.3.dist-info/RECORD +0 -23
  40. {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/WHEEL +0 -0
  41. {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/entry_points.txt +0 -0
  42. {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/licenses/LICENSE +0 -0
  43. {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-threat-hunting-framework
3
- Version: 0.2.3
3
+ Version: 0.3.0
4
4
  Summary: Agentic Threat Hunting Framework - Memory and AI for threat hunters
5
5
  Author-email: Sydney Marrone <athf@nebulock.io>
6
6
  Maintainer-email: Sydney Marrone <athf@nebulock.io>
@@ -33,6 +33,7 @@ Requires-Dist: click>=8.0.0
33
33
  Requires-Dist: pyyaml>=6.0
34
34
  Requires-Dist: rich>=10.0.0
35
35
  Requires-Dist: jinja2>=3.0.0
36
+ Requires-Dist: importlib_resources>=5.0.0; python_version < "3.9"
36
37
  Provides-Extra: dev
37
38
  Requires-Dist: pytest>=7.0.0; extra == "dev"
38
39
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
@@ -76,6 +77,7 @@ ATHF provides structure and persistence for threat hunting programs. It's a mark
76
77
  - Maintains a searchable repository of past investigations
77
78
  - Enables AI assistants to reference your environment and previous work
78
79
  - Works with any SIEM/EDR platform
80
+ - **NEW:** Includes AI-powered research and hypothesis generation agents (v0.3.0+)
79
81
 
80
82
  ## The Problem
81
83
 
@@ -115,8 +117,8 @@ ATHF defines a simple maturity model. Each level builds on the previous one.
115
117
  | **0** | Ad-hoc | Hunts exist in Slack, tickets, or analyst notes |
116
118
  | **1** | Documented | Persistent hunt records using LOCK |
117
119
  | **2** | Searchable | AI reads and recalls your hunts |
118
- | **3** | Generative | AI executes queries via MCP tools |
119
- | **4** | Agentic | Autonomous agents monitor and act |
120
+ | **3** | Generative | AI executes queries via MCP tools, conducts research |
121
+ | **4** | Agentic | Autonomous agents monitor and act, generate hypotheses |
120
122
 
121
123
  **Level 1:** Operational within a day
122
124
  **Level 2:** Operational within a week
@@ -136,8 +138,11 @@ pip install agentic-threat-hunting-framework
136
138
  # Initialize your hunt program
137
139
  athf init
138
140
 
139
- # Create your first hunt
140
- athf hunt new --technique T1003.001 --title "LSASS Credential Dumping"
141
+ # NEW: Conduct research before hunting (5-skill methodology)
142
+ athf research new --topic "LSASS dumping" --technique T1003.001
143
+
144
+ # Create your first hunt (link to research)
145
+ athf hunt new --technique T1003.001 --title "LSASS Credential Dumping" --research R-0001
141
146
  ```
142
147
 
143
148
  ### Option 2: Install from Source (Development)
@@ -161,7 +166,8 @@ git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
161
166
  cd agentic-threat-hunting-framework
162
167
 
163
168
  # Copy a template and start documenting
164
- cp templates/HUNT_LOCK.md hunts/H-0001.md
169
+ mkdir -p hunts
170
+ cp athf/data/templates/HUNT_LOCK.md hunts/H-0001.md
165
171
 
166
172
  # Customize AGENTS.md with your environment
167
173
  # Add your SIEM, EDR, and data sources
@@ -182,6 +188,23 @@ athf init # Interactive setup
182
188
  athf init --non-interactive # Use defaults
183
189
  ```
184
190
 
191
+ ### Research & Hypothesis Generation (NEW in v0.3.0)
192
+
193
+ ```bash
194
+ # Conduct thorough pre-hunt research (15-20 min)
195
+ athf research new --topic "LSASS dumping" --technique T1003.001
196
+
197
+ # Quick research for urgent hunts (5 min)
198
+ athf research new --topic "Pass-the-Hash" --depth basic
199
+
200
+ # Generate AI-powered hypothesis from threat intel
201
+ athf agent run hypothesis-generator --threat-intel "APT29 targeting SaaS"
202
+
203
+ # List research and agents
204
+ athf research list
205
+ athf agent list
206
+ ```
207
+
185
208
  ### Create Hunts
186
209
 
187
210
  ```bash
@@ -189,7 +212,8 @@ athf hunt new # Interactive mode
189
212
  athf hunt new \
190
213
  --technique T1003.001 \
191
214
  --title "LSASS Dumping Detection" \
192
- --platform windows
215
+ --platform windows \
216
+ --research R-0001 # Link to research document
193
217
  ```
194
218
 
195
219
  ### List & Search
@@ -199,6 +223,7 @@ athf hunt list # Show all hunts
199
223
  athf hunt list --status completed # Filter by status
200
224
  athf hunt list --output json # JSON output
201
225
  athf hunt search "kerberoasting" # Full-text search
226
+ athf research search "credential" # Search research docs
202
227
  ```
203
228
 
204
229
  ### Validate & Stats
@@ -208,6 +233,7 @@ athf hunt validate # Validate all hunts
208
233
  athf hunt validate H-0001 # Validate specific hunt
209
234
  athf hunt stats # Show statistics
210
235
  athf hunt coverage # MITRE ATT&CK coverage
236
+ athf research stats # Research metrics
211
237
  ```
212
238
 
213
239
  **Full documentation:** [CLI Reference](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/docs/CLI_REFERENCE.md)
@@ -222,35 +248,12 @@ Watch ATHF in action: initialize a workspace, create hunts, and explore your thr
222
248
 
223
249
  ## Installation
224
250
 
225
- ### Prerequisites
251
+ See the [Quick Start](#-quick-start) section above for installation options (PyPI, source, or pure markdown).
252
+
253
+ **Prerequisites:**
226
254
  - Python 3.8-3.13 (for CLI option)
227
255
  - Your favorite AI code assistant
228
256
 
229
- ### From PyPI (Recommended)
230
-
231
- ```bash
232
- pip install agentic-threat-hunting-framework
233
- athf init
234
- ```
235
-
236
- ### From Source (Development)
237
-
238
- ```bash
239
- git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
240
- cd agentic-threat-hunting-framework
241
- pip install -e .
242
- athf init
243
- ```
244
-
245
- ### Markdown-Only Setup (No Installation)
246
-
247
- ```bash
248
- git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
249
- cd agentic-threat-hunting-framework
250
- ```
251
-
252
- Start documenting hunts in the `hunts/` directory using the LOCK pattern.
253
-
254
257
  ## Documentation
255
258
 
256
259
  ### Core Concepts
@@ -297,21 +300,16 @@ Agentic threat hunting is not about replacing analysts. It's about building syst
297
300
 
298
301
  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.
299
302
 
300
- ## 💬 Community & Support
303
+ ## 💬 Community & Adoption
301
304
 
302
305
  - **GitHub Discussions:** [Ask questions, share hunts](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)
303
306
  - **Issues:** [Report bugs or request features](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/issues)
304
- - **Adoption Guide:** See [USING_ATHF.md](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/USING_ATHF.md) for how to use ATHF in your organization
305
307
  - **LinkedIn:** [Nebulock Inc.](https://www.linkedin.com/company/nebulock-inc) - Follow for updates
306
308
 
307
- ## 📖 Using ATHF
308
-
309
- ATHF is a framework to internalize, not a platform to extend. Fork it, customize it, make it yours.
309
+ **Using ATHF in Your Organization:** ATHF is a framework to internalize, not a platform to extend. Fork it, customize it, make it yours. See [USING_ATHF.md](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/USING_ATHF.md) for adoption guidance. Your hunts stay yours—sharing back is optional but appreciated.
310
310
 
311
311
  **Repository:** [https://github.com/Nebulock-Inc/agentic-threat-hunting-framework](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework)
312
312
 
313
- See [USING_ATHF.md](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/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)).
314
-
315
313
  The goal is to help every threat hunting team move from ad-hoc memory to structured, agentic capability.
316
314
 
317
315
  ---
@@ -0,0 +1,51 @@
1
+ agentic_threat_hunting_framework-0.3.0.dist-info/licenses/LICENSE,sha256=_KObErRfiKoolznt-DF0nJnr3U9Rdh7Z4Ba7G5qqckk,1071
2
+ athf/__init__.py,sha256=OrjZe8P97_BTEkscapnwSsqKSjwXNP9d8-HtGr19Ni0,241
3
+ athf/__version__.py,sha256=1uOy8XMZ6490EmE359rotOAMj4-r0qm1IZG5gSmm_7g,59
4
+ athf/cli.py,sha256=rkg_Nx9Yy_UqTXBOh-pwaiD-lXO0_IXQMA1SQpDj7g0,4639
5
+ athf/commands/__init__.py,sha256=KbpUcLPjmltq5a_m1MjhrIe4sk3DvqsnAw1wCAZfZNo,85
6
+ athf/commands/agent.py,sha256=k-NWiLppt2oWbiJ-hx1inkK51jhfsAYiFhixbzzQmQI,16565
7
+ athf/commands/context.py,sha256=V-at81-OgKcLY-In48-AccTnHfTgdofmnjE8S5kypoI,12678
8
+ athf/commands/env.py,sha256=JPKRsv48cgsIAjSFaGJ1-Nu0nQKGSVg4AbiFxb9jVX4,11887
9
+ athf/commands/hunt.py,sha256=PcYz0Zj9qqB10s9mkbfHk-hl2IbcfJekeB6cA2exXPo,22991
10
+ athf/commands/init.py,sha256=Qn0iETNyuQvM-ySqCeoDz-pPemeuzROX_karQF5yN_o,12685
11
+ athf/commands/investigate.py,sha256=mK_id5vjfN_ukqB_-fyia0FNa0pBmtn0Xv6CKHQI1Qo,24663
12
+ athf/commands/research.py,sha256=FrLph4agaGQ_rIxMh0OQwh1MIGDFtj40zJ3E1ZFwaAw,18112
13
+ athf/commands/similar.py,sha256=FTTVr4zzP9bdJrirscp6pOxdQbE8zot6pa20-_TYiuo,11804
14
+ athf/core/__init__.py,sha256=yG7C8ljx3UW4QZoYvDjUxsWHlbS8M-GLGB7Je7rRfqo,31
15
+ athf/core/attack_matrix.py,sha256=QZKKmxckQ6-U7lqVdGUJoj2jEAhP3Juvr3sqaNx2oTw,3238
16
+ athf/core/hunt_manager.py,sha256=PFsg8Ecg94NCpuFZpApo82lyORkgK5IfOIih-7-XsmM,11580
17
+ athf/core/hunt_parser.py,sha256=FUj0yyBIcZnaS9aItMImeBDhegQwpkewIwUMNXW_ZWU,5122
18
+ athf/core/investigation_parser.py,sha256=wbfjnq4gFgIc0a4bHIAnidVNPhbHDpIXWY1SGLk0Xls,6804
19
+ athf/core/research_manager.py,sha256=i4fUjuZJcAik8I4pwbLkQlu6cuxkWDlqaIRQrzAfB0s,14512
20
+ athf/core/template_engine.py,sha256=vNTVhlxIXZpxU7VmQyrqCSt6ORS0IVjAV54TOmUDMTE,5636
21
+ athf/core/web_search.py,sha256=B9IhmwH7gy2RVA6WSN3L7yGp3Q4L8OsiiwcEvnnZejU,10320
22
+ athf/data/__init__.py,sha256=QtgONloCaS3E9Ow995FMxyy6BbszpfmYeWpySQ2b9Mc,502
23
+ athf/data/docs/CHANGELOG.md,sha256=1dAondeKsQnGOn9esy9oZ29uG_oGgRuHxmkcmGQ1Cwo,5950
24
+ athf/data/docs/CLI_REFERENCE.md,sha256=zqUp-tu8OAcqzpOwx3XvzEq7UV6woDraUOcWasZI0a8,43748
25
+ athf/data/docs/INSTALL.md,sha256=JOWxk6q2-rdpgCnWdSPb3-Cp8rX1y4nQm7ObKz2G0uM,13117
26
+ athf/data/docs/README.md,sha256=rp-XQZeqteXJz7M2qKX3sl6o0AVfhGmz8GcNNKAt8pM,1061
27
+ athf/data/docs/environment.md,sha256=K88NBWZM2bI1Jztd0ORa6AYaMgPVjVB-K2fJl8S5-g8,8306
28
+ athf/data/docs/getting-started.md,sha256=j4SAXe-Rm1RhYBDvWaNpV8XS0rc_mZ2Ew0yPCxE4_wQ,14156
29
+ athf/data/docs/level4-agentic-workflows.md,sha256=DX54qu8LbJysjDfQLGSEPSO_Q6BUACLpa-XCsR6xUp4,13439
30
+ athf/data/docs/lock-pattern.md,sha256=eICjNh5SAgIhkOYBDhHg1tgw4A29xgnRDWC9vH1wLEQ,4863
31
+ athf/data/docs/maturity-model.md,sha256=S2m8JSQDe9R5ROBWS4Gy0-sRF5I7mo-CI3cUnmNpxmk,16347
32
+ athf/data/docs/why-athf.md,sha256=rIoUb7iqdZKbuWNyRlGxhZrRkLx7gWAGS-kurEZDt04,2148
33
+ athf/data/hunts/FORMAT_GUIDELINES.md,sha256=lMyBekmOzhtO1olO1P-M0Gi_n5oY60k7qkRZE63sTgw,15010
34
+ athf/data/hunts/H-0001.md,sha256=rdUIpQ_uN8bx7XS1ED85rW5aRKxFOpMg0X7PANY7eCY,23220
35
+ athf/data/hunts/H-0002.md,sha256=yF5ZEfl7NAJJMjuVf9ZitafwDfWMTzyU5fgkrAQ4U6I,20405
36
+ athf/data/hunts/H-0003.md,sha256=w0iAaplcM0kFWRmVhQsX53LVIWaRDJsB3TWalI1zz_o,27436
37
+ athf/data/hunts/README.md,sha256=WMj871_NTsMjYBriQ3xezOBktUs3KT7MTKVJSo0iwXA,5812
38
+ athf/data/integrations/MCP_CATALOG.md,sha256=hJ_cyHijEjWdkFiX7WEyBtJqlLtKuRzZCKlqrhbSLrU,1782
39
+ athf/data/integrations/README.md,sha256=jkiK0u5pNjodmFuNKKMR0G40Soq8pqBRVsaP89wP70w,4336
40
+ athf/data/integrations/quickstart/splunk.md,sha256=6REsD05zQOPcT6ezxyeysOtTRsSp7JO6vK_epd7GCJU,4897
41
+ athf/data/knowledge/hunting-knowledge.md,sha256=djublWCzFexl5ssssL6KfMm4RnUI0ANoWMY9zLSQDd0,91107
42
+ athf/data/prompts/README.md,sha256=5Jtz38Csh-rWjgX_zN46e3DxJoOfeeVQLDcIpcVExJ0,5029
43
+ athf/data/prompts/ai-workflow.md,sha256=rZtOcGuAEi35qx7182TwHJEORdz1-RxkZMBVkg611Rs,17087
44
+ athf/data/prompts/basic-prompts.md,sha256=2bunpO35RoBdJWYthXVi40RNl2UWrfwOaFthBLHF5sU,8463
45
+ athf/data/templates/HUNT_LOCK.md,sha256=zXxHaKMWbRDLewLTegYJMbXRM72s9gFFvjdwFfGNeJE,7386
46
+ athf/utils/__init__.py,sha256=aEAPI1xnAsowOtc036cCb9ZOek5nrrfevu8PElhbNgk,30
47
+ agentic_threat_hunting_framework-0.3.0.dist-info/METADATA,sha256=TT9rzSs2CSKI3TTKMkSP7ZRehUXtntbgYCWfCFK7qbU,15838
48
+ agentic_threat_hunting_framework-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
49
+ agentic_threat_hunting_framework-0.3.0.dist-info/entry_points.txt,sha256=GopR2iTiBs-yNMWiUZ2DaFIFglXxWJx1XPjTa3ePtfE,39
50
+ agentic_threat_hunting_framework-0.3.0.dist-info/top_level.txt,sha256=Cxxg6SMLfawDJWBITsciRzq27XV8fiaAor23o9Byoes,5
51
+ agentic_threat_hunting_framework-0.3.0.dist-info/RECORD,,
athf/__version__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """Version information for ATHF."""
2
2
 
3
- __version__ = "0.2.2"
3
+ __version__ = "0.3.0"
athf/cli.py CHANGED
@@ -6,7 +6,8 @@ import click
6
6
  from rich.console import Console
7
7
 
8
8
  from athf.__version__ import __version__
9
- from athf.commands import context, env, hunt, init, investigate, similar
9
+ from athf.commands import context, env, hunt, init, investigate, research, similar
10
+ from athf.commands.agent import agent
10
11
 
11
12
  console = Console()
12
13
 
@@ -40,7 +41,7 @@ Getting Started:
40
41
  Documentation:
41
42
  • Full docs: https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
42
43
  • CLI reference: docs/CLI_REFERENCE.md
43
- • AI workflows: prompts/ai-workflow.md
44
+ • AI workflows: Run 'athf init' to get prompts/ai-workflow.md
44
45
 
45
46
  \b
46
47
  Need help? Run 'athf COMMAND --help' for command-specific help.
@@ -80,12 +81,16 @@ def cli() -> None:
80
81
  cli.add_command(init.init)
81
82
  cli.add_command(hunt.hunt)
82
83
  cli.add_command(investigate.investigate)
84
+ cli.add_command(research.research)
83
85
 
84
86
  # Phase 1 commands (env, context, similar)
85
87
  cli.add_command(env.env)
86
88
  cli.add_command(context.context)
87
89
  cli.add_command(similar.similar)
88
90
 
91
+ # Agent commands
92
+ cli.add_command(agent)
93
+
89
94
 
90
95
  @cli.command(hidden=True)
91
96
  def wisdom() -> None:
athf/commands/__init__.py CHANGED
@@ -1 +1,5 @@
1
1
  """ATHF CLI commands."""
2
+
3
+ from athf.commands.agent import agent
4
+
5
+ __all__ = ["agent"]