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,718 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rt-executive-report
|
|
3
|
+
description: "Generate executive-level penetration testing report for CEO/CISO/Board. Non-technical language, business-focused. Sections: cover page, executive summary (risk rating, key findings, business impact statements), risk statistics (chart), attack narrative (story format), remediation roadmap (prioritized table with timelines), and conclusion. Supports Arabic and English output."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# rt-executive-report — Executive Red Team Report Skill
|
|
7
|
+
|
|
8
|
+
## 1. Overview and Purpose in Engagement Lifecycle
|
|
9
|
+
|
|
10
|
+
This skill generates the executive-facing deliverable at the end of a red team engagement. It is the final artifact consumed by decision-makers — the CEO, CISO, board members, and senior leadership — who need a clear picture of business risk without reading technical exploitation details.
|
|
11
|
+
|
|
12
|
+
### Where it sits in the lifecycle
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Reconnaissance → Exploitation → Post-Exploitation → Lateral Movement
|
|
16
|
+
|
|
|
17
|
+
finding_tracker.py
|
|
18
|
+
(collects raw findings)
|
|
19
|
+
|
|
|
20
|
+
autodoc_engine.py
|
|
21
|
+
(structures findings)
|
|
22
|
+
|
|
|
23
|
+
[rt-executive-report] <-- YOU ARE HERE
|
|
24
|
+
(executive output)
|
|
25
|
+
|
|
|
26
|
+
Debrief with client leadership
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The executive report is NOT the technical report. It does not contain CVE numbers, exploit code, or packet captures. It answers three questions leadership actually cares about:
|
|
30
|
+
- Can an attacker reach what matters most to us?
|
|
31
|
+
- How bad would it be if they did?
|
|
32
|
+
- What do we do about it, in what order, and at what cost?
|
|
33
|
+
|
|
34
|
+
### Supported output languages
|
|
35
|
+
|
|
36
|
+
- English (default)
|
|
37
|
+
- Arabic (right-to-left, formal business register — specify `lang: ar` in engagement metadata)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Step-by-Step Workflow
|
|
42
|
+
|
|
43
|
+
### Step 1 — Pull findings from finding_tracker.py
|
|
44
|
+
|
|
45
|
+
Run the tracker export before starting the report. The tracker holds all raw findings logged during the engagement.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python finding_tracker.py export --format json --output /tmp/findings_export.json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Expected output fields per finding:
|
|
52
|
+
- `id` — e.g. `RT-2024-007`
|
|
53
|
+
- `title` — short finding name
|
|
54
|
+
- `severity` — Critical / High / Medium / Low / Informational
|
|
55
|
+
- `cvss_score` — numeric (used for risk statistics section)
|
|
56
|
+
- `affected_asset` — hostname, IP, application name
|
|
57
|
+
- `business_function` — what the asset does in business terms
|
|
58
|
+
- `evidence_refs` — list of screenshot/log file paths
|
|
59
|
+
- `technical_detail` — full exploitation description (NOT used in exec report)
|
|
60
|
+
- `business_impact` — one paragraph, business language (THIS is used in exec report)
|
|
61
|
+
- `remediation_short` — one-line fix
|
|
62
|
+
- `remediation_detail` — full fix guidance
|
|
63
|
+
- `effort_estimate` — Low / Medium / High
|
|
64
|
+
- `fix_timeline_days` — recommended days to remediate
|
|
65
|
+
|
|
66
|
+
If `business_impact` is empty in the tracker, you must write it before proceeding. See Step 3 for guidance on writing business impact statements.
|
|
67
|
+
|
|
68
|
+
### Step 2 — Pull document metadata from autodoc_engine.py
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
python autodoc_engine.py meta --engagement <engagement_id>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
This returns:
|
|
75
|
+
- `client_name` — organization name
|
|
76
|
+
- `engagement_id` — unique reference code
|
|
77
|
+
- `test_start` / `test_end` — dates of testing window
|
|
78
|
+
- `scope_summary` — plain-English description of what was in scope
|
|
79
|
+
- `overall_risk_rating` — computed from finding severity distribution
|
|
80
|
+
- `red_team_lead` — name of report author
|
|
81
|
+
- `report_date` — date of delivery
|
|
82
|
+
|
|
83
|
+
If `overall_risk_rating` is not computed, calculate it manually:
|
|
84
|
+
- Any Critical finding = **Critical** overall
|
|
85
|
+
- No Critical but 3+ High = **High** overall
|
|
86
|
+
- 1-2 High findings = **High** overall
|
|
87
|
+
- Only Medium/Low = **Medium** or **Low**
|
|
88
|
+
|
|
89
|
+
### Step 3 — Write business impact statements (if missing)
|
|
90
|
+
|
|
91
|
+
Every finding needs a business impact statement before the exec report is written. This is the most important translation task. Use this formula:
|
|
92
|
+
|
|
93
|
+
> "If an attacker exploits [vulnerability in plain terms], they can [action in plain terms], which means [business consequence — data loss, operational disruption, regulatory breach, reputational harm, financial loss]."
|
|
94
|
+
|
|
95
|
+
Bad (technical): "SQL injection in the authentication endpoint allows unauthenticated retrieval of all rows from the users table via UNION-based extraction."
|
|
96
|
+
|
|
97
|
+
Good (executive): "An attacker with internet access can bypass the login page and download the complete customer database — including names, email addresses, and encrypted passwords — without any credentials. A breach of this data would trigger mandatory notification obligations under Egypt's Personal Data Protection Law No. 151 of 2020, expose the organization to regulatory fines, and damage customer trust built over years of operation."
|
|
98
|
+
|
|
99
|
+
### Step 4 — Determine overall risk rating and narrative arc
|
|
100
|
+
|
|
101
|
+
Before writing, decide on the overall story. What is the single most important message for leadership?
|
|
102
|
+
|
|
103
|
+
Common narratives:
|
|
104
|
+
- "We successfully simulated an external attacker reaching your most sensitive internal systems — this report explains how and what to do."
|
|
105
|
+
- "Your perimeter is stronger than expected, but an insider threat scenario revealed significant gaps in internal controls."
|
|
106
|
+
- "Three critical vulnerabilities, if chained together, would allow a ransomware operator to encrypt your core systems within 6 hours of initial access."
|
|
107
|
+
|
|
108
|
+
Write this narrative in one sentence. It becomes the opening of the executive summary.
|
|
109
|
+
|
|
110
|
+
### Step 5 — Build the report section by section
|
|
111
|
+
|
|
112
|
+
Work through sections in order. Each section is described in detail in Section 3 (Templates) below.
|
|
113
|
+
|
|
114
|
+
1. Cover Page
|
|
115
|
+
2. Executive Summary
|
|
116
|
+
3. Risk Statistics
|
|
117
|
+
4. Attack Narrative
|
|
118
|
+
5. Remediation Roadmap
|
|
119
|
+
6. Conclusion
|
|
120
|
+
|
|
121
|
+
### Step 6 — Quality check
|
|
122
|
+
|
|
123
|
+
Run through the quality checklist in Section 5 before delivering. Every item must pass.
|
|
124
|
+
|
|
125
|
+
### Step 7 — Generate final document via autodoc_engine.py
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
python autodoc_engine.py render \
|
|
129
|
+
--template executive_report \
|
|
130
|
+
--input /tmp/exec_report_draft.md \
|
|
131
|
+
--engagement <engagement_id> \
|
|
132
|
+
--lang en \
|
|
133
|
+
--output ./deliverables/<engagement_id>_executive_report.pdf
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
For Arabic output:
|
|
137
|
+
```bash
|
|
138
|
+
python autodoc_engine.py render \
|
|
139
|
+
--template executive_report \
|
|
140
|
+
--input /tmp/exec_report_draft.md \
|
|
141
|
+
--engagement <engagement_id> \
|
|
142
|
+
--lang ar \
|
|
143
|
+
--output ./deliverables/<engagement_id>_executive_report_AR.pdf
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 3. Templates with Example Content
|
|
149
|
+
|
|
150
|
+
### 3.1 Cover Page
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
154
|
+
|
|
155
|
+
RED TEAM ASSESSMENT
|
|
156
|
+
EXECUTIVE REPORT
|
|
157
|
+
|
|
158
|
+
Prepared for:
|
|
159
|
+
Nile Financial Group S.A.E.
|
|
160
|
+
|
|
161
|
+
Engagement Reference: RT-2024-NFG-003
|
|
162
|
+
Testing Period: 14 October 2024 – 1 November 2024
|
|
163
|
+
Report Date: 10 November 2024
|
|
164
|
+
|
|
165
|
+
Prepared by:
|
|
166
|
+
RTExit Security Operations
|
|
167
|
+
Confidentiality: RESTRICTED — Board and C-Suite Only
|
|
168
|
+
|
|
169
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
170
|
+
|
|
171
|
+
CLASSIFICATION NOTICE
|
|
172
|
+
This document contains sensitive security information about Nile Financial Group S.A.E.
|
|
173
|
+
Distribution is restricted to authorized executive personnel only. Unauthorized disclosure
|
|
174
|
+
may facilitate attacks against the organization and is prohibited under the terms of the
|
|
175
|
+
engagement agreement dated 1 October 2024.
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 3.2 Executive Summary
|
|
179
|
+
|
|
180
|
+
The executive summary must fit on one page. It contains four components: overall rating block, one-paragraph assessment, key findings list, and immediate actions.
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
184
|
+
EXECUTIVE SUMMARY
|
|
185
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
186
|
+
|
|
187
|
+
OVERALL RISK RATING: ██████████ CRITICAL
|
|
188
|
+
|
|
189
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
190
|
+
|
|
191
|
+
ASSESSMENT
|
|
192
|
+
|
|
193
|
+
During the three-week red team engagement, our team — operating as a motivated
|
|
194
|
+
external attacker with no prior knowledge of the organization — successfully
|
|
195
|
+
gained access to Nile Financial Group's core banking platform, extracted a
|
|
196
|
+
sample of 47,000 customer account records, and reached the internal payment
|
|
197
|
+
processing network from the public internet. This was achieved in 11 days of
|
|
198
|
+
active operation, well within the window in which a real attacker would act
|
|
199
|
+
before detection.
|
|
200
|
+
|
|
201
|
+
The organization's perimeter security tools detected our activity on Day 14
|
|
202
|
+
of the engagement. By that point, we had already achieved our primary
|
|
203
|
+
objectives and established persistence that would have survived a standard
|
|
204
|
+
incident response procedure.
|
|
205
|
+
|
|
206
|
+
This does not represent a failure of the security team — it reflects a gap
|
|
207
|
+
between the current investment in security controls and the sophistication of
|
|
208
|
+
threats targeting organizations of this scale and sector. The gaps are
|
|
209
|
+
well-defined, prioritized, and remediable. This report is a roadmap.
|
|
210
|
+
|
|
211
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
212
|
+
|
|
213
|
+
KEY FINDINGS
|
|
214
|
+
|
|
215
|
+
CRITICAL Customer data accessible without authentication from the internet
|
|
216
|
+
CRITICAL Payment network reachable from public-facing web application
|
|
217
|
+
HIGH Employees can be manipulated into granting attacker full access
|
|
218
|
+
via targeted email (phishing simulation: 34% success rate)
|
|
219
|
+
HIGH Administrative accounts lack multi-factor authentication
|
|
220
|
+
MEDIUM Security monitoring does not alert on abnormal data downloads
|
|
221
|
+
MEDIUM Third-party vendor portal shares network access with core systems
|
|
222
|
+
LOW Password policy does not prevent predictable credential choices
|
|
223
|
+
|
|
224
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
225
|
+
|
|
226
|
+
IMMEDIATE ACTIONS REQUIRED (before next board meeting)
|
|
227
|
+
|
|
228
|
+
1. Isolate the customer database application from the public internet
|
|
229
|
+
immediately — this is the highest-priority action.
|
|
230
|
+
2. Enable multi-factor authentication on all administrator accounts
|
|
231
|
+
within 72 hours.
|
|
232
|
+
3. Segment the payment network so it cannot be reached from the
|
|
233
|
+
web application server.
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 3.3 Risk Statistics
|
|
237
|
+
|
|
238
|
+
Render this as a visual section. When using autodoc_engine.py, the `risk_chart` component generates the bar chart automatically from the findings JSON. In the markdown draft, represent it as follows:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
242
|
+
RISK STATISTICS
|
|
243
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
244
|
+
|
|
245
|
+
FINDINGS BY SEVERITY
|
|
246
|
+
|
|
247
|
+
Critical ██████████████████████████ 2 findings
|
|
248
|
+
High █████████████████ 2 findings
|
|
249
|
+
Medium ████████████████████████ 3 findings (1 informational excluded)
|
|
250
|
+
Low █████████ 1 finding
|
|
251
|
+
─────────────
|
|
252
|
+
Total 8 findings
|
|
253
|
+
|
|
254
|
+
COMPARISON TO SECTOR BASELINE
|
|
255
|
+
|
|
256
|
+
Critical findings (this engagement): 2
|
|
257
|
+
Critical findings (financial sector avg, 2024): 0.8 per engagement
|
|
258
|
+
|
|
259
|
+
This result places Nile Financial Group in the highest-risk quartile
|
|
260
|
+
for organizations of comparable size and regulatory profile.
|
|
261
|
+
|
|
262
|
+
RISK TREND NOTE
|
|
263
|
+
These findings reflect the state of the environment as tested. They
|
|
264
|
+
do not imply past compromise — only present exposure. The purpose of
|
|
265
|
+
red team testing is to identify these gaps before an actual attacker does.
|
|
266
|
+
|
|
267
|
+
<!-- autodoc: insert risk_chart component here -->
|
|
268
|
+
<!-- autodoc: insert severity_pie component here -->
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 3.4 Attack Narrative
|
|
272
|
+
|
|
273
|
+
This is the most powerful section. Write it as a story — past tense, third person ("the team"), no jargon. The goal is that a board member who has never read a security report understands exactly what happened.
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
277
|
+
ATTACK NARRATIVE: HOW AN ATTACKER WOULD REACH YOUR
|
|
278
|
+
MOST SENSITIVE SYSTEMS
|
|
279
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
280
|
+
|
|
281
|
+
Day 1 — First Contact
|
|
282
|
+
|
|
283
|
+
The team began with only the same information available to any member of
|
|
284
|
+
the public: the organization's website and publicly registered internet
|
|
285
|
+
addresses. Within two hours, automated tools identified 14 internet-facing
|
|
286
|
+
systems belonging to Nile Financial Group, including a customer-facing web
|
|
287
|
+
portal, a mobile API endpoint, and an administrative interface that appeared
|
|
288
|
+
to belong to a legacy internal tool.
|
|
289
|
+
|
|
290
|
+
The administrative interface was accessible from the internet. This is the
|
|
291
|
+
equivalent of leaving a back door unlocked.
|
|
292
|
+
|
|
293
|
+
Day 3 — A Door Left Open
|
|
294
|
+
|
|
295
|
+
The legacy administrative interface was found to accept login attempts
|
|
296
|
+
without any limit on the number of tries. Using a list of commonly used
|
|
297
|
+
passwords (the kind available for free on the internet following years of
|
|
298
|
+
data breaches at other companies), the team gained access to an account
|
|
299
|
+
belonging to a former employee whose access had not been removed.
|
|
300
|
+
|
|
301
|
+
This is not a sophisticated technique. It is the most common method used
|
|
302
|
+
by criminal ransomware groups worldwide in 2024.
|
|
303
|
+
|
|
304
|
+
Day 5 — Inside the Network
|
|
305
|
+
|
|
306
|
+
The former employee's account had retained its original permissions from
|
|
307
|
+
2021, including access to the application that serves customer account
|
|
308
|
+
data. From that application, the team was able to download customer records
|
|
309
|
+
— names, account numbers, national ID numbers, and in some cases loan
|
|
310
|
+
repayment histories.
|
|
311
|
+
|
|
312
|
+
The security monitoring system did not generate an alert. The download of
|
|
313
|
+
47,000 records looked, to the automated systems, like normal business
|
|
314
|
+
activity.
|
|
315
|
+
|
|
316
|
+
Day 8 — Reaching the Core
|
|
317
|
+
|
|
318
|
+
The web application server was connected to the same internal network as
|
|
319
|
+
the payment processing infrastructure. Using the access established through
|
|
320
|
+
the customer portal, the team moved laterally to a server involved in
|
|
321
|
+
processing interbank transfers. At this point, the team stopped and
|
|
322
|
+
documented the finding rather than proceed further — the purpose of the
|
|
323
|
+
exercise is to demonstrate risk, not to cause harm.
|
|
324
|
+
|
|
325
|
+
In a real attack scenario, an adversary with this level of access could
|
|
326
|
+
potentially initiate fraudulent transfers, manipulate account balances,
|
|
327
|
+
or deploy ransomware that encrypts the payment infrastructure.
|
|
328
|
+
|
|
329
|
+
Day 14 — Detection
|
|
330
|
+
|
|
331
|
+
On Day 14, the security operations team flagged unusual activity and began
|
|
332
|
+
an investigation. By this point in a real attack, a sophisticated adversary
|
|
333
|
+
would have already completed their primary objectives and established a
|
|
334
|
+
secondary method of re-entry that would survive the response.
|
|
335
|
+
|
|
336
|
+
This timeline — 14 days to detection, 8 days to critical access — is the
|
|
337
|
+
central message of this engagement. It is the number the organization
|
|
338
|
+
should work to reduce.
|
|
339
|
+
|
|
340
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
341
|
+
WHAT MADE THIS POSSIBLE — IN PLAIN TERMS
|
|
342
|
+
|
|
343
|
+
Three things together created this outcome:
|
|
344
|
+
|
|
345
|
+
1. An internet-facing system that should not have been exposed
|
|
346
|
+
2. A former employee account that was never deactivated
|
|
347
|
+
3. A network that did not separate customer data from payment systems
|
|
348
|
+
|
|
349
|
+
Any one of these controls, had it been in place, would have stopped or
|
|
350
|
+
significantly slowed the attack chain.
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### 3.5 Remediation Roadmap
|
|
354
|
+
|
|
355
|
+
Present as a prioritized table. Group by timeline. Each item must have a plain-English description, an owner type (not a person's name — a role), and a realistic timeline.
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
359
|
+
REMEDIATION ROADMAP
|
|
360
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
361
|
+
|
|
362
|
+
IMMEDIATE (within 72 hours) — Stop active bleeding
|
|
363
|
+
|
|
364
|
+
ID Action Owner Effort
|
|
365
|
+
──────── ──────────────────────────────────────────── ─────────── ──────
|
|
366
|
+
RT-001 Remove the legacy admin portal from public IT Ops Low
|
|
367
|
+
internet access or shut it down entirely.
|
|
368
|
+
This system has no documented business need
|
|
369
|
+
for external exposure.
|
|
370
|
+
|
|
371
|
+
RT-002 Disable all accounts belonging to former IT / HR Low
|
|
372
|
+
employees. Conduct a full audit of all
|
|
373
|
+
active accounts and remove those not
|
|
374
|
+
associated with a current employee or
|
|
375
|
+
approved contractor within 48 hours.
|
|
376
|
+
|
|
377
|
+
RT-004 Enable multi-factor authentication on all IT Security Low
|
|
378
|
+
administrative and privileged accounts.
|
|
379
|
+
This single control would have prevented
|
|
380
|
+
the initial access in this engagement.
|
|
381
|
+
|
|
382
|
+
SHORT TERM (within 30 days) — Close the critical gaps
|
|
383
|
+
|
|
384
|
+
ID Action Owner Effort
|
|
385
|
+
──────── ──────────────────────────────────────────── ─────────── ──────
|
|
386
|
+
RT-003 Separate the payment processing network IT Arch. High
|
|
387
|
+
from the web application servers using
|
|
388
|
+
network segmentation. These two environments
|
|
389
|
+
have no legitimate reason to communicate
|
|
390
|
+
directly.
|
|
391
|
+
|
|
392
|
+
RT-005 Implement automated alerting when large Security Medium
|
|
393
|
+
volumes of customer records are downloaded Ops
|
|
394
|
+
within a short period. Establish a baseline
|
|
395
|
+
of normal data access and alert on deviation.
|
|
396
|
+
|
|
397
|
+
RT-007 Establish a formal process for reviewing IT / HR Low
|
|
398
|
+
and removing employee access when they
|
|
399
|
+
leave the organization (offboarding
|
|
400
|
+
checklist with IT sign-off required).
|
|
401
|
+
|
|
402
|
+
MEDIUM TERM (within 90 days) — Reduce attack surface
|
|
403
|
+
|
|
404
|
+
ID Action Owner Effort
|
|
405
|
+
──────── ──────────────────────────────────────────── ─────────── ──────
|
|
406
|
+
RT-006 Review and restrict the third-party vendor IT Arch. Medium
|
|
407
|
+
portal's network access. Vendors should
|
|
408
|
+
only reach the specific systems their
|
|
409
|
+
service requires — not the broader internal
|
|
410
|
+
network.
|
|
411
|
+
|
|
412
|
+
RT-008 Conduct a security awareness training HR / Low
|
|
413
|
+
program for all staff, with a focus on Security
|
|
414
|
+
recognizing phishing emails. The 34%
|
|
415
|
+
success rate in our phishing simulation
|
|
416
|
+
is significantly above the 10-15% benchmark
|
|
417
|
+
for well-trained organizations.
|
|
418
|
+
|
|
419
|
+
LONG TERM (within 6 months) — Build resilience
|
|
420
|
+
|
|
421
|
+
ID Action Owner Effort
|
|
422
|
+
──────── ──────────────────────────────────────────── ─────────── ──────
|
|
423
|
+
RT-009 Develop and test an incident response plan CISO High
|
|
424
|
+
specific to a data breach scenario. Include
|
|
425
|
+
regulatory notification steps per Egypt
|
|
426
|
+
PDPL No. 151/2020 and CBE requirements.
|
|
427
|
+
|
|
428
|
+
RT-010 Establish a recurring penetration testing CISO Medium
|
|
429
|
+
program — at minimum annually, and after
|
|
430
|
+
any major system changes.
|
|
431
|
+
|
|
432
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
433
|
+
|
|
434
|
+
INVESTMENT CONTEXT
|
|
435
|
+
|
|
436
|
+
The remediations marked Low effort above are largely configuration and
|
|
437
|
+
process changes that require minimal financial investment. The High-effort
|
|
438
|
+
items (network segmentation) require project planning but represent a
|
|
439
|
+
fundamental reduction in the organization's most serious risk exposure.
|
|
440
|
+
|
|
441
|
+
The cost of implementing all remediations in this roadmap is a fraction of
|
|
442
|
+
the potential cost of a data breach — which, under current Egyptian and
|
|
443
|
+
international regulatory frameworks, could include regulatory fines,
|
|
444
|
+
mandatory customer notification, legal liability, and reputational damage
|
|
445
|
+
affecting customer retention and investor confidence.
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### 3.6 Conclusion
|
|
449
|
+
|
|
450
|
+
```
|
|
451
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
452
|
+
CONCLUSION
|
|
453
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
454
|
+
|
|
455
|
+
Nile Financial Group engaged RTExit to stress-test its defenses against
|
|
456
|
+
a realistic attacker. The results of this engagement are serious but
|
|
457
|
+
not unusual for organizations at this stage of their security maturity
|
|
458
|
+
journey. More importantly, they are actionable.
|
|
459
|
+
|
|
460
|
+
The most important message from this assessment is this: the gaps that
|
|
461
|
+
allowed our team to reach your most sensitive systems are well-understood,
|
|
462
|
+
well-documented, and fixable. None of them require novel technology or
|
|
463
|
+
significant complexity. They require prioritization and follow-through.
|
|
464
|
+
|
|
465
|
+
The roadmap in this report is sequenced to deliver the greatest risk
|
|
466
|
+
reduction in the shortest time. Completing the immediate actions alone —
|
|
467
|
+
within 72 hours — would eliminate the initial access vector used in this
|
|
468
|
+
engagement entirely.
|
|
469
|
+
|
|
470
|
+
RTExit is available to support the remediation process, answer questions
|
|
471
|
+
from technical teams, and conduct a validation test once remediation
|
|
472
|
+
activities are complete. We recommend scheduling a follow-up assessment
|
|
473
|
+
within six months to confirm that the identified gaps have been closed
|
|
474
|
+
and to identify any new exposure that may have emerged.
|
|
475
|
+
|
|
476
|
+
We recognize that receiving findings of this nature is not easy. The
|
|
477
|
+
value of this work is in knowing — and in the ability to act before
|
|
478
|
+
a real attacker does.
|
|
479
|
+
|
|
480
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
481
|
+
|
|
482
|
+
POINT OF CONTACT
|
|
483
|
+
|
|
484
|
+
For questions regarding this report, please contact:
|
|
485
|
+
|
|
486
|
+
RTExit Security Operations
|
|
487
|
+
Engagement Reference: RT-2024-NFG-003
|
|
488
|
+
Report Date: 10 November 2024
|
|
489
|
+
|
|
490
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## 4. Integration with finding_tracker.py and autodoc_engine.py
|
|
496
|
+
|
|
497
|
+
### finding_tracker.py integration
|
|
498
|
+
|
|
499
|
+
The executive report draws on two fields from each finding record that are most commonly incomplete: `business_impact` and `business_function`. Before running autodoc_engine.py, verify these fields are populated for every Critical and High finding.
|
|
500
|
+
|
|
501
|
+
```bash
|
|
502
|
+
# Check for findings missing business_impact
|
|
503
|
+
python finding_tracker.py validate --field business_impact --severity Critical,High
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
If findings are missing `business_impact`, populate them directly:
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
python finding_tracker.py update RT-2024-007 \
|
|
510
|
+
--field business_impact \
|
|
511
|
+
--value "An unauthenticated attacker can download the complete customer database from the internet. This exposes personally identifiable information for all customers, triggering mandatory breach notification under PDPL No. 151/2020 and CBE Circular No. 7/2022, with potential regulatory sanctions and reputational harm."
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
The finding_tracker.py `export` command supports filtering by severity to focus the executive report on material findings only:
|
|
515
|
+
|
|
516
|
+
```bash
|
|
517
|
+
# Export only Critical and High findings for exec report
|
|
518
|
+
python finding_tracker.py export \
|
|
519
|
+
--format json \
|
|
520
|
+
--severity Critical,High \
|
|
521
|
+
--output /tmp/exec_findings.json
|
|
522
|
+
|
|
523
|
+
# Export all findings for remediation roadmap (includes Medium/Low)
|
|
524
|
+
python finding_tracker.py export \
|
|
525
|
+
--format json \
|
|
526
|
+
--output /tmp/all_findings.json
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
### autodoc_engine.py integration
|
|
530
|
+
|
|
531
|
+
The autodoc_engine.py script handles:
|
|
532
|
+
- Merging the markdown draft with engagement metadata
|
|
533
|
+
- Generating risk charts from severity data
|
|
534
|
+
- Applying the RTExit PDF template with correct branding
|
|
535
|
+
- Rendering Arabic output with RTL layout when `--lang ar` is specified
|
|
536
|
+
|
|
537
|
+
Key commands:
|
|
538
|
+
|
|
539
|
+
```bash
|
|
540
|
+
# Validate that all required sections are present in draft
|
|
541
|
+
python autodoc_engine.py validate \
|
|
542
|
+
--template executive_report \
|
|
543
|
+
--input /tmp/exec_report_draft.md
|
|
544
|
+
|
|
545
|
+
# Generate English PDF
|
|
546
|
+
python autodoc_engine.py render \
|
|
547
|
+
--template executive_report \
|
|
548
|
+
--input /tmp/exec_report_draft.md \
|
|
549
|
+
--findings /tmp/all_findings.json \
|
|
550
|
+
--engagement RT-2024-NFG-003 \
|
|
551
|
+
--lang en \
|
|
552
|
+
--output ./deliverables/RT-2024-NFG-003_executive_report_EN.pdf
|
|
553
|
+
|
|
554
|
+
# Generate Arabic PDF
|
|
555
|
+
python autodoc_engine.py render \
|
|
556
|
+
--template executive_report \
|
|
557
|
+
--input /tmp/exec_report_draft.md \
|
|
558
|
+
--findings /tmp/all_findings.json \
|
|
559
|
+
--engagement RT-2024-NFG-003 \
|
|
560
|
+
--lang ar \
|
|
561
|
+
--output ./deliverables/RT-2024-NFG-003_executive_report_AR.pdf
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
autodoc_engine.py injects the following automatically when rendering:
|
|
565
|
+
- `risk_chart` — horizontal bar chart, severity breakdown
|
|
566
|
+
- `severity_pie` — pie chart with Critical/High/Medium/Low proportions
|
|
567
|
+
- `remediation_table` — formatted table from findings JSON sorted by fix_timeline_days
|
|
568
|
+
- Cover page metadata (dates, engagement ID, client name) from engagement record
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
## 5. Quality Checklist
|
|
573
|
+
|
|
574
|
+
Run this checklist before delivering any executive report. Every item is a hard requirement.
|
|
575
|
+
|
|
576
|
+
### Language and tone
|
|
577
|
+
|
|
578
|
+
- [ ] Zero CVE numbers visible in the document
|
|
579
|
+
- [ ] Zero IP addresses or hostnames visible in the document (exception: cover page scope if client requests it)
|
|
580
|
+
- [ ] Zero exploit tool names (Metasploit, Burp, Cobalt Strike) visible to executives
|
|
581
|
+
- [ ] Every technical term has been replaced with a plain-English equivalent
|
|
582
|
+
- [ ] Passive voice has been minimized — findings should feel real and active, not abstract
|
|
583
|
+
- [ ] Business impact statements name a specific consequence (regulatory, financial, operational, reputational) — not generic phrases like "data could be exposed"
|
|
584
|
+
- [ ] Report can be understood by a reader with no security background
|
|
585
|
+
|
|
586
|
+
### Content completeness
|
|
587
|
+
|
|
588
|
+
- [ ] Cover page has correct client name, engagement ID, date range, and report date
|
|
589
|
+
- [ ] Overall risk rating is stated clearly and prominently
|
|
590
|
+
- [ ] Every Critical finding appears in the executive summary key findings list
|
|
591
|
+
- [ ] Attack narrative covers the full chain from initial access to deepest objective reached
|
|
592
|
+
- [ ] Time-to-detection is stated explicitly in the narrative
|
|
593
|
+
- [ ] Every Critical and High finding has a corresponding remediation roadmap entry
|
|
594
|
+
- [ ] Remediation entries have owner role, effort estimate, and timeline
|
|
595
|
+
- [ ] Conclusion includes a recommendation for follow-up testing
|
|
596
|
+
|
|
597
|
+
### Accuracy
|
|
598
|
+
|
|
599
|
+
- [ ] Finding count matches the finding_tracker.py export
|
|
600
|
+
- [ ] Overall risk rating matches the autodoc_engine.py computed rating
|
|
601
|
+
- [ ] Phishing success rate (if applicable) matches the tracker record
|
|
602
|
+
- [ ] All dates in the narrative are consistent with test_start / test_end metadata
|
|
603
|
+
- [ ] Regulatory references are correct for the client's jurisdiction
|
|
604
|
+
|
|
605
|
+
### Arabic output (when applicable)
|
|
606
|
+
|
|
607
|
+
- [ ] All section headers rendered in correct formal Arabic
|
|
608
|
+
- [ ] Risk rating terms use agreed Arabic equivalents (Critical = حرج, High = مرتفع, Medium = متوسط, Low = منخفض)
|
|
609
|
+
- [ ] Tables render correctly in RTL layout
|
|
610
|
+
- [ ] No English text appears in Arabic sections except proper nouns (company names, product names)
|
|
611
|
+
- [ ] Dates use the format agreed with client (Gregorian or Hijri)
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## 6. Example Output — Finished Executive Summary Block
|
|
616
|
+
|
|
617
|
+
This is what a completed, polished executive summary looks like. Use this as a reference for the quality standard required.
|
|
618
|
+
|
|
619
|
+
```
|
|
620
|
+
EXECUTIVE SUMMARY
|
|
621
|
+
|
|
622
|
+
OVERALL RISK RATING: CRITICAL
|
|
623
|
+
|
|
624
|
+
During a three-week controlled simulation conducted in October 2024, the RTExit
|
|
625
|
+
red team — operating as an external attacker with no insider knowledge — gained
|
|
626
|
+
access to Nile Financial Group's core banking platform and extracted a sample
|
|
627
|
+
of 47,000 customer records from the public internet in 11 days.
|
|
628
|
+
|
|
629
|
+
The security monitoring infrastructure detected this activity on Day 14 — after
|
|
630
|
+
the primary objectives had already been achieved. In a real attack, this gap
|
|
631
|
+
would have been sufficient for an adversary to complete a significant data theft,
|
|
632
|
+
initiate fraudulent transactions, or deploy ransomware.
|
|
633
|
+
|
|
634
|
+
The cause is not a single vulnerability. It is the combination of three
|
|
635
|
+
conditions that, together, removed every barrier between an internet-connected
|
|
636
|
+
attacker and the organization's most sensitive data:
|
|
637
|
+
|
|
638
|
+
First, a legacy administrative system was reachable from the public internet
|
|
639
|
+
with no business justification for that exposure.
|
|
640
|
+
|
|
641
|
+
Second, the account of a former employee — dormant for three years — remained
|
|
642
|
+
active with the same permissions it held during their employment.
|
|
643
|
+
|
|
644
|
+
Third, the network connecting the customer portal to the payment processing
|
|
645
|
+
infrastructure had no controls preventing movement between them.
|
|
646
|
+
|
|
647
|
+
No one of these conditions alone would have produced this outcome. Removing any
|
|
648
|
+
one of them would have stopped or significantly delayed the attack.
|
|
649
|
+
|
|
650
|
+
This report details what happened, what it means for the organization, and
|
|
651
|
+
exactly what to do — in priority order — to close these gaps.
|
|
652
|
+
|
|
653
|
+
KEY FINDINGS
|
|
654
|
+
|
|
655
|
+
CRITICAL Customer database accessible from the internet without login
|
|
656
|
+
credentials. Affects all 47,000+ customer records including
|
|
657
|
+
national ID numbers and account histories.
|
|
658
|
+
|
|
659
|
+
CRITICAL Payment processing network reachable from public-facing web
|
|
660
|
+
servers. A motivated attacker could attempt fraudulent transfers
|
|
661
|
+
or disrupt core banking operations from this position.
|
|
662
|
+
|
|
663
|
+
HIGH One in three employees provided credentials or clicked attacker-
|
|
664
|
+
controlled links during phishing simulation — more than double
|
|
665
|
+
the benchmark for trained workforces.
|
|
666
|
+
|
|
667
|
+
HIGH Administrative accounts protect organization-wide systems with
|
|
668
|
+
passwords only — no second factor required. Any stolen password
|
|
669
|
+
gives full administrative access.
|
|
670
|
+
|
|
671
|
+
IMMEDIATE ACTIONS
|
|
672
|
+
|
|
673
|
+
Before the next board meeting, three actions will materially reduce the
|
|
674
|
+
organization's exposure:
|
|
675
|
+
|
|
676
|
+
1. Remove the legacy administrative portal from public internet access today.
|
|
677
|
+
2. Audit and disable all accounts not linked to a current employee within 48 hours.
|
|
678
|
+
3. Enable multi-factor authentication on all administrative accounts within 72 hours.
|
|
679
|
+
|
|
680
|
+
These three actions would have prevented the attack chain demonstrated in
|
|
681
|
+
this engagement entirely.
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
---
|
|
685
|
+
|
|
686
|
+
## 7. Common Mistakes to Avoid
|
|
687
|
+
|
|
688
|
+
### Mistake 1 — Writing for the technical reader
|
|
689
|
+
|
|
690
|
+
The executive report is not a place to demonstrate technical depth. Phrases like "the target was vulnerable to unauthenticated SSRF via the X-Forwarded-For header, enabling access to the EC2 metadata endpoint" belong in the technical annex. In the executive report, this becomes: "A flaw in the web application allowed the team to trick the server into revealing internal access credentials — which were then used to enter systems that should not have been reachable from the internet."
|
|
691
|
+
|
|
692
|
+
### Mistake 2 — Burying the headline
|
|
693
|
+
|
|
694
|
+
Some reports open with scope, methodology, and disclaimers before the reader learns what actually happened. Executives read the first paragraph and decide whether to keep reading. Lead with the result: what was achieved, how quickly, and what it means.
|
|
695
|
+
|
|
696
|
+
### Mistake 3 — Using generic business impact language
|
|
697
|
+
|
|
698
|
+
"This vulnerability could lead to data exposure" is not a business impact statement. It is a placeholder. Business impact statements must be specific: which data, how much, what regulatory framework applies, what the consequence is. If you cannot be specific, return to finding_tracker.py and fill in the details before writing.
|
|
699
|
+
|
|
700
|
+
### Mistake 4 — Presenting the remediation roadmap as a flat list
|
|
701
|
+
|
|
702
|
+
Executives need to know what to do first. A flat list of eight items creates decision paralysis. Group by timeline (Immediate, Short Term, Medium Term, Long Term). Put the three most important items at the top with explicit urgency language. Every item should have an owner type and an effort level so leadership can delegate and track.
|
|
703
|
+
|
|
704
|
+
### Mistake 5 — Making the conclusion feel like a sales pitch
|
|
705
|
+
|
|
706
|
+
The conclusion should leave the reader feeling informed and empowered, not sold to. Avoid phrases like "RTExit's world-class team" or "cutting-edge methodology." The conclusion should restate the key message, affirm that the gaps are fixable, and offer concrete next steps. Keep it honest and direct.
|
|
707
|
+
|
|
708
|
+
### Mistake 6 — Inconsistent numbers
|
|
709
|
+
|
|
710
|
+
If the executive summary says "six critical findings" and the risk statistics section shows a chart with five, the client will notice and trust in the entire document erodes. Always generate the risk statistics section from the same finding_tracker.py export used for the narrative. Run `autodoc_engine.py validate` before final render to catch mismatches.
|
|
711
|
+
|
|
712
|
+
### Mistake 7 — Skipping the Arabic review pass
|
|
713
|
+
|
|
714
|
+
Arabic output from autodoc_engine.py is accurate in structure but must be reviewed by a native Arabic speaker before delivery to an Arabic-speaking board. Pay particular attention to: risk rating terminology (agree on terms with the client before the engagement closes), passive/active voice (Arabic business writing has different conventions), and table formatting in RTL layout. Never deliver Arabic output without a review pass.
|
|
715
|
+
|
|
716
|
+
### Mistake 8 — Omitting time-to-detection
|
|
717
|
+
|
|
718
|
+
Time-to-detection is one of the most powerful data points in the executive report. It makes the risk concrete and time-bound. Always state it explicitly in the attack narrative: "The security monitoring system detected our activity on Day 14 — three days after we had achieved our primary objective." If the security team did not detect the activity at all during the engagement window, that is even more important to state clearly and directly.
|