Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Cisco-FMC-honeypot — Originally a Honeypot for CVE-2026-20131 | Kitploit
Tools/GitHubGitHub/hassan-pouladi/cisco-fmc-honeypot
Vulnerability AnalysisNetwork SecurityMalware AnalysisThreat IntelligenceIncident Response
GitHubhassan-pouladi/cisco-fmc-honeypot

Cisco-FMC-honeypot

Originally a Honeypot for CVE-2026-20131

Repository anzeigen
11vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

FMC-Trap

Ein Low-Interaction-Honeypot, der die Web-Oberfläche eines Cisco Secure Firewall Management Centers (FMC) nachahmt und nicht authentifizierten Java-Serialisierungs-ähnlichen Angriffsverkehr (CVE-artige Insecure-Deserialization-Sonden) erfasst.

  • Sicher durch Design: Die Anwendung deserialisiert keine Java-Objekte; sie erkennt \xac\xed\x00\x05 (und Base64 rO0AB…) und extrahiert Shell- oder URL-Strings mittels regulärer Ausdrücke und Heuristiken.
  • Keine Befehlsausführung: URLs der zweiten Stufe werden nur mit Python requests in ein nicht ausführbares Download-Verzeichnis abgerufen.
  • Produktionsorientierter Stack: Docker Compose mit Gunicorn und optionalem Caddy (HTTPS, Let’s Encrypt).

Warum es ausführen?

Einzeilige JSON-Logs (kompatibel mit Splunk und ELK), optionale Telegram-Benachrichtigungen, gehashte Artefakte der zweiten Stufe und ein Nicht-Root-Containerbenutzer. Das Projekt richtet sich an Forscher, die eine gezielte FMC-ähnliche Falle ohne zusätzlichen Integrationscode benötigen.

Voraussetzungen

Schnellstart (ca. fünf Minuten)

1. Klonen

root@kitploit:~
git clone https://github.com/Hassan-Pouladi/Cisco-FMC-honeypot
cd FMC-Trap

2. Umgebung konfigurieren

root@kitploit:~
cp .env.example .env

Bearbeiten Sie .env nach Bedarf (siehe Umgebungsvariablen). Für Bereitstellungen hinter dem mitgelieferten Caddy setzen Sie TRUST_X_FORWARDED_FOR=1, damit die Client-IP-Adressen in den Logs den ursprünglichen Client widerspiegeln.

3. Caddy auf Ihre Domain ausrichten

Bearbeiten Sie die Caddyfile: Ersetzen Sie die Platzhalter-Hostnamen durch Ihre Domain (und ggf. www):

root@kitploit:~
example.com, www.example.com {
	reverse_proxy fmc-trap:5000
}

Heben Sie optional den globalen email [email protected]-Block in der Caddyfile auf, um Let's Encrypt-Ablaufhinweise zu erhalten.

4. DNS und Firewall (HTTPS)

  • Erstellen Sie A- (und ggf. AAAA-) Einträge: ihredomain.com → öffentliche IP Ihres Servers und www, falls verwendet.
  • Lassen Sie eingehenden TCP 80 und TCP 443 auf dem Host zu (Cloud-Sicherheitsgruppe und Host-Firewall, z. B. ufw allow 80,443/tcp).

5. Datenverzeichnisse (erforderlich)

Die Anwendung läuft als UID 10001 innerhalb des Containers. Das gebundene Verzeichnis ./data muss beschreibbar sein:

root@kitploit:~
mkdir -p data/logs data/downloads
sudo chown -R 10001:10001 data/logs data/downloads

Ohne korrekte Besitzerrechte können Exploit-POST-Anfragen 500 zurückgeben (Permission denied beim Schreiben von Logs oder Rohdaten).

6. Starten

root@kitploit:~
docker compose up -d --build

7. Überprüfen

root@kitploit:~
docker compose ps
curl -sI https://ihredomain.com/

Erwarten Sie HTTP/2 200 (oder 301 oder 302) und Via: Caddy. Im Browser sollte https://ihredomain.com/ die simulierte FMC-Anmeldeseite anzeigen.

