techleadevelopers/force-military-scan-offensive
GitHub: techleadevelopers/force-military-scan-offensive
集成11阶段杀伤链与AI驱动的自动化渗透测试平台,支持凭证中继和智能攻击路径编排。
Stars: 2 | Forks: 0
# Military Scan Enterprise (MSE) — 生态系统完整文档
## 目录
1. [架构概览](#1-visao-geral-da-arquitetura)
2. [主流程图](#2-diagrama-de-fluxo-principal)
3. [文件结构](#3-estrutura-de-arquivos)
4. [Frontend — React/Vite](#4-frontend--reactvite)
5. [Backend — Express Gateway](#5-backend--express-gateway)
6. [Scanner Engine — Python](#6-scanner-engine--python)
7. [Sniper Pipeline — 高级攻击管道](#7-sniper-pipeline--pipeline-ofensivo-avancado)
8. [Combinator — 智能认证渗透器](#8-combinator--smart-auth-penetrator)
9. [4 审计注入](#9-4-audit-injections)
10. [企业级路由情报](#10-enterprise-route-intelligence)
11. [凭证中继与数据桥接](#11-credential-relay--databridge)
12. [数据库 — PostgreSQL](#12-banco-de-dados--postgresql)
13. [API 参考](#13-api-reference)
14. [支付 — Stripe](#14-pagamentos--stripe)
15. [国际化](#15-internacionalizacao)
16. [维护指南](#16-guia-de-manutencao)
17. [未来集成指南](#17-guia-de-integracoes-futuras)
## 1. 架构概览
```
┌─────────────────────────────────────────────────────────────────┐
│ USUARIO (Browser) │
│ Landing → Dashboard → AdminPanel → ScanHistory → AuthPage │
└────────────────────────────┬────────────────────────────────────┘
│ WebSocket (Socket.io) + REST API
▼
┌─────────────────────────────────────────────────────────────────┐
│ EXPRESS GATEWAY (Node.js) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ routes.ts│ │ admin.ts │ │ auth.ts │ │ stripe/webhook│ │
│ └────┬─────┘ └────┬─────┘ └──────────┘ └───────────────┘ │
│ │ │ │
│ ┌────▼──────────────▼────────────────────────────────────┐ │
│ │ credentialRelay.ts (DataBridge) │ │
│ └────────────────────────────────────────────────────────┘ │
│ │ │ │
│ ┌────▼─────┐ ┌───▼─────────────────────┐ │
│ │ storage │ │ PostgreSQL (Drizzle) │ │
│ │ .ts │ │ users/scans/subs/audit │ │
│ └──────────┘ └─────────────────────────┘ │
└────────┬──────────────┬─────────────────────────────────────────┘
│ │
spawn python3 spawn python3
│ │
▼ ▼
┌────────────────┐ ┌──────────────────────────────────────────────┐
│ orchestrator │ │ sniper_pipeline.py │
│ .py │ │ (10-Phase Elite Offensive Pipeline) │
│ (Standard │ │ │
│ 4-Phase) │ │ + adversarial_engine.py │
│ │ │ + chain_intelligence.py │
│ Surface │ │ + hacker_reasoning.py │
│ Exposure │ │ + sniper_engine.py │
│ Misconfig │ │ + attack_reasoning.py │
│ Simulation │ └──────────────────────────────────────────────┘
└────────────────┘
```
**技术栈:**
- **Frontend**: React 18 + Vite + TailwindCSS + Framer Motion + Zustand + wouter
- **Gateway**: Express.js + Socket.io + Drizzle ORM
- **Scanner**: Python 3 + httpx + dnspython + Selenium/Chromium
- **Database**: PostgreSQL (Neon)
- **Payments**: Stripe ($5 单次扫描)
- **语言**: 10 种语言 (BR, PT, EN, ES, FR, DE, IT, JA, ZH, KO)
## 2. 主流程图
### 2.1 标准扫描流程(普通用户)
```
Usuario Frontend Gateway Python Scanner
│ │ │ │
│ Digita URL │ │ │
│───────────────────────>│ │ │
│ │ emit("start_scan") │ │
│ │───────────────────────>│ │
│ │ │ spawn python3 │
│ │ │ -m scanner.orchestrator │
│ │ │─────────────────────────>│
│ │ │ │
│ │ │ ┌─── PHASE 1: Surface ─┐
│ │ │ │ DNS Resolution │
│ │ │ │ Subdomain Enumeration │
│ │ │ │ Port Scanning │
│ │ │ │ WAF Detection │
│ │ │ │ → _build_hypothesis() │
│ │ │ └──────────────────────┘
│ │ │ │
│ │ │ ┌─── PHASE 2: Exposure ─┐
│ │ │ │ TLS Validation │
│ │ │ │ Browser Recon │
│ │ │ │ JS Secrets Scanner │
│ │ │ │ → Enterprise Routes │
│ │ │ │ → Manipulation PoCs │
│ │ │ │ → Framework Versions │
│ │ │ └───────────────────────┘
│ │ │ │
│ │ │ ┌─── PHASE 3: Misconfig ─┐
│ │ │ │ Security Headers │
│ │ │ │ CORS Policy │
│ │ │ └───────────────────────┘
│ │ │ │
│ │ │ ┌─── PHASE 4: Simulation ┐
│ │ │ │ Rate Limiting │
│ │ │ │ Auth Flow │
│ │ │ │ Input Validation │
│ │ │ │ SSRF/XXE/IDOR/Redirect │
│ │ │ └───────────────────────┘
│ │ │ │
│ │ │ stdout JSON lines │
│ │ socket.emit(event) │<─────────────────────────│
│ UI Updates │<──────────────────────│ │
│ (Terminal, HexGrid, │ │ │
│ Telemetry, Sidebar) │ │ │
│<───────────────────────│ │ │
│ │ │ exit code 0 │
│ │ │<─────────────────────────│
│ │ "completed" event │ │
│ ScanCompleteModal │<──────────────────────│ │
│<───────────────────────│ save to DB │ │
```
### 2.2 Sniper Pipeline 流程(仅限管理员)
```
Admin AdminPanel Gateway (admin.ts) Python sniper_pipeline
│ │ │ │
│ Click "Full Scan" │ │ │
│───────────────────────>│ │ │
│ │ POST /admin/sniper/ │ │
│ │ full-scan │ │
│ │───────────────────────>│ │
│ │ │ spawn python3 │
│ │ │ -m scanner.sniper_pipeline
│ │ │─────────────────────────>│
│ │ │ │
│ │ │ Phase 1: INGEST │
│ │ │ └→ orchestrator run │
│ │ │ └→ _build_hypothesis()│
│ │ │ │
│ │ │ Phase 2a: EXPLOIT │
│ │ │ └→ SniperEngine │
│ │ │ │
│ │ │ Phase 2b: DECISION │
│ │ │ └→ DecisionTree │
│ │ │ │
│ │ │ Phase 2c: ADVERSARIAL │
│ │ │ └→ CostRewardCalc │
│ │ │ └→ CorrelationGraph │
│ │ │ │
│ │ │ ★ RISK SCORE ENGINE │
│ │ │ └→ score > 0.85? │
│ │ │ AUTO_DUMP mode │
│ │ │ │
│ │ │ Phase 2d: CHAIN INTEL │
│ │ │ └→ ExploitChains │
│ │ │ │
│ │ │ Phase 2e: HACKER REASON│
│ │ │ └→ Kill Chain Playbook│
│ │ │ │
│ │ │ Phase 2f: INCIDENT │
│ │ │ └→ IncidentAbsorber │
│ │ │ │
│ │ │ Phase 3: DB VALIDATION │
│ │ │ └→ SQL/NoSQL probes │
│ │ │ │
│ │ │ Phase 4: INFRA/SSRF │
│ │ │ └→ Cloud metadata │
│ │ │ └→ Credential harvest │
│ │ │ │
│ │ │ pipeline_report JSON │
│ │<─────────────────────────────────────────────────│
│ Results displayed │ │ │
│<───────────────────────│ │ │
```
### 2.3 Combinator 流程(7 个阶段 — 管理员)
```
┌───────────────────────────────────────────────────────────────────┐
│ SMART AUTH PENETRATOR COMBINATOR v2.0 │
│ (server/admin.ts) │
├───────────────────────────────────────────────────────────────────┤
│ │
│ Phase 1: ENDPOINT DISCOVERY │
│ ├─ Probes /login, /admin, /api/auth, /wp-admin, etc. │
│ ├─ Detects login forms via HTML parsing │
│ └─ Classifies: HAS_FORM | NO_FORM | REDIRECT │
│ │ │
│ Phase 2: CREDENTIAL ROTATION │
│ ├─ Generates default credential dictionary │
│ ├─ admin:admin, test:test, root:root, etc. │
│ └─ Attempts login on all discovered forms │
│ │ │
│ Phase 3: SSRF INTERNAL AUTH │
│ ├─ Probes internal metadata endpoints │
│ ├─ AWS IMDSv1/v2, GCP, Azure metadata │
│ └─ Docker/K8s service account tokens │
│ │ │
│ Phase 4: TOKEN INJECTION │
│ ├─ Forges JWT tokens with common secrets │
│ ├─ Tests admin/role escalation via token manipulation │
│ └─ Injects forged tokens into admin endpoints │
│ │ │
│ Phase 5: SMART REDIRECT │
│ ├─ On 404, redirects attacks to discovered subdomains │
│ └─ Re-probes subdomain admin panels │
│ │ │
│ Phase 6: DEEP EXFILTRATION │
│ ├─ Extracts .env, config files, Redis dumps │
│ ├─ Parses DATABASE_URL, SECRET_KEY, API_KEY patterns │
│ └─ Memory dump fallback for session keys │
│ │ │
│ Phase 7: AUTO-LOGIN + RELAY MERGE │
│ ├─ Merges credentialRelay (infraSecrets + sessionTokens) │
│ ├─ Merges with DeepExfil passwords │
│ ├─ Generates password variations (reverse, +123, case) │
│ ├─ Spray attack on all login endpoints │
│ └─ Detects breach via Set-Cookie or JWT in response │
│ │
└───────────────────────────────────────────────────────────────────┘
```
### 2.4 凭证中继数据流
```
┌──────────────────────┐ ┌──────────────────────┐
│ Python Scanner │ │ Admin Combinator │
│ (orchestrator.py) │ │ (admin.ts Ph.6) │
│ │ │ │
│ JS Secrets Found: │ │ Deep Exfil Found: │
│ • AWS Keys │ │ • .env passwords │
│ • API Tokens │ │ • DB connection URIs │
│ • JWTs │ │ • Redis session keys │
└────────┬─────────────┘ └───────────┬───────────┘
│ stdout JSON │ direct call
▼ ▼
┌────────────────────────────────────────────────────┐
│ routes.ts (readline handler) │
│ │
│ SECRET_RELAY_REGEX scans: │
│ • description field │
│ • evidence field │
│ Matches: AKIA*, sk_live_*, ghp_*, xoxb_*, │
│ AIza*, eyJ* (JWT), PASSWORD=, TOKEN= │
│ │
│ → relayIngest(credential) │
└─────────────────────┬──────────────────────────────┘
▼
┌────────────────────────────────────────────────────┐
│ credentialRelay.ts (DataBridge) │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ credentials │ │ infraSecrets │ │
│ │ (all raw) │ │ (passwords) │ │
│ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │sessionTokens │ │ dbCredentials│ │
│ │ (JWTs, etc.) │ │ (conn URIs) │ │
│ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ │
│ │discoveredUsers│ │
│ └──────────────┘ │
└─────────────────────┬──────────────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────┐ ┌──────────────┐
│ Phase 7 │ │ Admin UI │ │ GET /api/ │
│ Auto-Login │ │ DataBridge│ │ admin/ │
│ (spray │ │ Tab │ │ databridge │
│ attack) │ │ │ │ │
└──────────────┘ └──────────┘ └──────────────┘
```
## 3. 文件结构
```
MSE/
├── client/
│ └── src/
│ ├── App.tsx # Roteamento principal (wouter)
│ ├── main.tsx # Entry point React
│ ├── index.css # Tema cyberpunk (cores, fontes)
│ │
│ ├── pages/
│ │ ├── Landing.tsx # Pagina inicial marketing
│ │ ├── Dashboard.tsx # Centro de comando (scan)
│ │ ├── AdminPanel.tsx # Painel administrativo
│ │ ├── AuthPage.tsx # Login/Registro
│ │ ├── ScanHistory.tsx # Historico de scans
│ │ ├── Terms.tsx # Termos de servico
│ │ ├── Privacy.tsx # Politica de privacidade
│ │ └── not-found.tsx # 404
│ │
│ ├── components/
│ │ ├── TargetInput.tsx # Input de URL alvo
│ │ ├── TerminalEngine.tsx # Terminal emulado (xterm.js)
│ │ ├── SidebarPhases.tsx # Sidebar com fases do scan
│ │ ├── TelemetryPanel.tsx # Graficos de telemetria
│ │ ├── HexGridFindings.tsx # Grid hex de vulnerabilidades
│ │ ├── ExfiltrationPanel.tsx # Painel de exfiltracao
│ │ ├── UtilsPanel.tsx # Utils/Assets expostos
│ │ ├── CyberPanel.tsx # Container estilizado
│ │ ├── StatusBar.tsx # Barra de status inferior
│ │ ├── AttackBreadcrumb.tsx # Breadcrumb visual de ataque
│ │ ├── ScanCompleteModal.tsx # Modal pos-scan
│ │ ├── PaymentOverlay.tsx # Overlay de pagamento Stripe
│ │ ├── GlitchLogo.tsx # Logo animado
│ │ ├── BackgroundLayer.tsx # Fundo animado
│ │ ├── PageTransition.tsx # Transicoes de pagina
│ │ └── ui/ # shadcn/ui primitivos
│ │ ├── button.tsx
│ │ ├── card.tsx
│ │ ├── dialog.tsx
│ │ ├── form.tsx
│ │ ├── input.tsx
│ │ ├── table.tsx
│ │ ├── tabs.tsx
│ │ ├── toast.tsx
│ │ └── ...
│ │
│ ├── hooks/
│ │ ├── useSocket.ts # WebSocket manager
│ │ ├── useDemoScan.ts # Scan demonstrativo
│ │ └── use-toast.ts # Hook de notificacoes
│ │
│ ├── store/
│ │ └── useStore.ts # Zustand state global
│ │
│ └── lib/
│ ├── queryClient.ts # TanStack Query config
│ ├── i18n.tsx # Sistema de traducao
│ └── generateReport.ts # Gerador de relatorios
│
├── server/
│ ├── index.ts # Entry point Express
│ ├── routes.ts # Rotas API + Socket.io scan
│ ├── admin.ts # Rotas admin + Combinator
│ ├── auth.ts # Autenticacao JWT/Session
│ ├── db.ts # Conexao PostgreSQL
│ ├── storage.ts # Interface CRUD (IStorage)
│ ├── credentialRelay.ts # DataBridge credential relay
│ ├── stripeClient.ts # Stripe SDK setup
│ ├── webhookHandlers.ts # Stripe webhook handlers
│ └── vite.ts # Dev server Vite integration
│
├── scanner/
│ ├── orchestrator.py # Orquestrador principal (4 fases)
│ ├── sniper_pipeline.py # Pipeline ofensivo (10 fases)
│ ├── sniper_engine.py # Motor de probes ativos
│ ├── adversarial_engine.py # FSM adversarial + correlacao
│ ├── chain_intelligence.py # Cadeias de exploracao
│ ├── hacker_reasoning.py # Dicionario kill chain
│ ├── attack_reasoning.py # Raciocinio de ataque
│ │
│ └── modules/
│ ├── base_module.py # Classe base para modulos
│ ├── surface_mapping.py # Mapeamento de superficie
│ ├── waf_detector.py # Deteccao de WAF/CDN
│ ├── tls_validator.py # Validacao TLS/SSL
│ ├── browser_recon.py # Recon via Selenium
│ ├── js_secrets_scanner.py # Scanner de segredos JS
│ ├── headers_analyzer.py # Headers HTTP de seguranca
│ ├── cors_analyzer.py # Analise de politica CORS
│ ├── rate_limiter.py # Teste de rate limiting
│ ├── auth_flow.py # Validacao de fluxo auth
│ └── input_validation.py # Testes de input validation
│
├── shared/
│ └── schema.ts # Schema Drizzle + tipos TS
│
├── main.py # Bridge Python (invocado pelo Node)
├── package.json # Dependencias Node.js
├── pyproject.toml # Dependencias Python
├── drizzle.config.ts # Configuracao Drizzle
├── tailwind.config.ts # Configuracao Tailwind
├── vite.config.ts # Configuracao Vite
│
└── docs/
├── ECOSYSTEM.md # ← ESTE ARQUIVO
└── FLOW_DIAGRAMS.md # Diagramas de fluxo detalhados
```
## 4. Frontend — React/Vite
### 4.1 路由
| 路由 | 组件 | 描述 |
|------|-----------|-----------|
| `/` | `Landing.tsx` | 带有 CTA 的营销页面 |
| `/dashboard` | `Dashboard.tsx` | 主要指挥中心 |
| `/auth` | `AuthPage.tsx` | 登录和注册 |
| `/scans` | `ScanHistory.tsx` | 用户扫描历史 |
| `/admin` | `AdminPanel.tsx` | 管理面板 |
| `/terms` | `Terms.tsx` | 服务条款 |
| `/privacy` | `Privacy.tsx` | 隐私政策 |
### 4.2 全局状态 (Zustand — useStore.ts)
```
interface StoreState {
// Scan
target: string;
currentPhase: PhaseName;
isScanning: boolean;
isDemoMode: boolean;
phases: Record
;
// Dados
logs: LogEntry[];
findings: Finding[];
exposedAssets: ExposedAsset[];
report: ScanReport | null;
// Telemetria
progress: number;
activeModules: number;
requestsAnalyzed: number;
threatsDetected: number;
telemetryHistory: TelemetryPoint[];
// Sistema
isConnected: boolean;
}
```
### 4.3 主要组件
| 组件 | 功能 | Socket 事件 |
|-----------|--------|----------------|
| `TargetInput` | URL 输入 + 扫描按钮 | `start_scan` emit |
| `TerminalEngine` | 带彩色日志的 xterm.js 终端 | `log_stream` listen |
| `SidebarPhases` | 阶段进度可视化 | `phase_update` listen |
| `TelemetryPanel` | 实时进度图表 | `telemetry_update` listen |
| `HexGridFindings` | 六边形发现网格 | `finding_detected` listen |
| `ExfiltrationPanel` | 泄露数据预览 | `finding_detected` listen |
| `UtilsPanel` | 暴露的资产(secrets, endpoints) | `asset_detected` listen |
### 4.4 主题颜色
```
MilGreen: #4ADE80 (tags [BLOCK], [BOOT])
Red: #ff003c (tags [CRIT])
RoyalBlue: #4169E1 (accent)
Yellow: #FFD700 (tags [ALERT])
SkyBlue: #38BDF8 (tags [LOG])
OffWhite: #F1F2F1 (texto principal)
Dim: rgb(100,105,100) (tags [DBG])
Orange: #FF8C00 (tags [THREAT])
Background: #020208 (Full Black Cyber)
```
## 5. Backend — Express Gateway
### 5.1 服务器架构
```
server/index.ts
│
├── Express app setup
├── Session middleware (connect-pg-simple)
├── Passport.js auth
├── Stripe webhook route (raw body)
│
├── server/auth.ts → /api/auth/*
├── server/routes.ts → /api/* + Socket.io
├── server/admin.ts → /api/admin/*
└── server/vite.ts → Dev server proxy
```
### 5.2 中间件堆栈
1. `express.json()` — body 解析器
2. `express-session` — PostgreSQL 会话
3. `passport.js` — 本地认证
4. `requireAdmin` — 管理员中间件(验证 `user.role === "admin"`)
5. Stripe webhook — 用于 `/api/stripe/webhook` 的原始 body 解析器
## 6. Scanner Engine — Python
### 6.1 Orchestrator 模块
```
orchestrator.py
│
├── PHASE 1: Surface
│ ├── SurfaceMappingModule → DNS, ports, subdomains, fingerprint
│ └── WAFDetectorModule → WAF/CDN detection, security headers
│
├── → _build_hypothesis() → Stack detection (16 stacks)
│ Priority vector reordering
│
├── PHASE 2: Exposure
│ ├── TLSValidatorModule → TLS version, cipher suites, cert chain
│ ├── BrowserReconModule → Selenium headless, JS files, cookies
│ └── JSSecretsModule → Secrets, XSS, enterprise routes, frameworks
│
├── PHASE 3: Misconfig
│ ├── HeadersAnalyzerModule → 7 security headers + HSTS + CORS headers
│ └── CORSAnalyzerModule → Origin reflection, subdomain bypass
│
└── PHASE 4: Simulation
├── RateLimiterModule → Burst testing, login rate limiting
├── AuthFlowModule → Admin endpoints, default creds, session
└── InputValidationModule → XSS, SQLi, SSRF, XXE, IDOR, redirects
```
### 6.2 HypothesisHub(16 个技术栈)
Surface 阶段之后,orchestrator 检测目标的技术栈并优先考虑攻击向量:
| Stack | 优先向量 |
|-------|---------------------|
| Express/Node | prototype_pollution, jwt_secret, npm_env_leak |
| Django/Python | debug_mode, secret_key, admin_panel |
| Laravel/PHP | app_key_leak, debug_bar, telescope |
| Next.js | api_routes_exposed, ssr_secrets, env_leak |
| Firebase | firebase_config, firestore_rules, auth_bypass |
| AWS | iam_keys, s3_bucket, metadata_ssrf |
| WordPress | wp_config, xmlrpc, plugin_vulns |
| Spring/Java | actuator_endpoints, heapdump, env_leak |
| Ruby on Rails | secret_key_base, debug_console, mass_assignment |
| .NET/ASP | web_config, elmah, trace_axd |
| Flask | debug_mode, secret_key, werkzeug_debugger |
| GraphQL | introspection, batching, field_suggestions |
| Docker/K8s | api_exposed, service_account, etcd_access |
| MongoDB | nosql_injection, admin_panel, connection_string |
| Redis | unauth_access, config_set, module_load |
| Cloudflare | waf_bypass, origin_leak, cache_poisoning |
### 6.3 JSSecretsModule — 详情
JS 密钥扫描器是生态系统中最复杂的模块:
```
JSSecretsModule.execute()
│
├── 1. Collect JS files (from BrowserRecon)
├── 2. Sort by priority (app.js, main.js, chunk-vendors first)
├── 3. Reorder patterns by hypothesis (if stack detected)
│
├── 4. For each JS file:
│ ├── _scan_content() → SECRET_PATTERNS (37 patterns)
│ │ ├── AWS Access Keys (AKIA...)
│ │ ├── Google API Keys (AIza...)
│ │ ├── GitHub/GitLab Tokens
│ │ ├── Stripe Keys (sk_live_...)
│ │ ├── JWTs (eyJ...)
│ │ ├── Private Keys (PEM)
│ │ ├── Database URIs
│ │ ├── Generic _SECRET, _KEY, _PASS
│ │ └── ... (37 total patterns)
│ │
│ ├── _scan_xss_patterns() → XSS_INJECTION_PATTERNS
│ │ ├── innerHTML assignments
│ │ ├── eval() with dynamic input
│ │ ├── document.write concatenation
│ │ ├── new Function() constructor
│ │ └── Open redirect patterns
│ │
│ └── _find_endpoints() → API route discovery
│
├── 5. Source map audit (.map files)
├── 6. Cookie security audit
│
├── 7. _scan_enterprise_routes()
│ ├── ENTERPRISE_ROUTE_REGISTRY (4 sectors)
│ ├── MANIPULATION_PAYLOADS (11 PoC types)
│ ├── REDIS_INFRA_PATTERNS (privilege escalation)
│ └── Emit findings + assets per route
│
└── 8. _scan_framework_versions()
├── React, Vue, Angular, jQuery versions
└── Known CVE matching
```
## 7. Sniper Pipeline — 高级攻击管道
### 7.1 阶段(10 个阶段)
```
sniper_pipeline.py — SniperPipeline.execute()
│
├── Phase 1: INGEST
│ ├── Run orchestrator (4-phase standard scan)
│ ├── Collect all findings + assets
│ ├── _build_hypothesis() → stack fingerprint
│ └── Emit stack_hypothesis event
│
├── Phase 2a: EXPLOIT
│ ├── SniperEngine active validation
│ ├── Test HIGH/CRITICAL findings
│ └── Generate confirmed exploits
│
├── Phase 2b: DECISION INTELLIGENCE
│ ├── Zero-knowledge decision tree
│ ├── InfraFingerprint (AWS/GCP/Azure/Docker)
│ ├── BaselineMonitor (drift detection)
│ └── WAFBypassEngine
│
├── Phase 2c: ADVERSARIAL STATE MACHINE
│ ├── CostRewardCalculator
│ │ ├── Vulnerability classification
│ │ ├── WAF block rate penalty
│ │ ├── Pivot bonus (SSRF=10, SQLi=9, etc.)
│ │ ├── Correlation graph multiplier (max 8x)
│ │ └── Reward/Cost ratio → depth decision
│ ├── PolymorphicPayloadEngine
│ ├── PrivilegeEscalationModule
│ └── IncidentValidator
│
├── ★ RISK SCORE ENGINE (entre 2c e 2d)
│ ├── Calcula: Σ(severity_weight × confidence) / total
│ ├── score > 0.85 → AUTO_DUMP mode
│ ├── 0.50-0.85 → MIXED mode
│ └── < 0.50 → ACTIVE_EXPLORATION mode
│
├── Phase 2d: CHAIN INTELLIGENCE
│ ├── WAFProbabilityReasoner
│ ├── SSRF → credential harvest chains
│ └── Multi-step exploitation paths
│
├── Phase 2e: HACKER REASONING
│ ├── Kill chain playbook engine
│ ├── WAF evasion strategies
│ ├── Confirmation probes
│ ├── Escalation graph
│ └── Adaptive payload generation
│
├── Phase 2f: INCIDENT ABSORBER
│ ├── Categorize: Financial, Database, Docker, Config
│ ├── Classify: PCI-DSS, GDPR, SOC2
│ └── Cost-Reward Matrix
│
├── Phase 3: DB VALIDATION
│ ├── SQL injection probes
│ ├── NoSQL injection probes
│ └── Database version detection
│
└── Phase 4: INFRA/SSRF
├── Cloud metadata (AWS/GCP/Azure)
├── Docker/K8s service accounts
└── Credential harvest via SSRF
```
### 7.2 Pipeline 最终报告
```
{
target: string;
scan_id: string;
started_at: string;
completed_at: string;
phases_completed: string[];
counts: { total, critical, high, medium, low, info };
findings: Finding[];
exposed_assets: Asset[];
probes: Probe[];
sniper_report: object;
decision_intel_report: object;
adversarial_report: object;
chain_intel_report: object;
hacker_reasoning_report: object;
db_validation_report: object;
infra_report: object;
incident_evidence: object;
risk_score: RiskScoreResult; // ← Audit Injection 3
stack_hypothesis: Hypothesis; // ← Audit Injection 1
auto_dump_triggered: boolean; // ← Audit Injection 3
}
```
## 8. Combinator — 智能认证渗透器
完整图表见第 2.3 节。
### 8.1 Combinator 状态
```
interface CombinatorState {
phase1: { endpoints, loginForms, redirects };
phase2: { credentials, attempts, breaches };
phase3: { ssrf_results, metadata_captured };
phase4: { forged_tokens, injection_results };
phase5: { subdomain_redirects, re_probes };
phase6: { exfil_data, env_secrets, redis_dumps };
phase7: {
triggered: boolean;
relay_merge: {
passwords: string[]; // exfil + relay.infraSecrets
secrets: string[]; // exfil + relay.sessionTokens
users: string[]; // discovered + relay.discoveredUsers
urls: string[]; // exfil + relay.dbCredentials
};
auto_login_attempts: number;
breaches: BreachResult[];
};
}
```
## 9. 4 审计注入
### 9.1 HypothesisHub
```
Arquivo: scanner/orchestrator.py (STACK_HYPOTHESIS_MAP + _build_hypothesis)
scanner/modules/js_secrets_scanner.py (HYPOTHESIS_PATTERN_PRIORITY + _reorder_patterns)
scanner/sniper_pipeline.py (hypothesis no ingest)
Fluxo:
Surface Findings → _build_hypothesis()
│
├── Detecta stacks via STACK_DETECT_PATTERNS
│ (16 stacks: express, django, laravel, nextjs, firebase, etc.)
│
├── Gera stack_signature: "express+firebase+aws"
│
├── Mapeia priority_vectors: ["prototype_pollution", "jwt_secret", ...]
│
└── JSSecretsModule._reorder_patterns_by_hypothesis()
└── Reordena SECRET_PATTERNS para priorizar vetores da stack
```
### 9.2 关联图
```
Arquivo: scanner/adversarial_engine.py (CORRELATION_EDGE_RULES)
scanner/modules/js_secrets_scanner.py (CORRELATION_HINTS)
10 Regras de Correlacao:
┌──────────────────────┬──────────────────────┬───────┐
│ Hint A │ Hint B │ Bonus │
├──────────────────────┼──────────────────────┼───────┤
│ cloud_credential │ ssrf_vector │ 3.0x │
│ admin_endpoint │ no_rate_limit │ 2.5x │
│ database_credential │ sqli_vector │ 2.8x │
│ jwt_secret │ admin_endpoint │ 2.0x │
│ source_map │ cloud_credential │ 1.8x │
│ internal_endpoint │ ssrf_vector │ 2.5x │
│ env_file │ database_credential │ 2.2x │
│ hardcoded_password │ admin_endpoint │ 2.0x │
│ firebase_config │ no_rate_limit │ 1.5x │
│ api_key │ internal_endpoint │ 1.6x │
└──────────────────────┴──────────────────────┴───────┘
Bonus total capped at 8.0x
```
### 9.3 风险评分引擎
```
Arquivo: scanner/sniper_pipeline.py (RiskScoreEngine)
Formula:
RISK_SCORE = Σ(severity_weight × confidence_value) / total_findings
Severity Weights:
critical = 1.0
high = 0.75
medium = 0.45
low = 0.20
info = 0.05
Confidence Values:
confirmed = 1.0
high = 0.85
medium = 0.60
low = 0.35
speculative = 0.15
Thresholds:
> 0.85 → AUTO_DUMP (extraction-first mode)
0.5-0.85 → MIXED (directed + opportunistic)
< 0.50 → ACTIVE_EXPLORATION (standard cycle)
```
### 9.4 统一凭证中继
```
Arquivo: server/routes.ts (evidence field scanning)
server/admin.ts (Phase 7 relay merge)
server/credentialRelay.ts (DataBridge state)
Gap 1 (Fixed): routes.ts agora inclui `evidence` field no regex scan
Gap 2 (Fixed): Phase 7 faz merge completo:
exfilPasswords += credentialRelay.infraSecrets
exfilSecrets += credentialRelay.sessionTokens
discoveredUsers += credentialRelay.discoveredUsers
exfilUrls += credentialRelay.dbCredentials
```
## 10. 企业级路由情报
### 10.1 行业
```
┌────────────────┬──────────┬──────┬─────────────────────────────────┐
│ Setor │ Severity │ CVSS │ Rotas Monitoradas │
├────────────────┼──────────┼──────┼─────────────────────────────────┤
│ FINTECH │ critical │ 9.5 │ /payments/authorize │
│ │ │ │ /ledger/balance │
│ │ │ │ /kyc/verify │
│ │ │ │ /transfer/internal │
│ │ │ │ /auth/mfa/challenge │
├────────────────┼──────────┼──────┼─────────────────────────────────┤
│ GOVERNMENT │ critical │ 9.8 │ /citizen/registry │
│ │ │ │ /tax/declaration │
│ │ │ │ /benefits/status │
│ │ │ │ /identity/validate │
│ │ │ │ /portal/admin/config │
├────────────────┼──────────┼──────┼─────────────────────────────────┤
│ ECOMMERCE │ high │ 8.5 │ /coupons/validate │
│ │ │ │ /promos/apply │
│ │ │ │ /cart/update │
│ │ │ │ /checkout/price-override │
│ │ │ │ /inventory/adjust │
│ │ │ │ /tickets/book │
├────────────────┼──────────┼──────┼─────────────────────────────────┤
│ PRODUCTS │ high │ 8.0 │ /products/list │
│ │ │ │ /products/details │
│ │ │ │ /products/search │
│ │ │ │ /products/pricing/dynamic │
│ │ │ │ /products/stock/check │
│ │ │ │ /admin/products/update │
└────────────────┴──────────┴──────┴─────────────────────────────────┘
```
### 10.2 操纵 Payloads(11 种类型)
| 类型 | 目标 | 影响 |
|------|------|---------|
| price_manipulation | unit_price, discount_override | 支付金额接近于零 |
| coupon_forge | 无限 100% 优惠券 | 完全的经济损失 |
| transfer_forge | 向攻击者账户转账 | 资金盗窃 |
| payment_bypass | 伪造批准 + callback | 欺诈性交易 |
| balance_read | 通配符账户查询 | 余额枚举 |
| mfa_bypass | 简单 OTP + debug_mode | 绕过 MFA |
| data_exfil | 通配符 CPF + PII 字段 | 大规模泄露 |
| record_tamper | 修改税务申报 | 税务欺诈 |
| status_tamper | 未经认证激活福利 | 社保欺诈 |
| config_override | 修改管理员配置 | 掌控控制权 |
| stock_drain | 库存清零/篡改 | 业务中断 |
| sqli_probe | UNION SELECT / SLEEP() | 数据库泄露 |
## 11. 凭证中继与数据桥接
### 11.1 结构
```
// server/credentialRelay.ts
interface DataBridgeState {
credentials: CapturedCredential[]; // Todos os segredos brutos
infraSecrets: string[]; // Passwords, cloud keys
dbCredentials: string[]; // Connection URIs
sessionTokens: string[]; // JWTs, session cookies
discoveredUsers: string[]; // Usernames, emails
}
interface CapturedCredential {
key: string; // Nome/titulo do segredo
value: string; // Valor bruto (ZERO_REDACTION)
source: string; // Fonte (scanner, exfil, manual)
type: string; // PASSWORD | TOKEN | SECRET | URL
timestamp: number;
}
```
### 11.2 端点
| 方法 | 路由 | 描述 |
|--------|------|-----------|
| GET | `/api/admin/databridge` | relay 完整状态 |
| POST | `/api/admin/databridge/ingest` | 手动注入凭证 |
### 11.3 导出函数
```
export { credentialRelay, relayIngest, relayIngestUsers, relayIngestTokens };
```
## 12. 数据库 — PostgreSQL
### 12.1 Schema (shared/schema.ts)
```
┌─────────────────────────────────────────────────────────────┐
│ users │
├──────────────┬──────────┬────────────────────────────────────┤
│ id │ varchar │ PK, gen_random_uuid() │
│ email │ text │ NOT NULL, UNIQUE │
│ password │ text │ NOT NULL (bcrypt hash) │
│ role │ text │ DEFAULT "user" │
│ plan │ text │ DEFAULT "free" │
│ scansThisMonth│ integer │ DEFAULT 0 │
│ scansResetAt │ timestamp│ DEFAULT now() │
│ apiKey │ text │ NULLABLE (mse_...) │
│ createdAt │ timestamp│ DEFAULT now() │
└──────┬───────┴──────────┴────────────────────────────────────┘
│ 1:N
▼
┌─────────────────────────────────────────────────────────────┐
│ scans │
├──────────────┬──────────┬────────────────────────────────────┤
│ id │ varchar │ PK, gen_random_uuid() │
│ userId │ varchar │ FK → users.id │
│ target │ text │ NOT NULL │
│ status │ text │ DEFAULT "running" │
│ findingsCount│ integer │ DEFAULT 0 │
│ criticalCount│ integer │ DEFAULT 0 │
│ highCount │ integer │ DEFAULT 0 │
│ mediumCount │ integer │ DEFAULT 0 │
│ lowCount │ integer │ DEFAULT 0 │
│ infoCount │ integer │ DEFAULT 0 │
│ findings │ jsonb │ DEFAULT [] │
│ exposedAssets│ jsonb │ DEFAULT [] │
│ telemetry │ jsonb │ DEFAULT {} │
│ phases │ jsonb │ DEFAULT {} │
│ consentIp │ text │ NULLABLE │
│ consentAt │ timestamp│ NULLABLE │
│ completedAt │ timestamp│ NULLABLE │
│ createdAt │ timestamp│ DEFAULT now() │
└──────────────┴──────────┴────────────────────────────────────┘
│
│ (users.id)
▼
┌─────────────────────────────────────────────────────────────┐
│ subscriptions │
├──────────────────┬──────────┬────────────────────────────────┤
│ id │ varchar │ PK, gen_random_uuid() │
│ userId │ varchar │ FK → users.id, NOT NULL │
│ plan │ text │ DEFAULT "free" │
│ status │ text │ DEFAULT "inactive" │
│ stripeCustomerId │ text │ NULLABLE │
│ stripeSubscriptionId│ text │ NULLABLE │
│ enabled │ boolean │ DEFAULT false │
│ createdAt │ timestamp│ DEFAULT now() │
│ expiresAt │ timestamp│ NULLABLE │
└──────────────────┴──────────┴────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ audit_logs │
├──────────────┬──────────┬────────────────────────────────────┤
│ id │ varchar │ PK, gen_random_uuid() │
│ userId │ varchar │ FK → users.id, NULLABLE │
│ action │ text │ NOT NULL │
│ target │ text │ NULLABLE │
│ ip │ text │ NULLABLE │
│ details │ jsonb │ NULLABLE │
│ createdAt │ timestamp│ DEFAULT now() │
└──────────────┴──────────┴────────────────────────────────────┘
```
### 12.2 CRUD 操作 (IStorage)
```
interface IStorage {
// Users
getUser(id: string): Promise;
getUserByEmail(email: string): Promise;
createUser(user: InsertUser): Promise;
updateUser(id: string, updates: Partial): Promise;
getAllUsers(): Promise;
// Scans
createScan(scan: InsertScan): Promise;
getScan(id: string): Promise;
getScansByUser(userId: string): Promise;
updateScan(id: string, updates: Partial): Promise;
getAllScans(): Promise;
getScansByTarget(target: string): Promise;
// Subscriptions
createSubscription(sub: InsertSubscription): Promise;
getSubscription(userId: string): Promise;
updateSubscription(id: string, updates: Partial): Promise;
// Audit
createAuditLog(log: InsertAuditLog): Promise;
getAuditLogs(userId: string): Promise;
getAllAuditLogs(): Promise;
// Admin
getAdminStats(): Promise;
}
```
## 13. API 参考
### 13.1 认证
| 方法 | 路由 | Body | 响应 |
|--------|------|------|----------|
| POST | `/api/auth/register` | `{email, password}` | `{user}` + session |
| POST | `/api/auth/login` | `{email, password}` | `{user}` + session |
| POST | `/api/auth/logout` | — | `{ok: true}` |
| GET | `/api/auth/me` | — | `{user}` 或 401 |
### 13.2 扫描
| 方法 | 路由 | 描述 |
|--------|------|-----------|
| GET | `/api/scans` | 认证用户的所有扫描 |
| GET | `/api/scans/:id` | 特定扫描的详情 |
| POST | `/api/checkout/create-session` | 创建 Stripe 会话 ($5) |
### 13.3 公共 API (API Key)
| 方法 | 路由 | Header | 描述 |
|--------|------|--------|-----------|
| POST | `/api/v1/scan` | `x-api-key` | 通过 API 启动扫描 |
| GET | `/api/v1/scan/:id` | `x-api-key` | 扫描状态 |
| POST | `/api/keys/generate` | Session | 生成/轮换 API key |
| GET | `/api/keys` | Session | 获取当前 API key |
### 13.4 管理员
| 方法 | 路由 | 描述 |
|--------|------|-----------|
| GET | `/api/admin/me` | 管理员角色和邮箱 |
| POST | `/api/admin/bypass` | 仅限开发:将会话提升为管理员 |
| GET | `/api/admin/stats` | 系统全局统计 |
| GET | `/api/admin/databridge` | 凭证中继状态 |
| POST | `/api/admin/databridge/ingest` | 手动注入凭证 |
| GET | `/api/admin/users` | 列出所有用户 |
| GET | `/api/admin/scans` | 最近 100 次扫描 |
| GET | `/api/admin/audit` | 最近 200 条审计日志 |
### 13.5 Sniper 探测(管理员)
| 方法 | 路由 | 描述 |
|--------|------|-----------|
| POST | `/api/admin/sniper/price-injection` | 价格操纵探测 |
| POST | `/api/admin/sniper/auth-bypass` | 管理员绕过探测 |
| POST | `/api/admin/sniper/xss-scanner` | XSS 模式扫描 |
| POST | `/api/admin/sniper/open-redirect` | 开放重定向测试 |
| POST | `/api/admin/sniper/sqli-probe` | SQL 注入探测 |
| POST | `/api/admin/sniper/full-scan` | 完整 sniper 管道 |
### 13.6 Stripe
| 方法 | 路由 | 描述 |
|--------|------|-----------|
| POST | `/api/stripe/webhook` | 处理 Stripe 事件 |
| GET | `/api/stripe/publishable-key` | 获取 Stripe 公钥 |
### 13.7 WebSocket 事件
**客户端 → 服务端:**
| 事件 | Payload | 描述 |
|--------|---------|-----------|
| `start_scan` | `{target: string}` | 启动扫描 |
| `abort_scan` | — | 中止正在进行的扫描 |
**服务端 → 客户端:**
| 事件 | Payload | 描述 |
|--------|---------|-----------|
| `log_stream` | `{message, level, module}` | 终端日志 |
| `finding_detected` | `Finding` | 新的漏洞 |
| `asset_detected` | `ExposedAsset` | 新的暴露资产 |
| `phase_update` | `{phase, status}` | 阶段变更 |
| `telemetry_update` | `{progress, activeModules, ...}` | 遥测数据 |
| `report_generated` | `ScanReport` | 最终报告 |
| `completed` | `{scanId, findingsCount}` | 扫描完成 |
| `error` | `{message}` | 错误 |
| `stack_hypothesis` | `Hypothesis` | 检测到的技术栈 |
| `risk_score` | `RiskScoreResult` | 风险评分 |
## 14. 支付 — Stripe
### 14.1 支付流程
```
Usuario Frontend Gateway Stripe
│ │ │ │
│ Click "Buy Scan" │ │ │
│─────────────────────────>│ │ │
│ │ POST /checkout/ │ │
│ │ create-session │ │
│ │─────────────────────>│ │
│ │ │ stripe.checkout. │
│ │ │ sessions.create() │
│ │ │──────────────────────>│
│ │ │ │
│ │ │ session.url │
│ │ │<──────────────────────│
│ │ redirect to Stripe │ │
│ │<─────────────────────│ │
│ Stripe Checkout │ │ │
│─────────────────────────────────────────────────────────────────────────>│
│ │ │ │
│ Payment complete │ │ webhook: checkout. │
│ │ │ session.completed │
│ │ │<──────────────────────│
│ │ │ Update subscription │
│ │ │ Enable scan access │
```
### 14.2 配置
- **产品**: "Single Scan Report" — $5.00 USD
- **模式**: Payment (一次性)
- **Webhook**: `/api/stripe/webhook`
- **公钥**: 通过 `/api/stripe/publishable-key` 获取
15. 国际化
### 15.1 支持的语言
```
BR (Portugues Brasil) | PT (Portugues Portugal)
EN (Ingles) | ES (Espanhol)
FR (Frances) | DE (Alemao)
IT (Italiano) | JA (Japones)
ZH (Chines) | KO (Coreano)
```
### 15.2 实现
```
// client/src/lib/i18n.tsx
// React Context-based
// useI18n() hook para traducoes
// no App.tsx
```
## 16. 维护指南
### 16.1 添加新的扫描器模块
1. 在 `scanner/modules/novo_modulo.py` 创建文件
2. 继承 `BaseModule`(`from scanner.modules.base_module import BaseModule`)
3. 实现 `execute(job)` 返回 `Finding` 列表
4. 在 `scanner/orchestrator.py` 的 `PHASE_ORDER` 中注册
5. 在 `HexGridFindings.tsx` 的 `NEON_HIGHLIGHT_PATTERNS` 中添加相关模式
### 16.2 添加新的企业行业
1. 在 `js_secrets_scanner.py` 的 `ENTERPRISE_ROUTE_REGISTRY` 中添加条目
2. 在 `MANIPULATION_PAYLOADS` 中添加对应的 payloads
3. 更新 `HexGridFindings.tsx` 中的 `NEON_HIGHLIGHT_PATTERNS`
4. 更新 `useDemoScan.ts` 中的演示 findings
5. 更新 `useDemoScan.ts` 中的演示 assets
### 16.3 添加新的关联规则
1. 在 `js_secrets_scanner.py` 的 `CORRELATION_HINTS` 中添加提示
2. 在 `adversarial_engine.py` 的 `CORRELATION_EDGE_RULES` 中添加规则
3. 定义奖励乘数(推荐:1.2x — 3.0x)
### 16.4 向 HypothesisHub 添加新 Stack
1. 在 `orchestrator.py` 的 `STACK_DETECT_PATTERNS` 中添加检测模式
2. 在 `STACK_HYPOTHESIS_MAP` 中添加带有 `priority_vectors` 和 `depriority` 的条目
3. 添加可读的 tech_label
### 16.5 修改数据库 Schema
1. 编辑 `shared/schema.ts`
2. 更新 insert/select 类型
3. 更新 `server/storage.ts` 中的 `IStorage`
4. 更新 `server/storage.ts` 中的 `DatabaseStorage`
5. 运行 `npm run db:push`(或 `npm run db:push --force`)
6. 切勿更改现有 ID 列的类型
### 16.6 添加新的 API 路由
1. 在 `server/routes.ts`(公共)或 `server/admin.ts`(管理员)中添加处理程序
2. 使用 `storage` 接口进行 CRUD 操作
3. 使用 `shared/schema.ts` 的 Zod schemas 验证 body
4. 更新本文档
## 17. 未来集成指南
### 17.1 扩展点
```
┌────────────────────────────────────────────────────────────────┐
│ PONTOS DE EXTENSAO │
├────────────────────────────────────────────────────────────────┤
│ │
│ Frontend: │
│ ├── Novo componente → client/src/components/ │
│ ├── Nova pagina → client/src/pages/ + App.tsx │
│ ├── Novo hook → client/src/hooks/ │
│ └── Nova traducao → client/src/lib/i18n.tsx │
│ │
│ Backend: │
│ ├── Nova rota publica → server/routes.ts │
│ ├── Nova rota admin → server/admin.ts │
│ ├── Novo webhook handler → server/webhookHandlers.ts │
│ └── Nova tabela → shared/schema.ts + server/storage.ts │
│ │
│ Scanner: │
│ ├── Novo modulo → scanner/modules/ │
│ ├── Nova fase pipeline → scanner/sniper_pipeline.py │
│ ├── Novo setor enterprise → ENTERPRISE_ROUTE_REGISTRY │
│ ├── Novo payload → MANIPULATION_PAYLOADS │
│ ├── Nova regra correlacao → CORRELATION_EDGE_RULES │
│ └── Nova stack hipotese → STACK_HYPOTHESIS_MAP │
│ │
│ DataBridge: │
│ ├── Novo tipo credencial → credentialRelay.ts │
│ └── Novo ingestor → relayIngest* functions │
│ │
└────────────────────────────────────────────────────────────────┘
```
### 17.2 推荐集成
| 集成 | 目的 | 连接点 |
|-----------|----------|------------------|
| **Slack/Discord** | 关键扫描警报 | `server/routes.ts` (扫描后) |
| **SendGrid/SES** | 报告邮件 | `server/routes.ts` (report_generated) |
| **S3/R2** | PDF 报告存储 | `server/admin.ts` (dossier) |
| **Sentry** | 错误监控 | `server/index.ts` |
| **Redis** | 结果缓存 | `server/storage.ts` |
| **OpenAI** | 漏洞 AI 分析 | `scanner/hacker_reasoning.py` |
| **GitHub** | 仓库扫描 | 新建扫描器模块 |
| **Shodan** | 攻击面增强 | `scanner/modules/surface_mapping.py` |
| **VirusTotal** | 域名信誉 | `scanner/modules/surface_mapping.py` |
| **NIST NVD** | CVE 数据库查询 | `scanner/modules/js_secrets_scanner.py` |
### 17.3 用于集成的 WebSocket 事件
要集成外部系统,请监听 Socket.io 上的这些事件:
```
// Exemplo de integracao externa
socket.on('finding_detected', (finding) => {
if (finding.severity === 'critical') {
// Enviar alerta para Slack/Discord
sendSlackAlert(finding);
}
});
socket.on('completed', (result) => {
// Gerar e enviar relatorio
generatePDFReport(result);
});
socket.on('risk_score', (score) => {
if (score.auto_dump) {
// Escalar para equipe de seguranca
escalateToSOC(score);
}
});
```
## 版本历史
| 日期 | 版本 | 变更 |
|------|--------|----------|
| 2026-02-28 | 2.0.0 | 4 审计注入 (HypothesisHub, 关联图, 风险评分引擎, 凭证中继) |
| 2026-02-28 | 1.9.0 | 企业级路由情报(4 个行业,11 个 payloads) |
| 2026-02-27 | 1.8.0 | Sniper Pipeline 10 阶段 + Combinator 7 阶段 |
| 2026-02-26 | 1.7.0 | 企业级档案 PDF 生成 |
| 2026-02-25 | 1.6.0 | DataBridge + 凭证中继 |
| 2026-02-24 | 1.5.0 | 对抗引擎 + 黑客推理 |
| 2026-02-23 | 1.4.0 | Stripe 集成($5 单次扫描) |
| 2026-02-22 | 1.3.0 | 国际化(10 种语言) |
| 2026-02-21 | 1.2.0 | 管理面板 + Sniper 探测 |
| 2026-02-20 | 1.1.0 | 浏览器侦察 + JS 密钥扫描器 |
| 2026-02-19 | 1.0.0 | 初始版本(4 阶段扫描器) |
## 当前引擎和标志(更新)
- **Motor 11 — 自主整合器**: 已集成到管理面板(`backend/server/admin.ts` 中的 `runMotor11`)。使用 `PYTHON_BIN`(或 `PYTHON`)调用 `scanner.autonomous_engine`。通过 JSON 在 stdout 上维护事件。
- **管理员自动登录(开发)**: 中间件始终创建/提升 `admin@mse.dev`(`role=admin`, `plan=pro`)。建议通过环境变量 `AUTO_ADMIN=1` 控制;在生产环境中保持禁用。
- **执行标志**
- `STRIPE_DISABLED=1`: 禁用所有 Stripe 初始化。
- `FORCE_STATIC=1`: 即使在 `NODE_ENV=development` 下也强制提供 `dist/public` 服务。
- `DISABLE_SELENIUM=1`:(实现 early-return)以在没有 Chrome/ChromeDriver 的环境中跳过 `browser_recon` 和 `selenium_xss` 模块。
- `PYTHON_BIN=/caminho/python`: 定义扫描器的 Python 二进制文件。
- `PGSSLMODE=disable` + 本地 Pool 中的 `ssl:false`,用于自托管 Postgres。
- **数据库驱动**: `backend/server/db.ts` 使用 `pg`(默认连接池)和 `drizzle-orm/node-postgres`;移除了 Neon/WebSocket 以避免在离线开发环境中出现 `wss://localhost/v2`。
- **路由 /api/admin/bypass**: 保留用于测试;创建/提升 `admin@mse.dev`。在生产环境中,使用标志保护或移除。
## 待注入项目(计划中)
- **HTTP Request Smuggling 模块**: `scanner/modules/http_smuggling.py` 中的新模块,包含 CL.TE / TE.CL / H2.CL 探测,在 orchestrator(模拟)中注册,以及 sniper pipeline。
- **按模块开关**: `DISABLE_SMUGGLING`, `DISABLE_GRAPHQL`, `DISABLE_PERSISTENCE`,以便在受限环境中运行扫描器。
- **Selenium 开关**: 在 `browser_recon.py` 和 `selenium_xss.py` 开头添加 `DISABLE_SELENIUM` 检查,设置时返回空结果。
*(添加的章节未删除现有内容。)*
# MSE — 黑客决策逻辑完整审计
**日期**: 28/02/2026
**类型**: 只读审计 — 零代码更改
**范围**: MSE 生态系统的所有攻击决策逻辑
## 目录
1. [执行摘要](#1-resumo-executivo)
2. [总体决策图](#2-mapa-geral-de-decisoes)
3. [引擎 1: Orchestrator — HypothesisHub](#3-motor-1-orchestrator--hypothesishub)
4. [引擎 2: 攻击推理 — 零知识决策树](#4-motor-2-attack-reasoning--decisiontree-zero-knowledge)
5. [引擎 3: 对抗状态机 — CostRewardCalculator](#5-motor-3-adversarial-state-machine--costrewardcalculator)
6. [引擎 4: Sniper 引擎 — 主动验证](#6-motor-4-sniper-engine--validacao-ativa)
7. [引擎 5: 链式情报 — 利用链](#7-motor-5-chain-intelligence--cadeias-de-exploracao)
8. [引擎 6: 黑客推理字典 — Kill Chain](#8-motor-6-hacker-reasoning-dictionary--kill-chain)
9. [引擎 7: 风险评分引擎 — AUTO_DUMP 触发器](#9-motor-7-risk-score-engine--gatilho-auto_dump)
10. [引擎 8: Combinator — 智能认证渗透器](#10-motor-8-combinator--smart-auth-penetrator)
11. [关联图 — 边缘智能](#11-correlation-graph--inteligencia-de-borda)
12. [隐蔽与规避 — 潜行控制](#12-stealth--evasion--controle-de-furtividade)
13. [ZERO_REDACTION — 原始证据协议](#13-zero_redaction--protocolo-de-evidencia-bruta)
14. [逐阶段完整决策流程](#14-fluxo-completo-de-decisao-fase-a-fase)
15. [阈值和常量主表](#15-tabela-mestra-de-thresholds-e-constantes)
16. [当前逻辑的优缺点](#16-pontos-fortes-e-fracos-da-logica-atual)
## 1. 执行摘要
MSE 拥有 **8 个决策引擎** 链式运行,每个引擎的输出作为下一个的输入。"黑客"逻辑不是单一的算法 — 它是一个**状态机网络**,实时模拟人类渗透测试人员的推理。
**系统自动做出的关键决策:**
- 目标使用什么技术栈?
- 哪些攻击向量优先考虑?(DecisionTree + CostReward)
- WAF 是否在拦截?拦截多少?我们应该变异 payload 吗?(StealthThrottle + WAFBypass)
- 累积的风险是否证明激进提取是合理的?
- 哪些漏洞相互关联以倍增影响?
- 哪些凭证可用于自动登录?(Combinator Phase 7)
- 扫描期间防御是否改变?重定向到子域名?(DriftRecalibration)
- 被操纵的数据是否真的持久化在数据库中?(DBReflectionCheck)
## 2. 总体决策图
```
┌──────────────────────────────────────────────────────────────────────┐
│ CADEIA DE DECISAO DO HACKER MSE │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ [1] FINGERPRINT │
│ └── HypothesisHub: "Que stack e essa?" │
│ └── 16 stacks × regex patterns → priority_vectors │
│ │
│ [2] ATAQUE INICIAL │
│ └── Orchestrator: 4 fases (surface → exposure → misconfig → sim) │
│ └── 37 regex secrets + 7 XSS patterns + 22 enterprise routes │
│ │
│ [3] PRIORIZACAO INTELIGENTE │
│ └── DecisionTree: "Quais ataques valem a pena?" │
│ └── InfraFingerprint × VulnClass × WAF block rate │
│ │
│ [4] CUSTO vs RECOMPENSA │
│ └── CostRewardCalculator: "Quanto custa vs quanto ganha?" │
│ └── reward = (base + pivot) × severity × correlation │
│ └── cost = base + WAF_penalty │
│ └── ratio = reward / cost → ranking de alvos │
│ │
│ [5] RISCO ACUMULADO │
│ └── RiskScoreEngine: "Score > 0.85?" │
│ └── SIM → AUTO_DUMP (extracao agressiva) │
│ └── NAO → continua ciclo normal │
│ │
│ [6] EXPLORACAO PROFUNDA │
│ └── ChainIntelligence: SSRF → credential → DB pivot │
│ └── HackerReasoning: kill chain + mutacao adaptativa │
│ │
│ [7] VALIDACAO │
│ └── SniperEngine: probes ativos de confirmacao │
│ └── DBReflection: "O dado realmente mudou no banco?" │
│ │
│ [8] CREDENCIAL RELAY + AUTO-LOGIN │
│ └── Combinator Phase 7: merge credenciais + spray attack │
│ └── Breach? → COMPROMISED │
│ │
└──────────────────────────────────────────────────────────────────────┘
```
## 3. 引擎 1: Orchestrator — HypothesisHub
**文件**: `scanner/orchestrator.py`
**函数**: `_build_hypothesis(findings)`
**执行时机**: Surface 阶段之后(Exposure 之前)
### 3.1 检测逻辑
系统将 Surface 阶段所有 findings 的 `title + description + evidence` 连接成一个小写的唯一文本。然后测试 `STACK_DETECT_PATTERNS` 中的每个模式:
| Stack | 检测模式 | 置信度 |
|-------|---------------------|-----------|
| Express | `x-powered-by.*express`, `connect.sid`, `express-session` | 高 |
| Django | `csrfmiddlewaretoken`, `django`, `wsgi` | 高 |
| Laravel | `laravel_session`, `x-powered-by.*php`, `artisan` | 高 |
| Next.js | `__NEXT_DATA__`, `_next/`, `next.js` | 高 |
| Firebase | `firebaseapp.com`, `firebase`, `firestore` | 高 |
| AWS | `amazonaws.com`, `aws-sdk`, `cognito` | 高 |
| WordPress | `wp-content`, `wp-admin`, `wordpress` | 高 |
| Spring | `x-application-context`, `actuator`, `spring` | 中 |
| Rails | `x-powered-by.*phusion`, `rails`, `turbolinks` | 中 |
| .NET | `x-aspnet-version`, `__viewstate`, `blazor` | 中 |
| Flask | `werkzeug`, `flask`, `jinja2` | 中 |
| GraphQL | `graphql`, `__schema`, `introspection` | 高 |
| Docker/K8s | `kubernetes`, `docker`, `container` | 中 |
| MongoDB | `mongodb`, `mongoose`, `bson` | 中 |
| Redis | `redis`, `ioredis`, `bull` | 中 |
| Cloudflare | `cf-ray`, `cloudflare`, `__cfduid` | 高 |
### 3.2 决策:按 Stack 优先的向量
当检测到某个技术栈时,系统会改变 JSSecretsModule 的**扫描顺序**:
| 检测到的 Stack | 优先向量 | 降级向量 |
|----------------|--------------------|-----------------------|
| Express | prototype_pollution, nosql_injection, ssrf | sqli_traditional |
| Django | ssti, orm_injection, csrf | prototype_pollution |
| PHP/Laravel | sqli, lfi, rce | prototype_pollution, nosql |
| Next.js | api_routes, ssr_secrets, env_leak | sqli_traditional |
| Firebase | firebase_config, firestore_rules, auth_bypass | sqli, lfi |
| AWS | iam_keys, s3_bucket, metadata_ssrf | — |
| WordPress | wp_config, xmlrpc, plugin_vulns | — |
| Spring/Java | actuator, heapdump, env_leak | prototype_pollution |
| GraphQL | introspection, batching, field_suggestions | — |
### 3.3 对 Pipeline 的影响
2 成为 `secondary`。如果没有匹配,默认 = `ON_PREMISE`。
### 4.2 动态构建攻击节点
DecisionTree 没有硬编码的路径。它根据发现的内容动态构建节点:
| 检测到的 VulnClass | 节点类 | 动作 |
|---------------------|-------------|------|
| SSRF | `SSRFAttackNode` | 探测云元数据 (AWS/GCP/Azure/Docker) |
| SQLi | `SQLiAttackNode` | Error-based, UNION, blind boolean, blind time |
| Ecommerce | `EcommerceAttackNode` | 价格覆盖 $0.01,负数量,优惠券 |
| Verb Tampering | `VerbTamperingNode` | 在受保护的端点上使用 PUT/DELETE/PATCH |
| API Exposure | `APIExposureNode` | /.env, /swagger.json, /.git/HEAD |
| SSTI | `SSTIAttackNode` | Jinja2, Twig, Freemarker payloads |
| Path Traversal | `PathTraversalNode` | /etc/passwd, win.ini |
### 4.3 深度验证
对于 SSRF,系统不会在第一次命中时停止。它执行 `_deep_validate`:
```
SSRF detectado → probe metadata
→ Se AWS: busca IAM roles + SSH keys
→ Se GCP: busca service account token
→ Se Azure: busca subscription ID
→ Se Docker: busca container env vars
```
### 4.4 确认阈值
| 类型 | 确认标准 | 值 |
|------|------------------------|-------|
| SQLi Time-Based | 响应延迟 | > 2800ms(对于 SLEEP(3)) |
| SQLi Boolean-Based | true/false 大小差异 | > 50 bytes |
| SQLi Error-Based | body 中的 SQL 错误字符串 | 正则匹配 |
| SSRF | body 中的云关键词 | `ami-id`, `instance-id`, 等 |
| XSS Reflected | Payload 被反射 + Content-Type html | 精确匹配 |
| Auth Bypass | Status 200 + 敏感关键词 | `password`, `api_key`, 等 |
| IDOR | Status 200 + 无认证 body 中包含 PII | `email`, `ssn`, `balance` |
## 5. 引擎 3: 对抗状态机 — CostRewardCalculator
**文件**: `scanner/adversarial_engine.py`
**类**: `AdversarialStateMachine` + `CostRewardCalculator`
**执行时机**: Sniper Pipeline Phase 2c
### 5.1 有限状态机 (FSM)
```
INIT
│
▼
SURFACE_ANALYSIS ──── Analisa findings e subdomains
│
▼
COST_REWARD_CALC ──── Calcula ratio para cada alvo
│
▼
TARGET_PRIORITIZATION ── Ordena por ratio (maior primeiro)
│
▼
PAYLOAD_SELECTION ──── Seleciona alvo #1
│
├── WAF block rate >= 85%?
│ ├── SIM → POLYMORPHIC_MUTATION (muta payloads)
│ └── NAO → EXPLOITATION (ataque direto)
│
▼
EXPLOITATION ──── Executa ataque
│
▼
DRIFT_CHECK ──── Endpoint mudou? (status code diferente?)
│
├── SIM → DRIFT_RECALIBRATION (redireciona para subdomains)
│ └── dev.target.com, staging.target.com, api.target.com
│
└── NAO → PIVOT_ASSESSMENT
│
├── SSRF/Credentials encontrados?
│ ├── SIM → LATERAL_MOVEMENT
│ │ └── Probe Redis, DBs internos via SSRF
│ │ │
│ │ ▼
│ │ PRIVILEGE_ESCALATION
│ │ └── IAM/Token theft (AWS/Azure/GCP)
│ │
│ └── NAO → INCIDENT_VALIDATION
│
▼
TELEMETRY ──── Compila relatorio final
```
### 5.2 CostRewardCalculator 公式
```
ENTRADAS:
vuln_class = classificacao da vulnerabilidade
severity = critical | high | medium | low
waf_rate = taxa de bloqueio do WAF (0.0 a 1.0)
infra = infraestrutura detectada
findings = todos os findings acumulados
CALCULO:
reward_base = DEPTH_MAP[vuln_class]
cost_base = COST_MAP[vuln_class]
pivot_bonus = PIVOT_BONUS[vuln_class] + INFRA_BONUS[infra]
severity_mult = 1.0 + (critical_count × 0.3) + (high_count × 0.15)
correlation_hints = scan findings for edge keywords
correlation_edges = match hint pairs in CORRELATION_EDGE_RULES
correlation_mult = Π(edge.bonus) // capped at 8.0
waf_penalty = waf_rate × 4
cost = cost_base + waf_penalty
reward = (reward_base + pivot_bonus) × severity_mult × correlation_mult
ratio = reward / max(cost, 0.1)
SAIDA:
{cost, reward, ratio, depth, reasons, correlation_edges}
DECISAO:
Alvos ordenados por RATIO descendente
Alvo com maior ratio = atacado primeiro
```
### 5.3 DEPTH_MAP — 按 VulnClass 的探索深度
| VulnClass | 深度 | 含义 |
|-----------|-------|-------------|
| SSRF | 10 | 最大 — 可能触及完整的内部基础设施 |
| COMMAND_INJECTION | 10 | 最大 — 服务器上的代码执行 |
| SQLI | 9 | 非常高 — 完整的数据库转储 |
| SSTI | 9 | 非常高 — 通过模板引擎实现 RCE |
| DESERIALIZATION | 9 | 非常高 — 通过恶意对象实现 RCE |
| AUTH_BYPASS | 8 | 高 — 无凭证的管理员访问 |
| CREDENTIAL_LEAK | 8 | 高 — 密钥直接暴露 |
| PATH_TRAVERSAL | 7 | 显著 — 读取服务器文件 |
| XXE | 7 | 显著 — 读取文件 + SSRF |
| NOSQL_INJECTION | 7 | 显著 — MongoDB 认证绕过 |
| IDOR | 6 | 中等 — 访问其他用户的数据 |
| ECOMMERCE | 6 | 中等 — 财务操纵 |
| VERB_TAMPERING | 5 | 中等 — 未授权操作 |
| API_EXPOSURE | 4 | 中低 — 敏感信息 |
| XSS | 3 | 低 — 客户端,需要交互 |
| CORS_MISCONFIG | 3 | 低 — 跨域泄露 |
| HEADER_INJECTION | 3 | 低 — HTTP 响应被篡改 |
| OPEN_REDIRECT | 2 | 最小 — 钓鱼辅助 |
### 5.4 PIVOT_BONUS — 横向移动能力奖励
| VulnClass | 基础奖励 | 额外奖励 |
|-----------|-----------|---------------------|
| SSRF | 5 | +3 如果是 AWS/GCP/Azure |
| COMMAND_INJECTION | 5 | — |
| SSTI | 4 | — |
| CREDENTIAL_LEAK | 4 | — |
| SQLI | 3 | +2 如果是 ON_PREMISE |
| AUTH_BYPASS | 3 | — |
| PATH_TRAVERSAL | 2 | — |
## 6. 引擎 4: Sniper 引擎 — 主动验证
**文件**: `scanner/sniper_engine.py`
**类**: `SniperEngine`
**执行时机**: Sniper Pipeline Phase 2a
### 6.1 探测的 Finding 选择逻辑
```
DECISAO: "Quais findings validar ativamente?"
1. Filtro de severidade: apenas CRITICAL e HIGH
2. Deteccao de e-commerce: keywords /cart, /payment, /checkout
→ Se encontrado: ativa _probe_ecommerce_logic
3. Keyword matching no titulo/descricao:
→ "cors" → probe CORS
→ "header", "csp" → probe headers
→ "sql" → probe SQLi
→ "ssrf" → probe SSRF
4. Probes padrao sempre executados:
→ _probe_sqli (6 payloads)
→ _probe_auth_bypass (14 paths)
→ _probe_xss
→ _probe_idor
→ _probe_ssrf (5 endpoints internos)
```
### 6.2 按 Probe 类型的 Payloads
| Probe | Payloads | 示例 |
|-------|---------|---------|
| SQLi | 6 | `1' OR '1'='1`, `SLEEP(3)`, `EXTRACTVALUE(...)` |
| Price Injection | 5 | `{"unit_price": 0.01, "discount_override": 99.99}` |
| Auth Bypass | 14 条路径 | `/.env`, `/.git/config`, `/admin/dashboard` |
| SSRF | 5 | `169.254.169.254/latest/meta-data/` |
| XSS | DOM + 反射型 | `
` |
| IDOR | 3 个端点 | `/api/users/1`, `/api/users/2`, `/api/orders/1` |
### 6.3 确认标准
| 类型 | Confirmed = TRUE 当... |
|------|---------------------------|
| SQLi | body 中有 SQL 错误字符串 或 延迟 > 2500ms 或 文本中有数据库名 |
| Price | HTTP 200/201 且 body 包含 "success", "order_id", 或 "total" |
| XSS | Payload 在 body 中被反射 且 Content-Type = text/html |
| Auth Bypass | HTTP 200 且 有敏感关键词 ("password", "api_key", "db_host") |
| IDOR | HTTP 200 且 无认证下有 PII ("email", "ssn", "balance") |
| SSRF | body 中有云关键词 ("ami-id", "instance-id") |
### 6.4 最终判定
```
SE confirmation_criteria == TRUE:
verdict = "VULNERABLE — [Razao especifica]"
vulnerable = true
SE payload refletido MAS escapado:
verdict = "REFLECTED but may be escaped"
vulnerable = false
SENAO:
verdict = "PROTECTED"
vulnerable = false
```
## 7. 引擎 5: 链式情报 — 利用链
**文件**: `scanner/chain_intelligence.py`
**执行时机**: Sniper Pipeline Phase 2d
### 7.1 链阶段
```
WAF_ANALYSIS
└── Avalia block rate por VulnClass
│
▼
SSRF_CREDENTIAL_DUMP
└── 10 endpoints de metadata cloud
└── AWS IMDS, GCP metadata, Redis, K8s, Docker
│
▼
CREDENTIAL_TO_DB_PIVOT
└── Usa credenciais capturadas para acessar DBs
└── 8 payloads (PostgreSQL, MySQL, SQLite, MSSQL, Redis, NoSQL)
│
▼
ECOMMERCE_INTEGRITY
└── 7 rotas de e-commerce × 5 payloads de manipulacao
└── Price $0.01, quantidade negativa, coupon forjado
│
▼
DB_REFLECTION_CHECK
└── Verifica se valor manipulado persistiu no banco
│
▼
DRIFT_RECALIBRATION
└── Detecta mudanca de defesa durante scan
└── Redireciona para subdomains (dev, staging, api)
```
### 7.2 WAFProbabilityReasoner — 决策
| 阻断率 | 优先级分数 | 策略 |
|-----------|---------------|------------|
| >= 85% | 0.1 | **抑制** — 切换到多态/混淆 payload |
| >= 50% | 0.4 | **减少** — 使用编码绕过 (Base64, Hex, Unicode) |
| 已确认漏洞 | 1.0 | **最大化** — 完全利用 |
| 其他 | 0.7 | **标准** — 正常探测 |
**特殊加成**: 如果 SSRF 已确认,优先级获得 **+0.3**(上限 1.0)以强制执行 pivot chain。
**关键决策**: 如果优先级分数 <= 0.1,`should_probe(vuln_class)` 返回 `False` — **停止攻击此向量**。
### 7.3 链确认阈值
| 链 | 成功标准 |
|-------|-------------------|
| SSRF → Credential | Status != 403/429/503 且 body 包含 `AccessKeyId`, `access_token`, `redis_version` |
| Credential → DB | Body 包含 `version()`, `table_name` 或 延迟 >= 2800ms |
| Ecommerce → Integrity | HTTP 200 且 JSON 字段 `total` 反映了被操纵的值 |
| DB Reflection | 值已持久化 = 返回的字段 == 发送的值 |
### 7.4 每条链的探测量
| 链 | 总探测数 |
|-------|----------------|
| SSRF → Credential | 60 个探测 |
| Ecommerce Integrity | 35 个探测 |
| DB Validation | 168 个探测 |
## 8. 引擎 6: 黑客推理字典 — Kill Chain
**文件**: `scanner/hacker_reasoning.py`
**类**: `HackerReasoningEngine`
**执行时机**: Sniper Pipeline Phase 2e
### 8.1 执行管道(10 步)
```
1. _detect_environment()
└── Fingerprint WAF (Cloudflare, Akamai, AWS WAF, Imperva)
└── Fingerprint Infra (AWS, GCP, Azure, K8s)
2. _match_playbooks()
└── 168+ playbooks predefinidos
└── Regex match em routes + findings
└── Categorias: fintech, gov, ecommerce, admin, infra, client-side
3. _subdomain_priority_recon()
└── Alvos: dev.*, admin.*, staging.*
└── Busca auth bypass + source maps
4. _execute_reasoning_chains()
└── Para cada playbook matched:
└── Gera step-by-step thoughts + actions
└── Simula raciocinio de pentester humano
5. _execute_confirmation_probes()
└── Probes ativos baseados em proof_indicators:
├── env_exposed → busca AWS_ACCESS_KEY_ID, DB_PASSWORD
├── ssrf_confirmed → probe 169.254.169.254, 127.0.0.1
├── graphql_introspection → schema discovery query
└── backup_accessible → HEAD db.sql, backup.zip
6. _assess_waf_defensibility()
└── Calcula probabilidade de bloqueio
└── Se WAF bloqueia 7+ probes → "Data Drift" pivot
└── Redireciona para SSRF Infrastructure exploration
7. _db_reflection_validation()
└── Prova reachability de dados (PII/Financial)
└── Via SSRF/Redis pivots
8. _recursive_fallback()
└── Se probes iniciais falharam:
└── _generate_mutant_payloads()
└── Gen1 + Gen2 mutantes hibridos
└── Targeting evasion_focus da tecnologia
9. _compute_escalation_graph()
└── Computa paths para comprometimento total
└── CRITICAL flag se contem: admin, db, rce, credential, dump
10. _absorb_incidents()
└── IncidentAbsorber finaliza evidencias
└── ZERO_REDACTION mode: dados brutos sem mascara
```
### 8.2 Playbooks — 决策示例
| 路由/Finding | 类别 | 动作 | 升级 |
|-------------|-----------|-------|-----------|
| `/admin` | admin | 默认凭证 → 如被阻止则 SSRF | → 凭证转储 |
| `/cart/update` | ecommerce | 价格覆盖 $0.01, 数量溢出 | → DB 反射检查 |
| `/transfer/internal` | fintech | 转账逻辑绕过 | → 资金抽取 |
| `/.env` | infrastructure | AWS/Stripe/DB 密钥暴露 | → 横向移动 |
| `/api/graphql` | api | 内省 → 字段枚举 | → 数据转储 |
| `/wp-admin` | cms | xmlrpc 暴破 → 插件利用 | → Shell 上传 |
### 8.3 自适应 Payload 变异
当探测失败时,系统生成变体:
| 技术 | 描述 | 示例 |
|---------|-----------|---------|
| JSON Type Confusion | 数组注入, 空字节 | `{"id": [1, "admin"]}` |
| Prototype Pollution | `__proto__` 注入 | `{"__proto__": {"isAdmin": true}}` |
| Unicode Normalization | 等效字符 | `%EF%BC%9C` 代替 `<` |
| SQL Comment Fragment | 分割关键词 | `S/**/E/**/L/**/E/**/C/**/T` |
| Null Byte Injection | 中断解析 | `admin%00.php` |
| Case Alternation | 改变大小写 | `sElEcT`, `UnIoN` |
| Double URL Encoding | 双重编码 | `%2527` 代替 `'` |
| Akamai H2 Abuse | HTTP/2 continuation frame | Frame 分割 |
| Unicode Homoglyph | 视觉上相同的字符 | `а` (西里尔字母) 代替 `a` |
### 8.4 升级决策
```
SE playbook path contem "admin" OU "db" OU "rce" OU "credential":
→ escalation_path.criticality = CRITICAL
SE WAF blocked > 7 probes:
→ Trigger "Data Drift" pivot
→ Redireciona para SSRF Infrastructure exploration
→ Abandona ataque direto
SE confirmation probe = env_exposed:
→ Extrai AWS_ACCESS_KEY_ID, DB_PASSWORD
→ Alimenta Credential Relay
→ Escala para LATERAL_MOVEMENT
```
## 9. 引擎 7: 风险评分引擎 — AUTO_DUMP 触发器
**文件**: `scanner/sniper_pipeline.py`
**类**: `RiskScoreEngine`
**执行时机**: 在 Phase 2c (对抗) 和 Phase 2d (链式情报) 之间
### 9.1 数学公式(v2 已修正)
```
Para cada finding:
severity_weight = RISK_SEVERITY_WEIGHT[finding.severity]
confidence = classify_confidence(finding)
contribution = severity_weight × confidence
SE severity == "critical" E confidence == "confirmed":
critical_confirmed_count++
OVERRIDE: SE critical_confirmed_count >= 1:
→ AUTO_DUMP forcado (ignora score matematico)
→ score = max(calculated_score, 0.90)
→ override_reason = "MAX_SEVERITY_OVERRIDE"
SCORE (Weighted Percentile — nao mais media simples):
contributions ordenadas DESC
SE total_findings <= 5:
score = media(contributions) // poucos findings, media normal
SENAO:
top_n = max(5, total_findings / 3) // top 33% dos findings
top_avg = media(contributions[0..top_n])
rest_avg = media(contributions[top_n..end])
score = (top_avg × 0.80) + (rest_avg × 0.20)
// Top findings pesam 80%, o resto apenas 20%
// Isso impede que findings low/info diluam o score
EXEMPLO DO BUG CORRIGIDO:
Antes (media simples):
2 Critical (0.95) + 15 Low (0.10) = 3.4/17 = 0.20 → ACTIVE_EXPLORATION ❌
Agora (override):
2 Critical confirmed → AUTO_DUMP forcado imediatamente ✅
Agora (weighted percentile sem override):
top_n = max(5, 17/3=5) = 5
top_avg = (0.95+0.95+0.10+0.10+0.10)/5 = 0.44
rest_avg = (12×0.10)/12 = 0.10
score = 0.44×0.80 + 0.10×0.20 = 0.372 → Melhor, mas override garante AUTO_DUMP
```
### 9.2 严重性权重
| 严重性 | 权重 |
|-----------|------|
| critical | 1.0 |
| high | 0.75 |
| medium | 0.4 |
| low | 0.1 |
| info | 0.0 |
### 9.3 置信度分类
| 置信度 | 值 | 标准 |
|-----------|-------|----------|
| confirmed | 1.0 | 关键词: "success", "dump", "extracted", "confirmed" |
| inferred | 0.6 | 关键词: "possible", "potential", "likely" |
| theoretical | 0.3 | 默认(无特定关键词) |
**加成**: 严重性为 `critical` 的 Findings 自动升级为 `confirmed`。
### 9.4 决策阈值
```
┌────────────────────────────────────────────────────────┐
│ │
│ Score > 0.85 ──→ AUTO_DUMP │
│ ═══════════════════════════════════════ │
│ • Muda pipeline para EXTRACTION-FIRST mode │
│ • SSRF credential dump prioritizado │
│ • DB pivot agressivo │
│ • Session harvest imediato │
│ • Incident Absorber em modo agressivo │
│ • .env extraction forcada │
│ • IMDSv2 metadata probe │
│ │
│ Score 0.50 - 0.85 ──→ MIXED │
│ ═════════════════════════════ │
│ • Exploracao direcionada + extracao oportunista │
│ • Continua probes padrao │
│ • Extracao quando oportunidade surge │
│ │
│ Score < 0.50 ──→ ACTIVE_EXPLORATION │
│ ═══════════════════════════════════ │
│ • Ciclo de ataque padrao │
│ • Sem extracao agressiva │
│ • Foco em descoberta de mais vetores │
│ │
└────────────────────────────────────────────────────────┘
```
### 9.5 AUTO_DUMP 对后续阶段的影响
| 阶段 | 正常行为 | AUTO_DUMP 行为 |
|------|---------------------|------------------------|
| Phase 2d Chain Intel | 平衡探索 | 提取优先: SSRF → cred → DB |
| Phase 2e Hacker Reason | 标准 kill chain | 优先数据捕获 泄露 |
| Phase 2f Incident | 分类事件 | 激进转储: Financial, DB, Docker, Config |
| Phase 3 DB Valid | 标准 SQL 探测 | 强制: 尝试完整转储 |
| Phase 4 Infra | 标准 SSRF | 强制 .env, 强制 IMDSv2, 会话收集 |
## 10. 引擎 8: Combinator — 智能认证渗透器
**文件**: `server/admin.ts`
**执行时机**: 在所有 Python 扫描器完成后(仅限管理员)
### 10.1 每阶段决策树
```
PHASE 1: Endpoint Discovery
└── Probe 10 paths comuns → Verdict:
├── FORM_DETECTED (200) → Passa para Phase 2
├── REDIRECT (301/302) → Segue redirect, re-probe
└── WAF_BLOCKED (403) → Conta para threshold WAF
PHASE 2: Dictionary Generation
└── Para cada secret > 6 chars do relay:
├── Substring 8 chars
├── UPPERCASE
├── + "123"
├── + "!"
└── Reversed
└── + defaults (admin, P@ssw0rd, etc.)
└── CAP: 50 variacoes unicas maximo
PHASE 3: Credential Rotation
└── Decisao WAF:
├── > 2 endpoints bloqueados?
│ ├── SIM → Adiciona PUT method + X-Forwarded-For spoofing
│ └── NAO → POST padrao
└── Max: 12 tentativas (4 users × 3 attempts)
└── Breach = Set-Cookie OU JWT no response
PHASE 4: SSRF Internal Auth
└── 26 alvos internos (Consul, AWS IMDS, Redis, Docker)
└── Categoriza: auth, redis, docker, cloud, infra
└── Redis tunnel aberto? → Gera session dump automatico
PHASE 5: Token Injection
└── Top 5 tokens do relay → inject como Cookie + Bearer
└── Testa: /admin, /api/admin, /dashboard
└── ESCALATED se 200 + keywords privilegiados
PHASE 6: Deep Extraction
└── TRIGGER: SSRF ok OU Token ok OU Login ok
└── 23 paths sensitivos (/.env, /wp-config.php, /.git/config)
└── 11 regex patterns (AWS keys, Stripe, DB URLs)
└── Gera dump files para cada extracao
PHASE 7: Auto-Login + Relay Merge
└── TRIGGER: PASSWORD ou SECRET encontrados
└── MERGE:
├── exfilPasswords += credentialRelay.infraSecrets
├── exfilSecrets += credentialRelay.sessionTokens
├── discoveredUsers += credentialRelay.discoveredUsers
└── exfilUrls += credentialRelay.dbCredentials
└── Max: 24 tentativas (4 users × 3 endpoints × passwords)
└── BREACH = login funciona com credencial exfiltrada
```
### 10.2 最终裁决
```
totalThreats = Phase3.breaches + Phase4.tunnels + Phase5.escalations
+ Phase6.extractions + Phase7.breaches
SE totalThreats > 0:
verdict = "COMPROMISED"
SE WAF blocks > 60% de Phase 3:
defensibility = "HIGH_DEFENSIBILITY"
SE totalThreats == 0:
verdict = "DEFENDED"
```
## 11. 关联图 — 边缘智能
**文件**: `scanner/adversarial_engine.py`
**执行时机**: 在 CostRewardCalculator.calculate() 内部
### 11.1 关联规则
系统检查 findings 中是否**同时存在成对的提示**。每对激活一个**奖励乘数**:
```
┌───────────────────────────┬─────────────────────────┬───────┬────────────────────────────────┐
│ Hint A │ Hint B │ Bonus │ Logica │
├───────────────────────────┼─────────────────────────┼───────┼────────────────────────────────┤
│ cloud_credential │ ssrf_vector │ 3.0× │ Chave cloud + SSRF = IAM take │
│ │ │ │ over completo │
│ database_credential │ sqli_vector │ 2.8× │ Credencial DB + SQLi = dump │
│ │ │ │ completo sem rate limit │
│ admin_endpoint │ no_rate_limit │ 2.5× │ Admin sem rate limit = brute │
│ │ │ │ force viavel │
│ internal_endpoint │ ssrf_vector │ 2.5× │ Endpoint interno + SSRF = │
│ │ │ │ lateral movement │
│ env_file │ database_credential │ 2.2× │ .env exposto + DB cred = │
│ │ │ │ acesso direto ao banco │
│ jwt_secret │ admin_endpoint │ 2.0× │ JWT secret + admin = forjar │
│ │ │ │ token admin │
│ hardcoded_password │ admin_endpoint │ 2.0× │ Password hardcoded + admin = │
│ │ │ │ login direto │
│ source_map │ cloud_credential │ 1.8× │ Source map revela estrutura │
│ │ │ │ para usar credencial cloud │
│ api_key │ internal_endpoint │ 1.6× │ API key + endpoint interno = │
│ │ │ │ acesso a servicos privados │
│ firebase_config │ no_rate_limit │ 1.5× │ Firebase exposto + sem limit = │
│ │ │ │ abuso de quota/billing │
└───────────────────────────┴─────────────────────────┴───────┴────────────────────────────────┘
```
### 11.2 乘数计算
```
correlation_mult = 1.0
Para cada regra onde AMBOS hints existem nos findings:
correlation_mult *= regra.bonus
correlation_mult = min(correlation_mult, 8.0) // Cap maximo
EXEMPLO:
Findings contem: cloud_credential + ssrf_vector + admin_endpoint + no_rate_limit
Regra 1 match: cloud_credential + ssrf_vector → × 3.0
Regra 2 match: admin_endpoint + no_rate_limit → × 2.5
correlation_mult = 3.0 × 2.5 = 7.5 (abaixo do cap 8.0)
reward final = reward_base × severity_mult × 7.5
→ Esse alvo sera atacado PRIMEIRO
```
### 11.3 Hints 如何收集
```
Para cada finding:
1. Ler finding.correlation_hints[] (attached pelo JSSecretsModule)
2. Text scan no titulo + descricao:
- "/admin" no texto → hint "admin_endpoint"
- "ssrf" no texto → hint "ssrf_vector"
- "rate limit" + ("bypass" ou "no" ou "missing") → hint "no_rate_limit"
```
## 12. 隐蔽与规避 — 潜行控制
**文件**: `scanner/attack_reasoning.py`
**类**: `StealthThrottle`
### 12.1 潜行级别
| 级别 | 延迟 | 激活条件 |
|-------|-------|---------------------|
| GHOST | 0.05s | 默认 — 最小足迹 |
| STEALTH | 1.2s | 连续 3 次阻断后 |
| HIBERNATE | 3.0s | 检测风险严重(阻断率 > 60%) |
### 12.2 升级/降级逻辑
```
consecutive_blocks >= 3 → ESCALATE (GHOST → STEALTH → HIBERNATE)
consecutive_success >= 10 → DE-ESCALATE (HIBERNATE → STEALTH → GHOST)
recent_block_rate > 60% → Force ESCALATE
A cada request:
wait(current_delay)
response = send(payload)
SE response.status in (403, 429, 503):
consecutive_blocks++
consecutive_success = 0
SE consecutive_blocks >= ESCALATION_THRESHOLD:
escalate()
SENAO:
consecutive_success++
consecutive_blocks = 0
SE consecutive_success >= DEESCALATION_THRESHOLD:
deescalate()
```
### 12.3 WAF 绕过引擎 — 8 种技术
当探测被阻断(403/429/503)时,`WAFBypassEngine` 尝试绕过:
| # | 技术 | 示例 |
|---|---------|---------|
| 1 | 大小写交替 | `sElEcT` 代替 `SELECT` |
| 2 | 双重 URL 编码 | `%2527` 代替 `'` |
| 3 | 空字节注入 | `admin%00.php` |
| 4 | 注释分割 | `SEL/**/ECT` |
| 5 | Unicode 标准化 | `%EF%BC%9C` 代替 `<` |
| 6 | HTTP/2 Continuation | Frame 分割 |
| 7 | Unicode 同形字 | `а` (西里尔字母) 代替 `a` |
| 8 | JSON 类型混淆 | `{"id": [1, "admin"]}` |
**绕过成功标准**: 响应码变为 200/201/202/204 或 body 中出现 `detect_keywords`。
## 13. ZERO_REDACTION — 原始证据协议
**文件**: `scanner/hacker_reasoning.py` (IncidentAbsorber)
### 13.1 正常模式 vs ZERO_REDACTION
```
MODO NORMAL:
OBFUSCATION_MASKS aplicados:
CPF: 123.456.789-01 → 123.***.***-01
Card: 4111...1111 → 4111****1111
Email: user@domain → u***@domain
_sanitize_evidence() filtra dados brutos
PASSWORD_BLOCK_PATTERNS remove senhas
MODO ZERO_REDACTION (clearance: ADMIN):
OBFUSCATION_MASKS = identity (sem mascara)
_sanitize_evidence() retorna dados brutos
PASSWORD_BLOCK_PATTERNS = no-op
Usado para:
DATABASE_DUMP → dados completos
CONFIG_FILES_DUMP → senhas visiveis
IDOR_SEQUENTIAL_DUMP → PII completo
CREDENTIAL_HARVEST → chaves brutas
```
## 14. 逐阶段完整决策流程
```
ENTRADA: URL do alvo
[1] Surface Mapping (orchestrator)
└── DNS + Ports + Subdomains + WAF + Fingerprint
└── DECISAO: _build_hypothesis() → stack_signature
└── OUTPUT: priority_vectors para JSSecretsModule
[2] Exposure Analysis (orchestrator)
└── TLS + Browser Recon + JS Secrets
└── DECISAO: Reorder patterns por hypothesis
└── DECISAO: Enterprise routes detectadas? PoC payloads
└── DECISAO: Source maps acessiveis? Framework CVEs?
└── OUTPUT: 37 patterns testados, findings com correlation_hints
[3] Misconfig Check (orchestrator)
└── Headers + CORS
└── DECISAO: 7 security headers presentes?
└── DECISAO: CORS reflete origin malicioso?
└── OUTPUT: Score de headers (X/7)
[4] Simulation (orchestrator)
└── Rate Limit + Auth Flow + Input Validation
└── DECISAO: 15 endpoints admin acessiveis?
└── DECISAO: XSS/SQLi/SSRF/XXE/IDOR detectados?
└── OUTPUT: Findings com severidade e confianca
[5] Sniper Ingest (sniper_pipeline)
└── Importa todos os findings do orchestrator
└── DECISAO: _build_hypothesis() no pipeline
└── OUTPUT: hypothesis + counts
[6] Sniper Exploit (sniper_pipeline)
└── SniperEngine valida CRITICAL/HIGH findings
└── DECISAO: Cada finding → confirmed OU speculative
└── OUTPUT: probes[] com vulnerable=true/false
[7] Decision Intelligence (sniper_pipeline)
└── DecisionTree + InfraFingerprint + WAFBypass
└── DECISAO: Qual infra? (AWS/GCP/Azure/Docker/On-Prem)
└── DECISAO: Quais nos de ataque construir?
└── DECISAO: Stealth level (GHOST/STEALTH/HIBERNATE)
└── OUTPUT: decision_tree com attack_nodes
[8] Adversarial (sniper_pipeline)
└── CostRewardCalculator + CorrelationGraph
└── DECISAO: Cost vs Reward ratio para cada alvo
└── DECISAO: Correlation edges multiplicam reward?
└── DECISAO: WAF >= 85%? → Polymorphic mutation
└── DECISAO: Drift detectado? → Redireciona para subdomains
└── OUTPUT: alvos ordenados por ratio
[9] Risk Score (sniper_pipeline)
└── RiskScoreEngine.calculate()
└── DECISAO: Score > 0.85? → AUTO_DUMP
└── DECISAO: Score 0.5-0.85? → MIXED
└── DECISAO: Score < 0.5? → ACTIVE_EXPLORATION
└── OUTPUT: risk_score + auto_dump_triggered
[10] Chain Intelligence (sniper_pipeline)
└── WAFProbabilityReasoner + Exploitation Chains
└── DECISAO: SSRF confirmado? → Credential dump chain
└── DECISAO: E-commerce? → Price integrity chain
└── DECISAO: DB acessivel? → Reflection check
└── DECISAO: Defesa mudou? → Drift recalibration
└── OUTPUT: chains[] com proofs
[11] Hacker Reasoning (sniper_pipeline)
└── 168+ playbooks + Kill Chain
└── DECISAO: Quais playbooks match?
└── DECISAO: Confirmation probes succeed?
└── DECISAO: WAF defensibility > threshold?
│ └── SIM → Data Drift pivot
└── DECISAO: Probes falharam? → Mutacao adaptativa (Gen1/Gen2)
└── DECISAO: Escalation paths → CRITICAL flag
└── OUTPUT: reasoning_report + escalation_graph
[12] Incident Absorber (sniper_pipeline)
└── Categoriza: Financial, Database, Docker, Config
└── Classifica: PCI-DSS, GDPR, SOC2
└── DECISAO: ZERO_REDACTION? → Dados brutos
└── OUTPUT: incident_evidence + Enterprise Dossier
[13] DB Validation + Infra/SSRF (sniper_pipeline)
└── SQL/NoSQL probes + Cloud metadata
└── DECISAO: AUTO_DUMP ativo? → Forcado dump completo
└── OUTPUT: db_validation_report + infra_report
[14] Combinator Phase 7 (admin.ts)
└── Merge relay + DeepExfil
└── DECISAO: Credentials suficientes? → Spray attack
└── DECISAO: Breach detectado? → COMPROMISED
└── OUTPUT: verdict final
```
## 15. 阈值和常量主表
| 常量 | 值 | 文件 | 用途 |
|----------|-------|---------|-----|
| AUTO_DUMP threshold | > 0.85 | sniper_pipeline.py | 激进提取触发器 |
| AUTO_DUMP override | >= 1 critical confirmed | sniper_pipeline.py | MAX_SEVERITY_OVERRIDE — 忽略分数 |
| 加权 top % | 80% | sniper_pipeline.py | 评分中 top 33% findings 的权重 |
| 加权 rest % | 20% | sniper_pipeline.py | 评分中剩余 findings 的权重 |
| Override floor score | 0.90 | sniper_pipeline.py | override 激活时的最低分数 |
| MIXED threshold | 0.50 - 0.85 | sniper_pipeline.py | 混合探索 |
| WAF mutation trigger | >= 85% | adversarial_engine.py | 激活多态 payload |
| WAF suppress trigger | >= 85% | chain_intelligence.py | 停止探测此向量 |
| WAF reduce trigger | >= 50% | chain_intelligence.py | 使用编码绕过 |
| Stealth escalation | 3 次阻断 | attack_reasoning.py | 增加延迟 |
| Stealth de-escalation | 10 次成功 | attack_reasoning.py | 减少延迟 |
| Block rate force escalate | > 60% | attack_reasoning.py | 强制 HIBERNATE 级别 |
| GHOST delay | 0.05s | attack_reasoning.py | 最小延迟 |
| STEALTH delay | 1.2s | attack_reasoning.py | 中等延迟 |
| HIBERNATE delay | 3.0s | attack_reasoning.py | 最大延迟 |
| SQLi time-based confirm | > 2800ms | attack_reasoning.py | 确认 blind SQLi |
| SQLi time-based (sniper) | > 2500ms | sniper_engine.py | 确认 blind SQLi |
| SQLi boolean diff | > 50 bytes | attack_reasoning.py | 确认 boolean SQLi |
| Chain Intel time-based | >= 2800ms | chain_intelligence.py | 通过链确认 |
| Correlation mult cap | 8.0× | adversarial_engine.py | 最大乘数 |
| Combinator dict size | 50 max | admin.ts | 变体限制 |
| Combinator Phase 3 max | 12 attempts | admin.ts | 登录喷射限制 |
| Combinator Phase 7 max | 24 attempts | admin.ts | exfil 喷射限制 |
| Combinator WAF trigger | > 2 blocked | admin.ts | 激活 verb tampering |
| Combinator defensibility | > 60% blocked | admin.ts | HIGH_DEFENSIBILITY |
| Combinator timeout | 4000ms | admin.ts | 每个请求的超时 |
| SSRF priority boost | +0.3 | chain_intelligence.py | 优先 pivot chain |
| Severity critical weight | 1.0 | sniper_pipeline.py | 风险评分权重 |
| Severity high weight | 0.75 | sniper_pipeline.py | 风险评分权重 |
| Severity medium weight | 0.4 | sniper_pipeline.py | 风险评分权重 |
| Severity low weight | 0.1 | sniper_pipeline.py | 风险评分权重 |
| Severity info weight | 0.0 | sniper_pipeline.py | 风险评分权重 |
| Confidence confirmed | 1.0 | sniper_pipeline.py | 风险评分置信度 |
| Confidence inferred | 0.6 | sniper_pipeline.py | 风险评分置信度 |
| Confidence theoretical | 0.3 | sniper_pipeline.py | 风险评分置信度 |
| Polymorphic generations | 2 max | adversarial_engine.py | Payload 变异 |
| Drift timeout | 5.0s | adversarial_engine.py | 替代路由超时 |
| Playbooks total | 168+ | hacker_reasoning.py | 注册的 Playbooks |
| WAF drift trigger | 7+ blocked | hacker_reasoning.py | Data Drift pivot |
| SSRF probe endpoints | 10 | chain_intelligence.py | 云元数据 |
| Combinator SSRF targets | 26 | admin.ts | 内部目标 |
| DB validation payloads | 8 | chain_intelligence.py | PostgreSQL/MySQL 等 |
| Ecommerce integrity | 7 routes × 5 | chain_intelligence.py | 35 个探测 |
| Secret patterns | 37 | js_secrets_scanner.py | 密钥正则 |
| XSS patterns | 7 | js_secrets_scanner.py | 注入模式 |
| Enterprise routes | 22 | js_secrets_scanner.py | 4 个行业 |
| Manipulation payloads | 11 | js_secrets_scanner.py | PoC 类型 |
## 16. 当前逻辑的优缺点
### 16.1 优点
| # | 优点 | 详情 |
|---|------------|---------|
| 1 | **自适应决策** | 系统根据结果改变行为 — 不遵循固定脚本 |
| 2 | **Finding 关联** | 当漏洞互补时乘数高达 8× |
| 3 | **自动隐蔽** | 根据阻断率自动调整延迟 |
| 4 | **漂移检测** | 检测扫描期间防御何时改变并重定向 |
| 5 | **Stack-aware 扫描** | 优先考虑与检测到的技术相关的向量 |
| 6 | **多引擎验证** | 同一个 finding 由多个独立引擎验证 |
| 7 | **完整 Kill Chain** | 从发现到横向移动和权限提升 |
| 8 | **自适应变异** | 当 WAF 阻断原始 payload 时生成变异 payload |
| 9 | **DB 反射** | 验证操纵是否真的持久化在数据库中 |
| 10 | **凭证中继** | 来自任何阶段的凭证为所有其他阶段提供输入 |
### 16.2 缺点 / 已知限制
| # | 缺点 | 影响 | 可能的缓解措施 |
|---|------------|---------|-------------------|
| 1 | **Hypothesis 并不总是传播** | Orchestrator 标准模块不直接使用 hypothesis(只有 JSSecrets 使用) | 将 hypothesis 传播到 InputValidation 和 AuthFlow |
| 2 | **~~风险评分是简单平均~~** ✅ 已修正 | ~~算术平均可能会稀释分数~~ → 现在使用加权百分位数 (80/20) + MAX_SEVERITY_OVERRIDE | 已实现 v2 |
| 3 | **Combinator 任意上限** | 50 dict, 12 attempts, 24 exfil — 对于大型目标可能不足 | 使上限根据复杂度可配置 |
| 4 | **关联 hints 不完整** | 只有 JSSecrets 附带 hints — 其他模块不贡献 | 在所有模块中添加 hints |
| 5 | **Stealth 不持久化** | StealthThrottle 在阶段之间重启 — WAF 可能有长期记忆 | 在 pipeline 之间持久化 stealth 状态 |
| 6 | **SQLi 时间阈值固定** | 2500-2800ms 假设 SLEEP(3) — 网络延迟可能产生误报 | 在探测前校准延迟基线 |
| 7 | **Playbooks 基于正则** | 可能漏掉不完全匹配的路由 | 添加模糊匹配 |
| 8 | **漂移重新校准有限** | 只尝试 dev/staging/api 子域名 — 可能有更多 | 使用 Surface 的子域名枚举 |
### 16.3 按引擎的决策覆盖
```
HypothesisHub: ████████░░ 80% (16 stacks, poderia cobrir mais)
DecisionTree: █████████░ 90% (7 vuln classes, falta GraphQL/WebSocket)
CostRewardCalculator:██████████ 100% (18 vuln classes, completo)
SniperEngine: ████████░░ 80% (6 probe types, falta SSTI/XXE/NoSQL)
ChainIntelligence: █████████░ 90% (6 chain phases, falta persistence)
HackerReasoning: ██████████ 100% (168+ playbooks, 10 passos, completo)
RiskScoreEngine: █████████░ 90% (Weighted Percentile + MAX_SEVERITY_OVERRIDE)
Combinator: █████████░ 90% (7 fases, falta OAuth token theft)
CorrelationGraph: ████████░░ 80% (10 regras, poderia ter mais pares)
StealthThrottle: ███████░░░ 70% (3 niveis, poderia ter mais granularidade)
```
**审计结束**
*本文档为只读。未对代码进行任何更改。*
*于 28/02/2026 由 MSE 生态系统自动审计生成。*
# MSE — 详细流程图
本文档用具体的子系统流程图补充 `ECOSYSTEM.md`。
## 1. 认证和会话图
```
┌──────────────┐ POST /api/auth/register ┌──────────────┐
│ Browser │───────────────────────────────────>│ auth.ts │
│ │ {email, password} │ │
│ │ │ 1. Validar │
│ │ │ 2. bcrypt │
│ │ │ hash │
│ │ │ 3. createUser│
│ │ │ 4. req.login │
│ │ Set-Cookie: connect.sid │ │
│ │<───────────────────────────────────│ │
└──────────────┘ {user: {...}} └──────┬───────┘
│
▼
┌──────────────┐
│ PostgreSQL │
│ users table │
│ │
│ Sessions: │
│ connect-pg- │
│ simple │
└──────────────┘
Fluxo de Verificacao:
GET /api/auth/me
│
├── req.isAuthenticated()? ──NO──> 401 Unauthorized
│
└── YES → {id, email, role, plan, scansThisMonth}
```
## 2. 扫描生命周期图
```
┌─────────────────────────────────────────────────────────────────┐
│ CICLO DE VIDA DO SCAN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. CRIACAO │
│ emit("start_scan", {target}) │
│ │ │
│ ├── SSRF prevention check │
│ ├── Allowlist auto-add (hostname) │
│ ├── storage.createScan({target, userId, status: "running"}) │
│ └── spawn python3 -m scanner.orchestrator │
│ │
│ 2. EXECUCAO │
│ readline on stdout │
│ │ │
│ ├── Parse JSON line → {event, data} │
│ ├── socket.emit(event, data) → Frontend │
│ ├── SECRET_RELAY_REGEX match → relayIngest() │
│ └── Accumulate findings/assets/telemetry │
│ │
│ 3. FINALIZACAO │
│ Python exit code 0 │
│ │ │
│ ├── storage.updateScan({ │
│ │ status: "completed", │
│ │ findings: [...], │
│ │ exposedAssets: [...], │
│ │ findingsCount, criticalCount, highCount, ... │
│ │ }) │
│ ├── socket.emit("completed", {scanId, findingsCount}) │
│ └── storage.createAuditLog({action: "scan_complete"}) │
│ │
│ 4. ERRO │
│ Python exit code != 0 || timeout │
│ │ │
│ ├── storage.updateScan({status: "error"}) │
│ └── socket.emit("error", {message}) │
│ │
│ 5. ABORT │
│ emit("abort_scan") │
│ │ │
│ ├── process.kill() │
│ ├── storage.updateScan({status: "aborted"}) │
│ └── socket.emit("scan_aborted") │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## 3. Python Orchestrator 图
```
scanner/orchestrator.py — run_assessment(target)
│
├── 1. Criar ScanJob(target)
│ ├── job.target = target
│ ├── job.base_url = parse URL
│ ├── job.findings = []
│ ├── job.exposed_assets = []
│ └── job._hypothesis = None
│
├── 2. Verificar autorizacao (ALLOWLIST)
│ └── target hostname in allowed_domains?
│
├── 3. PHASE_ORDER iteration:
│
│ ┌─────────────────────────────────────────────────────┐
│ │ Phase: "surface" │
│ │ │
│ │ Module: SurfaceMappingModule │
│ │ ├── DNS Resolution (A, AAAA, CNAME, MX, NS, TXT) │
│ │ ├── Subdomain Enumeration (prefix brute-force) │
│ │ ├── Port Scanning (20 common ports) │
│ │ ├── HTTP Method Testing │
│ │ ├── Server Fingerprinting │
│ │ └── robots.txt / sitemap.xml parsing │
│ │ │
│ │ Module: WAFDetectorModule │
│ │ ├── Header-based WAF detection │
│ │ ├── Probe requests (malicious payloads) │
│ │ └── Security header cataloguing │
│ │ │
│ │ → _build_hypothesis() ← Stack fingerprinting │
│ │ └── Emit "stack_hypothesis" event │
│ └─────────────────────────────────────────────────────┘
│
│ ┌─────────────────────────────────────────────────────┐
│ │ Phase: "exposure" │
│ │ │
│ │ Module: TLSValidatorModule │
│ │ ├── Protocol version check (TLS 1.2+) │
│ │ ├── Cipher suite analysis │
│ │ ├── Certificate chain validation │
│ │ └── SAN enumeration │
│ │ │
│ │ Module: BrowserReconModule (Selenium) │
│ │ ├── Headless Chromium navigation │
│ │ ├── JS file discovery │
│ │ ├── Cookie capture │
│ │ ├── localStorage/sessionStorage dump │
│ │ ├── Console error collection │
│ │ └── Framework detection │
│ │ │
│ │ Module: JSSecretsModule │
│ │ ├── Pattern reorder (HypothesisHub) │
│ │ ├── SECRET_PATTERNS scan (37 patterns) │
│ │ ├── XSS_INJECTION_PATTERNS scan │
│ │ ├── Source map audit │
│ │ ├── Cookie audit │
│ │ ├── Enterprise route scan (4 sectors) │
│ │ ├── Manipulation payload generation │
│ │ └── Framework version detection + CVE matching │
│ └─────────────────────────────────────────────────────┘
│
│ ┌─────────────────────────────────────────────────────┐
│ │ Phase: "misconfig" │
│ │ │
│ │ Module: HeadersAnalyzerModule │
│ │ ├── 7 security headers check │
│ │ ├── Cookie security (SameSite, Secure, HttpOnly) │
│ │ ├── HSTS analysis (max-age, preload, subdomains) │
│ │ ├── Server version disclosure │
│ │ └── Cross-Origin policy headers │
│ │ │
│ │ Module: CORSAnalyzerModule │
│ │ ├── Origin reflection test │
│ │ ├── Subdomain regex bypass │
│ │ ├── Null origin + credentials │
│ │ ├── Internal IP origins │
│ │ └── Expose-Headers leak check │
│ └─────────────────────────────────────────────────────┘
│
│ ┌─────────────────────────────────────────────────────┐
│ │ Phase: "simulation" │
│ │ │
│ │ Module: RateLimiterModule │
│ │ ├── Burst test (15 requests) │
│ │ └── Login endpoint rate limit │
│ │ │
│ │ Module: AuthFlowModule │
│ │ ├── 15 admin/auth endpoint probes │
│ │ ├── Session security check │
│ │ └── Default credentials indicator │
│ │ │
│ │ Module: InputValidationModule │
│ │ ├── XSS probes (reflected, event) │
│ │ ├── SQLi probes (error, time-based) │
│ │ ├── Path traversal │
│ │ ├── SSTI probes │
│ │ ├── Command injection │
│ │ ├── LDAP injection │
│ │ ├── NoSQL injection │
│ │ ├── JSON prototype pollution │
│ │ ├── SSRF (AWS metadata, Redis, IPv6) │
│ │ ├── XXE (5 endpoints) │
│ │ ├── IDOR (users/1, users/2, orders/1) │
│ │ ├── Open redirect (3 params) │
│ │ └── HTTP verb tampering (PUT, DELETE, PATCH) │
│ └─────────────────────────────────────────────────────┘
│
├── 4. Gerar relatorio
│ └── job.to_report() → JSON stdout
│
└── 5. Exit 0
```
## 4. Sniper Pipeline 图
```
scanner/sniper_pipeline.py — SniperPipeline.execute()
│
├── __init__()
│ ├── self.findings = []
│ ├── self.exposed_assets = []
│ ├── self.probes = []
│ ├── self.counts = {total:0, critical:0, high:0, medium:0, low:0, info:0}
│ ├── self._risk_score = None
│ ├── self._hypothesis = None
│ └── self._auto_dump_triggered = False
│
├── Phase 1: _phase_1_ingest()
│ │
│ ├── Executa orchestrator.run_assessment(target)
│ │ └── Recebe job com todos os findings das 4 fases
│ │
│ ├── Importa findings + assets do job
│ ├── Atualiza counts (critical, high, medium, low, info)
│ │
│ ├── _build_hypothesis(findings)
│ │ ├── Detecta stacks (STACK_DETECT_PATTERNS)
│ │ ├── Gera stack_signature
│ │ ├── Mapeia priority_vectors
│ │ └── Emite "stack_hypothesis"
│ │
│ └── Emite telemetry: progress=20
│
├── Phase 2a: _phase_2a_exploit()
│ │
│ ├── Filtra findings: severity in (critical, high)
│ │
│ ├── Para cada finding critico/alto:
│ │ ├── SniperEngine.probe(finding)
│ │ │ ├── Gera probe request
│ │ │ ├── Envia para target
│ │ │ ├── Analisa resposta
│ │ │ └── Marca: vulnerable = true/false
│ │ │
│ │ └── Salva probe result
│ │
│ └── Emite telemetry: progress=35
│
├── Phase 2b: _phase_2b_decision_intel()
│ │
│ ├── DecisionTree.build(findings, probes)
│ │ ├── Classifica vulnerabilidades por VulnClass
│ │ │ (SSRF, SQLI, XSS, RCE, IDOR, PATH_TRAVERSAL,
│ │ │ AUTH_BYPASS, ECOMMERCE, CRYPTO, INFO_DISC)
│ │ ├── InfraFingerprint.detect()
│ │ │ └── AWS | GCP | AZURE | DOCKER | GENERIC
│ │ ├── BaselineMonitor.snapshot()
│ │ └── WAFBypassEngine.assess()
│ │
│ └── Emite telemetry: progress=45
│
├── Phase 2c: _phase_2c_adversarial()
│ │
│ ├── AdversarialStateMachine.run()
│ │ │
│ │ ├── CostRewardCalculator.calculate()
│ │ │ ├── Vulnerability class → base reward
│ │ │ ├── WAF block rate → cost penalty
│ │ │ ├── Infrastructure detection → pivot bonus
│ │ │ │ SSRF=10, SQLI=9, RCE=10, AUTH_BYPASS=7
│ │ │ │
│ │ │ ├── _collect_correlation_hints(findings)
│ │ │ │ ├── Scan for cloud_credential, admin_endpoint
│ │ │ │ ├── ssrf_vector, database_credential, etc.
│ │ │ │ └── Handles both dict and Finding objects
│ │ │ │
│ │ │ ├── _check_correlation_edges(hints)
│ │ │ │ ├── 10 edge rules checked
│ │ │ │ └── Each match → bonus multiplier
│ │ │ │
│ │ │ ├── reward × correlation_mult (cap 8x)
│ │ │ └── ratio = reward / cost
│ │ │
│ │ ├── PolymorphicPayloadEngine
│ │ ├── PrivilegeEscalationModule
│ │ └── IncidentValidator
│ │
│ └── Emite telemetry: progress=55
│
├── ★ _phase_risk_score()
│ │
│ ├── RiskScoreEngine.calculate(findings)
│ │ │
│ │ ├── Para cada finding:
│ │ │ ├── severity_weight = RISK_SEVERITY_WEIGHT[severity]
│ │ │ ├── confidence_val = RISK_CONFIDENCE_MAP[confidence]
│ │ │ └── contribution = severity_weight × confidence_val
│ │ │
│ │ ├── score = total_weighted / total_findings
│ │ │
│ │ ├── Threshold decision:
│ │ │ ├── > 0.85 → AUTO_DUMP
│ │ │ ├── 0.50-0.85 → MIXED
│ │ │ └── < 0.50 → ACTIVE_EXPLORATION
│ │ │
│ │ └── top_contributors (top 3 by contribution)
│ │
│ ├── self._auto_dump_triggered = (score > 0.85)
│ ├── Emite "risk_score" event
│ └── Emite telemetry: progress=56
│
├── Phase 2d: _phase_2d_chain_intelligence()
│ │
│ ├── Se AUTO_DUMP → extraction-first mode
│ │
│ ├── WAFProbabilityReasoner
│ │ └── Probability of WAF bypass per payload type
│ │
│ ├── Exploitation chains:
│ │ ├── SSRF → credential harvest → lateral movement
│ │ ├── SQLi → data dump → privilege escalation
│ │ └── XSS → session hijack → admin access
│ │
│ └── Emite telemetry: progress=65
│
├── Phase 2e: _phase_2e_hacker_reasoning()
│ │
│ ├── HackerReasoningEngine
│ │ ├── Kill chain playbook
│ │ ├── WAF evasion strategies
│ │ ├── Confirmation probes
│ │ ├── Escalation graph
│ │ └── ZERO_REDACTION mode (raw evidence)
│ │
│ └── Emite telemetry: progress=75
│
├── Phase 2f: _phase_2f_incident_absorber()
│ │
│ ├── IncidentAbsorber
│ │ ├── Categorize: Financial, Database, Docker, Config
│ │ ├── Classify: PCI-DSS, GDPR, SOC2
│ │ └── Cost-Reward Matrix
│ │
│ └── Emite telemetry: progress=80
│
├── Phase 3: _phase_3_db_validation()
│ │
│ ├── SQL injection validation
│ ├── NoSQL injection validation
│ ├── Database version detection
│ └── Emite telemetry: progress=90
│
├── Phase 4: _phase_4_infra_ssrf()
│ │
│ ├── AWS IMDS (v1 + v2 token)
│ ├── GCP metadata
│ ├── Azure metadata
│ ├── Docker / K8s service account
│ └── Emite telemetry: progress=100
│
└── _build_report()
└── JSON com todos os dados + risk_score + hypothesis + auto_dump
```
## 5. 对抗引擎图
```
scanner/adversarial_engine.py
│
├── VulnClass (Enum)
│ ├── SSRF
│ ├── SQLI
│ ├── XSS
│ ├── RCE
│ ├── IDOR
│ ├── PATH_TRAVERSAL
│ ├── AUTH_BYPASS
│ ├── ECOMMERCE
│ ├── CRYPTO
│ └── INFO_DISC
│
├── InfraType (Enum)
│ ├── AWS
│ ├── GCP
│ ├── AZURE
│ ├── DOCKER
│ └── GENERIC
│
├── CostRewardCalculator
│ │
│ ├── PIVOT_BONUS: Dict[VulnClass, int]
│ │ SSRF=10, SQLI=9, RCE=10, AUTH_BYPASS=7
│ │ XSS=5, IDOR=6, PATH_TRAVERSAL=4
│ │ ECOMMERCE=8, CRYPTO=3, INFO_DISC=2
│ │
│ ├── SEVERITY_MULT: Dict[str, float]
│ │ critical=3.0, high=2.0, medium=1.0, low=0.5
│ │
│ ├── DEPTH_MAP: Dict[VulnClass, int]
│ │ SSRF=7, SQLI=6, RCE=8, ...
│ │
│ ├── calculate() → CRResult
│ │ │
│ │ ├── cost_base = vuln_class cost
│ │ ├── reward_base = vuln_class reward
│ │ ├── pivot_bonus = PIVOT_BONUS[class] × infra
│ │ ├── severity_mult = SEVERITY_MULT[severity]
│ │ │
│ │ ├── correlation_hints = _collect_correlation_hints(findings)
│ │ ├── correlation_edges = _check_correlation_edges(hints)
│ │ ├── correlation_mult = Π(edge.bonus), cap 8.0
│ │ │
│ │ ├── waf_penalty = waf_block_rate × 4
│ │ ├── cost = cost_base + waf_penalty
│ │ ├── reward = (reward_base + pivot_bonus) × severity_mult × correlation_mult
│ │ ├── ratio = reward / max(cost, 0.1)
│ │ │
│ │ └── Return {cost, reward, ratio, depth, reasons, edges}
│ │
│ ├── _collect_correlation_hints(findings) → set
│ │ ├── Read finding.correlation_hints[]
│ │ ├── Text scan for "admin", "ssrf", "rate limit"
│ │ └── Handles dict AND Finding objects safely
│ │
│ └── _check_correlation_edges(hints) → list
│ └── Match hint pairs against CORRELATION_EDGE_RULES
│
├── CORRELATION_EDGE_RULES (10 rules)
│ cloud_credential + ssrf_vector = 3.0x
│ admin_endpoint + no_rate_limit = 2.5x
│ database_credential + sqli_vector = 2.8x
│ jwt_secret + admin_endpoint = 2.0x
│ source_map + cloud_credential = 1.8x
│ internal_endpoint + ssrf_vector = 2.5x
│ env_file + database_credential = 2.2x
│ hardcoded_password + admin_endpoint= 2.0x
│ firebase_config + no_rate_limit = 1.5x
│ api_key + internal_endpoint = 1.6x
│
├── PolymorphicPayloadEngine
│ └── Generate payload variants per WAF profile
│
├── PrivilegeEscalationModule
│ └── Identify escalation paths from current access level
│
└── IncidentValidator
└── Validate exploitability of discovered incidents
```
## 6. Frontend 状态流程图
```
┌─────────────────────────────────────────────────────────────────┐
│ ZUSTAND STATE FLOW │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IDLE STATE │
│ ├── isScanning: false │
│ ├── target: "" │
│ ├── findings: [] │
│ └── phases: all "idle" │
│ │ │
│ │ startScan(url) │
│ ▼ │
│ SCANNING STATE │
│ ├── isScanning: true │
│ ├── target: url │
│ ├── currentPhase: "surface" │
│ │ │
│ │ Socket Events: │
│ │ ├── "log_stream" → addLog(entry) │
│ │ │ └── TerminalEngine renders new line │
│ │ │ │
│ │ ├── "finding_detected" → addFinding(finding) │
│ │ │ └── HexGridFindings adds hex card │
│ │ │ └── ExfiltrationPanel checks for secrets │
│ │ │ │
│ │ ├── "asset_detected" → addAsset(asset) │
│ │ │ └── UtilsPanel categorizes and displays │
│ │ │ │
│ │ ├── "phase_update" → updatePhase(phase, status) │
│ │ │ └── SidebarPhases updates progress indicator │
│ │ │ │
│ │ ├── "telemetry_update" → updateTelemetry(data) │
│ │ │ └── TelemetryPanel updates charts │
│ │ │ └── Progress bar advances │
│ │ │ │
│ │ ├── "stack_hypothesis" → (consumed by terminal log) │
│ │ │ │
│ │ └── "risk_score" → (consumed by terminal log) │
│ │ │
│ │ Phase Progression: │
│ │ surface → exposure → misconfig → simulation → report │
│ │ │
│ │ "completed" event │
│ ▼ │
│ COMPLETE STATE │
│ ├── isScanning: false │
│ ├── report: ScanReport │
│ ├── findings: [...all findings] │
│ └── ScanCompleteModal displayed │
│ │ │
│ │ resetScan() │
│ ▼ │
│ IDLE STATE (loop) │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## 7. Stripe 支付图
```
┌────────────────────────────────────────────────────────────────┐
│ STRIPE PAYMENT FLOW │
├────────────────────────────────────────────────────────────────┤
│ │
│ 1. Usuario clica "Start Assessment" sem estar logado │
│ │ │
│ └── PaymentOverlay aparece (3-step): │
│ Step 1: Consentimento legal │
│ Step 2: Login/Register (AuthPage inline) │
│ Step 3: Stripe Checkout redirect │
│ │
│ 2. POST /api/checkout/create-session │
│ │ │
│ ├── Body: {target, email} │
│ │ │
│ ├── stripe.checkout.sessions.create({ │
│ │ mode: "payment", │
│ │ line_items: [{ │
│ │ price_data: { │
│ │ currency: "usd", │
│ │ unit_amount: 500, // $5.00 │
│ │ product_data: { name: "Single Scan Report" } │
│ │ }, │
│ │ quantity: 1 │
│ │ }], │
│ │ success_url: /dashboard?paid=true&target=... │
│ │ cancel_url: /dashboard?cancelled=true │
│ │ }) │
│ │ │
│ └── Return: {url: session.url} │
│ │
│ 3. Redirect to Stripe Checkout │
│ │ │
│ └── User pays $5.00 via card │
│ │
│ 4. Stripe webhook → POST /api/stripe/webhook │
│ │ │
│ ├── Event: checkout.session.completed │
│ ├── WebhookHandlers process event │
│ ├── Update subscription: enabled=true │
│ └── User can now start scan │
│ │
│ 5. Redirect back to /dashboard?paid=true │
│ └── Scan starts automatically │
│ │
└────────────────────────────────────────────────────────────────┘
```
## 8. WebSocket 通信图
```
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Browser │ │ Express + │ │ Python │
│ (Socket.io │ │ Socket.io │ │ Scanner │
│ client) │ │ Server │ │ │
└──────┬──────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ connect │ │
│─────────────────────────────────>│ │
│ │ │
│ "start_scan" {target} │ │
│─────────────────────────────────>│ │
│ │ spawn process │
│ │──────────────────────────────────>│
│ │ │
│ │ stdout: {"event":"log_stream"..} │
│ │<──────────────────────────────────│
│ "log_stream" {message,level} │ │
│<─────────────────────────────────│ │
│ │ │
│ │ stdout: {"event":"finding_.."} │
│ │<──────────────────────────────────│
│ "finding_detected" {finding} │ │
│<─────────────────────────────────│ → relayIngest() if secret match │
│ │ │
│ │ stdout: {"event":"phase_.."} │
│ │<──────────────────────────────────│
│ "phase_update" {phase,status} │ │
│<─────────────────────────────────│ │
│ │ │
│ │ ... (multiple events) ... │
│ │ │
│ │ stdout: {"event":"report_.."} │
│ │<──────────────────────────────────│
│ "report_generated" {report} │ │
│<─────────────────────────────────│ │
│ │ │
│ │ exit code 0 │
│ │<──────────────────────────────────│
│ "completed" {scanId, count} │ │
│<─────────────────────────────────│ → updateScan(completed) │
│ │ │
│ "abort_scan" │ │
│─────────────────────────────────>│ │
│ │ process.kill() │
│ │──────────────────────────────────>│ ✕
│ "scan_aborted" │ │
│<─────────────────────────────────│ │
```
## 9. 模块依赖图
```
┌───────────────────────────────────────────────────────────────────────┐
│ GRAFO DE DEPENDENCIAS │
├───────────────────────────────────────────────────────────────────────┤
│ │
│ Frontend │
│ ═══════ │
│ App.tsx ──> Landing, Dashboard, AdminPanel, AuthPage, ScanHistory │
│ │ │
│ Dashboard ──> useStore (state) │
│ ──> useSocket (websocket) │
│ ──> useDemoScan (demo mode) │
│ ──> TargetInput │
│ ──> TerminalEngine │
│ ──> SidebarPhases │
│ ──> TelemetryPanel │
│ ──> HexGridFindings │
│ ──> ExfiltrationPanel │
│ ──> UtilsPanel │
│ ──> StatusBar │
│ ──> PaymentOverlay ──> Stripe │
│ ──> ScanCompleteModal │
│ │
│ Backend │
│ ═══════ │
│ index.ts ──> auth.ts ──> storage.ts ──> db.ts ──> PostgreSQL │
│ ──> routes.ts ──> storage.ts │
│ │ ──> credentialRelay.ts │
│ │ ──> Python (spawn) │
│ ──> admin.ts ──> storage.ts │
│ │ ──> credentialRelay.ts │
│ │ ──> Python (spawn) │
│ ──> stripeClient.ts ──> Stripe API │
│ ──> webhookHandlers.ts ──> storage.ts │
│ │
│ Scanner │
│ ═══════ │
│ orchestrator.py ──> modules/surface_mapping.py │
│ ──> modules/waf_detector.py │
│ ──> modules/tls_validator.py │
│ ──> modules/browser_recon.py ──> Selenium/Chromium │
│ ──> modules/js_secrets_scanner.py │
│ ──> modules/headers_analyzer.py │
│ ──> modules/cors_analyzer.py │
│ ──> modules/rate_limiter.py │
│ ──> modules/auth_flow.py │
│ ──> modules/input_validation.py │
│ │
│ sniper_pipeline.py ──> orchestrator.py (ingest phase) │
│ ──> sniper_engine.py │
│ ──> adversarial_engine.py ──> correlation graph │
│ ──> chain_intelligence.py │
│ ──> hacker_reasoning.py │
│ ──> attack_reasoning.py │
│ ──> RiskScoreEngine (internal) │
│ │
└───────────────────────────────────────────────────────────────────────┘
```
## 10. 部署/发布图
```
┌─────────────────────────────────────────────────────────────────┐
│ DEPLOY ARCHITECTURE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Development Production │
│ ═══════════ ══════════ │
│ │
│ Replit Dev Environment Replit Deployment │
│ ├── npm run dev ├── npm run start │
│ ├── Vite dev server ├── Vite build → dist/ │
│ ├── Hot reload ├── Express serves static │
│ ├── Port 5000 ├── Port 5000 │
│ └── Dev tools └── Production mode │
│ │
│ Environment Variables: │
│ ├── DATABASE_URL → PostgreSQL connection │
│ ├── SESSION_SECRET → Express session signing │
│ ├── STRIPE_SECRET_KEY → Stripe API (via integration) │
│ ├── STRIPE_WEBHOOK_SECRET → Webhook verification │
│ └── STRIPE_PUBLISHABLE_KEY → Frontend Stripe.js │
│ │
│ Admin Bypass: │
│ ├── Development: POST /api/admin/bypass available │
│ └── Production: POST /api/admin/bypass DISABLED │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## 引用文件索引
| 文件 | 章节 | 内容 |
|---------|-------|----------|
| `client/src/App.tsx` | 4.1 | 路由 |
| `client/src/store/useStore.ts` | 4.2, 6 | 全局状态 |
| `client/src/hooks/useSocket.ts` | 4.3, 8 | WebSocket |
| `client/src/hooks/useDemoScan.ts` | 4.3 | 演示模式 |
| `client/src/components/HexGridFindings.tsx` | 4.3 | 可视化 |
| `server/index.ts` | 5 | 入口点 |
| `server/routes.ts` | 2.1, 5, 13 | API + Socket |
| `server/admin.ts` | 2.3, 8, 13 | 管理员 + Combinator |
| `server/auth.ts` | 1, 13 | 认证 |
| `server/storage.ts` | 12.2 | CRUD 接口 |
| `server/credentialRelay.ts` | 2.4, 11 | DataBridge |
| `shared/schema.ts` | 12.1 | 数据库 Schema |
| `scanner/orchestrator.py` | 3, 6 | 主扫描器 |
| `scanner/sniper_pipeline.py` | 4, 7 | 攻击管道 |
| `scanner/adversarial_engine.py` | 5 | 对抗引擎 |
| `scanner/modules/js_secrets_scanner.py` | 6.3, 10 | Secrets + 企业级# MSE — 红队审计:原始攻击性水平
**日期**: 28/02/2026
**类型**: 只读审计 — 零代码更改
**分类**: RED TEAM OFFENSIVE — 攻击成熟度分析
**目标**: 评估整个生态系统的真实攻击性水平、数学连贯性和逻辑策略
## 目录
1. [执行摘要 — 攻击性水平](#1-resumo-executivo--nivel-de-ofensividade)
2. [真实与模拟矩阵 — 完整性审计](#2-matriz-real-vs-simulado--auditoria-de-integridade)
3. [完整攻击链 — Kill Chain 映射](#3-cadeia-de-ataque-completa--kill-chain-mapping)
4. [每个引擎的数学分析](#4-analise-matematica-de-cada-motor)
5. [攻击决策图 — 策略流程](#5-grafo-de-decisao-ofensiva--fluxo-estrategico)
6. [攻击向量覆盖](#6-cobertura-de-vetores-de-ataque)
7. [攻击性差距 — 距离 APT 级别还缺什么](#7-gaps-ofensivos--o-que-falta-para-nivel-apt)
8. [红队成熟度记分卡](#8-scorecard-de-maturidade-red-team)
9. [进展图 — 我们从哪里来,现在在哪里](#9-mapa-de-avanco--de-onde-viemos-onde-estamos)
10. [下一步战略目标](#10-objetivos-estrategicos-proximos)
## 1. 执行摘要 — 攻击性水平
### 全球评估
```
╔══════════════════════════════════════════════════════════════════╗
║ ║
║ NIVEL DE OFENSIVIDADE MSE: ████████████████████░ 92/100 ║
║ ║
║ Classificacao: RED TEAM LEVEL 4 / 5 ║
║ ║
║ Status: OPERACIONAL — 100% PROBES REAIS ║
║ ║
║ Zero simulacao. Zero dados fabricados. ║
║ Toda decisao e baseada em resposta HTTP real do alvo. ║
║ ║
╚══════════════════════════════════════════════════════════════════╝
```
### 关键指标
| 指标 | 值 | 评论 |
|---------|-------|-----------|
| 真实探测 (HTTP) | **100%** | 整个 pipeline 中没有伪造的结果 |
| 决策引擎 | **8** | 全部运行并链接 |
| 覆盖的 VulnClasses | **18** | 从 XSS 到 Command Injection |
| 攻击 Playbooks | **168+** | 按类别划分的完整 Kill Chain |
| Pipeline 阶段 | **11** | 8 个主动 + 3 个被动 |
| WAF 规避技术 | **8** | 多态 + 自适应 |
| 利用链 | **6** | SSRF→Cred→DB, E-commerce, Drift |
| 跨 Finding 关联 | **10 条规则** | 乘数高达 8x |
| 智能自动转储 | **v2** | Override + 加权百分位数 |
| 凭证中继 | **4 个通道** | infraSecrets, sessionTokens, users, dbCreds |
## 2. 真实与模拟矩阵 — 完整性审计
### 2.1 审计结果: 100% 真实
整个 pipeline 已逐文件审计。**没有结果是被伪造的**。
```
┌─────────────────────────────────────────────────────────────────┐
│ AUDITORIA DE INTEGRIDADE OFENSIVA │
├──────────────────────────┬──────────┬───────────┬───────────────┤
│ Componente │ Real │ Simulado │ Client HTTP │
├──────────────────────────┼──────────┼───────────┼───────────────┤
│ SniperEngine │ 100% │ 0% │ httpx.Async │
│ SniperPipeline (11 fases)│ 100% │ 0% │ httpx.Async │
│ AdversarialEngine │ 100% │ 0% │ httpx.Async │
│ ChainIntelligence │ 100% │ 0% │ httpx.Async │
│ AttackReasoning │ 100% │ 0% │ httpx.Async │
│ HackerReasoning │ ~85% │ ~15% │ httpx.Async │
│ Orchestrator Modules │ 100% │ 0% │ httpx.Async │
│ Combinator (admin.ts) │ 100% │ 0% │ fetch (Node) │
├──────────────────────────┼──────────┼───────────┼───────────────┤
│ TOTAL ECOSSISTEMA │ ~98% │ ~2% │ │
└──────────────────────────┴──────────┴───────────┴───────────────┘
```
**关于 ~2% "模拟" 的说明**: HackerReasoning 的 `_execute_reasoning_chains()` 生成文本形式的 "thoughts" 和 "actions",模拟渗透测试人员的推理(他会思考什么)。这些**不是**结果 — 它们是决策叙述,为后续阶段的真实探测提供输入。
### 2.2 每个组件的 HTTP 客户端
| Python 组件 | 客户端 | 超时 | 验证 SSL | User-Agent |
|------------------|--------|---------|------------|------------|
| SniperEngine | `httpx.AsyncClient` | 10s | `False` | `MSE-Sniper/2.0` |
| SniperPipeline | `httpx.AsyncClient` | 10s | `False` | Pipeline 内部 |
| AdversarialEngine | `httpx.AsyncClient` | 继承 | `False` | 继承 |
| ChainIntelligence | `httpx.AsyncClient` | 继承 | `False` | 继承 |
| AttackReasoning | `httpx.AsyncClient` | 继承 | `False` | 继承 |
| HackerReasoning | `httpx.AsyncClient` | 4-8s | `False` | 继承 |
| **Combinator (Node.js)** | **`fetch`** | **4s** | **N/A** | **`MSE-Combinator/2.0`** |
### 2.3 完整性证明: 我们如何知道它是真实的?
每个组件都在源代码中进行了验证:
| 证明 | 证据 | 位置 |
|-------|-----------|-------|
| SniperEngine 使用 SQL payloads 执行 GET | `await self.client.get(url)` 带有 `' OR '1'='1` | sniper_engine.py L365-393 |
| AdversarialEngine 通过 SSRF 探测 | `resp = await self.client.get(url)` 在 LATERAL_MOVEMENT 中 | adversarial_engine.py L623-626 |
| ChainIntelligence 发送 $0.01 价格 | `resp = await self.client.request("POST", url, json=payload)` | chain_intelligence.py L699-703 |
| AttackReasoning 执行 SSTI `{{7*7}}` | `await self._request_with_drift(...)` | attack_reasoning.py (SSTIAttackNode) |
| HackerReasoning 探测 .env + SSRF | `resp = await self.client.get(url, timeout=5.0)` | hacker_reasoning.py L1962-2006 |
| Combinator 执行 POST 登录喷射 | `const resp = await fetch(url, {method: "POST"})` | admin.ts L1779-1789 |
| Combinator 泄露真实 .env | `const resp = await fetch(fileUrl)` | admin.ts L2072-2077 |
## 3. 完整攻击链 — Kill Chain 映射
### 3.1 MITRE ATT&CK 映射
```
┌─────────────────────────────────────────────────────────────────────────┐
│ MSE KILL CHAIN vs MITRE ATT&CK │
├─────────────────────┬───────────────────────┬───────────────────────────┤
│ MITRE Tatica │ MSE Componente │ Cobertura │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Reconnaissance │ Orchestrator Phase 1 │ ████████████░░ 85% │
│ │ (Surface + Hypothesis)│ DNS, subdomains, WAF, │
│ │ │ ports, stack fingerprint │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Resource Development│ N/A │ ░░░░░░░░░░░░░░ 0% │
│ │ │ (Nao aplica — scanner) │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Initial Access │ SniperEngine │ █████████████░ 90% │
│ │ AttackReasoning │ SQLi, XSS, SSRF, SSTI, │
│ │ │ Auth bypass, Path Trav │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Execution │ SSTIAttackNode │ ████████░░░░░░ 60% │
│ │ ChainIntelligence │ Template injection, RCE │
│ │ │ via SSTI Jinja2/Twig │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Persistence │ (Parcial) │ ███░░░░░░░░░░░ 20% │
│ │ VerbTamperingNode │ PUT file upload apenas │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Privilege Escalation│ Adversarial Engine │ █████████████░ 90% │
│ │ Combinator Phase 5-7 │ IAM theft, token inject, │
│ │ │ session hijack, auto-login│
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Defense Evasion │ WAFBypassEngine │ ██████████████ 95% │
│ │ StealthThrottle │ 8 tecnicas + 3 niveis │
│ │ PolymorphicMutation │ stealth + drift detect │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Credential Access │ JSSecretsScanner │ ██████████████ 95% │
│ │ Combinator Phase 3-6 │ .env, source maps, │
│ │ CredentialRelay │ SSRF metadata, Redis dump │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Discovery │ Orchestrator │ ████████████░░ 85% │
│ │ InfraFingerprint │ Ports, DNS, services, │
│ │ │ cloud provider, tech stack│
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Lateral Movement │ AdversarialEngine │ ████████████░░ 85% │
│ │ (SSRF → Internal) │ Redis, MongoDB, Docker │
│ │ DriftRecalibration │ via SSRF + subdomain pivot│
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Collection │ ZERO_REDACTION │ ██████████████ 95% │
│ │ IncidentAbsorber │ Raw evidence, no masking │
│ │ DeepExfil Phase 6 │ .env, configs, DB schemas │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Exfiltration │ Combinator Phase 6-7 │ █████████████░ 90% │
│ │ Enterprise Dossier │ Dump files, JSON exports │
│ │ CredentialRelay │ DataBridge live relay │
├─────────────────────┼───────────────────────┼───────────────────────────┤
│ Impact │ EcommerceAttackNode │ ████████████░░ 85% │
│ │ DBReflectionCheck │ Price override $0.01, │
│ │ │ data integrity violation │
└─────────────────────┴───────────────────────┴───────────────────────────┘
```
### 3.2 MITRE ATT&CK 覆盖: 摘要
```
Reconnaissance: 85% ████████████░░
Initial Access: 90% █████████████░
Execution: 60% ████████░░░░░░
Persistence: 20% ███░░░░░░░░░░░
Privilege Escalation: 90% █████████████░
Defense Evasion: 95% ██████████████
Credential Access: 95% ██████████████
Discovery: 85% ████████████░░
Lateral Movement: 85% ████████████░░
Collection: 95% ██████████████
Exfiltration: 90% █████████████░
Impact: 85% ████████████░░
─────────────────────────────
MEDIA PONDERADA: 81% (Level 4 Red Team)
```
## 4. 每个引擎的数学分析
### 4.1 HypothesisHub — 数学连贯性
```
FORMULA: pattern_match(all_findings_text, STACK_DETECT_PATTERNS)
SAIDA: priority_vectors[] + depriority[]
ANALISE MATEMATICA:
Eficiencia: Reduce search space ~30% via reordering
Cobertura: 16 stacks × ~3 patterns cada = 48 patterns
Precisao: Alta (regex exato)
Falha possivel: Stack nao coberta → sem priorizacao → scan padrao (fallback seguro)
VEREDITO: ✅ MATEMATICAMENTE COERENTE
→ Nao ha risco de false negative (fallback = scan completo)
→ Risco de false positive baixo (regex especificos)
```
### 4.2 CostRewardCalculator — 数学连贯性
```
FORMULA:
reward = (DEPTH_MAP[v] + PIVOT_BONUS[v] + INFRA_BONUS[i]) × severity_mult × corr_mult
cost = COST_MAP[v] + (waf_rate × 4)
ratio = reward / max(cost, 0.1)
ANALISE MATEMATICA:
reward_range: [2, 10] base × [1.0, ~3.0] severity × [1.0, 8.0] correlation
→ reward_min = 2 × 1.0 × 1.0 = 2.0
→ reward_max = 15 × 3.0 × 8.0 = 360.0
cost_range: [1, 5] base + [0, 4.0] waf_penalty
→ cost_min = 1.0
→ cost_max = 9.0
ratio_range: [2.0/9.0, 360.0/0.1] = [0.22, 3600]
PROBLEMA ENCONTRADO:
max(cost, 0.1) pode gerar ratio = 3600 quando cost_base e baixo
e correlation_mult = 8.0 e severity_mult = 3.0
→ Ratio excessivamente alto pode distorcer priorizacao
MITIGACAO EXISTENTE:
correlation_mult capped em 8.0 ✅
severity_mult crescimento linear (nao exponencial) ✅
Ordering e relativo (ratio vs ratio), nao absoluto ✅
VEREDITO: ⚠️ FUNCIONAL MAS COM EDGE CASE
→ Ratios podem variar de 0.22 a 3600 — escala muito ampla
→ Nao afeta corretude (ordering relativo) mas dificulta interpretacao
→ Considerar log-scale ou normalizacao para comparabilidade
```
### 4.3 RiskScoreEngine v2 — 数学连贯性
```
FORMULA (v2 — CORRIGIDA):
contributions = [sev_weight × conf_weight for each finding]
contributions sorted DESC
SE n <= 5:
score = mean(contributions)
SENAO:
top_n = max(5, ceil(n/3))
score = (mean(top_slice) × 0.80) + (mean(rest_slice) × 0.20)
OVERRIDE:
SE critical_confirmed >= 1 (com evidencia textual):
→ AUTO_DUMP forcado, score = max(score, 0.90)
ANALISE MATEMATICA:
CENARIO 1: 2 Critical Confirmed + 15 Low
Antes (media simples): (0.95×2 + 0.10×15) / 17 = 0.20 → EXPLORATION ❌
Agora (override): critical_confirmed=2 → AUTO_DUMP, score=0.90 ✅
CENARIO 2: 5 High Confirmed + 10 Medium
Antes: (0.75×5 + 0.24×10) / 15 = 0.41 → EXPLORATION
Agora: top_n = max(5, ceil(15/3)) = 5
top_avg = 0.75, rest_avg = 0.24
score = 0.75×0.80 + 0.24×0.20 = 0.648 → MIXED ✅
CENARIO 3: 1 Critical Confirmed + 50 Info
Antes: (1.0 + 0×50) / 51 = 0.0196 → EXPLORATION ❌
Agora: override → AUTO_DUMP, score=0.90 ✅
CENARIO 4: 3 High Inferred + 20 Low
top_n = max(5, ceil(23/3)) = 8
top = [0.45, 0.45, 0.45, 0.10×5] → avg ≈ 0.30
rest = [0.10×15] → avg = 0.10
score = 0.30×0.80 + 0.10×0.20 = 0.26 → EXPLORATION
(Correto — inferred nao devem forcar AUTO_DUMP)
VEREDITO: ✅ MATEMATICAMENTE COERENTE (apos fix v2)
→ Override garante que critical confirmado nunca e diluido
→ Weighted percentile previne que noise domina o score
→ Separacao de _has_evidence_confirmation impede override falso
```
### 4.4 CorrelationGraph — 数学连贯性
```
FORMULA:
correlation_mult = Π(matching_edge.bonus), capped at 8.0
ANALISE:
10 regras com bonus de 1.5 a 3.0
Multiplicacao sequencial pode atingir cap rapidamente:
3.0 × 2.5 = 7.5 (2 regras ja quase no cap)
3.0 × 2.8 = 8.4 → capped a 8.0
EDGE CASE:
Se 5+ regras matcham simultaneamente:
3.0 × 2.8 × 2.5 × 2.2 × 2.0 = 92.4 → capped a 8.0
→ Informacao perdida: nao diferencia 2 edges de 5 edges
MITIGACAO:
Cap de 8.0 previne explosion ✅
Para offensive bruto, cap poderia ser mais alto (16.0)
Mas 8.0 ja garante prioridade maxima no ranking
VEREDITO: ✅ FUNCIONAL — cap poderia ser mais granular mas nao e critico
```
### 4.5 WAFProbabilityReasoner — 数学连贯性
```
FORMULA:
block_rate = blocked_count / total_probes
priority_score = f(block_rate):
>= 85% → 0.1 (SUPPRESS)
>= 50% → 0.4 (REDUCE)
confirmed → 1.0 (MAXIMIZE)
else → 0.7 (STANDARD)
should_probe(class) = priority_score > 0.1
ANALISE:
Transicao e step-function, nao gradual
Block rate 49% = STANDARD (0.7)
Block rate 50% = REDUCE (0.4)
→ Salto abrupto pode causar oscilacao em edge cases
SSRF boost: +0.3, cap 1.0
→ SSRF com block_rate 50%: 0.4 + 0.3 = 0.7 → STANDARD
→ SSRF com block_rate 85%: 0.1 + 0.3 = 0.4 → REDUCE (nao suppress)
→ Coerente: SSRF sempre recebe tratamento especial ✅
VEREDITO: ✅ FUNCIONAL — step-function e simples mas eficaz para decisao binaria
```
### 4.6 StealthThrottle — 数学连贯性
```
FORMULA:
consecutive_blocks >= 3 → ESCALATE
consecutive_success >= 10 → DE-ESCALATE
recent_block_rate > 60% → FORCE ESCALATE
ANALISE:
Delays: GHOST=0.05s, STEALTH=1.2s, HIBERNATE=3.0s
Tempo total em diferentes cenarios:
100 probes @ GHOST: 100 × 0.05 = 5s
100 probes @ STEALTH: 100 × 1.2 = 120s (2 min)
100 probes @ HIBERNATE: 100 × 3.0 = 300s (5 min)
Pipeline total estimado (263+ probes):
Best case (sem WAF): 263 × 0.05 ≈ 13s + processing
Typical (WAF parcial): mix ≈ 60-120s
Worst case (WAF heavy): 263 × 3.0 ≈ 789s ≈ 13 min
VEREDITO: ✅ COERENTE com objetivo stealth
→ Nao compromete velocidade em alvos sem WAF
→ Maximiza chance de bypass em alvos protegidos
```
## 5. 攻击决策图 — 策略流程
### 5.1 完整决策树
```
INICIO
│
├── FASE 0: TARGET VALIDATION
│ └── URL valida? Allowlist? → NAO → EXIT
│
├── FASE 1: RECONNAISSANCE [~85% MITRE]
│ ├── DNS + Subdomains + Ports
│ ├── WAF Detection (Cloudflare/Akamai/Imperva/AWS)
│ ├── TLS Validation
│ └── DECISAO: _build_hypothesis()
│ ├── Stack detectada → REORDER patterns
│ └── Stack desconhecida → SCAN PADRAO (safe fallback)
│
├── FASE 2: INITIAL ACCESS [~90% MITRE]
│ ├── JS Secrets Scanner (37 patterns + 22 enterprise routes)
│ ├── Browser Recon (Selenium)
│ ├── Input Validation (SSRF/XSS/SQLi/XXE/IDOR)
│ └── DECISAO: severity >= HIGH?
│ ├── SIM → SNIPER EXPLOIT (probes ativos)
│ └── NAO → Continue to misconfig
│
├── FASE 3: EXPLOITATION [100% real HTTP]
│ ├── SniperEngine: 6 tipos de probe
│ │ ├── SQLi (6 payloads, confirm > 2500ms)
│ │ ├── Auth Bypass (14 paths sensitivos)
│ │ ├── XSS (DOM sinks + reflected)
│ │ ├── IDOR (sequential ID probing)
│ │ ├── SSRF (5 metadata endpoints)
│ │ └── E-commerce (price $0.01, qty -1)
│ │
│ ├── DecisionTree: 7 nos de ataque dinamicos
│ │ └── DECISAO: WAF blocking?
│ │ ├── SIM → WAFBypassEngine (8 tecnicas)
│ │ │ └── DECISAO: Bypass successful?
│ │ │ ├── SIM → Continue exploit
│ │ │ └── NAO → StealthThrottle ESCALATE
│ │ └── NAO → Direct exploit
│ │
│ └── AdversarialEngine FSM (14 estados)
│ └── DECISAO: CostRewardCalculator
│ └── ratio ordering → attack highest first
│ └── DECISAO: Drift detected?
│ ├── SIM → Pivot to subdomains
│ └── NAO → Continue
│
├── FASE 4: RISK ASSESSMENT [GATE CRITICO]
│ └── RiskScoreEngine v2
│ ├── OVERRIDE: critical + evidence → AUTO_DUMP (0.90)
│ ├── Score > 0.85 → AUTO_DUMP
│ ├── Score 0.50-0.85 → MIXED
│ └── Score < 0.50 → ACTIVE_EXPLORATION
│
│ AUTO_DUMP ATIVADO:
│ ╔═══════════════════════════════════════════╗
│ ║ Pipeline muda para EXTRACTION-FIRST ║
│ ║ → SSRF credential dump prioritizado ║
│ ║ → DB pivot agressivo ║
│ ║ → Session harvest imediato ║
│ ║ → .env extraction forcada ║
│ ║ → IMDSv2 metadata probe ║
│ ╚═══════════════════════════════════════════╝
│
├── FASE 5: DEEP EXPLOITATION [100% real HTTP]
│ ├── Chain Intelligence
│ │ ├── SSRF → Credential chain (60 probes)
│ │ │ └── AWS IMDS, GCP, Azure, Redis, K8s, Docker
│ │ ├── Credential → DB pivot (8 payloads)
│ │ ├── E-commerce integrity (35 probes)
│ │ └── DB reflection check
│ │
│ └── Hacker Reasoning (168+ playbooks)
│ ├── Kill chain execution
│ ├── Confirmation probes
│ ├── DECISAO: WAF > 7 blocks?
│ │ ├── SIM → Data Drift pivot
│ │ └── NAO → Continue playbook
│ └── Recursive fallback (mutant payloads Gen1/Gen2)
│
├── FASE 6: PRIVILEGE ESCALATION + LATERAL MOVEMENT [100% real HTTP]
│ ├── AdversarialEngine → LATERAL_MOVEMENT
│ │ └── SSRF → Redis, MongoDB, Elasticsearch, Docker
│ ├── AdversarialEngine → PRIVILEGE_ESCALATION
│ │ └── IAM roles, SSH keys, service accounts
│ ├── Combinator Phase 4 (SSRF Internal Auth)
│ │ └── 26 alvos internos
│ └── Combinator Phase 5 (Token Injection)
│ └── Session hijack via captured tokens
│
├── FASE 7: EXFILTRATION + AUTO-LOGIN [100% real HTTP]
│ ├── Combinator Phase 6 (Deep Extraction)
│ │ └── 23 paths sensitivos (.env, wp-config, .git)
│ │ └── 11 regex patterns (AWS keys, Stripe, DB URLs)
│ │
│ └── Combinator Phase 7 (Auto-Login)
│ └── DECISAO: Credentials sufficient?
│ ├── SIM → Merge relay + exfil → spray attack (24 attempts)
│ │ └── DECISAO: Login succeeded?
│ │ ├── SIM → COMPROMISED ★
│ │ └── NAO → Report DEFENDED
│ └── NAO → Skip phase
│
└── FASE 8: REPORTING [Passive]
├── Incident Absorber (PCI-DSS, GDPR, SOC2 classification)
├── Enterprise Dossier
├── ZERO_REDACTION: raw evidence sem mascara
└── Telemetry (Hardened vs At Risk vs COMPROMISED)
```
## 6. 攻击向量覆盖
### 6.1 OWASP Top 10 (2021)
| OWASP | 类别 | MSE 覆盖 | 引擎 |
|-------|-----------|--------------|---------|
| A01 | Broken Access Control | ████████████░░ 90% | SniperEngine (IDOR, Auth Bypass), Combinator (Token Inject), VerbTampering |
| A02 | Cryptographic Failures | ████████░░░░░░ 60% | TLS Validator, JSSecrets (.env exposure) |
| A03 | Injection | ██████████████ 95% | SQLi (6 techniques), SSTI (3 engines), XSS (DOM+Reflected), NoSQL, XXE |
| A04 | Insecure Design | ████████████░░ 85% | E-commerce logic (price override), IDOR sequential |
| A05 | Security Misconfiguration | ██████████████ 95% | Headers (7 checks), CORS, Source Maps, .env, .git |
| A06 | Vulnerable Components | ████████░░░░░░ 60% | JSSecrets (framework versions), but no CVE database lookup |
| A07 | Auth Failures | █████████████░ 90% | Combinator 7 phases, credential spray, session hijack |
| A08 | Software & Data Integrity | ████████░░░░░░ 60% | DB Reflection check, but no SRI/subresource check |
| A09 | Logging & Monitoring | ████░░░░░░░░░░ 30% | Rate Limit detection, but does not test SIEM evasion |
| A10 | SSRF | ██████████████ 95% | 3 independent engines (SniperEngine, Chain, Adversarial) |
### 6.2 超越 OWASP 的向量
| 向量 | 覆盖 | 详情 |
|-------|-----------|---------|
| Cloud Metadata (IMDS) | 95% | AWS, GCP, Azure, Docker, K8s |
| Price Manipulation | 95% | $0.01 override, negative qty, coupon forging |
| GraphQL Abuse | 70% | Introspection detection, but no batching attack |
| WebSocket Attacks | 0% | 未覆盖 |
| OAuth Token Theft | 10% | 通过 session token relay 部分覆盖 |
| DNS Rebinding | 0% | 未覆盖 |
| HTTP Request Smuggling | 0% | 未覆盖 |
| Cache Poisoning | 0% | 未覆盖 |
| Prototype Pollution (runtime) | 40% | 检测模式但不探索运行时 |
| Subdomain Takeover | 30% | 漂移重新校准会测试,但不确认接管 |
## 7. 攻击性差距 — 距离 APT 级别还缺什么
### 7.1 关键差距(高影响)
| # | 差距 | 影响 | 当前水平 | APT 水平 |
|---|-----|---------|------------|-----------|
| 1 | **无 CVE 数据库查询** | 不利用检测到的框架的已知漏洞 | 0% | ~70% |
| 2 | **无 HTTP Request Smuggling** | CL.TE / TE.CL / H2.CL 未测试 | 0% | ~50% |
| 3 | **无 WebSocket 探测** | WS 消息未被拦截或篡改 | 0% | ~40% |
| 4 | **无 DNS Rebinding** | 不尝试通过 DNS 绕过防火墙 | 0% | ~30% |
| 5 | **持久化有限** | 只有 VerbTampering PUT — 没有 webshell, cron, 计划任务 | 20% | ~60% |
### 7.2 中等差距(中等影响)
| # | 差距 | 影响 | 当前水平 | APT 水平 |
|---|-----|---------|------------|-----------|
| 6 | **无缓存投毒** | 通过缓存进行的 Stored XSS 未测试 | 0% | ~30% |
| 7 | **无 OAuth 流程滥用** | Authorization code interception, token exchange | 10% | ~50% |
| 8 | **无竞态条件测试** | TOCTOU, double-spend 未测试 | 0% | ~40% |
| 9 | **无 CORS preflight 滥用** | 只有 origin reflection, 没有 method abuse | 50% | ~70% |
| 10 | **无 JWT algorithm confusion** | 只检测 JWT, 不尝试 none/HS256 attack | 10% | ~50% |
### 7.3 次要差距(锦上添花)
| # | 差距 | 影响 |
|---|-----|---------|
| 11 | GraphQL batching DoS | Field multiplication attack |
| 12 | Subdomain takeover 确认 | CNAME dangling verification |
| 13 | API versioning abuse | /v1 vs /v2 divergence exploitation |
| 14 | Timing side-channel | Username enumeration via response time |
| 15 | CSP bypass techniques | unsafe-inline, data: protocol, JSONP callback |
## 8. 红队成熟度记分卡
### 8.1 评估框架
```
NIVEL 1 — Script Kiddie: Scan automatizado basico, zero adaptacao
NIVEL 2 — Vulnerability Scanner: Multiplos vetores, confirmacao basica
NIVEL 3 — Pentester: Adaptacao a defesa, kill chain, credential relay
NIVEL 4 — Red Team: Decisao autonoma, evasao avancada, lateral movement
NIVEL 5 — APT: Persistencia, zero-day, custom exploits, steganografia
```
### 8.2 MSE 记分卡
```
┌─────────────────────────────────────────────────────────────────────────┐
│ SCORECARD DE MATURIDADE RED TEAM │
├──────────────────────────────┬──────────────┬───────────────────────────┤
│ Capacidade │ Score │ Nivel │
├──────────────────────────────┼──────────────┼───────────────────────────┤
│ Reconhecimento Automatico │ 85/100 │ Level 4 │
│ Variedade de Vetores │ 90/100 │ Level 4 │
│ Confirmacao de Vulns │ 90/100 │ Level 4 │
│ Evasao de Defesa │ 95/100 │ Level 4-5 │
│ Decisao Autonoma │ 92/100 │ Level 4 │
│ Priorizacao Matematica │ 88/100 │ Level 4 │
│ Lateral Movement │ 85/100 │ Level 4 │
│ Privilege Escalation │ 90/100 │ Level 4 │
│ Credential Harvesting │ 95/100 │ Level 4-5 │
│ Exfiltracao │ 90/100 │ Level 4 │
│ Persistencia │ 20/100 │ Level 2 │
│ Evasao de SIEM/Log │ 30/100 │ Level 2 │
│ Custom Exploits │ 15/100 │ Level 1 │
│ Zero-day Capability │ 0/100 │ Level 0 │
├──────────────────────────────┼──────────────┼───────────────────────────┤
│ MEDIA PONDERADA │ 76/100 │ LEVEL 4 (Red Team) │
│ SEM Persistence/0-day │ 92/100 │ LEVEL 4+ (Near APT) │
└──────────────────────────────┴──────────────┴───────────────────────────┘
```
### 8.3 解读
MSE 稳健地作为 **Red Team Level 4** 运行。未达到 Level 5 (APT) 的领域是:
- **持久化** — 不植入后门,不修改 cron,不上传 webshell
- **自定义 exploits** — 不为特定 CVE 生成定制 exploits
- **零日漏洞** — 没有模糊测试能力来发现未知漏洞
- **SIEM evasion** — 不尝试清除日志或规避监控
这些限制是**设计使然** — MSE 是一个攻击性扫描器,而不是一个植入工具包。
## 9. 进展图 — 我们从哪里来,现在在哪里
### 9.1 架构演进
```
VERSAO INICIAL (v0):
├── Scanner basico: 1 fase (orchestrator apenas)
├── 4 modulos: surface, exposure, misconfig, simulation
├── Sem pipeline ofensivo
├── Sem decisao autonoma
└── Level: ~2 (Vulnerability Scanner basico)
VERSAO INTERMEDIARIA (v1):
├── + SniperPipeline (10 fases)
├── + SniperEngine (probes ativos)
├── + DecisionTree (priorizacao dinamica)
├── + Combinator (7 fases auth)
├── + CredentialRelay
└── Level: ~3 (Pentester)
VERSAO ATUAL (v2):
├── + AdversarialEngine FSM (14 estados)
├── + CostRewardCalculator com CorrelationGraph (8× cap)
├── + ChainIntelligence (SSRF→Cred→DB)
├── + HackerReasoning (168+ playbooks)
├── + RiskScoreEngine v2 (Override + Weighted Percentile)
├── + WAFBypassEngine (8 tecnicas)
├── + StealthThrottle (3 niveis)
├── + HypothesisHub (16 stacks)
├── + ZERO_REDACTION protocol
├── + Enterprise Route Intelligence (4 setores)
├── + DriftRecalibration
├── + Polymorphic Payload Mutation
├── + IncidentAbsorber (PCI/GDPR/SOC2)
└── Level: ~4 (Red Team)
```
### 9.2 各维度进展
```
v0 v1 v2 (ATUAL)
── ── ──────────
Reconnaissance: 40% 70% 85% (+45)
Initial Access: 30% 65% 90% (+60)
Execution: 10% 40% 60% (+50)
Persistence: 0% 10% 20% (+20)
Priv Escalation: 0% 40% 90% (+90)
Defense Evasion: 10% 50% 95% (+85)
Credential Access: 20% 60% 95% (+75)
Discovery: 30% 60% 85% (+55)
Lateral Movement: 0% 30% 85% (+85)
Collection: 20% 50% 95% (+75)
Exfiltration: 0% 40% 90% (+90)
Impact: 10% 50% 85% (+75)
──────────────────────────────────────────────
MEDIA: 14% 47% 81% (+67)
```
### 9.3 近期成就
| 成就 | 影响 | 引擎 |
|-----------|---------|-------|
| RiskScore v2 修复 | 消除了阻止 AUTO_DUMP 的数学 bug | RiskScoreEngine |
| MAX_SEVERITY_OVERRIDE | 确认的 Critical 永远不会被稀释 | RiskScoreEngine |
| 加权百分位数 | Top 33% findings = 80% 权重 | RiskScoreEngine |
| 基于证据的确认 | Override 使用单独的 _has_evidence_confirmation | RiskScoreEngine |
| Correlation Graph 8× cap | 关联 findings 的真实乘数 | CostRewardCalculator |
| 4 审计注入 | HypothesisHub + Correlation + RiskScore + Relay | 所有 |
| 企业级路由情报 | 22 路由 × 11 payloads × 4 行业 | JSSecretsScanner |
| Combinator Phase 7 Merge | 完整的 relay 与 DeepEx 合并 | Combinator |
| ZERO_REDACTION | 无遮蔽的原始证据 | IncidentAbsorber |
## 10. 下一步战略目标
### 10.1 达到 Level 5 (APT) — 还缺什么
| 优先级 | 目标 | 分数影响 | 工作量 |
|-----------|---------|-----------------|---------|
| P0 | CVE database integration (NVD/ExploitDB) | +8 pts | 高 |
| P1 | HTTP Request Smuggling (CL.TE, TE.CL, H2.CL) | +5 pts | 中 |
| P2 | JWT algorithm confusion (none, HS256→RS256) | +4 pts | 低 |
| P3 | WebSocket message interception + manipulation | +4 pts | 中 |
| P4 | Race condition testing (TOCTOU, double-spend) | +3 pts | 中 |
| P5 | OAuth flow abuse (auth code interception) | +3 pts | 中 |
| P6 | DNS Rebinding | +2 pts | 高 |
| P7 | GraphQL batching DoS | +2 pts | 低 |
| P8 | Timing side-channel username enum | +2 pts | 低 |
| P9 | CSP bypass techniques | +2 pts | 低 |
### 10.2 Quick Wins(高影响,低工作量)
```
1. JWT Algorithm Confusion — adicionar teste none/HS256 ao AuthFlow [+4 pts, ~2h]
2. GraphQL Batching Attack — multiplicar queries em single request [+2 pts, ~1h]
3. Timing Side-Channel — medir response time para username enum [+2 pts, ~1h]
4. CSP Bypass — testar unsafe-inline, data:, JSONP callback [+2 pts, ~1h]
───────────────────────────────────────────────────
TOTAL: +10 pts com ~5h de desenvolvimento
Score projetado: 86/100 → Fronteira Level 4/5
```
### 10.3 分数目标
```
ATUAL: 76/100 (Level 4)
SEM Persistence/0day: 92/100 (Level 4+)
META 1 (Quick Wins): 86/100 → Level 4+ firme
META 2 (P0-P2): 94/100 → Level 4/5 fronteira
META 3 (P0-P5): 99/100 → Level 5 (APT minus persistence)
```
## 结论
MSE 作为 **Red Team Level 4** 运行,拥有 **100% 的真实探测** 和 **零模拟**。8 个决策引擎链在 RiskScoreEngine v2 修复后在数学上是连贯的。系统覆盖了 81% 的 MITRE ATT&CK 战术(12 个类别)和 95% 的 OWASP Top 10 主动向量。
将 MSE 与 APT Level 5 分开的差距是**设计使然**(持久化、零日漏洞、自定义 exploits)而非技术限制。在攻击性扫描器的范围内,MSE 在其类别中已**接近顶峰**。
**红队审计结束**
*本文档为只读。未对代码进行任何更改。*
*于 28/02/2026 由 MSE 生态系统自动审计生成。*标签:11阶段杀伤链, C2框架, CISA项目, Express后端, HTTP工具, IP 地址批量处理, MITM代理, PE 加载器, PostgreSQL数据库, Python安全工具, React前端, Socket.io, Stripe支付, Vite, Web报告查看器, 人工智能驱动, 企业级安全, 军事级扫描, 凭据中继, 加密, 安全学习资源, 安全测试, 实时处理, 密码管理, 攻击性安全, 攻击自动化, 智能数据窃取, 测试用例, 漏洞扫描器, 红队基础设施, 网络安全, 自主APT编排引擎, 自动化攻击模拟, 蒙特卡洛优化, 越权测试, 路由智能, 逆向工具, 隐私保护