
cowrie v3.0.12
Cowrie SSH/Telnet Honeypot https://docs.cowrie.org/
.. SPDX-FileCopyrightText: 2014 Upi Tamminen [email protected] .. SPDX-FileCopyrightText: 2014-2025 Michel Oosterhof [email protected] .. .. SPDX-License-Identifier: BSD-3-Clause
Cowrie
Was ist Cowrie
Cowrie ist ein SSH- und Telnet-Honeypot mittlerer bis hoher Interaktion, der dazu entwickelt wurde, Brute-Force-Angriffe und die Shell-Interaktion des Angreifers zu protokollieren. Im Modus mittlerer Interaktion (Shell) emuliert er ein UNIX-System in Python, im Modus hoher Interaktion (Proxy) fungiert er als SSH- und Telnet-Proxy, um das Verhalten des Angreifers auf einem anderen System zu beobachten. Im LLM-Modus verwendet er große Sprachmodelle, um dynamische Antworten auf Angreiferbefehle zu generieren.
Cowrie <http://github.com/cowrie/cowrie/>_ wird von Michel Oosterhof gepflegt.
Dokumentation
Die Dokumentation finden Sie hier <https://docs.cowrie.org/en/latest/index.html>_.
Slack
Sie können der Cowrie-Community im folgenden Slack-Workspace <https://www.cowrie.org/slack/>_ beitreten.
Funktionen
-
Wahlweise als emulierte Shell ausführen (Standard):
- Fake-Dateisystem mit der Möglichkeit, Dateien hinzuzufügen/zu entfernen. Ein vollständiges Fake-Dateisystem, das einer Debian-5.0-Installation ähnelt, ist enthalten
- Möglichkeit, Fake-Dateiinhalte hinzuzufügen, sodass der Angreifer Dateien wie
/etc/passwdmitcatanzeigen kann. Es sind nur minimale Dateiinhalte enthalten - Cowrie speichert Dateien, die mit wget/curl heruntergeladen oder per SFTP und scp hochgeladen wurden, zur späteren Untersuchung
-
Oder SSH und Telnet auf ein anderes System proxen
- Als reiner Telnet- und SSH-Proxy mit Überwachung ausführen
- Oder Cowrie einen Pool von QEMU-emulierten Servern verwalten lassen, um die Systeme für die Anmeldung bereitzustellen
-
Oder ein LLM-Backend verwenden (experimentell):
- Große Sprachmodelle (z. B. OpenAI GPT) verwenden, um dynamisch realistische Shell-Antworten zu generieren
- Behandelt jeden Befehl ohne vordefinierte Antworten
- Behält den Gesprächskontext für konsistente Sitzungen bei
Für beide Einstellungen:
- Sitzungsprotokolle werden in einem
User Mode Linux <http://user-mode-linux.sourceforge.net/>_ kompatiblen Format gespeichert, das sich mit dem Dienstprogrammplaylogeinfach wiedergeben lässt. - SFTP- und SCP-Unterstützung für Datei-Uploads
- Unterstützung für SSH-Exec-Befehle
- Protokollierung von Direct-TCP-Verbindungsversuchen (SSH-Proxying)
- SMTP-Verbindungen an einen SMTP-Honeypot weiterleiten (z. B.
mailoney <https://github.com/awhitehatter/mailoney>_) - JSON-Protokollierung für die einfache Verarbeitung in Log-Management-Lösungen
Installation
Es gibt drei Möglichkeiten, Cowrie zu installieren: pip, Docker und ein git-Checkout.
Für Ihren ersten Honeypot sind pip und Docker die einfachsten Wege.
Verwenden Sie ein git-Checkout für die Entwicklung oder fortgeschrittene Szenarien, in denen Sie
Cowrie selbst modifizieren möchten. Vollständige Anweisungen für alle drei finden Sie in
der Installationsanleitung <https://docs.cowrie.org/en/latest/INSTALL.html>_.
Docker
Docker-Images <https://hub.docker.com/repository/docker/cowrie/cowrie>_ sind auf Docker Hub verfügbar.
-
Für einen schnellen Start und um Cowrie auszuprobieren, führen Sie Folgendes aus::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
Um es nur lokal zu erstellen, führen Sie Folgendes aus::
$ make docker-build
PyPI
Cowrie ist auf PyPI verfügbar <https://pypi.org/project/cowrie>_. Um es
in einer virtuellen Umgebung zu installieren und zu starten::
$ mkdir my-honeypot && cd my-honeypot
$ python3 -m venv cowrie-env
$ source cowrie-env/bin/activate
(cowrie-env) $ pip install cowrie
(cowrie-env) $ cowrie init
(cowrie-env) $ cowrie start
cowrie init schreibt die Konfigurationsdatei etc/cowrie.cfg in das aktuelle
Verzeichnis; Protokolle und Downloads landen unter var/.
Anforderungen
Software, die für den lokalen Betrieb erforderlich ist:
- Python 3.10+
- python-virtualenv
Interessante Dateien:
etc/cowrie.cfg- Cowries Konfigurationsdatei (vom Betreiber verwaltet). Wird voncowrie initerstellt.src/cowrie/data/etc/cowrie.cfg.dist <https://github.com/cowrie/cowrie/blob/main/src/cowrie/data/etc/cowrie.cfg.dist>_ - gebündelte Standardwerte, bearbeiten Sie stattdessen Ihreetc/cowrie.cfgetc/userdb.txt- Anmeldeinformationen für den Zugriff auf den Honeypotsrc/cowrie/data/fs.pickle- Fake-Dateisystem; enthält sowohl Metadaten (Pfad, uid, gid, Größe, Modus) als auch die eingebetteten Inhalte (A_CONTENTS-Bytes) für die kleinen Dateien, die Angreifer häufig mitcatanzeigen. Bearbeiten überfsctl; neu erstellen übermake build-fs-pickle.src/cowrie/data/txtcmds/- Ausgabe für einfache Fake-Befehlevar/log/cowrie/cowrie.json- Audit-Ausgabe im JSON-Formatvar/log/cowrie/cowrie.log- Protokoll-/Debug-Ausgabevar/lib/cowrie/tty/- Sitzungsprotokolle, wiedergebbar mit dem Dienstprogrammplaylog.var/lib/cowrie/downloads/- Dateien, die vom Angreifer auf den Honeypot übertragen wurden, werden hier gespeichert
Befehle
cowrie- Cowrie starten, stoppen und neu startenfsctl- das Fake-Dateisystem modifizierencreatefs- ein eigenes Fake-Dateisystem erstellenplaylog- Dienstprogramm zum Wiedergeben von Sitzungsprotokollenasciinema- Cowrie-Protokolle in asciinema-Dateien umwandeln
Mitwirkende
Viele Menschen haben im Laufe der Jahre zu Cowrie beigetragen. Besonderer Dank gilt:
- Upi Tamminen (desaster) für seine gesamte Arbeit an der Entwicklung von Kippo, auf dem Cowrie basiert
- Dave Germiquet (davegermiquet) für TFTP-Unterstützung, Unit-Tests, neue Prozessverwaltung
- Olivier Bilodeau (obilodeau) für Telnet-Unterstützung
- Ivan Korolev (fe7ch) für viele Verbesserungen im Laufe der Jahre.
- Florian Pelgrim (craneworks) für seine Arbeit an Code-Bereinigung und Docker.
- Guilherme Borges (sgtpepperpt) für SSH- und Telnet-Proxy (GSoC 2019)
- Und viele, viele andere.