Informationen zum Lesen von Ereignissen, Payloads und Docker-Ausgaben finden Sie unter Logs, Downloads und Service-Ausgabe finden und Häufige Vorgänge.

Logs, Downloads und Service-Ausgabe finden

Nachfolgendes bezieht sich auf Ihr Projektverzeichnis (den Ordner, der docker-compose.yml enthält, normalerweise FMC-Trap nach dem Klonen). Pfade beziehen sich auf den Host; Docker mountet sie per Bind in den Container.

Wenn etwas in der Log-Datei erscheint: fmc-trap.json erhält ein JSON-Objekt pro Zeile, wenn eine Anfrage Deserialisierungs-Sondenverhalten (Magic-Bytes in einem POST) entspricht. Normale GET-Anfragen an die gefälschte Anmeldeseite werden standardmäßig nicht in diese Datei geschrieben.

Wenn der Download-Ordner Dateien enthält: Einträge erscheinen nur, wenn die Pipeline eine URL aus einer Sonde extrahiert und der Harvester erfolgreich erlaubte entfernte Inhalte innerhalb von MAX_DOWNLOAD_MB abruft. Bleibt das Verzeichnis leer, liegen möglicherweise noch keine qualifizierenden URLs vor, oder Abrufe werden durch die Anwendungsrichtlinie blockiert.

JSON hübsch ausgeben (optional): Leiten Sie eine einzelne Zeile durch python -m json.tool oder verwenden Sie jq, falls installiert.

Häufige Vorgänge

Architektur

root@kitploit:~
Internet :443/:80 → Caddy (TLS, Let’s Encrypt) → fmc-trap:5000 (Gunicorn/Flask)
                              ↓
                    ./data/logs, ./data/downloads (Bind-Mounts)
  • Nur Caddy veröffentlicht 80 und 443 auf dem Host; der Anwendungscontainer ist nicht direkt exponiert (siehe expose: "5000" in Compose).
  • Caddy verwendet öffentliche DNS-Resolver (1.1.1.1, 8.8.8.8) im Container, damit Let's Encrypt auf Hosts erfolgreich ist, bei denen der VPS-Resolver von Docker aus nicht erreichbar ist (eine häufige Einschränkung bei einigen Cloud-Anbietern).

Umgebungsvariablen

Compose übergibt diese Variablen an den Dienst fmc-trap; Einzelheiten finden Sie in docker-compose.yml.

JSON-Log-Felder (Referenz)

Jede Zeile in data/logs/fmc-trap.json ist ein JSON-Objekt. Übliche Schlüssel sind timestamp, event_type, src_ip, headers, raw_payload_hash, extracted_commands und downloaded_file_hash, wenn eine Datei gespeichert wurde. Gespeicherte Blobs in data/downloads/ verwenden Modus 0400 (schreibgeschützt für den Besitzer).

Fehlerbehebung

Optional: Anwendung auf localhost verfügbar machen (Debugging)

Um Gunicorn direkt ohne Caddy zu erreichen, fügen Sie unter fmc-trap in docker-compose.yml Folgendes hinzu:

root@kitploit:~
ports:
  - "127.0.0.1:5000:5000"

Binden Sie die Anwendung in der Produktion nicht an 0.0.0.0, wenn Caddy TLS terminiert.

Sicherheit

  • Bereitstellung auf einem dedizierten VPS oder isolierten Netzwerk. Der Dienst behandelt bösartigen Datenverkehr und kann Malware zur Analyse herunterladen.
  • Speichern Sie Telegram-Tokens und andere Secrets nur in .env auf dem Host (niemals .env committen).
  • Beschränken Sie die Firewall auf die minimal erforderlichen Ports (80 und 443 für HTTPS).

Rechtliche und ethische Nutzung

Stellen Sie nur auf Systemen bereit, die Sie besitzen oder für die Sie ausdrücklich autorisiert sind, Instrumentierung zu installieren. Honeypots können Angriffsverkehr und Malware sammeln; halten Sie sich an geltendes Recht und organisatorische Richtlinien. Diese Software ist für Sicherheitsforschung bestimmt.

