forensic-pathways/README.md
overcuriousity fd9e855618 renaming
2025-07-26 14:40:58 +02:00

12 KiB

ForensicPathways

Ein kuratiertes Verzeichnis für Digital Forensics und Incident Response (DFIR) Tools, Methoden und Konzepte mit KI-gestützten Workflow-Empfehlungen.

Funktionen

🎯 Hauptansichten

  • Kachelansicht (Grid View): Übersichtliche Kartenansicht aller Tools/Methoden
  • Matrix-Ansicht: Interaktive Matrix nach forensischen Domänen und Untersuchungsphasen (NIST Framework)
  • KI-Empfehlungen: AI-gestützte Workflow-Empfehlungen basierend auf Szenario-Beschreibungen

🔍 Navigation & Filterung

  • Tag-System: Intelligente Filterung nach Kategorien und Eigenschaften
  • Volltext-Suche: Durchsuchen von Namen, Beschreibungen und Tags
  • Domain/Phase-Filter: Filterung nach forensischen Bereichen und Ermittlungsphasen

📚 Inhaltstypen

  • Software/Tools: Open Source und proprietäre forensische Software
  • Methoden: Bewährte forensische Verfahren und Prozesse
  • Konzepte: Grundlegendes Fachwissen und theoretische Grundlagen

📖 Knowledgebase

  • Erweiterte Dokumentation: Detaillierte Artikel zu Tools und Methoden
  • Praktische Anleitungen: Installation, Konfiguration und Best Practices
  • Markdown-basiert: Einfache Erstellung und Wartung von Inhalten

🤝 Contribution-System

  • Tool/Methoden-Beiträge: Webformular für neue Einträge
  • Knowledgebase-Artikel: Artikel-Editor mit Datei-Upload
  • Git-Integration: Automatische Issue-Erstellung für Review-Prozess
  • File-Management: Nextcloud-Integration für Medien-Uploads

🔐 Authentifizierung

  • OIDC-Integration: Single Sign-On mit OpenID Connect
  • Berechtigungssteuerung: Schutz für AI-Features und Contribution-System
  • Session-Management: Sichere JWT-basierte Sessions

🛠 Technische Grundlage

  • Framework: Astro 4.x mit TypeScript
  • Styling: CSS Custom Properties mit Dark/Light Mode
  • API: Node.js Backend mit Astro API Routes
  • Datenbank: YAML-basierte Konfiguration (tools.yaml)

📋 Voraussetzungen

  • Node.js: Version 18.x oder höher
  • npm: Version 8.x oder höher
  • Nginx: Für Reverse Proxy (Produktion)

🔧 Externe Abhängigkeiten (Optional)

OIDC Provider

  • Zweck: Benutzerauthentifizierung
  • Beispiel: Nextcloud, Keycloak, Auth0
  • Konfiguration: OIDC_ENDPOINT, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET

Nextcloud

  • Zweck: File-Upload für Knowledgebase-Beiträge
  • Features: Medien-Management, öffentliche Links
  • Konfiguration: NEXTCLOUD_ENDPOINT, NEXTCLOUD_USERNAME, NEXTCLOUD_PASSWORD

AI Service (Mistral/OpenAI-kompatibel)

  • Zweck: KI-gestützte Tool-Empfehlungen
  • Konfiguration: AI_API_ENDPOINT, AI_API_KEY, AI_MODEL

Uptime Kuma

  • Zweck: Status-Monitoring für gehostete Services
  • Integration: Status-Badges in der Service-Übersicht

Git Provider (Gitea/GitHub/GitLab)

  • Zweck: Issue-Erstellung für Contributions
  • Konfiguration: GIT_PROVIDER, GIT_API_ENDPOINT, GIT_API_TOKEN

🚀 Installation

Lokale Entwicklung

# Repository klonen
git clone https://git.cc24.dev/mstoeck3/cc24-hub.git
cd cc24-hub

# Dependencies installieren
npm install

# Umgebungsvariablen konfigurieren
cp .env.example .env
# .env bearbeiten (siehe Konfiguration unten)

# Development Server starten
npm run dev

Die Seite ist dann unter http://localhost:4321 verfügbar.

Produktions-Deployment

1. System vorbereiten

# System-Updates
sudo apt update && sudo apt upgrade -y

# Node.js installieren (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# Nginx installieren
sudo apt install nginx -y

# Systemd für Service-Management
sudo systemctl enable nginx

2. Anwendung installieren

