El uso de honeypots puede ser muy útil en ciertos entornos, por ejemplo podemos hacer que los atacantes se entretengan con estos servidores haciéndoles perder el tiempo y el interés en nosotros, además es muy entretenido ver que técnicas emplean y que tipo de ataques ejecutan.
Primero instalamos soporte para virtualenvs en python:
Añadimos el usuario con el que correremos el honeypot:
Clonamos el código del proyecto:
git clone http://github.com/cowrie/cowrie
Creamos un virtual env, lo activamos e instalamos los requisitos:
virtualenv –python=python3 cowrie-env
source cowrie-env/bin/activate
pip install –upgrade pip
pip install –upgrade -r requirements.txt
Configuramos cowrie para que parezca un sistema mas normal y que guarde los logs en un fichero de txt:
vi etc/cowrie.cfg
[honeypot]
hostname = RX4
[shell]
kernel_version = 4.2.0-4-kr0m-amd64
kernel_build_string = #1 SMP Gentoo 4.2.0
[ssh]
version = SSH-2.0-OpenSSH_6.0p1 Gentoo-amd64
[output_jsonlog]
enabled = false
[output_textlog]
enabled = true
logfile = ${honeypot:log_path}/audit.log
format = text
Arrancamos solo para comprobar que la instalación base funciona:
Cowrie corre sobre el puerto 2222, asà que configuramos la siguiente regla de firewall para que el tráfico del puerto 22 termine en el 2222:
Conectamos por ssh:
Revisamos que los comandos se logean y todo funciona correctamente:
Paramos cowrie para generar nuestro propio filesystem:
Para generar un sistema de ficheros utilizaremos el script bin/createfs proporcionado por Cowrie, este nos generará un fichero con los metadatos de cada fichero, permisos, etc, pero si en el honeypot se hace un cat estarán vacÃos, para que tengan contenido hay que meterlos en el directorio honeyfs.
La mejor manera de conseguir esto es montar un CT LXD, copiar el rootfs a honeyfs y luego generar el fichero pickle a partir de este rootfs:
cd /var/lib/lxd/containers/NOMBRE/
tar czvf rootfs.tar.gz rootfs
exit
Como root:
cd /home/cowrie/
tar xvzf rootfs.tar.gz
cp -r rootfs/* cowrie/honeyfs/
chown -R root:root /home/cowrie/cowrie/honeyfs/
Retocamos un poco el sistema:
vi hostname
vi issue
vi motd
vi hosts
NOTA: Los cambio realizados sobre /root no se reflejan, supongo que es alguna medida de seguridad de Cowrie para evitar posibles leaks de información.
Dejamos algunos regalitos:
root:!PLAYWITHTHEBESTDIELIKETHEREST:10770:0:::::
PLAYWITHTHEBESTDIELIKETHEREST
echo “PLAYWITHTHEBESTDIELIKETHEREST” > /home/cowrie/cowrie/honeyfs/home/kr0m/.ssh/id_rsa
chown -R kr0m:kr0m /home/cowrie/cowrie/honeyfs/home/kr0m/
Movemos la meta información del sistema de ficheros original y la regeneramos con la estructura actual:
bin/createfs -l honeyfs -o share/cowrie/fs.pickle
Arrancamos cowrie:
Accedemos por ssh y comprobamos los cambios:
Welcome to Gentoo system
Linux RX4 4.2.0-4-kr0m-amd64 #1 SMP Gentoo 4.2.0 x86_64 GNU/Linux
RX4
root:!PLAYWITHTHEBESTDIELIKETHEREST:10770:0:::::
PLAYWITHTHEBESTDIELIKETHEREST
Si necesitamos restaurar el filesystem original siempre podemos bajárnoslo del repo de git:
Si reiniciamos tendremos que arrancar Cowrie cargando previamente el entorno virtual de python:
cd cowrie
virtualenv –python=python3 cowrie-env
source cowrie-env/bin/activate
bin/cowrie start
NOTA: Cuando se hace login se está realizando una copia del filesystem a RAM, esto puede tardar un poco dependiendo del HW donde corra cowrie