-
Instalar y configurar Cowrie en Debian
Este hack está inspirado en las enseñanzas de mi profesor de seguridad informática, que sé que es un amante apasionado de Debian. Vamos allá:
0 – Cambio de puerto del SSH legítimo (opcional)
En el caso de que tengamos un servidor SSH previamente activo en el honeypot y no queremos perder acceso a él, vamos a cambiar el puerto por defecto de ese servidor SSH legítimo a otro diferente al 22. Para ello ejecutamos como root:
sed -i -e 's-#Port 22-Port 54321-g' /etc/ssh/sshd_config systemctl daemon-reload systemctl restart ssh
Listo, a partir de ahora, podremos conectarnos al SSH legítimo en el puerto 54321. Incluso podemos ocultar ese puerto 54321 detrás de un port knocking, pero eso es historia para otro hack.
1 – Instalación de requisitos a nivel sistema:
Ejecutamos con permisos root (o con sudo):
apt -y update apt -y install git apt -y install python3-venv apt -y install python3-pip apt -y install nftables
2 – Creación del usuario con el que se ejecutará el paquete:
Ejecutamos con permisos root (o con sudo):
echo -e "\n" | adduser --disabled-password honeypot
3 – Clonado del repositorio y creación del entorno virtual de python:
Ejecutamos:
/usr/bin/su - honeypot git clone https://github.com/cowrie/cowrie.git /usr/bin/python3 -m venv cowrie
4 – Configuración del servicio
Vamos a valernos del archivo de configuración por defecto para crear una configuración básica en la que vamos a activar también telnet. Ejecutamos:
# Para clonar el template cp -vf ~/cowrie/etc/cowrie.cfg.dist ~/cowrie/etc/cowrie.cfg # Para activar telenet, pasando de false a true sed -i -e '/# Enable Telnet support/{n;s|enabled = false|enabled = true|}' ~/cowrie/etc/cowrie.cfg # Para cambiar el nombre por defecto del honeypot sed -i -e 's/hostname = svr04/hostname = debianserver/g' ~/cowrie/etc/cowrie.cfg # Mostrar una IP diferente a la oficial del host sed -i -e 's/#fake_addr = 192.168.66.254/#fake_addr = 192.168.100.10/g' ~/cowrie/etc/cowrie.cfg # Cambiar la versión del sistema operativo que se muestra sed -i -e 's/kernel_version = 3.2.0-4-amd64/kernel_version = 6.8.12-5-pve/g' ~/cowrie/etc/cowrie.cfg sed -i -e 's/kernel_build_string = #1 SMP Debian 3.2.68-1+deb7u1/kernel_build_string = #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-5 (2024-12-03T10:26Z)/g' ~/cowrie/etc/cowrie.cfg sed -i -e 's/ssh_version = OpenSSH_7.9p1, OpenSSL 1.1.1a 20 Nov 2018/ssh_version = OpenSSH_9.2p1 Debian-2+deb12u3, OpenSSL 3.0.15 3 Sep 2024/g' ~/cowrie/etc/cowrie.cfg5 – Creación del archivo de usuarios permitidos:
Podemos crear un archivo donde estarán los usuarios que tendrán permitido el ingreso al honeypot. Ponemos una contraseña fácil para que puedan entrar con un ataque de fuerza bruta.
echo "iaramendi:x:Zubiri" > ~/cowrie/etc/userdb.txt6 – Entrada en el entorno virtual e instalación de dependencias:
Todavía estando en la raíz de la carpeta home del usuario cowrie (~), ejecutamos:
# Para entrar en el entorno virtual source ~/cowrie/bin/activate # Para empezar a instalar cosas nos ponemos en la ubicación correcta cd ~/cowrie/ # Para instalar o actualizar pip pip3 install -U pip # Para instalar o actualizar las dependencias pip3 install -U -r requirements.txt
Ya estaríamos en condiciones de ejecutar el honeypot directamente desde el entorno virtual.
5 – Puesta en marcha del honeypot:
Para lanzarlo, desde dentro del venv, ejecutamos:
cowrie start6 – Redirección de puertos:
Para que el honeypot parezca un servidor real, en vez de responder desde los puertos 2222 (para SSH) y 2223 (para telnet), lo suyo es hacer que respondan los puertos 22 y 23, respectivamente. Esto lo podemos hacer con un forwarding básico de nftables. Para ello, ejecutamos como root:
# Para crear la tabla nat nft add table nat # Para crear la cadena prerouting nft add chain nat prerouting { type nat hook prerouting priority 0\; } # Para agregar las reglas a la cadena nft add rule nat prerouting tcp dport 22 redirect to 2222 nft add rule nat prerouting tcp dport 23 redirect to 2223