# Klonen des Repositorys
sudo git clone https://git.cc24.dev/mstoeck3/cc24-hub /opt/cc24-hub
cd /opt/cc24-hub

# Abhängigkeiten installieren
sudo npm install

# Production-Build erstellen
sudo npm run build

# Berechtigungen setzen
sudo chown -R www-data:www-data /opt/cc24-hub

3. Umgebungsvariablen konfigurieren

Erstelle /opt/cc24-hub/.env:

# === GRUNDKONFIGURATION ===
NODE_ENV=production
PUBLIC_BASE_URL=https://ihre-domain.de

# === AI-KONFIGURATION (Optional) ===
AI_API_ENDPOINT=https://api.mistral.ai/v1
AI_API_KEY=your_mistral_api_key
AI_MODEL=mistral-small-latest
AI_RATE_LIMIT_DELAY_MS=2000

# === AUTHENTIFIZIERUNG ===
AUTHENTICATION_NECESSARY=true
OIDC_ENDPOINT=https://ihr-oidc-provider.de
OIDC_CLIENT_ID=cc24-hub-client
OIDC_CLIENT_SECRET=your_super_secret_client_secret
AUTH_SECRET=your_jwt_secret_min_32_characters_long

# === NEXTCLOUD (Optional) ===
NEXTCLOUD_ENDPOINT=https://ihre-nextcloud.de
NEXTCLOUD_USERNAME=cc24-hub-user
NEXTCLOUD_PASSWORD=nextcloud_app_password
NEXTCLOUD_UPLOAD_PATH=/kb-media
NEXTCLOUD_PUBLIC_URL=https://ihre-nextcloud.de/s

# === GIT-INTEGRATION (Optional) ===
GIT_PROVIDER=gitea
GIT_API_ENDPOINT=https://ihr-git-server.de/api/v1
GIT_API_TOKEN=your_git_api_token
GIT_REPO_URL=https://ihr-git-server.de/user/cc24-hub

# === UPLOAD-KONFIGURATION ===
LOCAL_UPLOAD_PATH=/opt/cc24-hub/public/uploads
# Berechtigungen sichern
sudo chmod 600 /opt/cc24-hub/.env
sudo chown www-data:www-data /opt/cc24-hub/.env

4. Nginx konfigurieren

Erstelle /etc/nginx/sites-available/cc24-hub:

server {
    listen 80;
    server_name ihre-domain.de;
    
    # Redirect HTTP to HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name ihre-domain.de;
    
    # SSL Konfiguration (Let's Encrypt empfohlen)
    ssl_certificate /etc/letsencrypt/live/ihre-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ihre-domain.de/privkey.pem;
    
    # 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 Referrer-Policy "strict-origin-when-cross-origin";
    
    # Static Files
    location / {
        try_files $uri $uri/ @nodejs;
        root /opt/cc24-hub/dist;
        index index.html;
        
        # Cache static assets
        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf)$ {
            expires 1y;
            add_header Cache-Control "public, immutable";
        }
    }
    
    # API Routes to Node.js
    location @nodejs {
        proxy_pass http://localhost:4321;
        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;
    }
    
    # Upload limit
    client_max_body_size 50M;
}
# Site aktivieren
sudo ln -s /etc/nginx/sites-available/cc24-hub /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

5. Systemd Service einrichten

Erstelle /etc/systemd/system/cc24-hub.service:

[Unit]
Description=ForensicPathways DFIR Guide
After=network.target nginx.service
Wants=nginx.service

[Service]
Type=exec
User=www-data
Group=www-data
WorkingDirectory=/opt/cc24-hub
Environment=NODE_ENV=production
ExecStart=/usr/bin/node ./dist/server/entry.mjs
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

# Security
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/opt/cc24-hub
CapabilityBoundingSet=

# Resource Limits
LimitNOFILE=65536
MemoryMax=512M

[Install]
WantedBy=multi-user.target
# Service aktivieren und starten
sudo systemctl daemon-reload
sudo systemctl enable cc24-hub
sudo systemctl start cc24-hub

# Status prüfen
sudo systemctl status cc24-hub

🔧 Konfiguration

Minimalkonfiguration (ohne Auth)

# Nur für Tests geeignet
AUTHENTICATION_NECESSARY=false
PUBLIC_BASE_URL=http://localhost:4321

Tools-Datenbank

Die Tools werden in src/data/tools.yaml verwaltet. Vollständiges Beispiel:

