forensic-pathways/README.md
overcuriousity 10331b9ece localization
2025-07-26 00:31:23 +02:00

563 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CC24-Hub
Ein kuratiertes Verzeichnis für digitale Forensik- und Incident-Response-Tools mit KI-gestützten Empfehlungen, entwickelt für die Seminargruppe CC24-w1.
## 🎯 Projektübersicht
CC24-Hub bietet eine strukturierte Übersicht über bewährte DFIR-Tools, -Methoden und -Konzepte mit intelligenten Empfehlungsfunktionen. Das Projekt orientiert sich am NIST-Framework (SP 800-86) und kategorisiert nach forensischen Domänen und Untersuchungsphasen.
### Hauptfunktionen
- **KI-gestützte Empfehlungen**: Workflow- und Tool-Vorschläge basierend auf forensischen Szenarien
- **Drei Kategorien**: Software-Tools, forensische Methoden UND Grundlagenkonzepte
- **Matrix-Ansicht**: Visualisierung nach Domänen × Prozess-Phasen
- **Erweiterte Filter**: Suche nach Name, Tags, Domäne, Phase, Lizenz
- **CC24-Server Integration**: Direkte SSO-Links zu gehosteten Instanzen
- **Knowledgebase**: Erweiterte Dokumentation mit praktischen Erkenntnissen
- **Konzept-Verlinkung**: Automatische Verknüpfung zwischen Tools und Grundlagenkonzepten
- **Status-Monitoring**: Live-Überwachung verfügbarer Services
- **Responsive Design**: Dark/Light Mode, Mobile-optimiert
## 🛠️ Technischer Stack
- **Framework**: [Astro](https://astro.build/) mit Server-Side Rendering
- **Backend**: Node.js mit API-Routen für KI und Authentifizierung
- **Styling**: Vanilla CSS mit CSS Custom Properties
- **Datenformat**: YAML für Tool-/Methoden-/Konzept-Definitionen
- **KI-Integration**: Mistral AI über OpenAI-kompatible API
- **Authentifizierung**: OIDC (OpenID Connect) mit JWT-Sessions
- **Node.js**: >=18.0.0
## 🚀 Installation & Deployment
### Lokale Entwicklung
```bash
# Repository klonen
git clone https://git.cc24.dev/mstoeck3/cc24-hub.git
cd cc24-hub
# Dependencies installieren
npm install
# Development Server starten
npm run dev
```
Die Seite ist dann unter `http://localhost:4321` verfügbar.
### Produktions-Deployment
#### Voraussetzungen
- Ubuntu/Debian server
- Node.js 18+
- Nginx
- Domain
- SSL Zertifikat
#### Installationsschritte
##### 1. Vorbereitung
```bash
# Klonen des Repositorys
git clone https://git.cc24.dev/mstoeck3/cc24-hub
cd cc24-hub
# Abhängigkeiten installieren
npm install
# Production-Build anstoßen
npm run build
```
##### 2. Webroot vorbereiten
```bash
# Webroot erstellen und Berechtigungen setzen
sudo mkdir -p /var/www/cc24-hub
sudo chown -R $USER:$USER /var/www/cc24-hub
# Build in Webroot kopieren
sudo cp -r ./dist/* /var/www/cc24-hub/
sudo cp ./src/data/tools.yaml /var/www/cc24-hub/src/data/
sudo cp package.json /var/www/cc24-hub/
# Prod-Abhängigkeiten installieren
cd /var/www/cc24-hub
npm install --omit=dev
# Berechtigungen setzen
sudo chown -R www-data:www-data /var/www/cc24-hub
```
##### 3. Umgebungsvariablen setzen
Erstelle `/var/www/cc24-hub/.env`:
```bash
# AI Konfiguration
AI_API_ENDPOINT=https://llm.mikoshi.de # hier geeigneten Endpunkt setzen
AI_API_KEY=your_ai_api_key
AI_MODEL=mistral/mistral-small-latest # hier geeignetes KI-Modell wählen
# Authentifizierung ("false" setzen für Tests, oder wenn kostenlose KI verwendet wird)
AUTHENTICATION_NECESSARY=true
OIDC_ENDPOINT=https://cloud.cc24.dev
OIDC_CLIENT_ID=your_oidc_client_id
OIDC_CLIENT_SECRET=your_oidc_client_secret
AUTH_SECRET=your_super_secret_jwt_key_min_32_chars
# Public Configuration
PUBLIC_BASE_URL=https://your-domain.com # hier die URL setzen, mit der von außen zugegriffen wird
```
```bash
# .env sichern
sudo chmod 600 /var/www/cc24-hub/.env
sudo chown www-data:www-data /var/www/cc24-hub/.env
```
##### 4. Systemd-Service erstellen
Create `/etc/systemd/system/cc24-hub.service`:
```ini
[Unit]
Description=CC24-Hub DFIR Tool Directory
After=network.target
Wants=network.target
[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/cc24-hub
ExecStart=/usr/bin/node server/entry.mjs
Restart=always
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3
# Environment
Environment=NODE_ENV=production
Environment=PORT=3000
# Security
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/var/www/cc24-hub
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=cc24-hub
[Install]
WantedBy=multi-user.target
```
##### 5. Nginx Reverse Proxy konfigurieren
Erstelle `/etc/nginx/sites-available/cc24-hub`:
```nginx
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL Configuration (adjust paths for your certificates)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# SSL Security
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# Security Headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Proxy to Node.js application
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
# Optional: Serve static assets directly (performance optimization)
location /_astro/ {
proxy_pass http://localhost:3000;
expires 1y;
add_header Cache-Control "public, immutable";
}
}
```
##### 6. Daemon starten und Autostart setzen
```bash
# Enable Nginx site
sudo ln -s /etc/nginx/sites-available/cc24-hub /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
# Enable and start CC24-Hub service
sudo systemctl daemon-reload
sudo systemctl enable cc24-hub
sudo systemctl start cc24-hub
# Check status
sudo systemctl status cc24-hub
```
##### 7. Deployment verifizieren
```bash
# Check application logs
sudo journalctl -u cc24-hub -f
# Check if app is responding
curl http://localhost:3000
# Check external access
curl https://your-domain.com
```
#### OIDC Konfigurieren
Nextcloud OIDC Einstellungen (sollte auch mit anderen OIDC-Anwendungen klappen):
- **Redirect URI**: `https://your-domain.com/auth/callback`
- **Logout URI**: `https://your-domain.com`
## 🔧 Datenformat & Kategorien
Die CC24-Hub verwaltet drei Kategorien von Einträgen in `src/data/tools.yaml`:
### 1. Software-Tools
```yaml
tools:
- name: "Autopsy"
icon: "📦"
type: "software"
description: "Die führende Open-Source-Alternative zu kommerziellen Forensik-Suiten"
domains: ["incident-response", "static-investigations"]
phases: ["examination", "analysis"]
platforms: ["Windows", "Linux"]
skillLevel: "intermediate"
accessType: "download"
url: "https://www.autopsy.com/"
projectUrl: "https://autopsy.cc24.dev" # CC24-Server URL (optional)
license: "Apache 2.0"
knowledgebase: true # Hat erweiterte Dokumentation
related_concepts: ["Hash Functions & Digital Signatures", "SQL Query Fundamentals"] # Verknüpfung zu Konzepten
tags: ["gui", "filesystem", "timeline-analysis"]
statusUrl: "https://status.example.com/badge/1/status" # Status-Badge URL (optional)
```
### 2. Forensische Methoden
```yaml
- name: "Live Memory Acquisition Procedure"
icon: "📋"
type: "method"
description: "Standardisiertes Verfahren zur forensisch korrekten Akquisition des Arbeitsspeichers"
domains: ["incident-response", "static-investigations"]
phases: ["data-collection"]
platforms: [] # Methoden haben keine Plattformen
skillLevel: "advanced"
accessType: null
url: "https://www.nist.gov/publications/guide-integrating-forensic-techniques"
projectUrl: null
license: null
knowledgebase: false
related_concepts: null # Können optional Konzepte verknüpfen
tags: ["memory-acquisition", "volatile-evidence", "procedure"]
```
### 3. Grundlagenkonzepte (NEU)
```yaml
- name: "Regular Expressions (Regex)"
icon: "🔤"
type: "concept"
description: "Pattern matching language for searching, extracting, and manipulating text"
domains: ["incident-response", "malware-analysis"]
phases: ["examination", "analysis"]
platforms: [] # Konzepte haben keine Plattformen
skillLevel: "intermediate"
accessType: null
url: "https://regexr.com/"
projectUrl: null
license: null
knowledgebase: true # Erweiterte Erklärung in Knowledgebase
related_concepts: null # Konzepte verweisen nicht auf andere Konzepte
tags: ["pattern-matching", "text-processing", "log-analysis"]
```
### Verfügbare Kategorien
**Domänen:**
- `incident-response` - Incident Response & Breach-Untersuchung
- `static-investigations` - Datenträgerforensik & Ermittlungen
- `malware-analysis` - Malware-Analyse & Reverse Engineering
- `fraud-investigation` - Betrugs- & Finanzkriminalität
- `network-forensics` - Netzwerk-Forensik & Traffic-Analyse
- `mobile-forensics` - Mobile Geräte & App-Forensik
- `cloud-forensics` - Cloud & Virtuelle Umgebungen
- `ics-forensics` - Industrielle Kontrollsysteme (ICS/SCADA)
**Phasen (NIST SP 800-86):**
- `data-collection` - Datensammlung
- `examination` - Auswertung
- `analysis` - Analyse
- `reporting` - Bericht & Präsentation
**Domain-agnostic Kategorien:**
- `collaboration-general` - Übergreifend & Kollaboration
- `specific-os` - Betriebssysteme
## 📚 Knowledgebase-System
### Erweiterte Dokumentation erstellen
Die Knowledgebase bietet detaillierte Artikel für Tools, Methoden und Konzepte. So erstellen Sie neue Einträge:
#### 1. Knowledgebase-Flag setzen
Setzen Sie in `src/data/tools.yaml` das Flag:
```yaml
knowledgebase: true
```
#### 2. Artikel-Datei erstellen
Erstellen Sie eine Markdown-Datei in `src/content/knowledgebase/`:
**Dateiname-Schema:** `[tool-name-slug].md`
**Beispiel:** `src/content/knowledgebase/autopsy.md`
```markdown
---
title: "Autopsy - Umfassende Forensik-Suite"
tool_name: "Autopsy"
description: "Detaillierte Anleitung und Best Practices für Autopsy"
last_updated: 2024-01-15
author: "CC24-Team"
difficulty: "intermediate"
categories: ["filesystem-analysis", "timeline-analysis"]
tags: ["gui", "windows", "linux", "open-source"]
sections:
overview: true
installation: true
configuration: true
usage_examples: true
best_practices: true
troubleshooting: true
advanced_topics: false
review_status: "published"
---
# Übersicht
Autopsy ist eine grafische Benutzeroberfläche für The Sleuth Kit (TSK) und bietet...
## Installation
### Windows
1. Download der neuesten Version von [autopsy.com](https://www.autopsy.com/)
2. Ausführung des Installers mit Administratorrechten
3. ...
## Konfiguration
### Grundeinstellungen
- Arbeitsverzeichnis festlegen
- Hash-Algorithmen auswählen
- ...
## Verwendungsbeispiele
### Fall 1: Gelöschte Dateien wiederherstellen
1. Neuen Fall erstellen
2. Image hinzufügen
3. ...
## Best Practices
- Immer Hash-Verifikation durchführen
- Regelmäßige Backups der Case-Datenbank
- ...
## Troubleshooting
### Problem: Autopsy startet nicht
**Lösung:** Java-Version überprüfen...
### Problem: Langsame Performance
**Lösung:** RAM-Zuteilung erhöhen...
## Weiterführende Themen
- Integration mit externen Tools
- Custom Modules entwickeln
- ...
```
#### 3. Schema-Validierung
Das System validiert automatisch folgende Felder:
**Pflichtfelder:**
- `title`: Anzeigename des Artikels
- `tool_name`: Exakter Name aus tools.yaml
- `description`: Kurze Beschreibung
- `last_updated`: Datum der letzten Aktualisierung
- `difficulty`: `novice|beginner|intermediate|advanced|expert`
**Optionale Felder:**
- `author`: Standard "CC24-Team"
- `categories`: Array von Kategorien
- `tags`: Array von Tags
- `sections`: Welche Abschnitte enthalten sind
- `review_status`: `draft|review|published` (Standard: `published`)
#### 4. Automatische Verlinkung
- Artikel sind automatisch über `/knowledgebase/[tool-slug]` erreichbar
- Links werden automatisch in Tool-Details angezeigt
- Suchfunktion indiziert Artikel-Inhalte
### Konzept-Verlinkung
Tools können mit Grundlagenkonzepten verknüpft werden:
```yaml
# Tool-Definition
- name: "Autopsy"
related_concepts: ["Hash Functions & Digital Signatures", "SQL Query Fundamentals"]
# Konzept-Definition
- name: "Hash Functions & Digital Signatures"
type: "concept"
description: "Cryptographic principles for data integrity verification"
```
Die KI-Empfehlungen nutzen diese Verlinkungen für Hintergrundwissen-Empfehlungen.
## 🤖 KI-Integration
### Workflow-Empfehlungen
Beschreibung forensischer Szenarien für maßgeschneiderte Workflows mit phasenbasierten Tool-Empfehlungen und Prioritätsbewertung.
### Tool-spezifische Empfehlungen
Konkrete Tool-Vorschläge für spezifische Probleme mit detaillierten Begründungen, Implementierungsansätzen und Vor-/Nachteilen.
### Konzept-Integration
Die KI berücksichtigt automatisch verknüpfte Grundlagenkonzepte und empfiehlt relevantes Hintergrundwissen.
**API-Endpunkt:** `/api/ai/query`
- **Rate Limiting**: 10 Anfragen pro Minute pro Benutzer
- **Modi**: `workflow` (Szenario-basiert) oder `tool` (Problem-spezifisch)
- **Authentifizierung**: Optional konfigurierbar via `AUTHENTICATION_NECESSARY`
## 🔐 Authentifizierung
OIDC-Integration mit JWT-Sessions:
- **6 Stunden Gültigkeit**
- **HTTP-Only Cookies** mit CSRF-Schutz
- **Nextcloud/Keycloak kompatibel**
**Relevante Dateien:**
- `src/utils/auth.ts` - Kern-Authentifizierungslogik
- `src/pages/api/auth/` - Auth-API-Endpunkte
## 📁 Datei-Referenz
### Wichtige Konfigurationsdateien
- `src/data/tools.yaml` - Hauptdatenbank für Tools, Methoden und Konzepte
- `src/content/config.ts` - Schema für Knowledgebase-Artikel
- `src/utils/dataService.js` - Datenverarbeitungslogik
- `src/styles/global.css` - Zentrale Stylesheet-Definitionen
### Content-Verzeichnisse
- `src/content/knowledgebase/` - Knowledgebase-Artikel (Markdown)
- `src/components/` - Wiederverwendbare UI-Komponenten
- `src/pages/api/` - Backend-API-Endpunkte
## 🤝 Beitragen
### Tool/Methode/Konzept hinzufügen
**Option 1: Direkte YAML-Bearbeitung**
1. Fork des Repositories erstellen
2. `src/data/tools.yaml` bearbeiten
3. Bei Bedarf Knowledgebase-Artikel erstellen
4. Pull Request mit Beschreibung erstellen
**Option 2: Web-Editor verwenden**
1. YAML-Editor öffnen (`/dfir_yaml_editor.html`)
2. Eintrag hinzufügen (Tool/Methode/Konzept)
3. YAML exportieren und in Pull Request einreichen
### Knowledgebase-Artikel erweitern
1. Tool in `tools.yaml` identifizieren
2. `knowledgebase: true` setzen
3. Artikel in `src/content/knowledgebase/[slug].md` erstellen
4. Schema-Validierung beachten
5. Pull Request einreichen
### Korrekturen & Verbesserungen
- Bug Reports und Feature Requests über Issues melden
- Code-Beiträge über Pull Requests willkommen
- Dokumentation und Übersetzungen erwünscht
## 🐛 Troubleshooting
**KI-Empfehlungen funktionieren nicht:**
- `.env` Datei korrekt konfiguriert?
- `AUTHENTICATION_NECESSARY=false` für Tests setzen
- API-Endpoint erreichbar?
**Authentifizierung schlägt fehl:**
- OIDC-Endpoints korrekt?
- Redirect-URIs im OIDC-Provider registriert?
- `AUTH_SECRET` mindestens 32 Zeichen?
**Knowledgebase-Artikel werden nicht angezeigt:**
- `knowledgebase: true` in tools.yaml gesetzt?
- Markdown-Datei existiert in `src/content/knowledgebase/`?
- Schema-Validierung erfolgreich?
**Logs prüfen:**
```bash
# Anwendungs-Logs
sudo journalctl -u cc24-hub -f
# Development-Modus
npm run dev
```