
cowrie v3.1.0
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 de shell realizada por el atacante. En modo de interacción media (shell) emula un sistema UNIX en Python, en modo de interacción alta (proxy) funciona como un proxy SSH y telnet para observar el comportamiento del atacante en otro sistema. En 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
-
Elegir ejecutarlo como un shell emulado (predeterminado):
- Sistema de archivos falso con la capacidad de agregar/eliminar archivos. Se incluye un sistema de archivos falso completo que simula una instalación de Debian 5.0
- Posibilidad de agregar contenido de archivos falsos para que el atacante pueda hacer
cata archivos como/etc/passwd. Solo se incluye contenido mínimo 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
- Ejecutarlo como un proxy puro de telnet y ssh con monitoreo
- O dejar que Cowrie gestione un grupo de servidores emulados con QEMU para proporcionar los sistemas en los que iniciar sesión
-
O usar un backend LLM (experimental):
- Usar modelos de lenguaje grandes (por ejemplo, OpenAI GPT) para generar dinámicamente respuestas de shell realistas
- Maneja cualquier comando sin respuestas predefinidas
- Mantiene el contexto de la conversación para sesiones consistentes
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 de SFTP y SCP para la carga de archivos
- Soporte para comandos exec de SSH
- Registro de intentos de conexión direct-tcp (proxy ssh)
- Reenvío de conexiones SMTP al SMTP Honeypot (por ejemplo,
mailoney <https://github.com/awhitehatter/mailoney>_) - Registro en JSON para un fácil procesamiento 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 rutas más sencillas.
Usa una copia de git para desarrollo o escenarios avanzados en los que quieras
modificar Cowrie mismo. 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/r/cowrie/cowrie>_ están disponibles en Docker Hub.
-
Para comenzar rápidamente y probar Cowrie, ejecuta::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
Para solo construirlo 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.11+
- 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 metadatos (ruta, uid, gid, tamaño, modo) como el contenido incrustado (bytesA_CONTENTS) para los archivos pequeños que los atacantes suelen hacer cat. Editar mediantefsctl; reconstruir 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 log/debugvar/lib/cowrie/tty/- registros de sesión, reproducibles con la utilidadplaylog.var/lib/cowrie/downloads/- los archivos transferidos desde el 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. Agradecimientos especiales a:
- Upi Tamminen (desaster) por todo su trabajo desarrollando Kippo, en el que se basó Cowrie
- Dave Germiquet (davegermiquet) por el soporte de TFTP, pruebas unitarias, nuevo manejo de procesos
- Olivier Bilodeau (obilodeau) por el soporte de Telnet
- Ivan Korolev (fe7ch) por muchas mejoras a lo largo de los años.
- Florian Pelgrim (craneworks) por su trabajo en la limpieza de código y Docker.
- Guilherme Borges (sgtpepperpt) por el proxy SSH y telnet (GSoC 2019)
- Y muchos muchos otros.