pentesting 0.7.49 β 0.8.0
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 +291 -248
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -1,348 +1,391 @@
|
|
|
1
|
-
|
|
1
|
+
# π― Pentesting
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
ββββββββββββββ ββββββ βββ βββ ββββββ ββββββββ βββ βββββββββ ββββββ ββββ
|
|
7
|
-
βββββββ ββββββ ββββββββββ βββ ββββββ ββββββββ βββ ββββββββββββββββ βββ
|
|
8
|
-
βββ βββββββββββ ββββββ βββ ββββββββββββββββ βββ ββββββ βββββββββββββββ
|
|
9
|
-
βββ βββββββββββ βββββ βββ ββββββββββββββββ βββ ββββββ βββββ βββββββ
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
**Autonomous AI Penetration Testing Agent**
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="docs/assets/pentesting-logo.png" alt="Pentesting" width="400">
|
|
5
|
+
</p>
|
|
13
6
|
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>μΈκ°μ²λΌ μκ°νκ³ μ€ννλ μμ¨ μΉ¨ν¬ ν
μ€νΈ AI μμ΄μ νΈ</strong>
|
|
9
|
+
</p>
|
|
16
10
|
|
|
17
|
-
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://www.npmjs.com/package/pentesting"><img src="https://img.shields.io/npm/v/pentesting.svg?style=for-the-badge" alt="npm version"></a>
|
|
13
|
+
<a href="https://github.com/agnusdei1207/pentesting/actions"><img src="https://img.shields.io/github/actions/workflow/status/agnusdei1207/pentesting/ci.yml?branch=main&style=for-the-badge" alt="CI status"></a>
|
|
14
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="MIT License"></a>
|
|
15
|
+
</p>
|
|
18
16
|
|
|
19
17
|
---
|
|
20
18
|
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
# Install
|
|
25
|
-
npm install -g pentesting
|
|
26
|
-
|
|
27
|
-
# Configure
|
|
28
|
-
export PENTEST_API_KEY=your_api_key
|
|
29
|
-
export PENTEST_BASE_URL=https://your-api-endpoint.com/v1
|
|
30
|
-
export PENTEST_MODEL=your-model-name
|
|
31
|
-
|
|
32
|
-
# Run
|
|
33
|
-
pentesting
|
|
34
|
-
```
|
|
19
|
+
## π‘ μ² ν: μ PentestingμΈκ°?
|
|
35
20
|
|
|
36
|
-
|
|
21
|
+
### λ¬Έμ
|
|
37
22
|
|
|
38
|
-
|
|
23
|
+
κΈ°μ‘΄ μΉ¨ν¬ ν
μ€νΈλ **λꡬ μ€μ¬**μ
λλ€:
|
|
24
|
+
- nmapμΌλ‘ μ€μΊνκ³ , κ²°κ³Όλ₯Ό 보κ³
|
|
25
|
+
- sqlmapμΌλ‘ ν
μ€νΈνκ³ , λ€λ₯Έ λκ΅¬λ‘ λμ΄κ°κ³
|
|
26
|
+
- κ° λꡬμ μΆλ ₯μ ν΄μνκ³ , λ€μ λ¨κ³λ₯Ό κ²°μ νκ³
|
|
39
27
|
|
|
40
|
-
|
|
28
|
+
μ΄κ²μ **λ°λ³΅μ μ΄κ³ , μκ° μλͺ¨μ μ΄λ©°, μ λ¬Έκ° μ§μμ΄ νμ**ν©λλ€.
|
|
41
29
|
|
|
42
|
-
###
|
|
30
|
+
### ν΄κ²°μ±
|
|
43
31
|
|
|
44
|
-
|
|
32
|
+
Pentestingμ **μ¬κ³ μ€μ¬**μ
λλ€:
|
|
33
|
+
- "μ΄ μΉ μ ν리μΌμ΄μ
μ μΉ¨ν¬νλΌ"
|
|
34
|
+
- μμ΄μ νΈκ° μ€μ€λ‘ λꡬλ₯Ό μ ννκ³ , κ²°κ³Όλ₯Ό λΆμνκ³ , λ€μ μ λ΅μ κ²°μ ν©λλ€
|
|
45
35
|
|
|
46
36
|
```
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
Before (λꡬ μ€μ¬):
|
|
38
|
+
Human β [κ²°μ ] β nmap β [λΆμ] β [κ²°μ ] β sqlmap β [λΆμ] β ...
|
|
49
39
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
After (μ¬κ³ μ€μ¬):
|
|
41
|
+
Human β "μΉ¨ν¬νλΌ" β Pentesting Agent β [μλνλ μ¬κ³ -νλ 루ν] β λ³΄κ³ μ
|
|
42
|
+
```
|
|
53
43
|
|
|
54
|
-
|
|
55
|
-
- "What exactly am I trying to learn?"
|
|
56
|
-
- "Is this the FASTEST way to get that information?"
|
|
57
|
-
- "Have I already tried this? What happened?"
|
|
58
|
-
- "Is there a simpler approach?"
|
|
44
|
+
### ν΅μ¬ μ λ
|
|
59
45
|
|
|
60
|
-
|
|
46
|
+
1. **AIλ λκ΅¬κ° μλλΌ λλ£μ
λλ€**
|
|
47
|
+
- λͺ
λ Ήμ μ€ννλ κ²μ΄ μλλΌ λͺ©νλ₯Ό λ¬μ±ν©λλ€
|
|
48
|
+
- μ€ν¨νλ©΄ μ€μ€λ‘ λ€λ₯Έ λ°©λ²μ μ°Ύμ΅λλ€
|
|
61
49
|
|
|
62
|
-
|
|
50
|
+
2. **μ λ’°ν μ μλ κ²°κ³Όλ§ λ³΄κ³ ν©λλ€**
|
|
51
|
+
- 80% μ΄μ μ λ’°λμ λ°κ²¬λ§ 보κ³
|
|
52
|
+
- κ±°μ§ μμ±μ μ κ·Ήμ μΌλ‘ νν°λ§
|
|
63
53
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
| Directory | gobuster | ffuf | dirsearch |
|
|
68
|
-
| Port Scan | rustscan | nmap | masscan |
|
|
54
|
+
3. **μΈκ° μ λ¬Έκ°μ μ¬κ³ κ³Όμ μ λͺ¨λ°©ν©λλ€**
|
|
55
|
+
- "Think β Act β Observe β Reflect" 루ν
|
|
56
|
+
- λ§λ€λ₯Έ κΈΈμμ μκ°μ¬νμΌλ‘ 볡ꡬ (D-Mail)
|
|
69
57
|
|
|
70
58
|
---
|
|
71
59
|
|
|
72
|
-
##
|
|
60
|
+
## π§ ReAct: μκ°νκ³ νλνκΈ°
|
|
73
61
|
|
|
74
|
-
|
|
75
|
-
|---------|-------------------|------------------|
|
|
76
|
-
| Decision Making | Manual | AI-driven with confidence scoring |
|
|
77
|
-
| Tool Selection | You choose | Auto-selects based on context |
|
|
78
|
-
| Failure Handling | You retry | Auto-fallback to alternatives |
|
|
79
|
-
| Attack Planning | Manual prioritization | CVSS-based priority matrix |
|
|
80
|
-
| Context Awareness | None | Remembers all findings |
|
|
81
|
-
| Reporting | Manual | Auto-generated findings |
|
|
62
|
+
Pentestingμ [ReAct ν¨ν΄](https://arxiv.org/abs/2210.03629)μ ν΅μ¬μΌλ‘ ν©λλ€:
|
|
82
63
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
64
|
+
```
|
|
65
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
66
|
+
β β
|
|
67
|
+
β π€ THINK β
|
|
68
|
+
β "νκ²μ΄ Apache 2.4.49λ₯Ό μ€ν μ€μ΄λ€. β
|
|
69
|
+
β Path Traversal μ·¨μ½μ (CVE-2021-41773)μ΄ μμ μ μλ€." β
|
|
70
|
+
β β
|
|
71
|
+
β β‘ ACT β
|
|
72
|
+
β [nmap_scan] target=192.168.1.1 ports=80,443 β
|
|
73
|
+
β β
|
|
74
|
+
β ποΈ OBSERVE β
|
|
75
|
+
β "ν¬νΈ 80μμ Apache/2.4.49 νμΈ. β
|
|
76
|
+
β mod_cgi νμ±νλ¨." β
|
|
77
|
+
β β
|
|
78
|
+
β π REFLECT β
|
|
79
|
+
β "CVE-2021-41773 κ°λ₯μ± λμ. μ΅μ€νλ‘μ μλν΄μΌ ν¨. β
|
|
80
|
+
β μ λ’°λ: 85%. λ€μ: exploit-researcherμκ² μμ." β
|
|
81
|
+
β β
|
|
82
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
83
|
+
```
|
|
93
84
|
|
|
94
85
|
---
|
|
95
86
|
|
|
96
|
-
##
|
|
87
|
+
## π λΉ λ₯Έ μμ
|
|
97
88
|
|
|
98
|
-
###
|
|
99
|
-
```bash
|
|
100
|
-
/target <domain|ip> Set primary target
|
|
101
|
-
/target add <t> Add target to list
|
|
102
|
-
/target list Show all targets (β
= primary)
|
|
103
|
-
/target rm <t> Remove target from list
|
|
104
|
-
/target set <t> Set as primary target
|
|
105
|
-
/target clear Remove ALL targets
|
|
106
|
-
```
|
|
89
|
+
### μ€μΉ
|
|
107
90
|
|
|
108
|
-
### Attack Execution
|
|
109
91
|
```bash
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
/status Show status report
|
|
92
|
+
npm install -g pentesting
|
|
93
|
+
# λλ
|
|
94
|
+
npx pentesting
|
|
114
95
|
```
|
|
115
96
|
|
|
116
|
-
###
|
|
117
|
-
```bash
|
|
118
|
-
/checkpoint [desc] Create checkpoint with optional description
|
|
119
|
-
/checkpoints List all checkpoints
|
|
120
|
-
/undo Undo to last checkpoint
|
|
121
|
-
/revert <id> Revert to specific checkpoint
|
|
122
|
-
/compact Compact context (keep last 3 messages)
|
|
123
|
-
/sessions List saved sessions
|
|
124
|
-
/resume [id] Resume a session
|
|
125
|
-
/replay Show session recordings
|
|
126
|
-
```
|
|
97
|
+
### API ν€ μ€μ
|
|
127
98
|
|
|
128
|
-
### Skills & Extras
|
|
129
99
|
```bash
|
|
130
|
-
|
|
131
|
-
/update Check for updates
|
|
132
|
-
/update now Install update
|
|
100
|
+
export ANTHROPIC_API_KEY=sk-ant-xxx
|
|
133
101
|
```
|
|
134
102
|
|
|
135
|
-
###
|
|
103
|
+
### μ€ν
|
|
104
|
+
|
|
136
105
|
```bash
|
|
137
|
-
|
|
138
|
-
/report Generate pentest report
|
|
106
|
+
pentesting
|
|
139
107
|
```
|
|
140
108
|
|
|
141
|
-
###
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
/clear Clear screen
|
|
146
|
-
/exit Exit
|
|
147
|
-
/y /n /ya Approve/Deny/Always approve (for pending tools)
|
|
109
|
+
### 첫 λ²μ§Έ 곡격
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
π― Pentesting > scan 192.168.1.1
|
|
148
113
|
```
|
|
149
114
|
|
|
150
|
-
|
|
115
|
+
μμ΄μ νΈκ° μλμΌλ‘:
|
|
116
|
+
1. ν¬νΈ μ€μΊ μν
|
|
117
|
+
2. μλΉμ€ λ²μ νμΈ
|
|
118
|
+
3. μ·¨μ½μ κ²μ
|
|
119
|
+
4. μ΅μ€νλ‘μ μλ
|
|
120
|
+
5. κ²°κ³Ό 보κ³
|
|
151
121
|
|
|
152
|
-
|
|
122
|
+
---
|
|
153
123
|
|
|
154
|
-
|
|
155
|
-
# Start pentesting CLI
|
|
156
|
-
pentesting
|
|
124
|
+
## ποΈ μν€ν
μ²
|
|
157
125
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
126
|
+
```
|
|
127
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
128
|
+
β PENTESTING SOUL β
|
|
129
|
+
β β
|
|
130
|
+
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ β
|
|
131
|
+
β β ReAct Loop β β D-Mail β β Planner β β
|
|
132
|
+
β β β β System β β β β
|
|
133
|
+
β β Think/Act/ β β Time Travel β β Attack Plan β β
|
|
134
|
+
β β Observe/ β β Checkpoint β β Generation β β
|
|
135
|
+
β β Reflect β β Rollback β β β β
|
|
136
|
+
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ β
|
|
137
|
+
β β β β β
|
|
138
|
+
β ββββββββββββββββββββΌβββββββββββββββββββ β
|
|
139
|
+
β β β
|
|
140
|
+
β ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ β
|
|
141
|
+
β β RUNTIME β β
|
|
142
|
+
β β Context β Toolset β Memory β Approval β β
|
|
143
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
144
|
+
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
|
|
145
|
+
β
|
|
146
|
+
βΌ
|
|
147
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
148
|
+
β LABOR MARKET β
|
|
149
|
+
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
|
|
150
|
+
β β Recon β β Exploit β β Web β β
|
|
151
|
+
β β Agent β β Agent β β Agent β β
|
|
152
|
+
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
|
|
153
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
154
|
+
```
|
|
163
155
|
|
|
164
|
-
|
|
165
|
-
/target list
|
|
166
|
-
Targets (4):
|
|
167
|
-
1. * example1.com (primary)
|
|
168
|
-
2. example2.com
|
|
169
|
-
3. 192.168.1.1
|
|
170
|
-
4. internal.corp
|
|
156
|
+
### ν΅μ¬ μ»΄ν¬λνΈ
|
|
171
157
|
|
|
172
|
-
|
|
173
|
-
|
|
158
|
+
| μ»΄ν¬λνΈ | μν |
|
|
159
|
+
|---------|------|
|
|
160
|
+
| **PentestingSoul** | λ©μΈ μμ΄μ νΈ λ£¨ν, λͺ¨λ κ²μ μ‘°μ¨ |
|
|
161
|
+
| **ReActLoop** | Think/Act/Observe/Reflect ν¨ν΄ ꡬν |
|
|
162
|
+
| **DMailSystem** | μκ°μ¬ν λλ²κΉ
, 체ν¬ν¬μΈνΈ λ‘€λ°± |
|
|
163
|
+
| **Planner** | 곡격 κ³ν μμ± λ° κ΄λ¦¬ |
|
|
164
|
+
| **LaborMarket** | μ λ¬Έ μλΈμμ΄μ νΈ ν λΉ |
|
|
165
|
+
| **ContextManager** | λν νμ€ν 리 μμΆ |
|
|
166
|
+
| **ConfidenceFilter** | 80%+ μ λ’°λ νν°λ§ |
|
|
174
167
|
|
|
175
|
-
|
|
168
|
+
---
|
|
176
169
|
|
|
177
|
-
|
|
178
|
-
Session: session-1707325423
|
|
179
|
-
... reconnaissance & exploitation ...
|
|
170
|
+
## β±οΈ D-Mail: μκ°μ¬ν λλ²κΉ
|
|
180
171
|
|
|
181
|
-
|
|
182
|
-
...
|
|
172
|
+
λ§λ€λ₯Έ κΈΈμ λλ¬νμ λ, μμ΄μ νΈλ κ³Όκ±°λ‘ λ©μμ§λ₯Ό λ³΄λ΄ λ€λ₯Έ κ²½λ‘λ₯Ό μλν©λλ€:
|
|
183
173
|
|
|
184
|
-
|
|
185
|
-
|
|
174
|
+
```
|
|
175
|
+
νμ¬: SQLi μλ 5ν λͺ¨λ μ€ν¨
|
|
176
|
+
β
|
|
177
|
+
D-Mail μ μ‘: "SQLi μ€ν¨ν¨. XSS μλν κ²"
|
|
178
|
+
β
|
|
179
|
+
체ν¬ν¬μΈνΈλ‘ λ‘€λ°±
|
|
180
|
+
β
|
|
181
|
+
μλ‘μ΄ μ λ΅μΌλ‘ μ¬μλ
|
|
182
|
+
```
|
|
186
183
|
|
|
187
|
-
|
|
184
|
+
```typescript
|
|
185
|
+
// μμ΄μ νΈ λ΄λΆ λμ
|
|
186
|
+
if (isStuck) {
|
|
187
|
+
dmailSystem.sendDMail(
|
|
188
|
+
'SQLi approach failed. Try XSS instead.',
|
|
189
|
+
lastCheckpoint,
|
|
190
|
+
'Stuck after 5 SQLi attempts'
|
|
191
|
+
);
|
|
192
|
+
throw new BackToTheFuture('Time travel initiated', lastCheckpoint);
|
|
193
|
+
}
|
|
188
194
|
```
|
|
189
195
|
|
|
190
196
|
---
|
|
191
197
|
|
|
192
|
-
##
|
|
193
|
-
|
|
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 |
|
|
198
|
+
## π₯ λ©ν° μμ΄μ νΈ μμ€ν
|
|
203
199
|
|
|
204
|
-
###
|
|
200
|
+
### μ λ¬Έ μμ΄μ νΈ
|
|
205
201
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
202
|
+
| μμ΄μ νΈ | μ λ¬Έ λΆμΌ | λꡬ |
|
|
203
|
+
|---------|-----------|------|
|
|
204
|
+
| **target-explorer** | μ μ°°, μ 보 μμ§ | nmap, whois, dig |
|
|
205
|
+
| **exploit-researcher** | μ·¨μ½μ μ°κ΅¬ | searchsploit, cve-search |
|
|
206
|
+
| **web-hacker** | μΉ μ ν리μΌμ΄μ
| sqlmap, nuclei |
|
|
207
|
+
| **crypto-analyst** | μνΈ λΆμ | hashcat, john |
|
|
211
208
|
|
|
212
|
-
|
|
209
|
+
### μμ΄μ νΈ μμ
|
|
213
210
|
|
|
214
|
-
|
|
211
|
+
```
|
|
212
|
+
Main Agent: "μΉ μλ²μμ SQLi κ°λ₯μ± λ°κ²¬"
|
|
213
|
+
β
|
|
214
|
+
ββββ [web-hacker] "λ‘κ·ΈμΈ νΌμμ SQLi ν
μ€νΈ"
|
|
215
|
+
β
|
|
216
|
+
ββββ κ²°κ³Ό λ°ν: "SQLi νμΈ, λ°μ΄ν°λ² μ΄μ€ λ€ν κ°λ₯"
|
|
217
|
+
```
|
|
215
218
|
|
|
216
|
-
|
|
219
|
+
### λ³λ ¬ Swarm μ€ν
|
|
217
220
|
|
|
218
|
-
|
|
221
|
+
```typescript
|
|
222
|
+
const swarm = new AgentSwarm(runtime);
|
|
219
223
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
| `PENTESTING_DOCKER` | Force Docker execution | 0 |
|
|
227
|
-
| `PENTESTING_CONTAINER` | Docker container name | pentesting-tools |
|
|
224
|
+
const results = await swarm.executeParallel([
|
|
225
|
+
{ agentName: 'web-hacker', task: 'Test SQLi on login' },
|
|
226
|
+
{ agentName: 'web-hacker', task: 'Test XSS on search' },
|
|
227
|
+
{ agentName: 'target-explorer', task: 'Find hidden endpoints' },
|
|
228
|
+
]);
|
|
229
|
+
```
|
|
228
230
|
|
|
229
|
-
|
|
231
|
+
---
|
|
230
232
|
|
|
233
|
+
## π μ λ’°λ κΈ°λ° νν°λ§
|
|
231
234
|
|
|
232
|
-
|
|
235
|
+
**80% μ΄μ μ λ’°λλ§ λ³΄κ³ ν©λλ€.**
|
|
233
236
|
|
|
234
|
-
|
|
237
|
+
```
|
|
238
|
+
μ λ’°λ κ³μ°:
|
|
239
|
+
κΈ°λ³Έκ°: 50%
|
|
240
|
+
+ μ¦κ±° μ Γ 10% (μ΅λ 30%)
|
|
241
|
+
+ μ΅μ€νλ‘μ κ°λ₯: +15%
|
|
242
|
+
+ μ¬κ°λ λμ: +5-10%
|
|
243
|
+
+ CVE μ°Έμ‘°: +10%
|
|
244
|
+
= μ΅μ’
μ λ’°λ
|
|
245
|
+
```
|
|
235
246
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
-
|
|
247
|
+
```typescript
|
|
248
|
+
const finding = createFinding({
|
|
249
|
+
title: 'SQL Injection in login',
|
|
250
|
+
description: 'Time-based blind SQLi',
|
|
251
|
+
severity: 'critical',
|
|
252
|
+
evidence: ['sqlmap output', 'response time analysis', 'CVE-2021-xxxx'],
|
|
253
|
+
exploitable: true,
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
// μ λ’°λ: 50 + 30 + 15 + 10 + 10 = 115% β 100%
|
|
257
|
+
// β λ³΄κ³ λ¨ β
|
|
258
|
+
```
|
|
240
259
|
|
|
241
260
|
---
|
|
242
261
|
|
|
243
|
-
##
|
|
262
|
+
## π λͺ
λ Ήμ΄
|
|
244
263
|
|
|
245
|
-
|
|
264
|
+
| λͺ
λ Ήμ΄ | μ€λͺ
|
|
|
265
|
+
|--------|------|
|
|
266
|
+
| `scan <target>` | νκ² μ€μΊ λ° μ μ°° |
|
|
267
|
+
| `exploit <target>` | μ·¨μ½μ μ΅μ€νλ‘μ |
|
|
268
|
+
| `report` | λ°κ²¬ μ¬ν λ³΄κ³ μ μμ± |
|
|
269
|
+
| `status` | νμ¬ μ§ν μν© |
|
|
270
|
+
| `plan` | 곡격 κ³ν μ‘°ν |
|
|
271
|
+
| `agents` | μ¬μ© κ°λ₯ν μμ΄μ νΈ λͺ©λ‘ |
|
|
246
272
|
|
|
247
|
-
|
|
273
|
+
---
|
|
248
274
|
|
|
249
|
-
|
|
275
|
+
## βοΈ μ€μ
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
// pentesting.config.ts
|
|
279
|
+
export default {
|
|
280
|
+
// LLM μ€μ
|
|
281
|
+
model: 'claude-opus-4-0',
|
|
282
|
+
maxTokens: 8096,
|
|
283
|
+
|
|
284
|
+
// μμ΄μ νΈ μ€μ
|
|
285
|
+
maxStepsPerTurn: 50,
|
|
286
|
+
confidenceThreshold: 80,
|
|
287
|
+
|
|
288
|
+
// 컨ν
μ€νΈ μ€μ
|
|
289
|
+
maxContextTokens: 150000,
|
|
290
|
+
compactionThreshold: 0.8,
|
|
291
|
+
|
|
292
|
+
// μΉμΈ μ€μ
|
|
293
|
+
yoloMode: false, // trueλ©΄ λͺ¨λ λꡬ μλ μΉμΈ
|
|
294
|
+
};
|
|
295
|
+
```
|
|
250
296
|
|
|
251
|
-
|
|
252
|
-
2. If not, it automatically pulls `agnusdei1207/pentesting-tools:latest`
|
|
253
|
-
3. Starts container `pentesting-tools` with host network
|
|
254
|
-
4. Executes command via `docker exec`
|
|
297
|
+
---
|
|
255
298
|
|
|
256
|
-
|
|
299
|
+
## π§ͺ ν
μ€νΈ
|
|
257
300
|
|
|
258
301
|
```bash
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
# Use custom container name
|
|
263
|
-
export PENTESTING_CONTAINER=my-pentest-container
|
|
302
|
+
npm test
|
|
303
|
+
```
|
|
264
304
|
|
|
265
|
-
|
|
266
|
-
|
|
305
|
+
```
|
|
306
|
+
β tests/soul.test.ts (24 tests) 10ms
|
|
307
|
+
β Context
|
|
308
|
+
β AgentRegistry
|
|
309
|
+
β ConfidenceFilter
|
|
310
|
+
β ReActLoop
|
|
311
|
+
β DMailSystem
|
|
312
|
+
β MessageBus
|
|
313
|
+
β MemoryManager
|
|
314
|
+
β Integration Tests
|
|
267
315
|
```
|
|
268
316
|
|
|
269
|
-
|
|
317
|
+
---
|
|
270
318
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
319
|
+
## π νλ‘μ νΈ κ΅¬μ‘°
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
src/
|
|
323
|
+
βββ soul/ # ν΅μ¬ μμ΄μ νΈ μμ€ν
|
|
324
|
+
β βββ pentesting-soul.ts # λ©μΈ μμ΄μ νΈ λ£¨ν
|
|
325
|
+
β βββ react.ts # ReAct ν¨ν΄
|
|
326
|
+
β βββ dmail.ts # μκ°μ¬ν μμ€ν
|
|
327
|
+
β βββ planner.ts # κ³ν μμ€ν
|
|
328
|
+
β βββ swarm.ts # λ³λ ¬ μμ΄μ νΈ
|
|
329
|
+
β βββ confidence.ts # μ λ’°λ νν°λ§
|
|
330
|
+
β βββ ...
|
|
331
|
+
βββ tools/ # λꡬ μ μ
|
|
332
|
+
βββ agents/ # μμ΄μ νΈ μ€ν
|
|
333
|
+
βββ experience/ # νμ΅ μμ€ν
|
|
334
|
+
βββ prompts/ # ν둬ννΈ ν
νλ¦Ώ
|
|
335
|
+
```
|
|
280
336
|
|
|
281
337
|
---
|
|
282
338
|
|
|
283
|
-
##
|
|
339
|
+
## π λ¬Έμ
|
|
284
340
|
|
|
285
|
-
|
|
341
|
+
- [μμ€ν
μν€ν
μ²](docs/architecture.md) - μμΈ κΈ°μ λ¬Έμ
|
|
342
|
+
- [OpenClaw λΆμ](docs/OPENCLAW_ANALYSIS.md) - κ°μ κ³ν
|
|
343
|
+
- [API λ νΌλ°μ€](docs/api-reference.md) - API λ¬Έμ
|
|
344
|
+
- [ꡬν μ§ν μν©](docs/IMPLEMENTATION_PROGRESS.md) - κ°λ° μν
|
|
286
345
|
|
|
287
346
|
---
|
|
288
347
|
|
|
289
|
-
##
|
|
348
|
+
## π£οΈ λ‘λλ§΅
|
|
290
349
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
318
|
-
```
|
|
350
|
+
### v1.0 (νμ¬) β
|
|
351
|
+
- [x] ReAct ν¨ν΄ ꡬν
|
|
352
|
+
- [x] D-Mail μκ°μ¬ν
|
|
353
|
+
- [x] λ©ν° μμ΄μ νΈ μμ€ν
|
|
354
|
+
- [x] μ λ’°λ νν°λ§
|
|
355
|
+
- [x] 컨ν
μ€νΈ μμΆ
|
|
319
356
|
|
|
320
|
-
|
|
357
|
+
### v1.1 (λ€μ)
|
|
358
|
+
- [ ] μꡬ λ²‘ν° λ©λͺ¨λ¦¬
|
|
359
|
+
- [ ] μΈμ
μμμ±
|
|
360
|
+
- [ ] κ°νλ ν
μμ€ν
|
|
321
361
|
|
|
322
|
-
|
|
362
|
+
### v1.2 (κ³ν)
|
|
363
|
+
- [ ] Docker μλλ°μ€
|
|
364
|
+
- [ ] μ€ν¬ λ§μΌνλ μ΄μ€
|
|
365
|
+
- [ ] μΈμ¦ νλ‘ν κ΄λ¦¬
|
|
323
366
|
|
|
324
|
-
|
|
325
|
-
# Clone
|
|
326
|
-
git clone https://github.com/agnusdei1207/pentesting.git
|
|
327
|
-
cd pentesting
|
|
367
|
+
---
|
|
328
368
|
|
|
329
|
-
|
|
330
|
-
npm install
|
|
369
|
+
## π€ κΈ°μ¬
|
|
331
370
|
|
|
332
|
-
|
|
333
|
-
npm run build
|
|
371
|
+
κΈ°μ¬λ₯Ό νμν©λλ€! [CONTRIBUTING.md](CONTRIBUTING.md)λ₯Ό μ°Έκ³ νμΈμ.
|
|
334
372
|
|
|
335
|
-
|
|
336
|
-
npm run dev
|
|
337
|
-
```
|
|
373
|
+
---
|
|
338
374
|
|
|
339
|
-
##
|
|
375
|
+
## π λΌμ΄μ μ€
|
|
340
376
|
|
|
341
|
-
- [
|
|
342
|
-
- [Docker Image](https://hub.docker.com/r/agnusdei1207/pentesting-tools) - Pre-built security tools
|
|
377
|
+
MIT License - [LICENSE](LICENSE)
|
|
343
378
|
|
|
344
379
|
---
|
|
345
380
|
|
|
346
|
-
##
|
|
381
|
+
## β οΈ λ©΄μ±
μ‘°ν
|
|
382
|
+
|
|
383
|
+
μ΄ λꡬλ **ν©λ²μ μΈ λ³΄μ ν
μ€νΈ λͺ©μ **μΌλ‘λ§ μ¬μ©ν΄μΌ ν©λλ€.
|
|
384
|
+
νκ° μμ΄ μμ€ν
μ ν
μ€νΈνλ κ²μ λΆλ²μ
λλ€.
|
|
385
|
+
μ¬μ©μλ λͺ¨λ νλμ λν μ±
μμ μ§λλ€.
|
|
386
|
+
|
|
387
|
+
---
|
|
347
388
|
|
|
348
|
-
|
|
389
|
+
<p align="center">
|
|
390
|
+
<sub>Built with π§ by <a href="https://github.com/agnusdei1207">agnusdei1207</a></sub>
|
|
391
|
+
</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pentesting",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Autonomous Penetration Testing AI Agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
"dev": "tsx src/index.tsx",
|
|
19
19
|
"build": "tsup src/index.tsx --format esm --dts --clean",
|
|
20
20
|
"start": "node dist/index.js",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"test:watch": "vitest",
|
|
21
23
|
"lint": "tsc --noEmit",
|
|
22
24
|
"prepublishOnly": "npm run build",
|
|
23
25
|
"release:patch": "npm version patch && npm run build && npm publish",
|
|
@@ -78,6 +80,7 @@
|
|
|
78
80
|
"@types/react": "^18.3.18",
|
|
79
81
|
"tsup": "^8.3.6",
|
|
80
82
|
"tsx": "^4.19.2",
|
|
81
|
-
"typescript": "^5.7.3"
|
|
83
|
+
"typescript": "^5.7.3",
|
|
84
|
+
"vitest": "^4.0.18"
|
|
82
85
|
}
|
|
83
86
|
}
|