Skip to content
This repository was archived by the owner on Apr 13, 2026. It is now read-only.

Commit d96891a

Browse files
authored
Merge pull request #9 from initstring/docs
docs: Revamp docs and add screenshots
2 parents dde347c + 1422374 commit d96891a

14 files changed

Lines changed: 212 additions & 76 deletions

‎README.md‎

Lines changed: 13 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -10,89 +10,26 @@ TTPx is a platform for internal Red Teams to plan and analyze their operations.
1010
- Deep integration into MITRE ATT&CK and STIX 2.1 standards - including importing attack campaigns and threat actor profiles directly from MITRE or from other STIX-based threat intelligence sources.
1111
- RBAC with group restrictions, allowing teams to work on operation planning in stealth before providing visibility to other platform users.
1212

13-
## Contributing
13+
![Dashboard screenshot](docs/images/dashboard.png)
14+
15+
## Docs
1416

15-
See `AGENTS.md` for engineering standards.
17+
User Docs:
18+
- [Installation](docs/installation.md)
19+
- [Getting Started Workflow](docs/getting-started.md)
1620

17-
Docs
18-
- UI Style Guide: `docs/dev/STYLE.md`
19-
- Design Overview: `docs/dev/DESIGN.md`
21+
Development Docs:
22+
- [UI Style Guide](docs/dev/STYLE.md)
23+
- [Design Overview](docs/dev/DESIGN.md)
24+
25+
## Contributing
2026

2127
Not currently accepting pull requests - still just an experiment.
2228

29+
See [AGENTS.md](AGENTS.md) for engineering standards.
30+
2331
## Tech Stack
2432

2533
Initially based on the T3 Stack - Next.js, tRPC, Prisma, TypeScript. Type-safe APIs, server-side rendering, and component-driven design.
2634

2735
Local development uses sqlite and the node server. "Production" installation uses docker-compose, postgres, and BYO-reverse-proxy.
28-
29-
## Getting Started
30-
31-
### Local Development (Non-Docker)
32-
33-
Local development uses sqlite and the node dev server.
34-
35-
```sh
36-
# Copy example env file and replace secrets
37-
cp .env.example .env
38-
39-
# Install dependencies
40-
npm install
41-
42-
# Initialize schema and seed first-run admin + MITRE
43-
npm run init
44-
45-
# Optionally - seed demo taxonomy/operation data
46-
npx tsx scripts/demo-data.ts
47-
48-
# Start development server (or use one-liner: `npm run dev:with-init`)
49-
npm run dev --turbo
50-
```
51-
52-
### Production (Docker)
53-
54-
The provided `docker-compose.yml` file does not include a reverse proxy as you'd likely want to configure your own with TLS.
55-
56-
```sh
57-
cd deploy/docker
58-
59-
# Copy example env file and replace secrets
60-
cp .env.example .env
61-
62-
docker compose up -d
63-
64-
# Destroy all data and start from scratch - WARNING YOU WILL LOSE YOUR DB
65-
docker compose down
66-
docker system prune -a --volumes
67-
```
68-
69-
Notes:
70-
71-
- First login forces a password change.
72-
73-
### Logging
74-
75-
- Server logs are emitted to stdout/stderr (structured JSON in production, pretty in dev). Rely on Docker and the host OS for collection and rotation.
76-
- Log level defaults: `debug` in development, `info` in production. Override with `LOG_LEVEL`.
77-
78-
### Single Sign-On (SSO)
79-
80-
SSO is available via environment variable configuration. Users must be provisioned first - they will NOT be auto-created when an SSO login occurs.
81-
82-
For a pure-SSO environment, the INITIAL_ADMIN_EMAIL can be set to something from the SSO provider, and password authentication can be disabled completely.
83-
84-
Environment variables:
85-
86-
```
87-
# Toggle credentials provider (default: enabled)
88-
AUTH_CREDENTIALS_ENABLED=true
89-
90-
# Register Google provider when present (optional)
91-
GOOGLE_CLIENT_ID=
92-
GOOGLE_CLIENT_SECRET=
93-
```
94-
95-
For Google, set the following:
96-
97-
- Authorized JavaScript origins: Should match `AUTH_URL` from .env
98-
- Authorized redirect URIs: `AUTH_URL` + `/api/auth/callback/google`

