
cowrie v3.1.0
Pot de miel SSH/Telnet Cowrie 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
Qu'est-ce que Cowrie
Cowrie est un honeypot SSH et Telnet à interaction moyenne à élevée conçu pour journaliser les attaques par force brute et l'interaction avec le shell effectuée par l'attaquant. En mode interaction moyenne (shell), il émule un système UNIX en Python ; en mode interaction élevée (proxy), il fonctionne comme un proxy SSH et telnet afin d'observer le comportement de l'attaquant sur un autre système. En mode LLM, il utilise de grands modèles de langage pour générer des réponses dynamiques aux commandes de l'attaquant.
Cowrie <http://github.com/cowrie/cowrie/>_ est maintenu par Michel Oosterhof.
Documentation
La documentation est disponible ici <https://docs.cowrie.org/en/latest/index.html>_.
Slack
Vous pouvez rejoindre la communauté Cowrie sur le Slack workspace <https://www.cowrie.org/slack/>_ suivant.
Fonctionnalités
-
Choisir d'exécuter en tant que shell émulé (par défaut) :
- Système de fichiers factice avec la possibilité d'ajouter/supprimer des fichiers. Un système de fichiers factice complet ressemblant à une installation Debian 5.0 est inclus
- Possibilité d'ajouter du contenu de fichiers factices afin que l'attaquant puisse
catdes fichiers tels que/etc/passwd. Seuls des contenus de fichiers minimaux sont inclus - Cowrie sauvegarde les fichiers téléchargés avec wget/curl ou envoyés via SFTP et scp pour inspection ultérieure
-
Ou proxy SSH et telnet vers un autre système
- Exécuter comme un pur proxy telnet et ssh avec supervision
- Ou laisser Cowrie gérer un pool de serveurs émulés QEMU pour fournir les systèmes sur lesquels se connecter
-
Ou utiliser un backend LLM (expérimental) :
- Utiliser de grands modèles de langage (par exemple, OpenAI GPT) pour générer dynamiquement des réponses shell réalistes
- Gère n'importe quelle commande sans réponses prédéfinies
- Maintient le contexte de conversation pour des sessions cohérentes
Pour les deux configurations :
- Les journaux de session sont stockés dans un format compatible
User Mode Linux <http://user-mode-linux.sourceforge.net/>_ pour une relecture facile avec l'utilitaireplaylog. - Prise en charge de SFTP et SCP pour l'envoi de fichiers
- Prise en charge des commandes SSH exec
- Journalisation des tentatives de connexion direct-tcp (proxy ssh)
- Redirection des connexions SMTP vers le SMTP Honeypot (par exemple
mailoney <https://github.com/awhitehatter/mailoney>_) - Journalisation JSON pour un traitement facile dans les solutions de gestion des journaux
Installation
Il existe trois façons d'installer Cowrie : pip, Docker et un checkout git.
Pour votre premier honeypot, pip et Docker sont les voies les plus simples.
Utilisez un checkout git pour le développement ou les scénarios avancés où vous souhaitez
modifier Cowrie lui-même. Les instructions complètes pour les trois sont dans
le guide d'installation <https://docs.cowrie.org/en/latest/INSTALL.html>_.
Docker
Les images Docker <https://hub.docker.com/r/cowrie/cowrie>_ sont disponibles sur Docker Hub.
-
Pour démarrer rapidement et essayer Cowrie, exécutez ::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
Pour simplement le construire localement, exécutez ::
$ make docker-build
PyPI
Cowrie est disponible sur PyPI <https://pypi.org/project/cowrie>_. Pour l'installer
dans un environnement virtuel et le démarrer ::
$ 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 écrit le fichier de configuration etc/cowrie.cfg dans le répertoire
courant ; les journaux et les téléchargements se trouvent sous var/.
Prérequis
Logiciels requis pour une exécution locale :
- Python 3.11+
- python-virtualenv
Fichiers d'intérêt :
etc/cowrie.cfg- fichier de configuration de Cowrie (appartenant à l'opérateur). Créé parcowrie init.src/cowrie/data/etc/cowrie.cfg.dist <https://github.com/cowrie/cowrie/blob/main/src/cowrie/data/etc/cowrie.cfg.dist>_ - valeurs par défaut incluses, modifiez plutôt votreetc/cowrie.cfgetc/userdb.txt- identifiants pour accéder au honeypotsrc/cowrie/data/fs.pickle- système de fichiers factice ; contient à la fois les métadonnées (chemin, uid, gid, taille, mode) et les contenus intégrés (octetsA_CONTENTS) pour les petits fichiers que les attaquants cat souvent. Modifiez viafsctl; reconstruisez viamake build-fs-pickle.src/cowrie/data/txtcmds/- sortie pour les commandes factices simplesvar/log/cowrie/cowrie.json- sortie d'audit au format JSONvar/log/cowrie/cowrie.log- sortie de journal/débogagevar/lib/cowrie/tty/- journaux de session, rejouables avec l'utilitaireplaylog.var/lib/cowrie/downloads/- les fichiers transférés de l'attaquant vers le honeypot sont stockés ici
Commandes
cowrie- démarrer, arrêter et redémarrer Cowriefsctl- modifier le système de fichiers facticecreatefs- créer votre propre système de fichiers facticeplaylog- utilitaire pour rejouer les journaux de sessionasciinema- convertir les journaux Cowrie en fichiers asciinema
Contributeurs
De nombreuses personnes ont contribué à Cowrie au fil des années. Remerciements particuliers à :
- Upi Tamminen (desaster) pour tout son travail de développement de Kippo sur lequel Cowrie était basé
- Dave Germiquet (davegermiquet) pour la prise en charge de TFTP, les tests unitaires, la nouvelle gestion des processus
- Olivier Bilodeau (obilodeau) pour la prise en charge de Telnet
- Ivan Korolev (fe7ch) pour de nombreuses améliorations au fil des années.
- Florian Pelgrim (craneworks) pour son travail sur le nettoyage du code et Docker.
- Guilherme Borges (sgtpepperpt) pour le proxy SSH et telnet (GSoC 2019)
- Et bien d'autres encore.