Add wiki page: Knowledge-Management
@@ -0,0 +1,180 @@
|
||||
# Knowledge Management
|
||||
|
||||
Aegis includes a knowledge management module for capturing institutional expertise:
|
||||
**Playbooks** (procedural guides) and **Lessons Learned** (post-incident records).
|
||||
|
||||
---
|
||||
|
||||
## Playbooks
|
||||
|
||||
A playbook is a step-by-step procedural guide for a specific MITRE ATT&CK technique.
|
||||
Each playbook is scoped to a `playbook_type` and a `technique_id`.
|
||||
|
||||
### Playbook Types
|
||||
|
||||
| Type | Target audience | Purpose |
|
||||
|------|----------------|---------|
|
||||
| `attack` | Red team | How to execute this technique |
|
||||
| `defense` | Blue team | How to defend against this technique |
|
||||
| `detection` | Blue team | How to detect this technique in logs/alerts |
|
||||
|
||||
### Playbook Fields
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "T1059.001 — PowerShell Attack Playbook",
|
||||
"technique_id": "T1059.001",
|
||||
"playbook_type": "attack",
|
||||
"content": "# Overview
|
||||
|
||||
This playbook covers...
|
||||
|
||||
## Prerequisites
|
||||
...",
|
||||
"tools": ["Cobalt Strike", "PowerShell Empire", "Metasploit"],
|
||||
"prerequisites": ["Domain user credentials", "Access to workstation"],
|
||||
"is_active": true
|
||||
}
|
||||
```
|
||||
|
||||
### Versioning
|
||||
|
||||
Every time a playbook is updated (PATCH), the system:
|
||||
1. Creates a version snapshot with the previous content
|
||||
2. Increments the version number
|
||||
3. Records the author and timestamp
|
||||
|
||||
**List versions:**
|
||||
```http
|
||||
GET /api/v1/knowledge/playbooks/{id}/versions
|
||||
```
|
||||
|
||||
**Restore a previous version:**
|
||||
```http
|
||||
POST /api/v1/knowledge/playbooks/{id}/restore/{version_number}
|
||||
```
|
||||
|
||||
This creates a new version from the restored content (non-destructive — the history
|
||||
is always preserved).
|
||||
|
||||
### Creating a Playbook
|
||||
|
||||
```http
|
||||
POST /api/v1/knowledge/playbooks
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"title": "T1078 — Valid Account Detection Playbook",
|
||||
"technique_id": "T1078",
|
||||
"playbook_type": "detection",
|
||||
"content": "## Indicators of Compromise
|
||||
|
||||
1. Unusual login times...",
|
||||
"tools": ["Splunk", "Elastic SIEM"],
|
||||
"prerequisites": ["SIEM access", "AD event log forwarding configured"]
|
||||
}
|
||||
```
|
||||
|
||||
### Access Rules
|
||||
|
||||
| Action | Required role |
|
||||
|--------|--------------|
|
||||
| Read any playbook | All roles (including viewer) |
|
||||
| Create playbook | red_lead, blue_lead, admin |
|
||||
| Update playbook | red_lead, blue_lead, admin |
|
||||
| Delete playbook | red_lead, blue_lead, admin |
|
||||
| Restore version | red_lead, blue_lead, admin |
|
||||
|
||||
---
|
||||
|
||||
## Lessons Learned
|
||||
|
||||
Lessons Learned records capture what happened during an exercise, the root cause,
|
||||
and improvement actions. They can be linked to any entity in the system.
|
||||
|
||||
### Lesson Fields
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "AMSI bypass succeeded due to outdated signatures",
|
||||
"what_happened": "Red team successfully bypassed AMSI on 3 of 5 endpoints...",
|
||||
"root_cause": "AMSI signature database had not been updated in 45 days.",
|
||||
"improvement": "Automate daily AMSI signature updates via WSUS. Set alert for stale updates.",
|
||||
"severity": "high",
|
||||
"tags": ["amsi", "evasion", "detection-gap"],
|
||||
"technique_ids": ["T1562.001"],
|
||||
"entity_type": "test",
|
||||
"entity_id": "test-uuid"
|
||||
}
|
||||
```
|
||||
|
||||
### Severity Levels
|
||||
|
||||
| Level | Description |
|
||||
|-------|-------------|
|
||||
| `low` | Minor finding, low risk |
|
||||
| `medium` | Notable gap, moderate risk |
|
||||
| `high` | Significant detection failure |
|
||||
| `critical` | Systemic failure, immediate action required |
|
||||
|
||||
### Entity Linking
|
||||
|
||||
Lessons can be linked to any entity:
|
||||
|
||||
| `entity_type` | Example `entity_id` |
|
||||
|---------------|---------------------|
|
||||
| `test` | UUID of the test |
|
||||
| `campaign` | UUID of the campaign |
|
||||
| `technique` | MITRE technique ID (T1059.001) |
|
||||
| `detection_asset` | UUID of the detection asset |
|
||||
|
||||
### Access Rules
|
||||
|
||||
| Action | Required role |
|
||||
|--------|--------------|
|
||||
| Read any lesson | All roles (including viewer) |
|
||||
| Create lesson | red_lead, blue_lead, admin |
|
||||
| Update lesson | red_lead, blue_lead, admin |
|
||||
| Delete lesson | red_lead, blue_lead, admin |
|
||||
|
||||
---
|
||||
|
||||
## Knowledge Stats
|
||||
|
||||
```http
|
||||
GET /api/v1/knowledge/stats
|
||||
```
|
||||
|
||||
Returns:
|
||||
```json
|
||||
{
|
||||
"playbooks": {
|
||||
"total": 87,
|
||||
"by_type": {
|
||||
"attack": 32,
|
||||
"defense": 28,
|
||||
"detection": 27
|
||||
},
|
||||
"techniques_covered": 61
|
||||
},
|
||||
"lessons": {
|
||||
"total": 43,
|
||||
"by_severity": {
|
||||
"critical": 3,
|
||||
"high": 12,
|
||||
"medium": 20,
|
||||
"low": 8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Always link playbooks to tests**: When creating a test, reference the attack playbook in the test notes.
|
||||
2. **Create lessons after every campaign**: Even successful tests yield lessons. Capture `what worked well`.
|
||||
3. **Review playbooks quarterly**: Infrastructure changes may invalidate detection steps.
|
||||
4. **Tag lessons**: Use consistent tags (`amsi`, `lateral-movement`, `cloud`) to make lessons searchable.
|
||||
5. **One playbook per technique per type**: The system enforces uniqueness on `(technique_id, playbook_type)`.
|
||||
|
||||
Reference in New Issue
Block a user