JSPM

pentesting

0.8.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1399
  • Score
    100M100P100Q107454F
  • License MIT

Autonomous Penetration Testing AI Agent

Package Exports

  • pentesting
  • pentesting/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pentesting) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

🎯 Pentesting

Pentesting

μΈκ°„μ²˜λŸΌ μƒκ°ν•˜κ³  μ‹€ν–‰ν•˜λŠ” 자율 침투 ν…ŒμŠ€νŠΈ AI μ—μ΄μ „νŠΈ

npm version CI status MIT License


πŸ’‘ μ² ν•™: μ™œ Pentesting인가?

문제

κΈ°μ‘΄ 침투 ν…ŒμŠ€νŠΈλŠ” 도ꡬ μ€‘μ‹¬μž…λ‹ˆλ‹€:

  • nmap으둜 μŠ€μΊ”ν•˜κ³ , κ²°κ³Όλ₯Ό 보고
  • sqlmap으둜 ν…ŒμŠ€νŠΈν•˜κ³ , λ‹€λ₯Έ λ„κ΅¬λ‘œ λ„˜μ–΄κ°€κ³ 
  • 각 λ„κ΅¬μ˜ 좜λ ₯을 ν•΄μ„ν•˜κ³ , λ‹€μŒ 단계λ₯Ό κ²°μ •ν•˜κ³ 

이것은 반볡적이고, μ‹œκ°„ μ†Œλͺ¨μ μ΄λ©°, μ „λ¬Έκ°€ 지식이 ν•„μš”ν•©λ‹ˆλ‹€.

ν•΄κ²°μ±…

Pentesting은 사고 μ€‘μ‹¬μž…λ‹ˆλ‹€:

  • "이 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μΉ¨νˆ¬ν•˜λΌ"
  • μ—μ΄μ „νŠΈκ°€ 슀슀둜 도ꡬλ₯Ό μ„ νƒν•˜κ³ , κ²°κ³Όλ₯Ό λΆ„μ„ν•˜κ³ , λ‹€μŒ μ „λž΅μ„ κ²°μ •ν•©λ‹ˆλ‹€
Before (도ꡬ 쀑심):
  Human β†’ [κ²°μ •] β†’ nmap β†’ [뢄석] β†’ [κ²°μ •] β†’ sqlmap β†’ [뢄석] β†’ ...

After (사고 쀑심):
  Human β†’ "μΉ¨νˆ¬ν•˜λΌ" β†’ Pentesting Agent β†’ [μžλ™ν™”λœ 사고-행동 루프] β†’ λ³΄κ³ μ„œ

핡심 신념

  1. AIλŠ” 도ꡬ가 μ•„λ‹ˆλΌ λ™λ£Œμž…λ‹ˆλ‹€

    • λͺ…령을 μ‹€ν–‰ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•©λ‹ˆλ‹€
    • μ‹€νŒ¨ν•˜λ©΄ 슀슀둜 λ‹€λ₯Έ 방법을 μ°ΎμŠ΅λ‹ˆλ‹€
  2. μ‹ λ’°ν•  수 μžˆλŠ” 결과만 λ³΄κ³ ν•©λ‹ˆλ‹€

    • 80% 이상 μ‹ λ’°λ„μ˜ 발견만 보고
    • κ±°μ§“ 양성을 적극적으둜 필터링
  3. 인간 μ „λ¬Έκ°€μ˜ 사고 과정을 λͺ¨λ°©ν•©λ‹ˆλ‹€

    • "Think β†’ Act β†’ Observe β†’ Reflect" 루프
    • 막닀λ₯Έ κΈΈμ—μ„œ μ‹œκ°„μ—¬ν–‰μœΌλ‘œ 볡ꡬ (D-Mail)

🧠 ReAct: μƒκ°ν•˜κ³  ν–‰λ™ν•˜κΈ°

