pentesting 0.7.44 → 0.7.46
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.
- package/README.md +55 -130
- package/dist/index.js +33 -18
- package/package.json +2 -1
- package/src/agents/specs/crypto.yaml +79 -0
- package/src/agents/specs/default.yaml +60 -0
- package/src/agents/specs/exploit.yaml +70 -0
- package/src/agents/specs/privesc.yaml +83 -0
- package/src/agents/specs/recon.yaml +65 -0
- package/src/agents/specs/web.yaml +73 -0
package/README.md
CHANGED
|
@@ -189,48 +189,27 @@ Complete
|
|
|
189
189
|
|
|
190
190
|
---
|
|
191
191
|
|
|
192
|
-
## 🤖
|
|
193
|
-
|
|
194
|
-
### YAML-Based Agents (Primary)
|
|
195
|
-
New agents defined in `src/agents/specs/*.yaml` with auto-switching:
|
|
196
|
-
|
|
197
|
-
| YAML Agent | Phase | Description |
|
|
198
|
-
|------------|-------|-------------|
|
|
199
|
-
| `recon` | RECON, SCAN | Information gathering, port scanning |
|
|
200
|
-
| `web` | ENUM | Web application security, OWASP Top 10 |
|
|
201
|
-
| `exploit` | VULN, EXPLOIT | CVE research, exploit execution |
|
|
202
|
-
| `privesc` | PRIVESC, PIVOT, PERSIST | Privilege escalation techniques |
|
|
203
|
-
| `crypto` | EXFIL | Hash cracking, encryption analysis |
|
|
204
|
-
|
|
205
|
-
### Built-in Agents (Fallback)
|
|
206
|
-
|
|
207
|
-
| Agent | Specialty |
|
|
208
|
-
|-------|-----------|
|
|
209
|
-
| `target-explorer` | Network reconnaissance, service enumeration |
|
|
210
|
-
| `exploit-researcher` | CVE research, exploit development |
|
|
211
|
-
| `privesc-master` | Linux/Windows privilege escalation |
|
|
212
|
-
| `web-hacker` | OWASP Top 10, SQLi, XSS, SSRF |
|
|
213
|
-
| `crypto-solver` | Hash cracking, cipher analysis |
|
|
214
|
-
| `forensics-analyst` | Memory forensics, file carving |
|
|
215
|
-
| `reverse-engineer` | Binary analysis, exploit development |
|
|
216
|
-
| `attack-architect` | Attack strategy planning |
|
|
217
|
-
| `finding-reviewer` | Vulnerability validation |
|
|
218
|
-
|
|
219
|
-
### Agent Orchestration Flow
|
|
192
|
+
## 🤖 AI Agents
|
|
220
193
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
194
|
+
Pentesting automatically switches between specialized AI agents based on the current attack phase:
|
|
195
|
+
|
|
196
|
+
| Phase | Agent | What it does |
|
|
197
|
+
|-------|-------|--------------|
|
|
198
|
+
| Reconnaissance | **Recon Agent** | Discovers hosts, ports, services, subdomains |
|
|
199
|
+
| Web Scanning | **Web Agent** | Tests for OWASP Top 10, SQLi, XSS, SSRF |
|
|
200
|
+
| Exploitation | **Exploit Agent** | Researches CVEs, selects and runs exploits |
|
|
201
|
+
| Privilege Escalation | **PrivEsc Agent** | Finds SUID, sudo misconfigs, kernel exploits |
|
|
202
|
+
| Data Extraction | **Crypto Agent** | Cracks hashes, analyzes encryption |
|
|
203
|
+
|
|
204
|
+
### How it works
|
|
205
|
+
|
|
206
|
+
1. **You set a target** → Agent starts in Recon mode
|
|
207
|
+
2. **Finds web services** → Automatically switches to Web Agent
|
|
208
|
+
3. **Discovers vulnerability** → Switches to Exploit Agent
|
|
209
|
+
4. **Gets shell access** → Switches to PrivEsc Agent
|
|
210
|
+
5. **Finds password hashes** → Crypto Agent takes over
|
|
211
|
+
|
|
212
|
+
> No manual agent switching needed. The system automatically picks the best agent for each situation.
|
|
234
213
|
|
|
235
214
|
---
|
|
236
215
|
|
|
@@ -249,44 +228,15 @@ LLM Call with Specialized Context
|
|
|
249
228
|
|
|
250
229
|
> **Note**: `ANTHROPIC_API_KEY` is also accepted as fallback for `PENTEST_API_KEY`.
|
|
251
230
|
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
## 💻 Programmatic Usage
|
|
255
|
-
|
|
256
|
-
```typescript
|
|
257
|
-
import { AutonomousHackingAgent, AGENT_EVENT } from 'pentesting';
|
|
258
|
-
|
|
259
|
-
const agent = new AutonomousHackingAgent(undefined, {
|
|
260
|
-
autoApprove: false, // Require approval for dangerous tools
|
|
261
|
-
maxIterations: 100, // Max loop iterations
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
// Multi-target setup
|
|
265
|
-
agent.addTarget('example1.com');
|
|
266
|
-
agent.addTarget('example2.com');
|
|
267
|
-
agent.setTarget('example1.com');
|
|
268
231
|
|
|
269
|
-
|
|
270
|
-
agent.on(AGENT_EVENT.FINDING, (finding) => {
|
|
271
|
-
console.log(`Found: ${finding.title} (${finding.severity})`);
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
agent.on(AGENT_EVENT.TARGET_SET, (target) => {
|
|
275
|
-
console.log(`Target set: ${target}`);
|
|
276
|
-
});
|
|
232
|
+
---
|
|
277
233
|
|
|
278
|
-
|
|
279
|
-
console.log(`Tool: ${name}`);
|
|
280
|
-
});
|
|
234
|
+
## 💻 For Developers
|
|
281
235
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
agent.pause(); // Pause (ESC key equivalent)
|
|
287
|
-
agent.resume(); // Resume
|
|
288
|
-
agent.abort(); // Complete stop
|
|
289
|
-
```
|
|
236
|
+
Pentesting can be used as a library in your own projects. See [Architecture Docs](./docs/architecture.md) for:
|
|
237
|
+
- API Reference
|
|
238
|
+
- Event System
|
|
239
|
+
- Custom Agent Integration
|
|
290
240
|
|
|
291
241
|
---
|
|
292
242
|
|
|
@@ -332,63 +282,39 @@ docker pull agnusdei1207/pentesting-tools:latest
|
|
|
332
282
|
|
|
333
283
|
## 🔌 MCP Integration
|
|
334
284
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
```typescript
|
|
338
|
-
const agent = new AutonomousHackingAgent();
|
|
339
|
-
|
|
340
|
-
// Add filesystem access
|
|
341
|
-
await agent.addMCPServer('filesystem', 'npx', [
|
|
342
|
-
'-y', '@modelcontextprotocol/server-filesystem', '/'
|
|
343
|
-
]);
|
|
344
|
-
|
|
345
|
-
// Add custom security tools
|
|
346
|
-
await agent.addMCPServer('security-tools', 'docker', [
|
|
347
|
-
'exec', '-i', 'pentesting-tools', '/bin/bash'
|
|
348
|
-
]);
|
|
349
|
-
```
|
|
285
|
+
Pentesting supports MCP (Model Context Protocol) for extending capabilities with additional tools and servers. See [Architecture Docs](./docs/architecture.md) for integration details.
|
|
350
286
|
|
|
351
287
|
---
|
|
352
288
|
|
|
353
|
-
## 🏗️
|
|
289
|
+
## 🏗️ How It Works
|
|
354
290
|
|
|
355
291
|
```
|
|
356
|
-
|
|
357
|
-
│
|
|
358
|
-
│
|
|
359
|
-
│ │
|
|
360
|
-
│ │
|
|
361
|
-
│
|
|
362
|
-
│
|
|
363
|
-
│
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
│
|
|
370
|
-
│
|
|
371
|
-
│ │
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
│
|
|
376
|
-
│
|
|
377
|
-
│
|
|
378
|
-
│
|
|
379
|
-
│
|
|
380
|
-
│ │
|
|
381
|
-
|
|
382
|
-
│ │ web-hacker • crypto-solver • forensics-analyst │ │
|
|
383
|
-
│ │ reverse-engineer • attack-architect • finding-reviewer │ │
|
|
384
|
-
│ └────────────────────────────────────────────────────────────┘ │
|
|
385
|
-
└────────────────────────────┬────────────────────────────────────┘
|
|
386
|
-
│
|
|
387
|
-
┌──────────────────┼──────────────────┐
|
|
388
|
-
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
|
|
389
|
-
│ Tool │ │ Bash │ │ MCP │
|
|
390
|
-
│Executor │ │Commands │ │ Servers │
|
|
391
|
-
└─────────┘ └─────────┘ └─────────┘
|
|
292
|
+
┌──────────────────────────────────────────────┐
|
|
293
|
+
│ Your Terminal │
|
|
294
|
+
│ ┌────────────────────────────────────────┐ │
|
|
295
|
+
│ │ pentesting CLI (Interactive TUI) │ │
|
|
296
|
+
│ │ - Target management │ │
|
|
297
|
+
│ │ - Session recording │ │
|
|
298
|
+
│ │ - Real-time output │ │
|
|
299
|
+
│ └────────────────────────────────────────┘ │
|
|
300
|
+
└─────────────────────┬────────────────────────┘
|
|
301
|
+
▼
|
|
302
|
+
┌──────────────────────────────────────────────┐
|
|
303
|
+
│ AI Agent Core │
|
|
304
|
+
│ ┌────────────────────────────────────────┐ │
|
|
305
|
+
│ │ 5 Specialized Agents (auto-switching) │ │
|
|
306
|
+
│ │ Recon → Web → Exploit → PrivEsc → Crypto│
|
|
307
|
+
│ └────────────────────────────────────────┘ │
|
|
308
|
+
└─────────────────────┬────────────────────────┘
|
|
309
|
+
▼
|
|
310
|
+
┌──────────────────────────────────────────────┐
|
|
311
|
+
│ Tool Execution │
|
|
312
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
313
|
+
│ │ Docker │ │ Local │ │ MCP │ │
|
|
314
|
+
│ │ (50+ │ │ Tools │ │ Servers │ │
|
|
315
|
+
│ │ tools) │ │ │ │ │ │
|
|
316
|
+
│ └──────────┘ └──────────┘ └──────────┘ │
|
|
317
|
+
└──────────────────────────────────────────────┘
|
|
392
318
|
```
|
|
393
319
|
|
|
394
320
|
---
|
|
@@ -410,7 +336,6 @@ npm run build
|
|
|
410
336
|
npm run dev
|
|
411
337
|
```
|
|
412
338
|
|
|
413
|
-
## 📄 License
|
|
414
339
|
## Documentation
|
|
415
340
|
|
|
416
341
|
- [Architecture](./docs/ARCHITECTURE.md) - System design and components
|
|
@@ -418,6 +343,6 @@ npm run dev
|
|
|
418
343
|
|
|
419
344
|
---
|
|
420
345
|
|
|
421
|
-
##
|
|
346
|
+
## 📄 License
|
|
422
347
|
|
|
423
348
|
MIT
|
package/dist/index.js
CHANGED
|
@@ -3305,20 +3305,32 @@ function resolveAgentSpec(spec, specPath) {
|
|
|
3305
3305
|
return resolved;
|
|
3306
3306
|
}
|
|
3307
3307
|
var SpecOrchestrator = class {
|
|
3308
|
-
currentAgent;
|
|
3308
|
+
currentAgent = null;
|
|
3309
3309
|
agents = /* @__PURE__ */ new Map();
|
|
3310
3310
|
context = {};
|
|
3311
|
+
initialized = false;
|
|
3311
3312
|
constructor() {
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3313
|
+
try {
|
|
3314
|
+
this.currentAgent = loadAgentSpec("default");
|
|
3315
|
+
this.agents.set("default", this.currentAgent);
|
|
3316
|
+
this.initialized = true;
|
|
3317
|
+
for (const [name] of Object.entries(this.currentAgent.subagents)) {
|
|
3318
|
+
try {
|
|
3319
|
+
const spec = loadAgentSpec(name);
|
|
3320
|
+
this.agents.set(name, spec);
|
|
3321
|
+
} catch {
|
|
3322
|
+
}
|
|
3319
3323
|
}
|
|
3324
|
+
} catch {
|
|
3325
|
+
this.initialized = false;
|
|
3320
3326
|
}
|
|
3321
3327
|
}
|
|
3328
|
+
/**
|
|
3329
|
+
* Check if orchestrator is ready
|
|
3330
|
+
*/
|
|
3331
|
+
isReady() {
|
|
3332
|
+
return this.initialized && this.currentAgent !== null;
|
|
3333
|
+
}
|
|
3322
3334
|
/**
|
|
3323
3335
|
* Get current active agent
|
|
3324
3336
|
*/
|
|
@@ -3329,7 +3341,7 @@ var SpecOrchestrator = class {
|
|
|
3329
3341
|
* Get current agent's system prompt
|
|
3330
3342
|
*/
|
|
3331
3343
|
getSystemPrompt() {
|
|
3332
|
-
return this.currentAgent
|
|
3344
|
+
return this.currentAgent?.systemPrompt || "";
|
|
3333
3345
|
}
|
|
3334
3346
|
/**
|
|
3335
3347
|
* Update context for agent switching decisions
|
|
@@ -3359,6 +3371,7 @@ var SpecOrchestrator = class {
|
|
|
3359
3371
|
* Evaluate switching rules and auto-switch if needed
|
|
3360
3372
|
*/
|
|
3361
3373
|
evaluateSwitching() {
|
|
3374
|
+
if (!this.currentAgent) return;
|
|
3362
3375
|
for (const rule of this.currentAgent.switchingRules) {
|
|
3363
3376
|
if (this.evaluateCondition(rule.condition)) {
|
|
3364
3377
|
this.switchTo(rule.agent);
|
|
@@ -3417,13 +3430,13 @@ var SpecOrchestrator = class {
|
|
|
3417
3430
|
* Get available subagents for current agent
|
|
3418
3431
|
*/
|
|
3419
3432
|
getSubagents() {
|
|
3420
|
-
return this.currentAgent
|
|
3433
|
+
return this.currentAgent?.subagents || {};
|
|
3421
3434
|
}
|
|
3422
3435
|
/**
|
|
3423
3436
|
* Get tools available for current agent
|
|
3424
3437
|
*/
|
|
3425
3438
|
getTools() {
|
|
3426
|
-
return this.currentAgent
|
|
3439
|
+
return this.currentAgent?.tools || [];
|
|
3427
3440
|
}
|
|
3428
3441
|
};
|
|
3429
3442
|
var specOrchestrator = new SpecOrchestrator();
|
|
@@ -4797,13 +4810,15 @@ ${prompt}`
|
|
|
4797
4810
|
this.specOrchestrator.updateContext("phase", phaseId);
|
|
4798
4811
|
if (this.specOrchestrator.switchTo(yamlAgentName)) {
|
|
4799
4812
|
this.currentSpec = this.specOrchestrator.getCurrentAgent();
|
|
4800
|
-
this.
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4813
|
+
if (this.currentSpec) {
|
|
4814
|
+
this.emit(AGENT_EVENT.AGENT_SWITCH, {
|
|
4815
|
+
name: this.currentSpec.name,
|
|
4816
|
+
description: this.currentSpec.description,
|
|
4817
|
+
type: "yaml-spec"
|
|
4818
|
+
});
|
|
4819
|
+
this.think(THOUGHT_TYPE.OBSERVATION, `Switched to ${this.currentSpec.name} agent (YAML spec) for ${phaseId} phase`);
|
|
4820
|
+
return;
|
|
4821
|
+
}
|
|
4807
4822
|
}
|
|
4808
4823
|
}
|
|
4809
4824
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pentesting",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.46",
|
|
4
4
|
"description": "Autonomous Penetration Testing AI Agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
13
|
"skills",
|
|
14
|
+
"src/agents/specs",
|
|
14
15
|
"README.md"
|
|
15
16
|
],
|
|
16
17
|
"scripts": {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
name: crypto
|
|
4
|
+
description: Cryptography & Password Cracking Expert
|
|
5
|
+
extends: ./default.yaml
|
|
6
|
+
|
|
7
|
+
system_prompt: |
|
|
8
|
+
# Cryptography Expert
|
|
9
|
+
|
|
10
|
+
You specialize in cryptographic analysis and password cracking.
|
|
11
|
+
|
|
12
|
+
## Hash Identification
|
|
13
|
+
```bash
|
|
14
|
+
hashid HASH
|
|
15
|
+
hash-identifier
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Hash Types & Hashcat Modes
|
|
19
|
+
|
|
20
|
+
| Hash Type | Example | Hashcat Mode |
|
|
21
|
+
|-----------|---------|--------------|
|
|
22
|
+
| MD5 | 32 hex chars | 0 |
|
|
23
|
+
| SHA1 | 40 hex chars | 100 |
|
|
24
|
+
| SHA256 | 64 hex chars | 1400 |
|
|
25
|
+
| NTLM | 32 hex chars | 1000 |
|
|
26
|
+
| bcrypt | $2a$... | 3200 |
|
|
27
|
+
| Kerberos TGS | $krb5tgs$... | 13100 |
|
|
28
|
+
|
|
29
|
+
## Cracking Strategy
|
|
30
|
+
|
|
31
|
+
### 1. Try Common Passwords First
|
|
32
|
+
```bash
|
|
33
|
+
# rockyou top 1000
|
|
34
|
+
hashcat -m MODE hash.txt /usr/share/wordlists/rockyou.txt --force
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 2. Apply Rules
|
|
38
|
+
```bash
|
|
39
|
+
hashcat -m MODE hash.txt wordlist.txt -r /usr/share/hashcat/rules/best64.rule
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 3. Targeted Wordlists
|
|
43
|
+
- Company name variations
|
|
44
|
+
- Username + common patterns
|
|
45
|
+
- Previously leaked passwords
|
|
46
|
+
|
|
47
|
+
## Encoding Detection
|
|
48
|
+
- Base64: ends with = or ==
|
|
49
|
+
- URL encoding: %XX format
|
|
50
|
+
- Hex: only 0-9, a-f
|
|
51
|
+
- ROT13: Caesar cipher
|
|
52
|
+
|
|
53
|
+
## Output Format
|
|
54
|
+
```
|
|
55
|
+
🔐 CRYPTO ANALYSIS
|
|
56
|
+
==================
|
|
57
|
+
Hash: [hash value]
|
|
58
|
+
Type: [detected type]
|
|
59
|
+
|
|
60
|
+
🔓 Cracking Attempt:
|
|
61
|
+
- Method: [dictionary/rules/bruteforce]
|
|
62
|
+
- Wordlist: [wordlist used]
|
|
63
|
+
- Status: [CRACKED/IN PROGRESS/FAILED]
|
|
64
|
+
|
|
65
|
+
✅ Result:
|
|
66
|
+
[plaintext if cracked]
|
|
67
|
+
|
|
68
|
+
💡 Next Steps:
|
|
69
|
+
- [try different wordlist]
|
|
70
|
+
- [apply more rules]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
tools:
|
|
74
|
+
- bash
|
|
75
|
+
- hashcat
|
|
76
|
+
- john
|
|
77
|
+
- hashid
|
|
78
|
+
- base64
|
|
79
|
+
- openssl
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
name: pentesting
|
|
4
|
+
description: Autonomous AI Penetration Testing Agent
|
|
5
|
+
system_prompt: ./prompts/system.md
|
|
6
|
+
|
|
7
|
+
# Core tools available to all agents
|
|
8
|
+
tools:
|
|
9
|
+
- bash
|
|
10
|
+
- read_file
|
|
11
|
+
- write_file
|
|
12
|
+
- list_directory
|
|
13
|
+
- set_target
|
|
14
|
+
- nmap_scan
|
|
15
|
+
- rustscan
|
|
16
|
+
- web_request
|
|
17
|
+
- report_finding
|
|
18
|
+
- take_screenshot
|
|
19
|
+
|
|
20
|
+
# Specialized subagents for different phases
|
|
21
|
+
subagents:
|
|
22
|
+
recon:
|
|
23
|
+
path: ./recon.yaml
|
|
24
|
+
description: "Reconnaissance specialist - discovers hosts, ports, services, subdomains"
|
|
25
|
+
trigger: "when target is set and recon phase begins"
|
|
26
|
+
|
|
27
|
+
web:
|
|
28
|
+
path: ./web.yaml
|
|
29
|
+
description: "Web application security expert - OWASP Top 10, XSS, SQLi, SSRF"
|
|
30
|
+
trigger: "when web services (80, 443, 8080) are discovered"
|
|
31
|
+
|
|
32
|
+
exploit:
|
|
33
|
+
path: ./exploit.yaml
|
|
34
|
+
description: "Exploitation expert - CVE research, exploit selection and execution"
|
|
35
|
+
trigger: "when vulnerabilities are identified"
|
|
36
|
+
|
|
37
|
+
privesc:
|
|
38
|
+
path: ./privesc.yaml
|
|
39
|
+
description: "Privilege escalation specialist - Linux/Windows privesc techniques"
|
|
40
|
+
trigger: "when initial access is obtained"
|
|
41
|
+
|
|
42
|
+
crypto:
|
|
43
|
+
path: ./crypto.yaml
|
|
44
|
+
description: "Cryptography expert - hash cracking, encryption analysis"
|
|
45
|
+
trigger: "when password hashes or encrypted data are found"
|
|
46
|
+
|
|
47
|
+
# Agent switching rules
|
|
48
|
+
switching:
|
|
49
|
+
auto: true # Automatically switch agents based on phase
|
|
50
|
+
rules:
|
|
51
|
+
- condition: "target_set && phase == recon"
|
|
52
|
+
agent: recon
|
|
53
|
+
- condition: "port_80_open || port_443_open"
|
|
54
|
+
agent: web
|
|
55
|
+
- condition: "vulnerability_found"
|
|
56
|
+
agent: exploit
|
|
57
|
+
- condition: "shell_obtained"
|
|
58
|
+
agent: privesc
|
|
59
|
+
- condition: "hash_found"
|
|
60
|
+
agent: crypto
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
name: exploit
|
|
4
|
+
description: Exploitation Expert
|
|
5
|
+
extends: ./default.yaml
|
|
6
|
+
|
|
7
|
+
system_prompt: |
|
|
8
|
+
# Exploitation Expert
|
|
9
|
+
|
|
10
|
+
You specialize in vulnerability exploitation and payload delivery.
|
|
11
|
+
|
|
12
|
+
## Primary Objectives
|
|
13
|
+
1. Research known CVEs for identified services
|
|
14
|
+
2. Select appropriate exploits
|
|
15
|
+
3. Customize payloads for target
|
|
16
|
+
4. Execute exploitation attempts
|
|
17
|
+
|
|
18
|
+
## CVE Research Flow
|
|
19
|
+
```
|
|
20
|
+
1. Service/Version → Search NVD, exploit-db
|
|
21
|
+
2. Find CVE → Check for public PoC
|
|
22
|
+
3. PoC exists → Adapt for target
|
|
23
|
+
4. No PoC → Manual exploitation or move on
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## High-Value CVEs
|
|
27
|
+
|
|
28
|
+
| Service | CVE | Impact |
|
|
29
|
+
|---------|-----|--------|
|
|
30
|
+
| Apache 2.4.49 | CVE-2021-41773 | Path Traversal → RCE |
|
|
31
|
+
| Log4j | CVE-2021-44228 | RCE (Log4Shell) |
|
|
32
|
+
| SMB | MS17-010 | RCE (EternalBlue) |
|
|
33
|
+
| vsftpd 2.3.4 | CVE-2011-2523 | Backdoor |
|
|
34
|
+
| ProxyShell | CVE-2021-34473 | Exchange RCE |
|
|
35
|
+
|
|
36
|
+
## Exploitation Checklist
|
|
37
|
+
- [ ] Backup current access before trying new exploits
|
|
38
|
+
- [ ] Use staged payloads when possible
|
|
39
|
+
- [ ] Set up listeners before exploitation
|
|
40
|
+
- [ ] Document every successful exploit
|
|
41
|
+
|
|
42
|
+
## Output Format
|
|
43
|
+
```
|
|
44
|
+
🎯 EXPLOITATION ATTEMPT
|
|
45
|
+
=======================
|
|
46
|
+
Target: [service@host:port]
|
|
47
|
+
CVE: [CVE-XXXX-XXXXX]
|
|
48
|
+
Exploit: [exploit name/source]
|
|
49
|
+
|
|
50
|
+
📋 Pre-flight:
|
|
51
|
+
- [x] Listener ready
|
|
52
|
+
- [x] Payload configured
|
|
53
|
+
|
|
54
|
+
⚡ Result: [SUCCESS/FAIL]
|
|
55
|
+
|
|
56
|
+
📝 Evidence:
|
|
57
|
+
[output/proof]
|
|
58
|
+
|
|
59
|
+
💡 Next Steps:
|
|
60
|
+
1. [post-exploitation or alternative]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
tools:
|
|
64
|
+
- bash
|
|
65
|
+
- metasploit
|
|
66
|
+
- searchsploit
|
|
67
|
+
- msfvenom
|
|
68
|
+
- netcat
|
|
69
|
+
- curl
|
|
70
|
+
- web_request
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
name: privesc
|
|
4
|
+
description: Privilege Escalation Specialist
|
|
5
|
+
extends: ./default.yaml
|
|
6
|
+
|
|
7
|
+
system_prompt: |
|
|
8
|
+
# Privilege Escalation Specialist
|
|
9
|
+
|
|
10
|
+
You specialize in post-exploitation privilege escalation.
|
|
11
|
+
|
|
12
|
+
## Linux Privesc Checklist
|
|
13
|
+
|
|
14
|
+
### Quick Wins (Try First)
|
|
15
|
+
```bash
|
|
16
|
+
# 1. Sudo permissions
|
|
17
|
+
sudo -l
|
|
18
|
+
|
|
19
|
+
# 2. SUID binaries
|
|
20
|
+
find / -perm -4000 2>/dev/null
|
|
21
|
+
|
|
22
|
+
# 3. Capabilities
|
|
23
|
+
getcap -r / 2>/dev/null
|
|
24
|
+
|
|
25
|
+
# 4. Writable /etc/passwd
|
|
26
|
+
ls -la /etc/passwd
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Automated Enumeration
|
|
30
|
+
```bash
|
|
31
|
+
# LinPEAS
|
|
32
|
+
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
|
|
33
|
+
|
|
34
|
+
# LinEnum
|
|
35
|
+
./LinEnum.sh -t
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### GTFOBins Reference
|
|
39
|
+
- Check https://gtfobins.github.io for SUID/sudo exploits
|
|
40
|
+
- Common: vim, less, find, bash, python, perl
|
|
41
|
+
|
|
42
|
+
## Windows Privesc Checklist
|
|
43
|
+
|
|
44
|
+
```powershell
|
|
45
|
+
# System info
|
|
46
|
+
systeminfo
|
|
47
|
+
whoami /all
|
|
48
|
+
|
|
49
|
+
# Services
|
|
50
|
+
sc query
|
|
51
|
+
wmic service get name,pathname
|
|
52
|
+
|
|
53
|
+
# Unquoted paths
|
|
54
|
+
wmic service get name,displayname,pathname,startmode | findstr /i "auto"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Output Format
|
|
58
|
+
```
|
|
59
|
+
🔓 PRIVESC ANALYSIS
|
|
60
|
+
===================
|
|
61
|
+
Current User: [user]
|
|
62
|
+
Current Shell: [shell type]
|
|
63
|
+
|
|
64
|
+
🎯 Escalation Vectors Found:
|
|
65
|
+
| Method | Confidence | Command |
|
|
66
|
+
|--------|------------|---------|
|
|
67
|
+
|
|
68
|
+
⚡ Recommended Attack:
|
|
69
|
+
[detailed steps]
|
|
70
|
+
|
|
71
|
+
📋 Post-Privesc:
|
|
72
|
+
1. Dump credentials
|
|
73
|
+
2. Establish persistence
|
|
74
|
+
3. Pivot to other hosts
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
tools:
|
|
78
|
+
- bash
|
|
79
|
+
- linpeas
|
|
80
|
+
- winpeas
|
|
81
|
+
- sudo
|
|
82
|
+
- find
|
|
83
|
+
- curl
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
name: recon
|
|
4
|
+
description: Reconnaissance Specialist
|
|
5
|
+
extends: ./default.yaml
|
|
6
|
+
|
|
7
|
+
system_prompt: |
|
|
8
|
+
# Reconnaissance Specialist
|
|
9
|
+
|
|
10
|
+
You are a reconnaissance expert. Your sole focus is information gathering.
|
|
11
|
+
|
|
12
|
+
## Primary Objectives
|
|
13
|
+
1. Discover all live hosts in scope
|
|
14
|
+
2. Identify open ports and running services
|
|
15
|
+
3. Find subdomains and related infrastructure
|
|
16
|
+
4. Gather OSINT (whois, DNS, certificates)
|
|
17
|
+
|
|
18
|
+
## Tool Priority
|
|
19
|
+
1. **Fast scans first**: rustscan > nmap quick
|
|
20
|
+
2. **Passive before active**: whois, dig, crt.sh before active scanning
|
|
21
|
+
3. **Breadth before depth**: Find everything, then analyze
|
|
22
|
+
|
|
23
|
+
## Output Format
|
|
24
|
+
After recon, summarize:
|
|
25
|
+
```
|
|
26
|
+
📊 RECON SUMMARY
|
|
27
|
+
================
|
|
28
|
+
Target: [target]
|
|
29
|
+
|
|
30
|
+
🌐 DNS/Domains:
|
|
31
|
+
- [subdomains found]
|
|
32
|
+
|
|
33
|
+
🔓 Open Ports:
|
|
34
|
+
| Port | Service | Version |
|
|
35
|
+
|------|---------|---------|
|
|
36
|
+
|
|
37
|
+
🔍 Key Findings:
|
|
38
|
+
- [interesting discoveries]
|
|
39
|
+
|
|
40
|
+
💡 Recommended Next Steps:
|
|
41
|
+
1. [highest priority action]
|
|
42
|
+
2. [alternative approach]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## When to Hand Off
|
|
46
|
+
- Found web services → hand off to web agent
|
|
47
|
+
- Found known CVEs → hand off to exploit agent
|
|
48
|
+
- Found credentials → hand off to privesc agent
|
|
49
|
+
|
|
50
|
+
# Recon-specific tools
|
|
51
|
+
tools:
|
|
52
|
+
- bash
|
|
53
|
+
- nmap_scan
|
|
54
|
+
- rustscan
|
|
55
|
+
- dig
|
|
56
|
+
- whois
|
|
57
|
+
- subfinder
|
|
58
|
+
- web_request
|
|
59
|
+
- set_target
|
|
60
|
+
|
|
61
|
+
# Don't use these in recon phase
|
|
62
|
+
exclude_tools:
|
|
63
|
+
- exploit
|
|
64
|
+
- metasploit
|
|
65
|
+
- hydra
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
agent:
|
|
3
|
+
name: web
|
|
4
|
+
description: Web Application Security Expert
|
|
5
|
+
extends: ./default.yaml
|
|
6
|
+
|
|
7
|
+
system_prompt: |
|
|
8
|
+
# Web Application Security Expert
|
|
9
|
+
|
|
10
|
+
You specialize in web application penetration testing.
|
|
11
|
+
|
|
12
|
+
## Primary Objectives
|
|
13
|
+
1. Discover web directories and hidden endpoints
|
|
14
|
+
2. Identify technologies and frameworks
|
|
15
|
+
3. Test for OWASP Top 10 vulnerabilities
|
|
16
|
+
4. Find authentication bypasses
|
|
17
|
+
|
|
18
|
+
## Testing Methodology
|
|
19
|
+
|
|
20
|
+
### Phase 1: Enumeration
|
|
21
|
+
```bash
|
|
22
|
+
# Directory discovery
|
|
23
|
+
ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://TARGET/FUZZ
|
|
24
|
+
|
|
25
|
+
# Technology detection
|
|
26
|
+
whatweb TARGET
|
|
27
|
+
curl -I TARGET
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Phase 2: Vulnerability Testing
|
|
31
|
+
|
|
32
|
+
| Vuln Type | Test Method | Payload Examples |
|
|
33
|
+
|-----------|-------------|------------------|
|
|
34
|
+
| SQLi | Input fields, URLs | `' OR '1'='1`, `'; DROP TABLE--` |
|
|
35
|
+
| XSS | Search, comments | `<script>alert(1)</script>` |
|
|
36
|
+
| LFI | File parameters | `../../etc/passwd` |
|
|
37
|
+
| SSRF | URL inputs | `http://169.254.169.254` |
|
|
38
|
+
| IDOR | ID parameters | Increment user IDs |
|
|
39
|
+
|
|
40
|
+
## Output Format
|
|
41
|
+
```
|
|
42
|
+
🌐 WEB ANALYSIS
|
|
43
|
+
===============
|
|
44
|
+
URL: [target URL]
|
|
45
|
+
Status: [HTTP status]
|
|
46
|
+
|
|
47
|
+
🔧 Technologies:
|
|
48
|
+
- [detected tech stack]
|
|
49
|
+
|
|
50
|
+
📂 Discovered Endpoints:
|
|
51
|
+
- [interesting paths]
|
|
52
|
+
|
|
53
|
+
⚠️ Potential Vulnerabilities:
|
|
54
|
+
- [vulnerability] - [confidence] - [evidence]
|
|
55
|
+
|
|
56
|
+
💡 Exploitation Steps:
|
|
57
|
+
1. [next action]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## When to Hand Off
|
|
61
|
+
- Found SQL injection → proceed with exploitation
|
|
62
|
+
- Found credentials → hand off to privesc
|
|
63
|
+
- Need CVE exploit → hand off to exploit agent
|
|
64
|
+
|
|
65
|
+
tools:
|
|
66
|
+
- bash
|
|
67
|
+
- web_request
|
|
68
|
+
- curl
|
|
69
|
+
- ffuf
|
|
70
|
+
- gobuster
|
|
71
|
+
- whatweb
|
|
72
|
+
- nikto
|
|
73
|
+
- sqlmap
|