Introducción
¿Sientes que alguien está intentando acceder a tu servidor? Para averiguarlo, puede implementar un honeypot dentro de su sistema para ayudarlo a aliviar su paranoia ya sea confirmando o descartando su creencia inicial. Como ejemplo, puede iniciar el honeypot Kippo SSH, que le permite monitorear los intentos de fuerza bruta, recopilar exploits y malware actuales. Kippo también registra automáticamente la sesión de shell del pirata informático, que puede reproducir para explorar varias técnicas de piratería y luego usar este conocimiento recopilado para fortalecer su servidor de producción. Otra razón por la que instalar un honeypot es quitarle atención a su servidor de producción. En este tutorial, mostraremos cómo implementar un honeypot Kippo SSH en el servidor Ubuntu.
Requisitos
Kippo SSH honeypot es una aplicación basada en Python. Por lo tanto, primero debemos instalar las bibliotecas de Python:
$ sudo apt-get install python-twisted
Normalmente ejecutarías tu sshd servicio de escucha en el puerto predeterminado 22. Tiene sentido usar este puerto para su honeypot SSH y, por lo tanto, si ya ejecuta el servicio SSH, debemos cambiar el puerto predeterminado a algún otro número. Sugeriría no usar el puerto alternativo 2222 ya que su uso ya es generalmente conocido y podría sabotear su disfraz. Escojamos un número aleatorio de 4 dígitos como 4632. Abra su archivo de configuración SSH /etc/ssh/sshd_config y cambie la directiva Port de:
Port 22
a
Port 4632
Una vez hecho, reinicie su sshd:
$ sudo service ssh restart
Puedes confirmar que has cambiado el puerto correctamente con el netstat comando:
$ netstat -ant | grep 4632
tcp 0 0 0.0.0.0:4632 0.0.0.0:* LISTEN
Además, Kippo necesita ejecutar un usuario sin privilegios, por lo que es una buena idea crear una cuenta de usuario separada y ejecutar Kippo bajo esta cuenta. Crear un nuevo usuario kippo:
$ sudo adduser kippo
Instalación
Kippo no requiere ninguna instalación tediosa. Todo lo que hay que hacer es descargar un tarball comprimido con gzip y extraerlo en el directorio de kippo. Primero, inicie sesión como o cambie de usuario a kippo y luego descargue el código fuente de Kippo:
kippo@ubuntu:~$ wget http://kippo.googlecode.com/files/kippo-0.5.tar.gz
extráigalo con:
kippo@ubuntu:~$ tar xzf kippo-0.5.tar.gz
esto creará un nuevo directorio llamado kippo-0.5.
Configuración
Una vez que navegue al directorio de Kippo, verá:
kippo@ubuntu:~/kippo-0.5$ ls
data dl doc fs.pickle honeyfs kippo kippo.cfg kippo.tac log start.sh txtcmds utils
Los directorios y archivos más notables aquí son:
- dl – este es un directorio predeterminado cuando kippo almacenará todo el malware y los exploits descargados por el hacker usando el comando wget
- mieles – este directorio incluye algunos archivos, que se presentarán al atacante
- kippo.cfg – archivo de configuración de kippo
- registro – directorio predeterminado para registrar la interacción de los atacantes con el shell
- inicio.sh – este es un script de shell para iniciar kippo
- utilidades – contiene varias utilidades de kippo, de las cuales la más notable es playlog.py, que le permite reproducir la sesión de shell del atacante
Kippo viene preconfigurado con el puerto 2222. Esto se debe principalmente a que kippo necesita ejecutarse como usuario sin privilegios y el usuario sin privilegios no puede abrir ningún puerto, que está por debajo del número 1024. Para resolver este problema, podemos usar iptables con Directivas “PREOUTING” y “REDIRECT”. Esta no es la mejor solución ya que cualquier usuario puede abrir un puerto por encima de 1024 creando así una oportunidad para explotar.
Abra el archivo de configuración de Kippo y cambie el número de puerto predeterminado a algún número arbitrario como 4633. Después de esto, cree una redirección de iptables desde el puerto 22 a Kippo en el puerto 4633:
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 4633
Configuraciones opcionales
Sistema de archivos
A continuación, es posible que desee configurar el sistema de archivos, que se le presentará al atacante una vez que inicie sesión en nuestro honeypot. Por defecto, Kippo viene con su propio sistema de archivos, pero data de 2009 y ya no parece plausible. Puede clonar su propio sistema de archivos sin revelar ninguna información con la utilidad de Kippo utils/createfs.py . Con privilegios de root, ejecute el siguiente comando de Linux para clonar su sistema de archivos:
# cd /home/kippo/kippo-0.5/
# utils/createfs.py > fs.pickle
Doing stuff
Nombre del sistema operativo
Kippo también le permite cambiar el nombre del sistema operativo ubicado en el archivo /etc/issue. Digamos que usamos Linux Mint 14 Julaya. Por supuesto que usarás algo real y plausible.
$ echo "Linux Mint 14 Julaya \n \l" > honeyfs/etc/issue
Archivo de contraseña
Editar honeyfs/etc/passwd y hacerlo más plausible y jugoso.
Contraseñas raíz alternativas
Kippo viene con una contraseña preconfigurada "123456". Puede mantener esta configuración y agregar más contraseñas como:pass, a, 123, password, root
kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add pass kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add a kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add 123 kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add password kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add root
Ahora el atacante podrá iniciar sesión como root con cualquiera de las contraseñas anteriores.
Creación de nuevos comandos
Además, Kippo le permite configurar comandos adicionales que se almacenan en el directorio txtcmds/. Para crear un nuevo comando, por ejemplo df simplemente redirigimos la salida desde el df real comando a txtcmds/bin/df:
# df -h > txtcmds/bin/df
El anterior es un comando de salida de texto estático simple, pero mantendrá ocupado al atacante durante algún tiempo.
Nombre de host
Edite el archivo de configuración kippo.cfg y cambie su nombre de host a algo más atractivo como:
hostname = accounting
Iniciando Kippo SSH Honeypot
Si siguió las instrucciones anteriores hasta este punto, ahora debería haber configurado su honeypot SSH con las siguientes configuraciones:
- puerto de escucha 4633
- puerto de iptables desde 22 -> 4633
- nombre de host:contabilidad
- múltiples contraseñas raíz
- nuevo y actualizado clon de honeyfs de su sistema existente
- SO:Linux Mint 14 Julaya
Comencemos ahora con el honeypot SSH de Kippo.
$ pwd
/home/kippo/kippo-0.5
kippo@ubuntu:~/kippo-0.5$ ./start.sh
Starting kippo in background...Generating RSA keypair...
done.
kippo@ubuntu:~/kippo-0.5$ cat kippo.pid
2087
De lo anterior, puede ver que Kippo se inició y creó todas las claves RSA necesarias para la comunicación SSH. Además, también creó un archivo llamado kippo.pid, que contiene un número PID de la instancia en ejecución de Kippo, que puede usar para terminar kippo con kill comando.
Prueba de implementación de SSH Honeypot
Ahora, deberíamos poder iniciar sesión en nuestro nuevo servidor ssh alias ssh honeypot en el puerto ssh predeterminado 22:
$ ssh root@server
The authenticity of host 'server (10.1.1.61)' can't be established.
RSA key fingerprint is 81:51:31:8c:21:2e:41:dc:e8:34:d7:94:47:35:8f:88.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server,10.1.1.61' (RSA) to the list of known hosts.
Password:
accounting:~# accounting:~# cd / accounting:/# ls var sbin home srv usr mnt selinux tmp vmlinuz initrd.img etc root dev sys lost+found proc boot opt run media lib64 bin lib accounting:/# cat /etc/issue Linux Mint 14 Julaya \n \l
¿Luce familiar? Hemos terminado
Funciones adicionales
Kippo viene con muchas otras opciones y configuraciones. Una de ellas es usar la utilidad utils/playlog.py para reproducir las interacciones del shell del atacante almacenadas en el directorio log/tty/. Además, Kippo permite que la base de datos MySQL almacene archivos de registro. Consulte el archivo de configuración para obtener ajustes adicionales.
Conclusión
Una cosa que debe mencionarse es que es recomendable configurar el directorio dl de Kipps en algún sistema de archivos separado. Este directorio contendrá todos los archivos descargados por el atacante, por lo que no querrá que sus aplicaciones se bloqueen por falta de espacio en el disco.
Kippo parece ser una buena y fácil de configurar SSH honeypot alternativa a los entornos de honeypot con chroot completo. Kippo tiene más funciones que ofrecer además de las descritas en esta guía. Lea kippo.cfg para familiarizarse con ellos y ajuste la configuración de Kippo para que se adapte a su entorno.