Pentesting은 ReAct νŒ¨ν„΄μ„ ν•΅μ‹¬μœΌλ‘œ ν•©λ‹ˆλ‹€:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚   πŸ€” THINK                                                      β”‚
β”‚   "νƒ€κ²Ÿμ΄ Apache 2.4.49λ₯Ό μ‹€ν–‰ 쀑이닀.                         β”‚
β”‚    Path Traversal 취약점(CVE-2021-41773)이 μžˆμ„ 수 μžˆλ‹€."       β”‚
β”‚                                                                 β”‚
β”‚   ⚑ ACT                                                        β”‚
β”‚   [nmap_scan] target=192.168.1.1 ports=80,443                  β”‚
β”‚                                                                 β”‚
β”‚   πŸ‘οΈ OBSERVE                                                   β”‚
β”‚   "포트 80μ—μ„œ Apache/2.4.49 확인.                              β”‚
β”‚    mod_cgi ν™œμ„±ν™”λ¨."                                           β”‚
β”‚                                                                 β”‚
β”‚   πŸ’­ REFLECT                                                    β”‚
β”‚   "CVE-2021-41773 κ°€λŠ₯μ„± λ†’μŒ. μ΅μŠ€ν”Œλ‘œμž‡ μ‹œλ„ν•΄μ•Ό 함.          β”‚
β”‚    신뒰도: 85%. λ‹€μŒ: exploit-researcherμ—κ²Œ μœ„μž„."             β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ λΉ λ₯Έ μ‹œμž‘

μ„€μΉ˜

npm install -g pentesting
# λ˜λŠ”
npx pentesting

API ν‚€ μ„€μ •

export ANTHROPIC_API_KEY=sk-ant-xxx

μ‹€ν–‰

pentesting

첫 번째 곡격

🎯 Pentesting > scan 192.168.1.1

μ—μ΄μ „νŠΈκ°€ μžλ™μœΌλ‘œ:

  1. 포트 μŠ€μΊ” μˆ˜ν–‰
  2. μ„œλΉ„μŠ€ 버전 확인
  3. 취약점 검색
  4. μ΅μŠ€ν”Œλ‘œμž‡ μ‹œλ„
  5. 결과 보고

πŸ—οΈ μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         PENTESTING SOUL                             β”‚
β”‚                                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚   ReAct Loop  β”‚  β”‚   D-Mail      β”‚  β”‚   Planner     β”‚           β”‚
β”‚  β”‚               β”‚  β”‚   System      β”‚  β”‚               β”‚           β”‚
β”‚  β”‚  Think/Act/   β”‚  β”‚  Time Travel  β”‚  β”‚  Attack Plan  β”‚           β”‚
β”‚  β”‚  Observe/     β”‚  β”‚  Checkpoint   β”‚  β”‚  Generation   β”‚           β”‚
β”‚  β”‚  Reflect      β”‚  β”‚  Rollback     β”‚  β”‚               β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚          β”‚                  β”‚                  β”‚                    β”‚
β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚                             β”‚                                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                        RUNTIME                               β”‚   β”‚
β”‚  β”‚  Context β”‚ Toolset β”‚ Memory β”‚ Approval                      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        LABOR MARKET                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
β”‚  β”‚   Recon      β”‚  β”‚   Exploit    β”‚  β”‚   Web        β”‚              β”‚
β”‚  β”‚   Agent      β”‚  β”‚   Agent      β”‚  β”‚   Agent      β”‚              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

핡심 μ»΄ν¬λ„ŒνŠΈ

μ»΄ν¬λ„ŒνŠΈ μ—­ν• 
PentestingSoul 메인 μ—μ΄μ „νŠΈ 루프, λͺ¨λ“  것을 쑰율
ReActLoop Think/Act/Observe/Reflect νŒ¨ν„΄ κ΅¬ν˜„
DMailSystem μ‹œκ°„μ—¬ν–‰ 디버깅, 체크포인트 λ‘€λ°±
Planner 곡격 κ³„νš 생성 및 관리
LaborMarket μ „λ¬Έ μ„œλΈŒμ—μ΄μ „νŠΈ ν• λ‹Ή
ContextManager λŒ€ν™” νžˆμŠ€ν† λ¦¬ μ••μΆ•
ConfidenceFilter 80%+ 신뒰도 필터링

⏱️ D-Mail: μ‹œκ°„μ—¬ν–‰ 디버깅