tools:
  - name: Autopsy
    type: software  # software|method|concept
    description: >-
      Die führende Open-Source-Alternative zu kommerziellen Forensik-Suiten mit
      intuitiver grafischer Oberfläche. Besonders stark in der Timeline-Analyse,
      Keyword-Suche und dem Carving gelöschter Dateien. Die modulare
      Plugin-Architektur erlaubt Erweiterungen für spezielle
      Untersuchungsszenarien.
    icon: 📦
    skillLevel: intermediate  # novice|beginner|intermediate|advanced|expert
    url: https://www.autopsy.com/
    domains:
      - incident-response
      - static-investigations
      - malware-analysis
      - mobile-forensics
      - cloud-forensics
    phases:
      - examination
      - analysis
    platforms:
      - Windows
      - Linux
    related_concepts:
      - SQL Query Fundamentals
      - Hash Functions & Digital Signatures
    accessType: download  # download|web|api|cli|service
    license: Apache 2.0
    knowledgebase: false  # true für erweiterte Dokumentation
    tags:
      - gui
      - filesystem
      - timeline-analysis
      - carving
      - artifact-extraction
      - keyword-search
    # Optional: Für gehostete Services
    projectUrl: https://autopsy.ihre-domain.de
    statusUrl: https://status.ihre-domain.de/api/badge/1/status
    
  # Beispiel Methode
  - name: Live Response Methodology
    type: method
    description: >-
      Strukturierte Vorgehensweise zur Sammlung volatiler Daten
      von laufenden Systemen ohne Shutdown.
    icon: 📋
    skillLevel: advanced
    url: https://www.sans.org/white-papers/live-response/
    domains:
      - incident-response
    phases:
      - data-collection
    related_concepts:
      - Memory Forensics Fundamentals
    tags:
      - volatile-data
      - live-analysis
      - methodology
    knowledgebase: true
    
  # Beispiel Konzept
  - name: Hash Functions & Digital Signatures
    type: concept
    description: >-
      Kryptographische Grundlagen für Datenintegrität und
      Authentifizierung in der digitalen Forensik.
    icon: 🔐
    skillLevel: intermediate
    url: https://en.wikipedia.org/wiki/Cryptographic_hash_function
    domains:
      - incident-response
      - static-investigations
      - malware-analysis
    phases:
      - data-collection
      - examination
    tags:
      - cryptography
      - data-integrity
      - evidence-preservation
    knowledgebase: false

# Konfiguration der Domänen
domains:
  - id: incident-response
    name: Incident Response & Breach-Untersuchung
  - id: static-investigations
    name: Datenträgerforensik & Ermittlungen
  - id: malware-analysis
    name: Malware-Analyse & Reverse Engineering
  - id: mobile-forensics
    name: Mobile Geräte & App-Forensik
  - id: cloud-forensics
    name: Cloud & Virtuelle Umgebungen

# Konfiguration der Phasen (NIST Framework)
phases:
  - id: data-collection
    name: Datensammlung
    description: Imaging, Acquisition, Remote Collection Tools
  - id: examination
    name: Auswertung
    description: Parsing, Extraction, Initial Analysis Tools
  - id: analysis
    name: Analyse
    description: Deep Analysis, Correlation, Visualization Tools
  - id: reporting
    name: Bericht & Präsentation
    description: Documentation, Visualization, Presentation Tools

# Domänenübergreifende Kategorien
domain-agnostic-software:
  - id: collaboration-general
    name: Übergreifend & Kollaboration
    description: Cross-cutting tools and collaboration platforms
  - id: specific-os
    name: Betriebssysteme
    description: Operating Systems which focus on forensics

📦 Updates

# Repository aktualisieren
cd /opt/cc24-hub
sudo git pull

# Dependencies aktualisieren
sudo npm install

# Rebuild
sudo npm run build

# Service neustarten
sudo systemctl restart cc24-hub

💾 Backup

Wichtige Dateien für Backup:

/opt/cc24-hub/src/data/tools.yaml
/opt/cc24-hub/.env
/etc/nginx/sites-available/cc24-hub
/etc/systemd/system/cc24-hub.service

🤝 Beiträge

Contributions sind willkommen! Bitte:

  1. Issue im Repository erstellen
  2. Feature-Branch erstellen
  3. Pull Request öffnen
  4. Tests durchführen

📞 Support

Bei Problemen oder Fragen:

📄 Lizenz

Dieses Projekt steht unter der BSD-3-Clause Lizenz.