
KI-gestütztes reaktives Website-Verteidigungssystem, das Angriffe erkennt, analysiert und mithilfe von LLM-Agenten in Echtzeit automatisch den Quellcode patcht.
KI-gestütztes reaktives Webapp-Verteidigungssystem, das entwickelt wurde, um KI-gestützten Angriffen in Echtzeit standzuhalten.
Mahoraga Defender ist ein PoC eines reaktiven, angreifertyp-agnostischen Echtzeit-Verteidigungssystems. Der Kernmechanismus besteht darin, einen Gegner dazu zu verleiten, Entdeckungen und Angriffe in einer harmlosen, gefälschten Umgebung („Shadow“-Umgebung) durchzuführen, und diese Angriffe zu protokollieren. Dann analysiert ein LLM-Agent die Protokolle und übergibt Details über entdeckte Exploits an weitere LLM-Agenten, um die Schwachstellen zu beheben und die Patches bereitzustellen.
Das System ist auf vollständige Automatisierung unter Berücksichtigung der API-Kostenoptimierung ausgelegt. Eine GUI wurde erstellt, um Datenverkehrsprotokolle, Agentenaktivitäten und die Patching-Pipeline einfach zu überwachen und die Anzahl der bereitzustellenden Agenten zu steuern.
Die Ziel-Website (Opfer-Website) ist ein Fork von crAPI (Completely Ridiculous API), einer absichtlich unsicheren Webanwendung, die von OWASP für das Erlernen von API-Sicherheitstests erstellt wurde. crAPI simuliert eine Fahrzeugbesitzer-Plattform mit Mikrodiensten, die die OWASP Top 10 API-Schwachstellen abdecken. Der Verteidiger ist so ausgelegt, dass klar zwischen normalen und böswilligen Benutzersitzungen unterschieden wird, sodass normale Benutzer keine Einbußen in der Benutzererfahrung erleben, während der Verteidiger die Website vor Angreifern schützt.
Unser Fork (crapi-fork/) fügt hinzu:
Eine unberührte Kopie wird in crapi-original/ aufbewahrt, sodass die Umgebung zwischen Experimenten zurückgesetzt werden kann.
crapi-fork/. Arbeitet in einer gesandboxten Bash-Umgebung mit Zugriff nur auf crapi-fork/.Bei der Bereitstellung werden Python-Dienste über gunicorn heiß nachgeladen (sofort), während Java/Go-Dienste über docker compose up -d --build neu erstellt werden.
Warum kein Tester-Agent? Wir haben erwogen, einen dedizierten Benutzertest-Agenten und eine separate Testumgebung hinzuzufügen, aber beide entfernt, um das System leicht zu halten.
conda create -n XYZ python=3.13, dann conda activate XYZ).pip install -r requirements.txt./start.sh aus dem Projektstammverzeichnis aus – setzt den Quellcode von crapi-fork/ von crapi-original/ zurück, erstellt alle Dienste neu, platziert Flags und Honeypots.python3 -m harness.main --app-url http://localhost:8888 -v.localhost:8888 (Aufgabenbeschreibung unter localhost:8888/challenge) Wenn Sie Pentesting mit einem KI-Agenten durchführen, sollte der Agent keinen Zugriff auf interne Docker-Prozesse haben, da dies als Betrug angesehen würde.localhost:3000, um Echtzeit-Protokolle, Agentenaktionen, Patches, erbeutete Flags usw. zu sehen.docker compose down -v aus, um die Docker-Container und Datenbanken zu entfernen, die für dieses Projekt gestartet wurden.Dashboard: http://localhost:3000
Eine globale Agenten-Statusleiste ist auf allen Registerkarten sichtbar, die den Agentenstatus (aktiv/hängend/im Leerlauf/Fehler) mit Skalierungssteuerungen anzeigt.
Echtzeit-Ansicht mit geteiltem Bildschirm für Produktions-/Shadow-Anfrageprotokolle mit nach Schweregrad farbig markierten Einträgen und Verkehrsgruppierung
Pro-Agent-Aktivitätsfeed mit Systemaufforderungen, Tool-Aufrufen und LLM-Modellbezeichnungen
Kanban-Board: Erkannt → In Bearbeitung → In Prüfung → Bereitgestellt, mit größenveränderbarem Detailbereich
Code-Unterschiede, geänderte Dateien, Rollback-Befehle und Zeitstrahl pro Patch
Das System verwendet jede OpenAI-kompatible API. Konfigurieren Sie Modelle in config/llm.yaml:
# Shadow Analyzer — reads shadow logs to detect exploits (no tool calling)
shadow_analyzer:
provider: gemini
model: gemini-2.5-flash
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.30
output_per_million: 2.50
# Fixer — patches source code (tool-calling agent)
fixer:
provider: gemini
model: gemini-3-flash-preview
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.50
output_per_million: 3.00
# Reviewer — verifies patches (tool-calling agent)
reviewer:
provider: gemini
model: gemini-3-flash-preview
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.50
output_per_million: 3.00
Um den Anbieter zu wechseln, ändern Sie provider und model und setzen Sie den entsprechenden API-Schlüssel in harness/.env:
Unterstützte Anbieter: OpenAI, Gemini, Anthropic, Groq, Together, Ollama, Mistral, DeepSeek, Fireworks, xAI, Perplexity, OpenRouter, Zhipu. Fügen Sie benutzerdefinierte Anbieter hinzu, indem Sie deren Basis-URL zum Abschnitt providers in der YAML-Datei hinzufügen.
providers:
openai: https://api.openai.com/v1
gemini: https://generativelanguage.googleapis.com/v1beta/openai/
anthropic: https://api.anthropic.com/v1/
groq: https://api.groq.com/openai/v1
... # add more if needed
Hinweis: Nur wenige API-Anbieter haben ein ausreichend hohes Ratenlimit, um 3+ gleichzeitig arbeitende Agenten zu unterstützen. Googles Gemini ist einer davon.
Besonderer Dank an d3lta05 (LinkedIn) und aleemladha für ihre Hilfe beim Penetrationstest.