막닀λ₯Έ 길에 λ„λ‹¬ν–ˆμ„ λ•Œ, μ—μ΄μ „νŠΈλŠ” 과거둜 λ©”μ‹œμ§€λ₯Ό 보내 λ‹€λ₯Έ 경둜λ₯Ό μ‹œλ„ν•©λ‹ˆλ‹€:

ν˜„μž¬: SQLi μ‹œλ„ 5회 λͺ¨λ‘ μ‹€νŒ¨
      ↓
D-Mail 전솑: "SQLi μ‹€νŒ¨ν•¨. XSS μ‹œλ„ν•  것"
      ↓
체크포인트둜 둀백
      ↓
μƒˆλ‘œμš΄ μ „λž΅μœΌλ‘œ μž¬μ‹œλ„
// μ—μ΄μ „νŠΈ λ‚΄λΆ€ λ™μž‘
if (isStuck) {
    dmailSystem.sendDMail(
        'SQLi approach failed. Try XSS instead.',
        lastCheckpoint,
        'Stuck after 5 SQLi attempts'
    );
    throw new BackToTheFuture('Time travel initiated', lastCheckpoint);
}

πŸ‘₯ λ©€ν‹° μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œ

μ „λ¬Έ μ—μ΄μ „νŠΈ

μ—μ΄μ „νŠΈ μ „λ¬Έ λΆ„μ•Ό 도ꡬ
target-explorer μ •μ°°, 정보 μˆ˜μ§‘ nmap, whois, dig
exploit-researcher 취약점 연ꡬ searchsploit, cve-search
web-hacker μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ sqlmap, nuclei
crypto-analyst μ•”ν˜Έ 뢄석 hashcat, john

μ—μ΄μ „νŠΈ μœ„μž„

Main Agent: "μ›Ή μ„œλ²„μ—μ„œ SQLi κ°€λŠ₯μ„± 발견"
     ↓
     └──→ [web-hacker] "둜그인 νΌμ—μ„œ SQLi ν…ŒμŠ€νŠΈ"
                ↓
                └──→ κ²°κ³Ό λ°˜ν™˜: "SQLi 확인, λ°μ΄ν„°λ² μ΄μŠ€ 덀프 κ°€λŠ₯"

병렬 Swarm μ‹€ν–‰

const swarm = new AgentSwarm(runtime);

const results = await swarm.executeParallel([
    { agentName: 'web-hacker', task: 'Test SQLi on login' },
    { agentName: 'web-hacker', task: 'Test XSS on search' },
    { agentName: 'target-explorer', task: 'Find hidden endpoints' },
]);

πŸ”’ 신뒰도 기반 필터링

80% 이상 μ‹ λ’°λ„λ§Œ λ³΄κ³ ν•©λ‹ˆλ‹€.

신뒰도 계산:
  κΈ°λ³Έκ°’: 50%
  + 증거 수 Γ— 10% (μ΅œλŒ€ 30%)
  + μ΅μŠ€ν”Œλ‘œμž‡ κ°€λŠ₯: +15%
  + 심각도 λ†’μŒ: +5-10%
  + CVE μ°Έμ‘°: +10%
  = μ΅œμ’… 신뒰도
const finding = createFinding({
    title: 'SQL Injection in login',
    description: 'Time-based blind SQLi',
    severity: 'critical',
    evidence: ['sqlmap output', 'response time analysis', 'CVE-2021-xxxx'],
    exploitable: true,
});

// 신뒰도: 50 + 30 + 15 + 10 + 10 = 115% β†’ 100%
// β†’ 보고됨 βœ…

πŸ“‹ λͺ…λ Ήμ–΄

λͺ…λ Ήμ–΄ μ„€λͺ…
scan <target> νƒ€κ²Ÿ μŠ€μΊ” 및 μ •μ°°
exploit <target> 취약점 μ΅μŠ€ν”Œλ‘œμž‡
report 발견 사항 λ³΄κ³ μ„œ 생성
status ν˜„μž¬ μ§„ν–‰ 상황
plan 곡격 κ³„νš 쑰회
agents μ‚¬μš© κ°€λŠ₯ν•œ μ—μ΄μ „νŠΈ λͺ©λ‘

