
Framework für Phishing-Simulation und Sensibilisierung für knotenbasierte Kampagnen, Credential-Erfassung, SMTP-Zustellung, CAPTCHA und optionales Browser-Credential-Replay.
Phishing-Simulation und Framework für Sicherheitsbewusstsein mit konfigurierbaren Workflows, Kampagnenverwaltung und optionalem Credential-Proxy.
cd hinein../deploy.sh aus – dies konfiguriert die Voraussetzungen für dich, vorausgesetzt du verwendest Ubuntu../start.sh --preload-ml aus. Dies startet die Server und lädt die von uns verwendeten ML-Modelle vorab.Du erreichst die Admin-Oberfläche unter http://localhost:8000 und den Phishing-Server unter http://localhost:1234. Standard-Login: admin / admin123. Ändere das Passwort nach der ersten Anmeldung.
Leite Port 8000 per SSH auf dein lokales System weiter, um auf das Admin-Panel zuzugreifen. Setze das Admin-Panel oder den Flask-Server (Port 1234) NICHT direkt dem Internet aus.
deploy.sh installiert einen Caddy-Server auf demselben Host. Alles ist darauf ausgelegt, dass du Caddy als Reverse-Proxy verwendest. Du musst es nicht tun, aber hier gibt es Drachen.
Optionale Flags für start.sh:
--with-caddy — Startet Caddy über Docker (nur für lokale Tests).--preload-ml — Lädt das Phishing-Erkennungsmodell vorab herunter (~1,3 GB); vermeidet Verzögerungen bei der ersten Verwendung des Phishing-Detector-Plugins.--reset-db — Setzt die Datenbank zurück und initialisiert sie neu.--admin-only — Startet nur den Admin-Server (Port 8000).--phishing-only — Startet nur den Phishing-Server (Port 1234).--skip-init — Überspringt die Datenbankinitialisierung.--skip-setup — Überspringt die Einrichtung von venv/Abhängigkeiten; lädt nur .env und startet die Server.Ohne start.sh kannst du nach der Installation der Abhängigkeiten und der Initialisierung der Datenbank beide Server mit uv run python -m cli start starten.
Python: Siehe requirements.txt. Der Kern-Stack umfasst Flask, SQLAlchemy, Jinja2, Pydantic, Flask-Login, python-jose, passlib, cryptography und Flask-WTF. Das Phishing-Detector-Plugin verwendet transformers und torch. Der Credential-Proxy verwendet Playwright; optionale Integrationen verwenden OpenAI/Anthropic und boto3 (AWS Connect).
Entwicklung: requirements-dev.txt fügt pytest, pytest-cov und zugehörige Testwerkzeuge hinzu. Installiere mit uv pip install -r requirements-dev.txt, um Tests und Testabdeckung auszuführen.
System (Produktion): Das Deploy-Skript zielt auf Ubuntu/Debian. Es installiert uv, Caddy (Reverse-Proxy) und Systempakete wie libmagic1. Für den Credential-Proxy führt start.sh uv run playwright install chromium aus, um Chromium zu installieren.
Produktionsvorbereitung auf Ubuntu. Idempotent. Es:
requirements.txt..env aus .env.example, falls es fehlt, und generiert SECRET_KEY und JWT_SECRET_KEY, falls diese nicht gesetzt sind.storage/caddy/data, storage/caddy/config, storage/uploads, storage/templates, storage/assets, instance).--init-db (führt uv run python -m cli init --force aus).Es startet die Anwendung nicht. Für die Produktion: Starte Caddy (Reverse-Proxy) und starte dann die App mit ./start.sh oder einem Prozessmanager, sodass der gesamte Datenverkehr über den Proxy zur App gelangt.
Entwicklung und lokaler Start. Es:
.env und stellt sicher, dass SECRET_KEY und JWT_SECRET_KEY vorhanden sind (generiert sie, wenn Standardwerte vorliegen).requirements.txt.uv run playwright install chromium für den Credential-Proxy aus.--preload-ml vorab herunter (~1,3 GB).--skip-init). Verwende --reset-db, um zu löschen und neu zu initialisieren.--with-caddy (nur lokale Tests).uv run python -m cli start; verwende --admin-only oder --phishing-only, um nur einen zu starten.In der Produktion muss die Anwendung hinter einem Reverse-Proxy laufen. Setze die Flask-Entwicklungsserver nicht direkt dem Internet aus.
Der Reverse-Proxy ist verantwortlich für TLS-Terminierung, korrekte Host-Header, Pfad- und Domänen-Routing sowie die Trennung von Admin- und Kampagnenverkehr. Die App lauscht auf localhost oder einem internen Port; der Proxy übernimmt öffentliches HTTPS und leitet je nach Konfiguration an den Admin-Server (z. B. Port 8000) und den Phishing-Server (z. B. Port 1234) weiter.
Empfohlen: Verwende Caddy als Reverse-Proxy. deploy.sh installiert Caddy über APT. Das Projekt enthält Caddyfile-Beispiele (z. B. Caddyfile.minimal). Starte nach der Ausführung von deploy.sh Caddy (z. B. caddy run --config /path/to/Caddyfile.minimal) und starte dann die Anwendung mit ./start.sh oder einem Prozessmanager. Jeder gleichwertige Reverse-Proxy (nginx, Traefik usw.) ist akzeptabel, solange die App nicht direkt exponiert wird.
Reel ist ein Framework für Phishing-Simulationen und Sicherheitsbewusstsein. Betreiber verwenden die Admin-Oberfläche, um Kampagnen, Workflows, Vorlagen und Ziele zu verwalten. Der Phishing-Server stellt Kampagnen-Landingpages bereit und führt bei jeder Anfrage Workflows aus – knotenbasierte Graphen von Plugins.
Es gibt zwei Anwendungseinstiegspunkte in app.py: create_app() für den Phishing-Server und create_admin_app() für die Admin-Oberfläche. Kampagnen können inbound (ein Besucher folgt einem Link; GET- und POST-Workflows verarbeiten Seitenaufrufe und Formularübermittlungen) oder outbound sein (das System sendet E-Mails oder Anrufe über Sende-Workflows). Caddy kann für das domänenbasierte Routing von Kampagnen verwendet werden. Der Credential-Proxy verwendet Playwright für die Browser-Automatisierung, um erfasste Anmeldedaten auf Zielseiten erneut abzuspielen.
Ein Benutzer besucht eine Kampagnen-URL (z. B. /<campaign_uid>). Der Phishing-Server leitet anhand der Kampagnen-UID weiter. Bei GET-Anfragen führt er den GET-Workflow der Kampagne aus (z. B. Landingpage rendern, CAPTCHA); bei POST-Anfragen führt er den POST-Workflow aus (z. B. Eingaben validieren, Anmeldedaten erfassen, weiterleiten). Workflows sind vom Typ campaign und deklarieren die unterstützte HTTP-Methode (GET, POST oder BOTH). Der Ausführungskontext umfasst campaign, request, session und variables. Die Antwort wird aus Kontextschlüsseln wie _response_html, _response_redirect oder _response_json übernommen. Inbound-Workflows werden für Landingpages, CAPTCHA, Erfassung von Anmeldedaten, Weiterleitungen und Protokollierung verwendet.