Identificando y ocultando un honeypot

Kippo es un honeypot SSH de interacción media muy interesante. Permite emular un servicio SSH con credenciales inseguras y reproducir un sistema de ficheros y algunos comandos de sistema. Es muy entretenido echarle un ojo a los logs que genera, puesto que como recoge todas las pulsaciones del teclado, ves como interactúa el atacante y te das cuenta cuando es un script automático y cuando un atacante real, por eso de equivocarte de vez en cuando al escribir. Además, puede almacenar los datos recopilados a base de datos. Eso, unido a las múltiples herramientas que aprovechan esa info para pintarla, generar estadísticas, etc, hacen de kippo una tool muy interesante.

Una de las principales preocupaciones a la hora de desplegar un honeypot es identificar si es posible que un atacante sea capaz de reconocer que realmente está interactuando con un servicio falso. Y en el caso de kippo, es posible detectarlo. El problema está en el intercambio de claves cuando se inicia la conexión, debido a que no lo maneja correctamente y por culpa de eso, se delata.

De hecho, el módulo ssh_version de metasploit es capaz de reconocer si un servicio ssh está siendo emulado por un kippo, como se puede ver en la siguiente captura.

Por otro lado, hay reportada una vulnerabilidad [http://osvdb.org/show/osvdb/78099] indicando que los comandos “w” y “ps” tienen la salida hardcodeada por lo que es posible detectar el honeypot comparando las salidas de estos comandos.

Afortunadamente, estos dos problemas han sido resueltos. Ahora el comando “w” muestra la carga real y se ha arreglado el manejo de la conexión ssh. Para aprovechar estas mejoras, debéis descargar las fuentes directamente desde subversion, ya que el último paquete para descargar tiene casi dos años.

La siguiente captura muestra como metasploit ya no es capaz de detectar el honeypot en su última versión:

Aún así, sigue siendo posible a día de hoy identificar un honeypot kippo. El comando ifconfig devuelve siempre la misma salida. Además, es un poco sospechoso que el contador de bytes recibidos y enviados esté siempre fijo, no creen? ;)

En realidad, kippo no está pensado para emular de forma perfecta un entorno real. Su punto fuerte es la facilidad con la que despliegas un entorno potente, que te permite recopilar estadísticas, comandos usados, o rootkits descargados. Para proyectos más serios, es recomendable un honeypot de alta interacción o una honeynet.