βš™οΈ μ„€μ •

// pentesting.config.ts
export default {
    // LLM μ„€μ •
    model: 'claude-opus-4-0',
    maxTokens: 8096,
    
    // μ—μ΄μ „νŠΈ μ„€μ •
    maxStepsPerTurn: 50,
    confidenceThreshold: 80,
    
    // μ»¨ν…μŠ€νŠΈ μ„€μ •
    maxContextTokens: 150000,
    compactionThreshold: 0.8,
    
    // 승인 μ„€μ •
    yoloMode: false, // trueλ©΄ λͺ¨λ“  도ꡬ μžλ™ 승인
};

πŸ§ͺ ν…ŒμŠ€νŠΈ

npm test
 βœ“ tests/soul.test.ts (24 tests) 10ms
   βœ“ Context
   βœ“ AgentRegistry
   βœ“ ConfidenceFilter
   βœ“ ReActLoop
   βœ“ DMailSystem
   βœ“ MessageBus
   βœ“ MemoryManager
   βœ“ Integration Tests

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

src/
β”œβ”€β”€ soul/                    # 핡심 μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œ
β”‚   β”œβ”€β”€ pentesting-soul.ts   # 메인 μ—μ΄μ „νŠΈ 루프
β”‚   β”œβ”€β”€ react.ts             # ReAct νŒ¨ν„΄
β”‚   β”œβ”€β”€ dmail.ts             # μ‹œκ°„μ—¬ν–‰ μ‹œμŠ€ν…œ
β”‚   β”œβ”€β”€ planner.ts           # κ³„νš μ‹œμŠ€ν…œ
β”‚   β”œβ”€β”€ swarm.ts             # 병렬 μ—μ΄μ „νŠΈ
β”‚   β”œβ”€β”€ confidence.ts        # 신뒰도 필터링
β”‚   └── ...
β”œβ”€β”€ tools/                   # 도ꡬ μ •μ˜
β”œβ”€β”€ agents/                  # μ—μ΄μ „νŠΈ μŠ€νŽ™
β”œβ”€β”€ experience/              # ν•™μŠ΅ μ‹œμŠ€ν…œ
└── prompts/                 # ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώ

πŸ“– λ¬Έμ„œ


πŸ›£οΈ λ‘œλ“œλ§΅

v1.0 (ν˜„μž¬) βœ…

  • ReAct νŒ¨ν„΄ κ΅¬ν˜„
  • D-Mail μ‹œκ°„μ—¬ν–‰
  • λ©€ν‹° μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œ
  • 신뒰도 필터링
  • μ»¨ν…μŠ€νŠΈ μ••μΆ•

v1.1 (λ‹€μŒ)

  • 영ꡬ 벑터 λ©”λͺ¨λ¦¬
  • μ„Έμ…˜ μ˜μ†μ„±
  • κ°•ν™”λœ ν›… μ‹œμŠ€ν…œ

v1.2 (κ³„νš)

  • Docker μƒŒλ“œλ°•μŠ€
  • μŠ€ν‚¬ λ§ˆμΌ“ν”Œλ ˆμ΄μŠ€
  • 인증 ν”„λ‘œν•„ 관리

🀝 κΈ°μ—¬

κΈ°μ—¬λ₯Ό ν™˜μ˜ν•©λ‹ˆλ‹€! CONTRIBUTING.mdλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.


πŸ“œ λΌμ΄μ„ μŠ€

MIT License - LICENSE


⚠️ λ©΄μ±… μ‘°ν•­

이 λ„κ΅¬λŠ” 합법적인 λ³΄μ•ˆ ν…ŒμŠ€νŠΈ λͺ©μ μœΌλ‘œλ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν—ˆκ°€ 없이 μ‹œμŠ€ν…œμ„ ν…ŒμŠ€νŠΈν•˜λŠ” 것은 λΆˆλ²•μž…λ‹ˆλ‹€. μ‚¬μš©μžλŠ” λͺ¨λ“  행동에 λŒ€ν•œ μ±…μž„μ„ μ§‘λ‹ˆλ‹€.


Built with 🧠 by agnusdei1207