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-Untersuchunglaw-enforcement
- Strafverfolgung & Kriminalermittlungmalware-analysis
- Malware-Analyse & Reverse Engineeringfraud-investigation
- Betrugs- & Finanzkriminalitätnetwork-forensics
- Netzwerk-Forensik & Traffic-Analysemobile-forensics
- Mobile Geräte & App-Forensikcloud-forensics
- Cloud & Virtuelle Umgebungenics-forensics
- Industrielle Kontrollsysteme (ICS/SCADA)
Phasen (NIST SP 800-86):
data-collection
- Datensammlungexamination
- Auswertunganalysis
- Analysereporting
- Bericht & Präsentation
Domain-agnostic Kategorien:
collaboration-general
- Übergreifend & Kollaborationspecific-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) odertool
(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-Authentifizierungslogiksrc/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
- Fork des Repositories erstellen
src/data/tools.yaml
bearbeiten- Pull Request mit Beschreibung erstellen
Option 2: Web-Editor verwenden
- YAML-Editor öffnen (
/dfir_yaml_editor.html
) - Tool/Methode hinzufügen
- 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