Tool herunterladen
ElementHinweise
Docker und Docker Compose v2Docker installieren
VPS oder HostEin dediziertes oder isoliertes Netzwerksegment wird empfohlen
Domain (optional)Für HTTPS: DNS konfigurieren und eingehenden TCP 80 und TCP 443 zum Host zulassen
WasHost-PfadÖffnen oder verfolgen
Ereignis-Log (JSON-Zeilen)data/logs/fmc-trap.jsontail -f data/logs/fmc-trap.json (Live-Stream), oder in einem Editor öffnen, oder in Splunk oder ELK aufnehmen
Heruntergeladene Payloads der zweiten Stufedata/downloads/Dateien erscheinen nur, wenn der Harvester eine entfernte Antwort speichert; jede Datei ist mit ihrem SHA256-Hash benannt (64 hexadezimale Zeichen), ohne Erweiterung. Auflisten mit ls -la data/downloads (Linux/macOS) oder Get-ChildItem data\downloads (Windows PowerShell)
Anwendungsprozess-AusgabeKeine Datei; Dockerdocker compose logs -f fmc-trap
Caddy (TLS, Proxy, ACME)Keine Datei; Dockerdocker compose logs -f caddy
Telegram-Benachrichtigungen (optional)Nicht in data/ gespeichertSetzen Sie TELEGRAM_BOT_TOKEN und TELEGRAM_CHAT_ID in .env; Benachrichtigungen werden bei Ereignis-Logs ausgelöst
ZielBefehl oder Aktion
Prüfen, ob Container laufendocker compose ps
Neustart nach Bearbeitung von .env oder Caddyfiledocker compose up -d --build (oder docker compose up -d --force-recreate, wenn nur env geändert)
Stack anhaltendocker compose down
Neue JSON-Ereignisse kontinuierlich verfolgentail -f data/logs/fmc-trap.json
Letzte Ereignisse anzeigentail -n 50 data/logs/fmc-trap.json
Heruntergeladene Artefakte zählenÖffnen Sie data/downloads im Dateimanager, oder verwenden Sie einen Shell-Dateizähler für dieses Verzeichnis (Dateien sind nach SHA256 benannt)
Sicherstellen, dass die Honeypot-Seite lädtÖffnen Sie https://ihredomain.com/ in einem Browser oder verwenden Sie curl -sI wie im Überprüfungsschritt
VariableZweckStandard / Hinweis
TRUST_X_FORWARDED_FORDen ersten X-Forwarded-For-Hop als src_ip verwenden1 wird mit Caddy empfohlen
DECEPTION_STATUS200 gibt einen HTML-Body zurück; 302 gibt eine Weiterleitung zurück200
DECEPTION_REDIRECT_URLZielpfad bei Status 302/
MAX_DOWNLOAD_MBHarvester-Limit pro URL16
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_IDOptionale BenachrichtigungenLeer deaktiviert Benachrichtigungen
FMC_SERVER_HEADERServer-Antwort-Headernginx
VT_API_KEYReserviertOptional
SymptomLösung
Permission denied beim Schreiben unter data/Führen Sie sudo chown -R 10001:10001 data/logs data/downloads aus
Bind for 0.0.0.0:80 failed: port is already allocatedEin anderer Dienst oder Container ist an 80 gebunden. Stoppen Sie diesen Dienst oder geben Sie 80 frei; nur ein Prozess kann pro Host auf 80 hören.
Let's Encrypt- oder ACME-Fehler in Caddy-LogsStellen Sie sicher, dass DNS auf diesen Server auflöst und dass 80 und 443 aus dem Internet erreichbar sind. Compose konfiguriert DNS 1.1.1.1 und 8.8.8.8 für Caddy, wenn der Host-Resolver innerhalb von Docker fehlschlägt.
curl zu HTTPS gibt leere Ausgabe zurück oder schlägt beim ersten Versuch fehlWarten Sie, bis Zertifikat erfolgreich bezogen in docker compose logs caddy erscheint.
Client-IP in Logs ist 172.x.x.xSetzen Sie TRUST_X_FORWARDED_FOR=1 bei Verwendung von Caddy und erstellen Sie die Container neu: docker compose up -d --force-recreate.