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)
 - Forensic-AI: 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_ANALYZER_ENDPOINT,AI_ANALYZER_API_KEY,AI_ANALYZER_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/forensic-pathways.git
cd forensic-pathways
# Dependencies installieren
npm install
# Umgebungsvariablen konfigurieren
cp .env.example .env
# .env bearbeiten (siehe Konfiguration unten)
npm run astro build
# 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/forensic-pathways /opt/forensic-pathways
cd /opt/forensic-pathways
# Abhängigkeiten installieren
sudo npm install
# Production-Build erstellen
sudo npm run build
npm run astro build
# Berechtigungen setzen
sudo chown -R www-data:www-data /opt/forensic-pathways
3. Umgebungsvariablen konfigurieren
Erstelle /opt/forensic-pathways/.env:
# ===========================================
# ForensicPathways Environment Configuration
# ===========================================
# Authentication & OIDC (Required)
AUTH_SECRET=change-this-to-a-strong-secret-key-in-production
OIDC_ENDPOINT=https://your-oidc-provider.com
OIDC_CLIENT_ID=your-oidc-client-id
OIDC_CLIENT_SECRET=your-oidc-client-secret
# Auth Scopes - set to true in prod
AUTHENTICATION_NECESSARY_CONTRIBUTIONS=true
AUTHENTICATION_NECESSARY_AI=true
# Application Configuration (Required)
PUBLIC_BASE_URL=https://your-domain.com
NODE_ENV=production
# AI Service Configuration (Required for AI features)
AI_ANALYZER_MODEL=mistral-large-latest
AI_ANALYZER_ENDPOINT=https://api.mistral.ai
AI_ANALYZER_API_KEY=your-mistral-api-key
AI_RATE_LIMIT_DELAY_MS=1000
# Git Integration (Required for contributions)
GIT_REPO_URL=https://git.cc24.dev/mstoeck3/forensic-pathways
GIT_PROVIDER=gitea
GIT_API_ENDPOINT=https://git.cc24.dev/api/v1
GIT_API_TOKEN=your-git-api-token
# File Upload Configuration (Optional)
LOCAL_UPLOAD_PATH=./public/uploads
# Nextcloud Integration (Optional)
NEXTCLOUD_ENDPOINT=https://your-nextcloud.com
NEXTCLOUD_USERNAME=your-username
NEXTCLOUD_PASSWORD=your-password
NEXTCLOUD_UPLOAD_PATH=/kb-media
NEXTCLOUD_PUBLIC_URL=https://your-nextcloud.com/s/
# Berechtigungen sichern
sudo chmod 600 /opt/forensic-pathways/.env
sudo chown www-data:www-data /opt/forensic-pathways/.env
4. Nginx konfigurieren
Erstelle /etc/nginx/sites-available/forensic-pathways:
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/forensic-pathways/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/forensic-pathways /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
5. Systemd Service einrichten
Erstelle /etc/systemd/system/forensic-pathways.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/forensic-pathways
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/forensic-pathways
CapabilityBoundingSet=
# Resource Limits
LimitNOFILE=65536
MemoryMax=512M
[Install]
WantedBy=multi-user.target
# Service aktivieren und starten
sudo systemctl daemon-reload
sudo systemctl enable forensic-pathways
sudo systemctl start forensic-pathways
# Status prüfen
sudo systemctl status forensic-pathways
🔧 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/forensic-pathways
sudo git pull
# Dependencies aktualisieren
sudo npm install
# Rebuild
sudo npm run build
# Service neustarten
sudo systemctl restart forensic-pathways
💾 Backup
Wichtige Dateien für Backup:
/opt/forensic-pathways/src/data/tools.yaml
/opt/forensic-pathways/.env
/etc/nginx/sites-available/forensic-pathways
/etc/systemd/system/forensic-pathways.service
🤝 Beiträge
Contributions sind willkommen! Bitte:
- Issue im Repository erstellen
 - Feature-Branch erstellen
 - Pull Request öffnen
 - Tests durchführen
 
📞 Support
Bei Problemen oder Fragen:
- Issues: Repository Issues
 - Dokumentation: Siehe 
/knowledgebaseauf der Website 
📄 Lizenz
Dieses Projekt steht unter der BSD-3-Clause Lizenz.
Description
				
					Languages
				
				
								
								
									Astro
								
								41%
							
						
							
								
								
									TypeScript
								
								28.2%
							
						
							
								
								
									CSS
								
								12.6%
							
						
							
								
								
									HTML
								
								10%
							
						
							
								
								
									JavaScript
								
								4.7%
							
						
							
								
								
									Other
								
								3.5%