‎docs/getting-started.md‎

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Getting Started with TTPx
2+
3+
This guide walks through the first workflow after you launch the application. Follow the steps in order so operations have the context they need for accurate analytics. The README already covers installing dependencies and starting the app.
4+
5+
## 1. Prepare Your Taxonomy
6+
7+
- Open Settings -> Taxonomy and customize each section to your liking.
8+
- Required to record defensive outcomes:
9+
- Tool categories. Examples: EDR, SIEM, IDS, IPS, etc. You may wish to include "Human Being" to capture manual responses.
10+
- Tools. Examples: CrowdStrike Falcon, Splunk, Metasploit, Sliver, etc. These are classified as defensive or offensive. Offensive tools are optional but defensive tools are required for recording detection and prevention outcomes.
11+
- Log Sources. Examples: Sysmon, Windows Event Logs, etc. These are used for recording attribution outcomes.
12+
- Optional:
13+
- Threat Actors. You can enter them manually or use the import option to pull in techniques directly from MITRE ATT&CK.
14+
- Crown Jewels. Examples: Production DB, Source Code Repo, etc.
15+
- Tags. Examples: Stealth, Purple Team, etc. These can be applied to operations and used for filtering lists analytics.
16+
17+
<p align="center">
18+
<a href="images/taxonomy.png">
19+
<img src="images/taxonomy.png" width="540" alt="Screenshot - Taxonomy" />
20+
</a>
21+
</p>
22+
23+
## 2. Add Users and Groups
24+
25+
- Go to Settings -> Users to create additional logins.
26+
- Assign each user the appropriate role:
27+
- Admin: Full platform access, including settings
28+
- Operator: Read/Write access to operations, view analytics, cannot access settings
29+
- Viewer: Read access to operations and analytics, cannot access settings
30+
- Create groups under Settings -> Groups if you plan to restrict operations to specific teams.
31+
- When SSO is enabled, every user still needs to exist in TTPx ahead of time with the correct role and group membership.
32+
33+
## 3. Create an Operation
34+
35+
- Navigate to Operations and click New.
36+
- Blank operation: create from scratch
37+
- From threat actor: imports the techniques from taxonomy definitions of threat actors
38+
- From MITRE campaign: imports the techniques from a MITRE ATT&CK campaign
39+
- Provide the name, description, status
40+
- Set the start and end dates. These dates drive analytics such as trends and duration metrics, so keep them accurate.
41+
- Optionally, configure tags, crown jewels, threat actor being emulated, and group access restrictions.
42+
43+
<p align="center">
44+
<a href="images/new-operation.png">
45+
<img src="images/new-operation.png" width="540" alt="Screenshot - New Operation" />
46+
</a>
47+
</p>
48+
49+
## 4. Plan Attack Techniques
50+
51+
- Inside the operation, open the Techniques tab and add a technique. When planning, you only need to fill in the overview. You can come back and add detail as the operation progresses.
52+
- Overview tab:
53+
- Use the Tactic/Technique pickers to choose from the catalog
54+
- Fill in an optional description
55+
- Execution tab:
56+
- Timing, execution details, offensive tooling, and crown jewel targeting
57+
- Outcomes tab:
58+
- Was the technique detected, prevented, or attributed later during IR?
59+
- What tooling and log sources were involved in successful outcomes or SHOULD HAVE BEEN involved in failed outcomes?
60+
- Note: You can leave an outcome as "N/A" and it will not be graded as failed in analytics. Do this for things that realistically cannot be detected/prevented/attributed.
61+
62+
<p align="center">
63+
<a href="images/technique-editor.png">
64+
<img src="images/technique-editor.png" width="540" alt="Screenshot - Technique Editor" />
65+
</a>
66+
</p>
67+
68+
## 5. Review Attack Visualizations Inside the Operation
69+
70+
### Attack Matrix - Operation View
71+
72+
This view shows an attack matrix specific to the operation. You can maximize the view to fill your browser, expand or hide sub-techniques, and toggle visibility of the operation across the entire ATT&CK matrix.
73+
74+
Success metrics are displayed on each technique card.
75+
76+
<p align="center">
77+
<a href="images/operation-matrix.png">
78+
<img src="images/operation-matrix.png" width="540" alt="Screenshot - Operation Matrix" />
79+
</a>
80+
</p>
81+
82+
### Attack Flow
83+
84+
This is an interactive flow chart built automatically from the operation's techniques. Because attacks don't always follow a logical order, you can edit this flowchart and save any changes you make. This includes dragging to re-arrange cards, deleting connection points, and creating new ones. You can also click "Reset Layout" to start from the auto-generated chart.
85+
86+
Success metrics are displayed on each technique card.
87+
88+
<p align="center">
89+
<a href="images/attack-flow.png">
90+
<img src="images/attack-flow.png" width="540" alt="Screenshot - Attack Flow" />
91+
</a>
92+
</p>
93+
94+
## 6. Explore Analytics
95+
96+
- Analytics -> Scorecard for high-level effectiveness metrics. Filters at the top limit results by date range and tags.
97+
- Analytics -> Attack Matrix to compare executed coverage across all accessible operations. Toggle to view against the complete ATT&CK matrix. Metrics are displayed on each individual technique card.
98+
- Analytics -> Trends to track performance over time. Filters at the top limit results by date range and tags.
99+
100+
<p align="center">
101+
<a href="images/scorecard-1.png">
102+
<img src="images/scorecard-1.png" width="540" alt="Screenshot - Score Card 1" />
103+
</a>
104+
</p>
105+
<p align="center">
106+
<a href="images/scorecard-2.png">
107+
<img src="images/scorecard-2.png" width="540" alt="Screenshot - Score Card 2" />
108+
</a>
109+
</p>
110+
<p align="center">
111+
<a href="images/scorecard-3.png">
112+
<img src="images/scorecard-3.png" width="540" alt="Screenshot - Score Card 3" />
113+
</a>
114+
</p>
115+
<p align="center">
116+
<a href="images/trends-1.png">
117+
<img src="images/trends-1.png" width="540" alt="Screenshot - Trends 1" />
118+
</a>
119+
</p>
120+
<p align="center">
121+
<a href="images/trends-2.png">
122+
<img src="images/trends-2.png" width="540" alt="Screenshot - Trends 2" />
123+
</a>
124+
</p>

‎docs/images/attack-flow.png‎

501 KB
Loading

‎docs/images/dashboard.png‎

425 KB
Loading

‎docs/images/new-operation.png‎

467 KB
Loading

‎docs/images/operation-matrix.png‎

176 KB
Loading

‎docs/images/scorecard-1.png‎

425 KB
Loading

‎docs/images/scorecard-2.png‎

376 KB
Loading

‎docs/images/scorecard-3.png‎

394 KB
Loading

‎docs/images/taxonomy.png‎

302 KB
Loading

0 commit comments

Comments
 (0)