rtexit-method 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -7
- package/packaged-assets/.agents/skills/rt-active-recon/SKILL.md +767 -0
- package/packaged-assets/.agents/skills/rt-active-recon/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-agent-breaker/SKILL.md +65 -0
- package/packaged-assets/.agents/skills/rt-agent-breaker/customize.toml +76 -0
- package/packaged-assets/.agents/skills/rt-agent-commander/SKILL.md +63 -0
- package/packaged-assets/.agents/skills/rt-agent-commander/customize.toml +67 -0
- package/packaged-assets/.agents/skills/rt-agent-ghost/SKILL.md +65 -0
- package/packaged-assets/.agents/skills/rt-agent-ghost/customize.toml +77 -0
- package/packaged-assets/.agents/skills/rt-agent-navigator/SKILL.md +62 -0
- package/packaged-assets/.agents/skills/rt-agent-navigator/customize.toml +61 -0
- package/packaged-assets/.agents/skills/rt-agent-phantom/SKILL.md +62 -0
- package/packaged-assets/.agents/skills/rt-agent-phantom/customize.toml +62 -0
- package/packaged-assets/.agents/skills/rt-agent-scout/SKILL.md +62 -0
- package/packaged-assets/.agents/skills/rt-agent-scout/customize.toml +61 -0
- package/packaged-assets/.agents/skills/rt-agent-scribe/SKILL.md +65 -0
- package/packaged-assets/.agents/skills/rt-agent-scribe/customize.toml +77 -0
- package/packaged-assets/.agents/skills/rt-attack-chain-builder/SKILL.md +476 -0
- package/packaged-assets/.agents/skills/rt-attack-chain-builder/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-attack-surface-map/SKILL.md +1209 -0
- package/packaged-assets/.agents/skills/rt-attack-surface-map/template.md +62 -0
- package/packaged-assets/.agents/skills/rt-autodoc/SKILL.md +258 -0
- package/packaged-assets/.agents/skills/rt-c2-operations/SKILL.md +1072 -0
- package/packaged-assets/.agents/skills/rt-c2-operations/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-compliance-mapper/SKILL.md +773 -0
- package/packaged-assets/.agents/skills/rt-create-sead/SKILL.md +74 -0
- package/packaged-assets/.agents/skills/rt-create-sead/template.md +89 -0
- package/packaged-assets/.agents/skills/rt-create-sead/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-credential-access/SKILL.md +756 -0
- package/packaged-assets/.agents/skills/rt-credential-hunt/SKILL.md +856 -0
- package/packaged-assets/.agents/skills/rt-credential-hunt/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-cvss-calculator/SKILL.md +542 -0
- package/packaged-assets/.agents/skills/rt-cvss-calculator/cvss4-matrix.csv +20 -0
- package/packaged-assets/.agents/skills/rt-data-exfiltration/SKILL.md +784 -0
- package/packaged-assets/.agents/skills/rt-defense-evasion/SKILL.md +987 -0
- package/packaged-assets/.agents/skills/rt-evidence-chain/SKILL.md +712 -0
- package/packaged-assets/.agents/skills/rt-evidence-chain/template.md +31 -0
- package/packaged-assets/.agents/skills/rt-executive-report/SKILL.md +718 -0
- package/packaged-assets/.agents/skills/rt-executive-report/template.md +38 -0
- package/packaged-assets/.agents/skills/rt-executive-report/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-active-directory/SKILL.md +1078 -0
- package/packaged-assets/.agents/skills/rt-exploit-active-directory/ad-checklist.csv +12 -0
- package/packaged-assets/.agents/skills/rt-exploit-active-directory/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-android/SKILL.md +1329 -0
- package/packaged-assets/.agents/skills/rt-exploit-android/masvs-checklist.csv +10 -0
- package/packaged-assets/.agents/skills/rt-exploit-android/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-api/SKILL.md +1547 -0
- package/packaged-assets/.agents/skills/rt-exploit-api/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-auth/SKILL.md +1949 -0
- package/packaged-assets/.agents/skills/rt-exploit-auth/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-bec/SKILL.md +69 -0
- package/packaged-assets/.agents/skills/rt-exploit-cloud-aws/SKILL.md +865 -0
- package/packaged-assets/.agents/skills/rt-exploit-cloud-aws/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-cloud-azure/SKILL.md +1258 -0
- package/packaged-assets/.agents/skills/rt-exploit-cloud-gcp/SKILL.md +981 -0
- package/packaged-assets/.agents/skills/rt-exploit-containers/SKILL.md +55 -0
- package/packaged-assets/.agents/skills/rt-exploit-databases/SKILL.md +1374 -0
- package/packaged-assets/.agents/skills/rt-exploit-desktop-mac/SKILL.md +834 -0
- package/packaged-assets/.agents/skills/rt-exploit-desktop-win/SKILL.md +903 -0
- package/packaged-assets/.agents/skills/rt-exploit-desktop-win/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-dotnet/SKILL.md +945 -0
- package/packaged-assets/.agents/skills/rt-exploit-elasticsearch/SKILL.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-electron/SKILL.md +1023 -0
- package/packaged-assets/.agents/skills/rt-exploit-electron/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-file-upload/SKILL.md +1576 -0
- package/packaged-assets/.agents/skills/rt-exploit-file-upload/payloads/README.md +4 -0
- package/packaged-assets/.agents/skills/rt-exploit-file-upload/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-firebase/SKILL.md +54 -0
- package/packaged-assets/.agents/skills/rt-exploit-frameworks/SKILL.md +967 -0
- package/packaged-assets/.agents/skills/rt-exploit-idor/SKILL.md +1693 -0
- package/packaged-assets/.agents/skills/rt-exploit-idor/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-injection/SKILL.md +1860 -0
- package/packaged-assets/.agents/skills/rt-exploit-injection/payloads/sqlmap-tampers.txt +22 -0
- package/packaged-assets/.agents/skills/rt-exploit-injection/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-ios/SKILL.md +1214 -0
- package/packaged-assets/.agents/skills/rt-exploit-ios/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-iot/SKILL.md +91 -0
- package/packaged-assets/.agents/skills/rt-exploit-iot/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-java/SKILL.md +1009 -0
- package/packaged-assets/.agents/skills/rt-exploit-jwt/SKILL.md +1327 -0
- package/packaged-assets/.agents/skills/rt-exploit-jwt/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-mongodb/SKILL.md +67 -0
- package/packaged-assets/.agents/skills/rt-exploit-mssql/SKILL.md +52 -0
- package/packaged-assets/.agents/skills/rt-exploit-mysql/SKILL.md +53 -0
- package/packaged-assets/.agents/skills/rt-exploit-network/SKILL.md +118 -0
- package/packaged-assets/.agents/skills/rt-exploit-network/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-nodejs/SKILL.md +852 -0
- package/packaged-assets/.agents/skills/rt-exploit-osticket/SKILL.md +63 -0
- package/packaged-assets/.agents/skills/rt-exploit-phishing/SKILL.md +173 -0
- package/packaged-assets/.agents/skills/rt-exploit-phishing/templates/README.md +4 -0
- package/packaged-assets/.agents/skills/rt-exploit-phishing/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-php/SKILL.md +1119 -0
- package/packaged-assets/.agents/skills/rt-exploit-physical/SKILL.md +63 -0
- package/packaged-assets/.agents/skills/rt-exploit-physical/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-postgresql/SKILL.md +67 -0
- package/packaged-assets/.agents/skills/rt-exploit-python/SKILL.md +986 -0
- package/packaged-assets/.agents/skills/rt-exploit-redis/SKILL.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-ruby/SKILL.md +61 -0
- package/packaged-assets/.agents/skills/rt-exploit-scada/SKILL.md +1091 -0
- package/packaged-assets/.agents/skills/rt-exploit-ssrf/SKILL.md +1528 -0
- package/packaged-assets/.agents/skills/rt-exploit-ssrf/payloads.txt +23 -0
- package/packaged-assets/.agents/skills/rt-exploit-ssrf/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-vishing/SKILL.md +121 -0
- package/packaged-assets/.agents/skills/rt-exploit-vishing/scripts.md +4 -0
- package/packaged-assets/.agents/skills/rt-exploit-web/SKILL.md +1902 -0
- package/packaged-assets/.agents/skills/rt-exploit-web/owasp-checklist.csv +14 -0
- package/packaged-assets/.agents/skills/rt-exploit-web/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-wireless/SKILL.md +71 -0
- package/packaged-assets/.agents/skills/rt-exploit-wordpress/SKILL.md +1565 -0
- package/packaged-assets/.agents/skills/rt-exploit-wordpress/cves.csv +7 -0
- package/packaged-assets/.agents/skills/rt-exploit-wordpress/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-exploit-xss/SKILL.md +1526 -0
- package/packaged-assets/.agents/skills/rt-exploit-xss/payloads.txt +18 -0
- package/packaged-assets/.agents/skills/rt-exploit-xss/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-finding-document/SKILL.md +687 -0
- package/packaged-assets/.agents/skills/rt-finding-document/template.md +71 -0
- package/packaged-assets/.agents/skills/rt-finding-document/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-finding-tracker/SKILL.md +216 -0
- package/packaged-assets/.agents/skills/rt-finding-tracker/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-help/SKILL.md +292 -0
- package/packaged-assets/.agents/skills/rt-help/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-js-analysis/SKILL.md +639 -0
- package/packaged-assets/.agents/skills/rt-js-analysis/patterns.txt +27 -0
- package/packaged-assets/.agents/skills/rt-js-analysis/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-kill-chain-map/SKILL.md +393 -0
- package/packaged-assets/.agents/skills/rt-lateral-movement/SKILL.md +1032 -0
- package/packaged-assets/.agents/skills/rt-lateral-movement/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-methodology-selector/SKILL.md +69 -0
- package/packaged-assets/.agents/skills/rt-methodology-selector/frameworks.csv +10 -0
- package/packaged-assets/.agents/skills/rt-methodology-selector/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-mitre-map/SKILL.md +668 -0
- package/packaged-assets/.agents/skills/rt-mitre-map/tactics.csv +16 -0
- package/packaged-assets/.agents/skills/rt-mitre-map/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-osint/SKILL.md +775 -0
- package/packaged-assets/.agents/skills/rt-osint/osint-sources.csv +12 -0
- package/packaged-assets/.agents/skills/rt-osint/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-party-mode/SKILL.md +249 -0
- package/packaged-assets/.agents/skills/rt-party-mode/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-persistence/SKILL.md +1146 -0
- package/packaged-assets/.agents/skills/rt-persistence/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-poc-writer/SKILL.md +640 -0
- package/packaged-assets/.agents/skills/rt-post-exploitation/SKILL.md +998 -0
- package/packaged-assets/.agents/skills/rt-post-exploitation/linux-checklist.csv +10 -0
- package/packaged-assets/.agents/skills/rt-post-exploitation/windows-checklist.csv +10 -0
- package/packaged-assets/.agents/skills/rt-post-exploitation/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-privilege-escalation/SKILL.md +1027 -0
- package/packaged-assets/.agents/skills/rt-privilege-escalation/linux-checklist.csv +10 -0
- package/packaged-assets/.agents/skills/rt-privilege-escalation/win-checklist.csv +10 -0
- package/packaged-assets/.agents/skills/rt-privilege-escalation/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-remediation-roadmap/SKILL.md +665 -0
- package/packaged-assets/.agents/skills/rt-remediation-roadmap/template.md +28 -0
- package/packaged-assets/.agents/skills/rt-risk-matrix/SKILL.md +232 -0
- package/packaged-assets/.agents/skills/rt-rules-of-engagement/SKILL.md +62 -0
- package/packaged-assets/.agents/skills/rt-rules-of-engagement/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-scenario-c001/SKILL.md +71 -0
- package/packaged-assets/.agents/skills/rt-scenario-c002/SKILL.md +69 -0
- package/packaged-assets/.agents/skills/rt-scenario-c003/SKILL.md +71 -0
- package/packaged-assets/.agents/skills/rt-scenario-c004/SKILL.md +71 -0
- package/packaged-assets/.agents/skills/rt-scenario-c005/SKILL.md +72 -0
- package/packaged-assets/.agents/skills/rt-scenario-d001/SKILL.md +378 -0
- package/packaged-assets/.agents/skills/rt-scenario-d002/SKILL.md +392 -0
- package/packaged-assets/.agents/skills/rt-scenario-d003/SKILL.md +522 -0
- package/packaged-assets/.agents/skills/rt-scenario-d004/SKILL.md +373 -0
- package/packaged-assets/.agents/skills/rt-scenario-d005/SKILL.md +458 -0
- package/packaged-assets/.agents/skills/rt-scenario-library/SKILL.md +292 -0
- package/packaged-assets/.agents/skills/rt-scenario-library/scenarios.csv +32 -0
- package/packaged-assets/.agents/skills/rt-scenario-m001/SKILL.md +796 -0
- package/packaged-assets/.agents/skills/rt-scenario-m002/SKILL.md +723 -0
- package/packaged-assets/.agents/skills/rt-scenario-m003/SKILL.md +463 -0
- package/packaged-assets/.agents/skills/rt-scenario-m004/SKILL.md +449 -0
- package/packaged-assets/.agents/skills/rt-scenario-m005/SKILL.md +505 -0
- package/packaged-assets/.agents/skills/rt-scenario-n001/SKILL.md +573 -0
- package/packaged-assets/.agents/skills/rt-scenario-n002/SKILL.md +112 -0
- package/packaged-assets/.agents/skills/rt-scenario-n003/SKILL.md +100 -0
- package/packaged-assets/.agents/skills/rt-scenario-n004/SKILL.md +90 -0
- package/packaged-assets/.agents/skills/rt-scenario-n005/SKILL.md +71 -0
- package/packaged-assets/.agents/skills/rt-scenario-w001/SKILL.md +635 -0
- package/packaged-assets/.agents/skills/rt-scenario-w002/SKILL.md +612 -0
- package/packaged-assets/.agents/skills/rt-scenario-w003/SKILL.md +449 -0
- package/packaged-assets/.agents/skills/rt-scenario-w004/SKILL.md +648 -0
- package/packaged-assets/.agents/skills/rt-scenario-w005/SKILL.md +479 -0
- package/packaged-assets/.agents/skills/rt-scenario-w006/SKILL.md +443 -0
- package/packaged-assets/.agents/skills/rt-scenario-w007/SKILL.md +494 -0
- package/packaged-assets/.agents/skills/rt-scenario-w008/SKILL.md +576 -0
- package/packaged-assets/.agents/skills/rt-scenario-w009/SKILL.md +518 -0
- package/packaged-assets/.agents/skills/rt-scenario-w010/SKILL.md +574 -0
- package/packaged-assets/.agents/skills/rt-scope-definition/SKILL.md +79 -0
- package/packaged-assets/.agents/skills/rt-scope-definition/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-shodan-recon/SKILL.md +880 -0
- package/packaged-assets/.agents/skills/rt-status/SKILL.md +64 -0
- package/packaged-assets/.agents/skills/rt-subdomain-enum/SKILL.md +906 -0
- package/packaged-assets/.agents/skills/rt-subdomain-enum/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-technical-report/SKILL.md +710 -0
- package/packaged-assets/.agents/skills/rt-technical-report/template.md +41 -0
- package/packaged-assets/.agents/skills/rt-technical-report/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-threat-model/SKILL.md +59 -0
- package/packaged-assets/.agents/skills/rt-threat-model/template.md +32 -0
- package/packaged-assets/.agents/skills/rt-threat-model/workflow.md +68 -0
- package/packaged-assets/.agents/skills/rt-timeline/SKILL.md +338 -0
- package/packaged-assets/RTEXIT.md +127 -0
- package/tools/installer/commands/install.js +0 -1
- package/tools/installer/lib/asset-manifest.js +10 -5
- package/tools/installer/lib/banner.js +14 -6
- package/tools/installer/lib/copy-assets.js +5 -2
- package/tools/installer/lib/prompts.js +1 -11
- package/tools/installer/lib/write-config.js +8 -2
- /package/{_rtexit → packaged-assets/_rtexit}/config.toml +0 -0
- /package/{_rtexit → packaged-assets/_rtexit}/config.user.toml +0 -0
- /package/{_rtexit → packaged-assets/_rtexit}/custom/config.toml +0 -0
- /package/{_rtexit → packaged-assets/_rtexit}/scripts/autodoc_engine.py +0 -0
- /package/{_rtexit → packaged-assets/_rtexit}/scripts/finding_tracker.py +0 -0
- /package/{_rtexit → packaged-assets/_rtexit}/scripts/resolve_config.py +0 -0
- /package/{_rtexit → packaged-assets/_rtexit}/scripts/resolve_customization.py +0 -0
- /package/{resources → packaged-assets/resources}/certifications.md +0 -0
- /package/{resources → packaged-assets/resources}/payloads.md +0 -0
- /package/{resources → packaged-assets/resources}/tools.md +0 -0
- /package/{resources → packaged-assets/resources}/wordlists.md +0 -0
- /package/{templates → packaged-assets/templates}/attack-chain-template.md +0 -0
- /package/{templates → packaged-assets/templates}/executive-report-template.md +0 -0
- /package/{templates → packaged-assets/templates}/executive-report.md +0 -0
- /package/{templates → packaged-assets/templates}/finding-template.md +0 -0
- /package/{templates → packaged-assets/templates}/remediation-roadmap.md +0 -0
- /package/{templates → packaged-assets/templates}/sead-template.md +0 -0
- /package/{templates → packaged-assets/templates}/technical-report.md +0 -0
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rt-attack-chain-builder
|
|
3
|
+
description: "Build multi-step attack chains by connecting individual findings into kill chain narratives. Shows how finding A enables finding B enables finding C leading to critical impact. Creates Mermaid flow diagrams and maps each step to MITRE ATT&CK technique. Used in technical report attack chain section and executive narrative."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# rt-attack-chain-builder
|
|
7
|
+
|
|
8
|
+
## 1. Purpose and When to Use
|
|
9
|
+
|
|
10
|
+
The attack chain builder is distinct from the kill chain map. The **kill chain map** (`rt-kill-chain-map`) organizes findings into the seven Lockheed Martin phases as a high-level executive artifact. The **attack chain builder** constructs granular, multi-step dependency chains — it proves causality: finding A made finding B possible; finding B exposed the credential that enabled finding C; finding C resulted in the critical impact. This is the technical analyst's tool, not the executive's diagram.
|
|
11
|
+
|
|
12
|
+
Use this skill when:
|
|
13
|
+
|
|
14
|
+
- You need to demonstrate that a finding chain represents a complete exploit path, not isolated issues
|
|
15
|
+
- The technical report section on attack chains requires a step-by-step dependency narrative
|
|
16
|
+
- The client's blue team needs to understand exactly which remediations break which attack paths
|
|
17
|
+
- Multiple concurrent chains exist (e.g., one through the web application, one through VPN, one through a compromised contractor laptop) and you need to document each separately
|
|
18
|
+
- You want to show how a LOW finding, when chained with a MEDIUM finding, produces a CRITICAL business impact
|
|
19
|
+
|
|
20
|
+
**This skill is not for:**
|
|
21
|
+
- Organizing findings by kill chain phase (use `rt-kill-chain-map`)
|
|
22
|
+
- Mapping to ATT&CK tactic coverage breadth (use `rt-mitre-map`)
|
|
23
|
+
- Writing narrative prose for executives without technical diagrams (use `rt-executive-report`)
|
|
24
|
+
|
|
25
|
+
**Output file:** `_rtexit-output/docs/attack-chains/chain-[CHAIN-ID].md`
|
|
26
|
+
|
|
27
|
+
**When to run in the engagement lifecycle:**
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Recon → Exploitation → Post-Exploitation
|
|
31
|
+
↓
|
|
32
|
+
rt-attack-chain-builder
|
|
33
|
+
↓
|
|
34
|
+
rt-kill-chain-map + rt-technical-report
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Run after all findings for a given attack path are confirmed in `findings-master.csv`. Never build chains from unconfirmed findings.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Step-by-Step Workflow
|
|
42
|
+
|
|
43
|
+
### Step 1 — Identify Attack Chain Candidates
|
|
44
|
+
|
|
45
|
+
Pull all confirmed findings and look for dependency relationships:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python3 _rtexit/scripts/finding_tracker.py list --status CONFIRMED
|
|
49
|
+
python3 _rtexit/scripts/finding_tracker.py export --format csv
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
A dependency relationship exists when:
|
|
53
|
+
- One finding exposes credentials or tokens consumed by a later finding
|
|
54
|
+
- One finding grants network access that makes a later finding reachable
|
|
55
|
+
- One finding leaks architectural information (endpoint, version, internal hostname) that enables a later attack
|
|
56
|
+
- One finding reduces the difficulty of a later exploit (e.g., verbose errors exposing stack trace that simplifies SQLi development)
|
|
57
|
+
|
|
58
|
+
Group candidate findings into chains. Name each chain with a short label (e.g., `CHAIN-01-Jenkins-to-S3`, `CHAIN-02-IDOR-to-PII`).
|
|
59
|
+
|
|
60
|
+
**Example finding set for analysis:**
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
ID SEVERITY TITLE MITRE
|
|
64
|
+
F-001 INFO Subdomain Enum via CT Logs T1596.003
|
|
65
|
+
F-002 MEDIUM Swagger UI Exposed on dev-api T1592
|
|
66
|
+
F-003 LOW Verbose Error Messages — Django Debug T1592.002
|
|
67
|
+
F-004 HIGH IDOR in /api/v1/invoices T1212
|
|
68
|
+
F-005 CRITICAL SQL Injection in /api/v1/search T1190
|
|
69
|
+
F-006 HIGH Plaintext DB Password in Error Response T1552
|
|
70
|
+
F-007 CRITICAL Full DB Dump via SQLi — 800K Records T1005
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
From this set, two chains emerge:
|
|
74
|
+
|
|
75
|
+
- **CHAIN-01:** F-001 → F-002 → F-005 → F-007 (Recon → API discovery → SQLi → Data exfiltration)
|
|
76
|
+
- **CHAIN-02:** F-002 → F-003 → F-006 → F-004 (API schema → Debug info → Credential leak → IDOR exploitation)
|
|
77
|
+
|
|
78
|
+
### Step 2 — Define the Chain Step Table
|
|
79
|
+
|
|
80
|
+
For each chain, produce a dependency table. Every row is a step. The `Enables` column explicitly states what the previous finding provided that made this step possible.
|
|
81
|
+
|
|
82
|
+
**CHAIN-01 example:**
|
|
83
|
+
|
|
84
|
+
| Step | Finding | Technique | What the Attacker Gained | Enables Next Step |
|
|
85
|
+
|------|---------|-----------|--------------------------|-------------------|
|
|
86
|
+
| 1 | F-001 — Subdomain Enum via CT Logs | T1596.003 | Discovered `dev-api.acmecorp.com` and `jenkins.acmecorp.com` — 47 subdomains total | Knowledge of the API subdomain directs step 2 |
|
|
87
|
+
| 2 | F-002 — Swagger UI on dev-api | T1592 | Obtained full API schema: all 23 endpoints, parameter names, expected types, authentication model | Endpoint `/api/v1/search` identified as accepting unconstrained string input |
|
|
88
|
+
| 3 | F-005 — SQL Injection in /api/v1/search | T1190 | Blind time-based SQLi confirmed; automated with sqlmap to extract database schema | Database name `acme_prod`, table `customers` identified; dump possible |
|
|
89
|
+
| 4 | F-007 — Full DB Dump — 800K Records | T1005 | Complete dump of `customers` table: full names, email addresses, bcrypt hashes, payment card last-4 digits | Terminal impact — chain complete |
|
|
90
|
+
|
|
91
|
+
**Rules for the table:**
|
|
92
|
+
- Use real finding IDs and real titles — no paraphrase
|
|
93
|
+
- The `Technique` column must contain a valid ATT&CK technique ID, cross-referenced with `findings-master.csv`
|
|
94
|
+
- The `Enables Next Step` column must be a causal statement, not a description ("Endpoint discovered" is description; "Endpoint discovery directs focus to `/api/v1/search` as the injection candidate" is causation)
|
|
95
|
+
- If a finding in the chain was exploited in multiple ways, split the chain at that point and document both branches
|
|
96
|
+
|
|
97
|
+
### Step 3 — Identify the Chain's Critical Dependency (Pivot Point)
|
|
98
|
+
|
|
99
|
+
Every multi-step chain has one step that is the highest-leverage defensive intervention — the pivot point. If the attacker cannot complete this step, the chain collapses entirely.
|
|
100
|
+
|
|
101
|
+
Identify the pivot by asking: "If we removed this finding, which steps downstream would become impossible (not just harder)?"
|
|
102
|
+
|
|
103
|
+
Document the pivot:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
CHAIN-01 PIVOT POINT: Step 2 (F-002 — Swagger UI Exposed)
|
|
107
|
+
|
|
108
|
+
Rationale: Without the API schema, the attacker cannot identify /api/v1/search
|
|
109
|
+
as an injection candidate. The endpoint exists but is not guessable from the
|
|
110
|
+
domain structure alone. Removing the Swagger UI exposure collapses steps 3 and
|
|
111
|
+
4 even if the SQL injection vulnerability remains unremediated.
|
|
112
|
+
|
|
113
|
+
Remediation priority implication: F-002 (MEDIUM severity) has higher chain
|
|
114
|
+
disruption value than F-005 (CRITICAL severity). Remediation sequencing should
|
|
115
|
+
address F-002 first despite its lower standalone CVSS score.
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
This is one of the most operationally valuable outputs of this skill. It reframes remediation priority away from CVSS score alone and toward chain disruption value.
|
|
119
|
+
|
|
120
|
+
### Step 4 — Generate the Mermaid Chain Diagram
|
|
121
|
+
|
|
122
|
+
Produce a Mermaid flowchart showing the dependency chain. Use top-to-bottom flow. Findings are nodes; edges show what each step grants. Color-code by severity.
|
|
123
|
+
|
|
124
|
+
**Standard template for a single chain:**
|
|
125
|
+
|
|
126
|
+
````markdown
|
|
127
|
+
```mermaid
|
|
128
|
+
flowchart TD
|
|
129
|
+
F001["F-001 · INFO
|
|
130
|
+
Subdomain Enumeration
|
|
131
|
+
T1596.003
|
|
132
|
+
Discovers dev-api.acmecorp.com"]
|
|
133
|
+
|
|
134
|
+
F002["F-002 · MEDIUM
|
|
135
|
+
Swagger UI Exposed
|
|
136
|
+
T1592
|
|
137
|
+
Full API schema — 23 endpoints"]
|
|
138
|
+
|
|
139
|
+
F005["F-005 · CRITICAL
|
|
140
|
+
SQL Injection /api/v1/search
|
|
141
|
+
T1190
|
|
142
|
+
DB schema extracted via sqlmap"]
|
|
143
|
+
|
|
144
|
+
F007["F-007 · CRITICAL
|
|
145
|
+
Full DB Dump — 800K Records
|
|
146
|
+
T1005
|
|
147
|
+
customer names, emails, card data"]
|
|
148
|
+
|
|
149
|
+
PIVOT[/"PIVOT: Remove Swagger UI
|
|
150
|
+
→ Chain collapses at Step 2"/]
|
|
151
|
+
|
|
152
|
+
F001 -->|"Reveals dev-api subdomain"| F002
|
|
153
|
+
F002 -->|"Exposes /api/v1/search endpoint\nwith parameter types"| F005
|
|
154
|
+
F005 -->|"DB schema reveals customers table"| F007
|
|
155
|
+
|
|
156
|
+
F002 -.->|"Highest disruption value"| PIVOT
|
|
157
|
+
|
|
158
|
+
style F001 fill:#1a3a1a,stroke:#4a8a4a,color:#fff
|
|
159
|
+
style F002 fill:#2d2d1b,stroke:#8b8b2c,color:#fff
|
|
160
|
+
style F005 fill:#3d0000,stroke:#cc0000,color:#fff
|
|
161
|
+
style F007 fill:#3d0000,stroke:#ff0000,color:#fff
|
|
162
|
+
style PIVOT fill:#0a3d0a,stroke:#00cc00,color:#fff
|
|
163
|
+
```
|
|
164
|
+
````
|
|
165
|
+
|
|
166
|
+
**Color convention:**
|
|
167
|
+
- INFO findings: dark green `#1a3a1a`
|
|
168
|
+
- LOW findings: dark grey `#1a1a2e`
|
|
169
|
+
- MEDIUM findings: dark yellow `#2d2d1b`
|
|
170
|
+
- HIGH findings: dark orange `#3d1a00`
|
|
171
|
+
- CRITICAL findings: dark red `#3d0000`
|
|
172
|
+
- Pivot point node: green `#0a3d0a`
|
|
173
|
+
- Final impact node (last step): brightest red `#ff0000` border
|
|
174
|
+
|
|
175
|
+
**For multi-branch chains**, use `flowchart TD` with branching paths:
|
|
176
|
+
|
|
177
|
+
````markdown
|
|
178
|
+
```mermaid
|
|
179
|
+
flowchart TD
|
|
180
|
+
F002["F-002 · MEDIUM
|
|
181
|
+
Swagger UI — API Schema"]
|
|
182
|
+
|
|
183
|
+
F003["F-003 · LOW
|
|
184
|
+
Django Debug Mode Active"]
|
|
185
|
+
|
|
186
|
+
F005["F-005 · CRITICAL
|
|
187
|
+
SQL Injection /api/v1/search"]
|
|
188
|
+
|
|
189
|
+
F004["F-004 · HIGH
|
|
190
|
+
IDOR /api/v1/invoices"]
|
|
191
|
+
|
|
192
|
+
F006["F-006 · HIGH
|
|
193
|
+
Plaintext DB Password\nin Error Response"]
|
|
194
|
+
|
|
195
|
+
F007["F-007 · CRITICAL
|
|
196
|
+
DB Dump — 800K Records"]
|
|
197
|
+
|
|
198
|
+
F002 -->|"CHAIN-01: Endpoint discovery"| F005
|
|
199
|
+
F005 -->|"CHAIN-01: Schema dump"| F007
|
|
200
|
+
|
|
201
|
+
F002 -->|"CHAIN-02: Auth schema exposed"| F003
|
|
202
|
+
F003 -->|"CHAIN-02: Error reveals DB password"| F006
|
|
203
|
+
F006 -->|"CHAIN-02: Credential enables auth bypass"| F004
|
|
204
|
+
```
|
|
205
|
+
````
|
|
206
|
+
|
|
207
|
+
### Step 5 — Map Each Step to MITRE ATT&CK
|
|
208
|
+
|
|
209
|
+
For each step in the chain, produce the full ATT&CK annotation. This is more detailed than the chain table — it confirms the technique is correctly classified and provides the reference a SOC or purple team needs.
|
|
210
|
+
|
|
211
|
+
**Format:**
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
Step 2 — F-002: Swagger UI Exposed on dev-api.acmecorp.com
|
|
215
|
+
|
|
216
|
+
Tactic: TA0043 — Reconnaissance
|
|
217
|
+
Technique: T1592 — Gather Victim Host Information
|
|
218
|
+
Sub-technique: T1592.002 — Software (API documentation exposure)
|
|
219
|
+
|
|
220
|
+
Why this technique: The attacker passively retrieved the OpenAPI/Swagger
|
|
221
|
+
specification from an unauthenticated endpoint. No active exploitation
|
|
222
|
+
occurred at this step — the information was intentionally published but
|
|
223
|
+
inadvertently accessible to unauthenticated external parties.
|
|
224
|
+
|
|
225
|
+
Detection opportunity: Web server access logs will show GET requests to
|
|
226
|
+
/swagger-ui/, /api-docs, /openapi.json, or /v2/api-docs from external IPs.
|
|
227
|
+
A single request retrieving the full schema is sufficient for the attacker —
|
|
228
|
+
this is a single-event signal, not a pattern signal.
|
|
229
|
+
|
|
230
|
+
ATT&CK reference: https://attack.mitre.org/techniques/T1592/002/
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Verify each technique ID is current. Use ATT&CK v15 or later. If a finding maps to a deprecated technique, note the current replacement.
|
|
234
|
+
|
|
235
|
+
Run `rt-mitre-map` before this skill if MITRE annotations are absent from `findings-master.csv` — do not duplicate that work here; reference the output.
|
|
236
|
+
|
|
237
|
+
### Step 6 — Write the Chain Narrative (Technical Register)
|
|
238
|
+
|
|
239
|
+
The chain narrative is written for technical readers: SOC analysts, system owners, and architects who will implement the remediations. Unlike the executive narrative in `rt-kill-chain-map`, this narrative uses technical terminology and includes specific artifacts.
|
|
240
|
+
|
|
241
|
+
**Target length:** 300–500 words per chain.
|
|
242
|
+
|
|
243
|
+
**Structure:**
|
|
244
|
+
1. Opening sentence: state the starting condition and the terminal impact
|
|
245
|
+
2. Step-by-step walkthrough referencing finding IDs
|
|
246
|
+
3. Pivot point callout
|
|
247
|
+
4. Remediation sequencing recommendation
|
|
248
|
+
|
|
249
|
+
**Example narrative for CHAIN-01:**
|
|
250
|
+
|
|
251
|
+
> The attack chain began with passive external reconnaissance and terminated with the exfiltration of 800,000 customer records — a four-step dependency chain in which each finding provided the prerequisite for the next.
|
|
252
|
+
>
|
|
253
|
+
> During reconnaissance, certificate transparency logs exposed 47 subdomains of acmecorp.com (F-001: T1596.003). One of these — `dev-api.acmecorp.com` — was serving an unauthenticated Swagger UI instance that disclosed the complete API schema for the internal application, including all 23 endpoints, parameter names, expected data types, and authentication token format (F-002: T1592). Without F-002, the remaining chain steps require substantially more active enumeration effort and would likely produce alerts.
|
|
254
|
+
>
|
|
255
|
+
> The Swagger schema identified `/api/v1/search` as a string-input endpoint with no documented input constraints. Manual testing confirmed a blind time-based SQL injection vulnerability (F-005: T1190). The `search` parameter was passed unsanitized to a PostgreSQL `ILIKE` query. Using sqlmap with `--technique=T --dbms=postgresql`, the operator extracted the database schema within 40 minutes. The schema confirmed a table named `customers` containing 800,247 rows.
|
|
256
|
+
>
|
|
257
|
+
> The terminal step (F-007: T1005) was a complete table dump executed over seven separate sqlmap `--dump` sessions to avoid triggering rate limits. The exfiltrated data included full names, email addresses, bcrypt-hashed passwords, and payment card last-four digits with expiry dates for all records created before 2025-03-01.
|
|
258
|
+
>
|
|
259
|
+
> **Pivot point — F-002:** Removing the Swagger UI exposure collapses this chain at Step 2. The `/api/v1/search` endpoint cannot be identified from the domain structure alone, and the SQL injection vulnerability (F-005, CVSS 9.1) remains unexploitable without knowledge of the endpoint and its parameter schema. Remediation priority: address F-002 (MEDIUM, CVSS 5.3) before F-005 (CRITICAL, CVSS 9.1) because F-002 has higher chain disruption value. Fixing F-002 alone neutralizes the complete 4-step chain. Fixing F-005 alone reduces terminal impact but leaves three of four steps intact.
|
|
260
|
+
|
|
261
|
+
### Step 7 — Save the Chain Document
|
|
262
|
+
|
|
263
|
+
Write the completed chain document to the standard output path:
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
_rtexit-output/docs/attack-chains/chain-[CHAIN-ID].md
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Example:** `_rtexit-output/docs/attack-chains/chain-01-jenkins-to-s3.md`
|
|
270
|
+
|
|
271
|
+
**Document structure:**
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
# Attack Chain [ID] — [Short Label]
|
|
275
|
+
**Engagement:** [REF-YYYY-NNN]
|
|
276
|
+
**Date Completed:** YYYY-MM-DD
|
|
277
|
+
**Operator:** [callsign]
|
|
278
|
+
**Findings Covered:** F-001, F-002, F-005, F-007
|
|
279
|
+
**Terminal Impact:** [one-line statement of highest business impact]
|
|
280
|
+
|
|
281
|
+
## Chain Step Table
|
|
282
|
+
## Pivot Point Analysis
|
|
283
|
+
## Mermaid Chain Diagram
|
|
284
|
+
## MITRE ATT&CK Annotations (per step)
|
|
285
|
+
## Chain Narrative (Technical Register)
|
|
286
|
+
## Remediation Sequencing
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Step 8 — Log to Autodoc Engine
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
python3 _rtexit/scripts/autodoc_engine.py log \
|
|
293
|
+
--skill rt-attack-chain-builder \
|
|
294
|
+
--phase "Reporting" \
|
|
295
|
+
--note "Attack chain CHAIN-01 built — 4 steps, pivot at F-002, terminal impact 800K records" \
|
|
296
|
+
--finding "F-001,F-002,F-005,F-007"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Log each chain separately. If you built three chains in one session, log three entries.
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 3. Integration with RTExit Scripts and Other Skills
|
|
304
|
+
|
|
305
|
+
### finding_tracker.py
|
|
306
|
+
|
|
307
|
+
Pull confirmed findings:
|
|
308
|
+
```bash
|
|
309
|
+
python3 _rtexit/scripts/finding_tracker.py list --status CONFIRMED
|
|
310
|
+
python3 _rtexit/scripts/finding_tracker.py export --format csv
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Update findings with chain membership (use the `notes` field to record chain participation):
|
|
314
|
+
```bash
|
|
315
|
+
python3 _rtexit/scripts/finding_tracker.py update F-002 --notes "CHAIN-01 step 2 (pivot), CHAIN-02 step 1"
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Check that every finding included in a chain is confirmed — reject potential findings:
|
|
319
|
+
```bash
|
|
320
|
+
python3 _rtexit/scripts/finding_tracker.py list --status POTENTIAL
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### autodoc_engine.py
|
|
324
|
+
|
|
325
|
+
Log chain construction start:
|
|
326
|
+
```bash
|
|
327
|
+
python3 _rtexit/scripts/autodoc_engine.py log \
|
|
328
|
+
--skill rt-attack-chain-builder \
|
|
329
|
+
--phase "Reporting" \
|
|
330
|
+
--note "Starting attack chain analysis — reviewing all confirmed findings for dependencies"
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Log each chain as completed:
|
|
334
|
+
```bash
|
|
335
|
+
python3 _rtexit/scripts/autodoc_engine.py log \
|
|
336
|
+
--skill rt-attack-chain-builder \
|
|
337
|
+
--phase "Reporting" \
|
|
338
|
+
--note "CHAIN-02 built — 4 steps, pivot at F-003 (Django Debug), terminal impact IDOR account takeover"
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Skill Dependencies and Sequencing
|
|
342
|
+
|
|
343
|
+
| Skill | Relationship to rt-attack-chain-builder |
|
|
344
|
+
|---|---|
|
|
345
|
+
| `rt-finding-document` | Run first. All findings must be documented before chain analysis. |
|
|
346
|
+
| `rt-mitre-map` | Run first. Chain diagrams reference MITRE technique IDs that rt-mitre-map assigns. |
|
|
347
|
+
| `rt-evidence-chain` | Run in parallel. Evidence for each finding in a chain should be logged before chain is built. |
|
|
348
|
+
| `rt-kill-chain-map` | Run after. The kill chain map consumes chains built by this skill to populate its phase table. |
|
|
349
|
+
| `rt-technical-report` | Run after. The technical report's attack chain section pulls from the chain documents produced here. |
|
|
350
|
+
| `rt-executive-report` | Run last. rt-attack-chain-builder output feeds the executive narrative via rt-kill-chain-map. |
|
|
351
|
+
| `rt-remediation-roadmap` | Run after. Pivot point analysis from each chain directly informs remediation priority scoring. |
|
|
352
|
+
|
|
353
|
+
### Passing Chain Output to rt-technical-report
|
|
354
|
+
|
|
355
|
+
The technical report's attack chain section references chain documents by path:
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
_rtexit-output/docs/attack-chains/chain-01-jenkins-to-s3.md
|
|
359
|
+
_rtexit-output/docs/attack-chains/chain-02-swagger-to-idor.md
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
When generating the technical report, include chain documents in context so the report skill can pull the chain table, Mermaid diagram, and narrative without reconstructing them.
|
|
363
|
+
|
|
364
|
+
### Passing Chain Pivot Points to rt-remediation-roadmap
|
|
365
|
+
|
|
366
|
+
The remediation roadmap uses pivot point analysis to produce a prioritized remediation list that differs from CVSS-only ordering. After building all chains, create a pivot summary:
|
|
367
|
+
|
|
368
|
+
```
|
|
369
|
+
CHAIN-01 PIVOT: F-002 (MEDIUM, CVSS 5.3) — breaks 4-step chain to 800K record exfiltration
|
|
370
|
+
CHAIN-02 PIVOT: F-003 (LOW, CVSS 3.1) — breaks 4-step chain to account takeover via IDOR
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
This input causes the remediation roadmap to elevate F-002 and F-003 above higher-CVSS findings that are not chain pivots.
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## 4. Example Outputs and Interactions
|
|
378
|
+
|
|
379
|
+
### Example: Operator Invoking the Skill
|
|
380
|
+
|
|
381
|
+
**Operator prompt:**
|
|
382
|
+
> "Run rt-attack-chain-builder. I have 7 confirmed findings. Pull from the tracker and build chains."
|
|
383
|
+
|
|
384
|
+
**Skill response flow:**
|
|
385
|
+
1. Load all confirmed findings from `findings-master.csv`
|
|
386
|
+
2. Display the finding list with IDs, titles, severities, and MITRE annotations
|
|
387
|
+
3. Ask the operator to confirm which findings form chains or proceed with automated dependency analysis
|
|
388
|
+
4. Identify 2 candidate chains from dependency analysis
|
|
389
|
+
5. Build CHAIN-01 (4 steps) and CHAIN-02 (4 steps)
|
|
390
|
+
6. Produce chain tables, pivot analysis, Mermaid diagrams, MITRE annotations, and narratives for both
|
|
391
|
+
7. Save to `_rtexit-output/docs/attack-chains/`
|
|
392
|
+
8. Log both chains to autodoc engine
|
|
393
|
+
|
|
394
|
+
**Operator prompt (manual chain specification):**
|
|
395
|
+
> "Build an attack chain from F-003 to F-006 to F-004. CHAIN-02. Label it IDOR-credential-chain."
|
|
396
|
+
|
|
397
|
+
**Skill response flow:**
|
|
398
|
+
1. Pull F-003, F-006, and F-004 from the tracker
|
|
399
|
+
2. Verify all three are CONFIRMED
|
|
400
|
+
3. Build the 3-step chain table with the operator-specified ordering
|
|
401
|
+
4. Identify pivot (requires asking or inferring from the dependency logic)
|
|
402
|
+
5. Generate diagram labeled `chain-02-idor-credential-chain`
|
|
403
|
+
6. Save to `_rtexit-output/docs/attack-chains/chain-02-idor-credential-chain.md`
|
|
404
|
+
|
|
405
|
+
### Example: Complete Chain Document Output
|
|
406
|
+
|
|
407
|
+
```markdown
|
|
408
|
+
# Attack Chain 01 — Jenkins to S3 Exfiltration
|
|
409
|
+
**Engagement:** RT-2026-007
|
|
410
|
+
**Date Completed:** 2026-05-15
|
|
411
|
+
**Operator:** Ghost
|
|
412
|
+
**Findings Covered:** F-001, F-002, F-005, F-007
|
|
413
|
+
**Terminal Impact:** Exfiltration of 800,000 customer records from production S3 backup bucket
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## Chain Step Table
|
|
418
|
+
|
|
419
|
+
| Step | Finding | Technique | Gained | Enables |
|
|
420
|
+
|------|---------|-----------|--------|---------|
|
|
421
|
+
| 1 | F-001 INFO — Subdomain Enum | T1596.003 | 47 subdomains including dev-api | Reveals dev-api.acmecorp.com as target |
|
|
422
|
+
| 2 | F-002 MEDIUM — Swagger UI Exposed ★PIVOT | T1592 | Full API schema, 23 endpoints | Identifies /api/v1/search as injection candidate |
|
|
423
|
+
| 3 | F-005 CRITICAL — SQL Injection | T1190 | PostgreSQL access, full schema via sqlmap | Confirms customers table with 800K rows |
|
|
424
|
+
| 4 | F-007 CRITICAL — DB Dump 800K Records | T1005 | Full customer PII exfiltrated | Terminal impact — chain complete |
|
|
425
|
+
|
|
426
|
+
★ PIVOT: Removing F-002 collapses steps 3 and 4.
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## Mermaid Chain Diagram
|
|
431
|
+
|
|
432
|
+
[diagram as produced in Step 4]
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## MITRE ATT&CK Annotations
|
|
437
|
+
|
|
438
|
+
[per-step annotations as produced in Step 5]
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## Chain Narrative
|
|
443
|
+
|
|
444
|
+
[narrative as produced in Step 6]
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## Remediation Sequencing
|
|
449
|
+
|
|
450
|
+
1. F-002 (MEDIUM) — Disable Swagger UI on external-facing environments. CHAIN PIVOT.
|
|
451
|
+
2. F-005 (CRITICAL) — Parameterize all database queries; implement WAF SQL injection rule.
|
|
452
|
+
3. F-007 (CRITICAL) — Restrict S3 bucket access to VPC endpoint; enable CloudTrail alerting on bulk GetObject.
|
|
453
|
+
4. F-001 (INFO) — No direct remediation; monitor CT logs for your own domains to detect attacker recon.
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## 5. Practical Usage Tips
|
|
459
|
+
|
|
460
|
+
**Start with dependency analysis, not CVSS ordering.** Open the CSV sorted by `phase`, not `severity`. Chains form along temporal and technical dependencies, not severity scores. A LOW finding can be the pivot of a CRITICAL chain.
|
|
461
|
+
|
|
462
|
+
**One Mermaid diagram per chain, not one diagram for all chains.** A single diagram with 7 findings and two crossing chains is unreadable. Produce one diagram per chain. If chains share a finding (e.g., a recon finding that enables two different chains), duplicate that node in each diagram with a note that it appears in both chains.
|
|
463
|
+
|
|
464
|
+
**Pivot analysis changes the remediation conversation.** When a MEDIUM finding is identified as the pivot for a CRITICAL-impact chain, lead with that fact in the client debrief. It reframes the conversation from "you have CVSS 9.8 vulnerabilities" to "there is one MEDIUM-severity fix that collapses your most dangerous attack path entirely."
|
|
465
|
+
|
|
466
|
+
**Verify MITRE technique IDs before logging.** ATT&CK is versioned. Technique IDs change between versions — sub-techniques are added, parent techniques are deprecated. Cross-reference every ID against ATT&CK v15 or the current version at attack.mitre.org before writing the chain document. An incorrect technique ID in a deliverable damages credibility.
|
|
467
|
+
|
|
468
|
+
**Do not invent dependencies.** A chain step is only valid if the previous step demonstrably provided something the next step required. If two findings happened sequentially but were independently exploitable, they are parallel findings, not a chain. Document parallel findings as separate standalone issues. Overstating chain depth inflates perceived impact and can be challenged in client review.
|
|
469
|
+
|
|
470
|
+
**Log chains to autodoc_engine.py before closing the terminal session.** The timeline in `engagement/timeline.md` is the primary audit record of when each chain was built. Chains documented retroactively — after the report is submitted — lose evidentiary standing. Log immediately after each chain is complete.
|
|
471
|
+
|
|
472
|
+
**Cross-reference with rt-evidence-chain before finalizing.** Every finding in a chain must have its evidence logged with a SHA-256 hash in the custody log. A chain step with missing evidence is a chain step that cannot be demonstrated to the client. Run `rt-evidence-chain` for any findings not yet logged before finalizing the chain document.
|
|
473
|
+
|
|
474
|
+
**When multiple chains share a pivot, escalate that finding's priority.** A finding that is the pivot for two or more chains represents extraordinary remediation leverage. Tag it explicitly in the remediation roadmap as a multi-chain pivot and assign it the highest possible remediation priority regardless of its standalone CVSS score.
|
|
475
|
+
|
|
476
|
+
**Name output files descriptively.** `chain-01.md` is useless six months later. Use `chain-01-jenkins-default-creds-to-rce.md` or `chain-02-swagger-idor-credential-exfil.md`. The filename is the first thing a QA reviewer sees and the first thing a client's security team searches for.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Workflow - rt-attack-chain-builder
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This workflow standardizes how $skill is executed inside RTExit. It is designed for authorized engagements, evidence-first documentation, and consistent handoff into reporting.
|
|
6
|
+
|
|
7
|
+
## Authorization Gate
|
|
8
|
+
|
|
9
|
+
Before execution, confirm:
|
|
10
|
+
|
|
11
|
+
- SEAD exists and explicitly covers the target asset or activity.
|
|
12
|
+
- Rules of Engagement define allowed techniques, rate limits, and stop conditions.
|
|
13
|
+
- The operator knows the evidence handling rules.
|
|
14
|
+
- Any active or sensitive validation has client approval.
|
|
15
|
+
|
|
16
|
+
If any item is unclear, pause and invoke
|
|
17
|
+
|
|
18
|
+
## Required Inputs
|
|
19
|
+
|
|
20
|
+
| Input | Source | Notes |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Engagement reference | _rtexit/config.toml or SEAD | Used in output names. |
|
|
23
|
+
| Target asset(s) | Scope document | Must be explicitly approved. |
|
|
24
|
+
| Operator name | Config/user context | Used in timeline entries. |
|
|
25
|
+
| Evidence directory | _rtexit-output/docs/evidence/ | Store logs, screenshots, and artifacts. |
|
|
26
|
+
| Finding tracker | _rtexit-output/docs/findings/ | Create/update findings when confirmed. |
|
|
27
|
+
|
|
28
|
+
## Execution Steps
|
|
29
|
+
|
|
30
|
+
1. Load current engagement configuration.
|
|
31
|
+
2. Read scope, exclusions, and current findings.
|
|
32
|
+
3. Build a small test plan for this skill with target, expected control, and evidence type.
|
|
33
|
+
4. Run the lowest-risk validation first.
|
|
34
|
+
5. Capture baseline behavior before proof behavior.
|
|
35
|
+
6. Record exact timestamp, account/role used, and affected asset.
|
|
36
|
+
7. Stop when evidence is sufficient; avoid unnecessary data access.
|
|
37
|
+
8. Create or update findings through the RTExit finding tracker.
|
|
38
|
+
9. Map remediation owner and recommended timeline.
|
|
39
|
+
10. Add a timeline entry and evidence chain entry.
|
|
40
|
+
|
|
41
|
+
## Evidence Requirements
|
|
42
|
+
|
|
43
|
+
| Evidence | Required? | Notes |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| Command or action summary | Yes | Redact secrets and tokens. |
|
|
46
|
+
| Screenshot or transcript | If useful | Store under evidence folder. |
|
|
47
|
+
| Request/response pair | For web/API | Redact cookies and bearer tokens. |
|
|
48
|
+
| Config excerpt | For cloud/infra | Include only relevant lines. |
|
|
49
|
+
| Business impact note | Yes | Explain why it matters. |
|
|
50
|
+
|
|
51
|
+
## Autodoc Commands
|
|
52
|
+
|
|
53
|
+
`ash
|
|
54
|
+
python _rtexit/scripts/autodoc_engine.py log --skill rt-attack-chain-builder --phase auto --cmd "workflow execution" --output "summary"
|
|
55
|
+
python _rtexit/scripts/finding_tracker.py list
|
|
56
|
+
`
|
|
57
|
+
|
|
58
|
+
## Completion Criteria
|
|
59
|
+
|
|
60
|
+
- Scope and authorization are referenced.
|
|
61
|
+
- Evidence is stored and redacted.
|
|
62
|
+
- Findings are added or explicitly marked as not found.
|
|
63
|
+
- Remediation guidance is actionable.
|
|
64
|
+
- Timeline and chain of custody are updated where applicable.
|
|
65
|
+
|
|
66
|
+
## Handoff
|
|
67
|
+
|
|
68
|
+
Send confirmed findings to
|