forensic-pathways/README.md
2025-07-19 23:40:45 +02:00

11 KiB
Raw Blame History

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 und -Methoden 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
  • Tools & Methoden: Software-Tools UND forensische Verfahren/Prozeduren
  • 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
  • Status-Monitoring: Live-Überwachung verfügbarer Services
  • Responsive Design: Dark/Light Mode, Mobile-optimiert

🛠️ Technischer Stack

  • Framework: Astro 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-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

# 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
# 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
# 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:

# 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
# .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:

[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:

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
# 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
# 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

🔧 Tool-/Methoden-Datenformat

Einträge werden in src/data/tools.yaml definiert:

Software-Tool Beispiel

tools:
  - name: "Autopsy"
    icon: "📱"
    type: "software"
    description: "Die führende Open-Source-Alternative zu kommerziellen Forensik-Suiten"
    domains: ["incident-response", "law-enforcement"]
    phases: ["examination", "analysis"]
    platforms: ["Windows", "Linux"]
    skillLevel: "intermediate"
    accessType: "download"
    url: "https://www.autopsy.com/"
    projectUrl: "https://autopsy.cc24.dev"  # CC24-Server URL
    license: "Apache 2.0"
    knowledgebase: true  # Hat erweiterte Dokumentation
    tags: ["gui", "filesystem", "timeline-analysis"]
    statusUrl: "https://status.example.com/badge/1/status"

Forensische Methode Beispiel

  - name: "Live Memory Acquisition Procedure"
    icon: "🧠"
    type: "method"
    description: "Standardisiertes Verfahren zur forensisch korrekten Akquisition des Arbeitsspeichers"
    domains: ["incident-response", "law-enforcement"]
    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
    tags: ["memory-acquisition", "volatile-evidence", "procedure"]

Verfügbare Kategorien

Domänen:

  • incident-response - Incident Response & Breach-Untersuchung
  • law-enforcement - Strafverfolgung & Kriminalermittlung
  • 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

🤖 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.

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

📚 Weitere Funktionen

Knowledgebase

Erweiterte Dokumentation für Tools mit knowledgebase: true in /knowledgebase. Bietet praktische Erkenntnisse, Konfigurationshinweise und Lektionen aus der Praxis.

Status-Monitoring

Live-Überwachung gehosteter Services in /status mit automatischen Status-Badges und direkten Zugriffs-Links.

Tool-Editor

Standalone WYSIWYG-Editor unter /dfir_yaml_editor.html für die Verwaltung der tools.yaml mit Bulk-Operationen und Validierung.

🤝 Beitragen

Tool/Methode hinzufügen

Option 1: Direkte YAML-Bearbeitung

  1. Fork des Repositories erstellen
  2. src/data/tools.yaml bearbeiten
  3. Pull Request mit Beschreibung erstellen

Option 2: Web-Editor verwenden

  1. YAML-Editor öffnen (/dfir_yaml_editor.html)
  2. Tool/Methode hinzufügen
  3. YAML exportieren und in 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?

Logs prüfen:

# Anwendungs-Logs
sudo journalctl -u cc24-hub -f

# Development-Modus
npm run dev