
cowrie v3.0.12
Honeypot 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é es Cowrie
Cowrie es un honeypot SSH y Telnet de interacción media a alta diseñado para registrar ataques de fuerza bruta y la interacción con el shell realizada por el atacante. En el modo de interacción media (shell) emula un sistema UNIX en Python; en el modo de interacción alta (proxy) funciona como un proxy SSH y Telnet para observar el comportamiento del atacante en otro sistema. En el modo LLM, utiliza modelos de lenguaje grandes para generar respuestas dinámicas a los comandos del atacante.
Cowrie <http://github.com/cowrie/cowrie/>_ es mantenido por Michel Oosterhof.
Documentación
La documentación se puede encontrar aquí <https://docs.cowrie.org/en/latest/index.html>_.
Slack
Puedes unirte a la comunidad de Cowrie en el siguiente espacio de trabajo de Slack <https://www.cowrie.org/slack/>_.
Características
-
Elige ejecutarlo como un shell emulado (por defecto):
- Sistema de archivos falso con la capacidad de añadir/eliminar archivos. Se incluye un sistema de archivos falso completo que se asemeja a una instalación de Debian 5.0
- Posibilidad de añadir contenidos de archivos falsos para que el atacante pueda hacer
catde archivos como/etc/passwd. Solo se incluyen contenidos mínimos de archivos - Cowrie guarda los archivos descargados con wget/curl o subidos con SFTP y scp para su posterior inspección
-
O hacer proxy de SSH y Telnet a otro sistema
- Ejecutar como un proxy puro de Telnet y SSH con monitorización
- O dejar que Cowrie gestione un grupo de servidores emulados con QEMU para proporcionar los sistemas a los que iniciar sesión
-
O usar un backend LLM (experimental):
- Usar modelos de lenguaje grandes (p. ej., OpenAI GPT) para generar respuestas de shell realistas de forma dinámica
- Maneja cualquier comando sin respuestas predefinidas
- Mantiene el contexto de la conversación para sesiones coherentes
Para ambas configuraciones:
- Los registros de sesión se almacenan en un formato compatible con
User Mode Linux <http://user-mode-linux.sourceforge.net/>_ para una fácil reproducción con la utilidadplaylog. - Soporte SFTP y SCP para la subida de archivos
- Soporte para comandos exec de SSH
- Registro de intentos de conexión directa TCP (proxy SSH)
- Reenvío de conexiones SMTP a un honeypot SMTP (p. ej.,
mailoney <https://github.com/awhitehatter/mailoney>_) - Registro JSON para un procesamiento fácil en soluciones de gestión de registros
Instalación
Hay tres formas de instalar Cowrie: pip, Docker y una copia de git.
Para tu primer honeypot, pip y Docker son las vías más fáciles.
Usa una copia de git para desarrollo o escenarios avanzados donde quieras
modificar el propio Cowrie. Las instrucciones completas para las tres están en
la guía de instalación <https://docs.cowrie.org/en/latest/INSTALL.html>_.
Docker
Las imágenes de Docker <https://hub.docker.com/repository/docker/cowrie/cowrie>_ están disponibles en Docker Hub.
-
Para empezar rápidamente y probar Cowrie, ejecuta::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
Para compilarlo localmente, ejecuta::
$ make docker-build
PyPI
Cowrie está disponible en PyPI <https://pypi.org/project/cowrie>_. Para instalarlo
en un entorno virtual e iniciarlo::
$ 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 escribe el archivo de configuración etc/cowrie.cfg en el directorio
actual; los registros y las descargas se guardan en var/.
Requisitos
Software necesario para ejecutarlo localmente:
- Python 3.10+
- python-virtualenv
Archivos de interés:
etc/cowrie.cfg- archivo de configuración de Cowrie (propiedad del operador). Creado porcowrie init.src/cowrie/data/etc/cowrie.cfg.dist <https://github.com/cowrie/cowrie/blob/main/src/cowrie/data/etc/cowrie.cfg.dist>_ - valores predeterminados incluidos; edita tuetc/cowrie.cfgen su lugaretc/userdb.txt- credenciales para acceder al honeypotsrc/cowrie/data/fs.pickle- sistema de archivos falso; contiene tanto los metadatos (ruta, uid, gid, tamaño, modo) como los contenidos incrustados (bytesA_CONTENTS) para los archivos pequeños que los atacantes suelen consultar concat. Edítalo mediantefsctl; recompílalo mediantemake build-fs-pickle.src/cowrie/data/txtcmds/- salida para comandos falsos simplesvar/log/cowrie/cowrie.json- salida de auditoría en formato JSONvar/log/cowrie/cowrie.log- salida de registro/depuraciónvar/lib/cowrie/tty/- registros de sesión, reproducibles con la utilidadplaylog.var/lib/cowrie/downloads/- los archivos transferidos del atacante al honeypot se almacenan aquí
Comandos
cowrie- iniciar, detener y reiniciar Cowriefsctl- modificar el sistema de archivos falsocreatefs- crear tu propio sistema de archivos falsoplaylog- utilidad para reproducir registros de sesiónasciinema- convertir los registros de Cowrie en archivos asciinema
Colaboradores
Muchas personas han contribuido a Cowrie a lo largo de los años. Un agradecimiento especial a:
- Upi Tamminen (desaster) por todo su trabajo desarrollando Kippo, en el que se basó Cowrie
- Dave Germiquet (davegermiquet) por el soporte TFTP, las pruebas unitarias y el nuevo manejo de procesos
- Olivier Bilodeau (obilodeau) por el soporte Telnet
- Ivan Korolev (fe7ch) por muchas mejoras a lo largo de los años.
- Florian Pelgrim (craneworks) por su trabajo en la limpieza del código y Docker.
- Guilherme Borges (sgtpepperpt) por el proxy SSH y Telnet (GSoC 2019)
- Y muchos, muchos otros.