REVISTA .SEGURIDAD | 1 251 478, 1 251 477 | REVISTA BIMESTRAL

Cowrie Honeypot: Ataques de fuerza bruta

Los protocolos de SSH y Telnet son muy utilizados para la administración remota de diversos equipos de telecomunicaciones (como son un switch o un router), dispositivos de almacenamiento en red, puntos de acceso inalámbrico, entre otros. Los atacantes están aprovechando la falta de mecanismos de seguridad en estos dispositivos creando un nuevo vector de ataque para realizar Denegaciones de Servicio Distribuidas (DDoS) u otras actividades maliciosas.

Actualmente muchos dispositivos conectados a Internet utilizan los protocolos de Telnet y SSH, por lo tanto son susceptibles a ataques de fuerza bruta. Este artículo tiene como objetivo presentar la instalación, configuración y una prueba de concepto de Cowrie, un honeypot Telnet y SSH de interacción media, diseñado para registrar la interacción de la terminal y ataques de fuerza bruta realizados por los atacantes.

A través del tiempo se han desarrollado diferentes honeypots para el servicio de SSH como Kojoney de baja interacción que emula este servicio. Posteriormente, Upi Tamminen desarrolló Kippo inspirado en Kojoney, sin embargo, no está basado en su diseño o arquitectura.

Michel Oosterhof es el desarrollador de Cowrie y decidió renombrarlo como "Cowrie" para distinguirlo del honeypot original (Kippo), ya que él agregó características con las que Kippo no contaba o tenía deficiencias, tales como mejoras en el registro de bitácoras de algunos ataques, soporte para comandos y herramientas adicionales que son parte del protocolo SSH. Algunas de las nuevas características agregadas son el soporte para SFTP y EXEC, comandos adicionales (sleep, lscpu, reboot, entre otras), uso de "*" y "!" para la autenticación de usuarios (userdb), bitácoras en texto, una base de datos, el formato JSON, entre otras. Las características antes mencionadas permiten mejorar la emulación y ampliar la interacción del honeypot, haciéndole pensar a los atacantes que es un servicio real; esto posibilita una mayor ejecución de comandos de los atacantes logrando obtener mayor información y mejores resultados al procesar y analizar las bitácoras.

Cuando un atacante, malware o intruso intenta entrar a un equipo a través del servicio (SSH o Telnet) y no cuenta con los datos de acceso (usuario y contraseña), intentará realizar un ataque de fuerza bruta o de diccionario para identificar las credenciales válidas. Posteriormente ingresará al sistema e intentará realizar otras actividades como la infección del equipo, ataques de denegación de servicio o la identificación de equipos para efectuar un movimiento lateral. Una vez iniciada la sesión, los módulos del honeypot identifican, controlan y procesan el comando ejecutado para generar una respuesta adecuada simulando ser un sistema real. Por ejemplo: si el comando ejecutado es cat/etc/shadow, Cowrie verificará que existe el comando, consultará el archivo shadow en su sistema de archivos y lo desplegará en pantalla. Todo este proceso es registrado en las bitácoras y los archivos descargados (generalmente malware) desde el honeypot son almacenados para su análisis posterior. El siguiente diagrama muestra el panorama general del funcionamiento de Cowrie.

 

Figura 1. Panorama general de funcionalidad (de Sergio Anduin Tovar Balderas)

Instalación

Es posible instalar Cowrie en diversos sistemas operativos como Debian, Ubuntu, entre otros. Para esta prueba de concepto se utilizará Debian; primero se deberán configurar los parámetros de red y tener los repositorios actualizados para instalar las dependencias que requiere para su funcionamiento.

Los requisitos para la instalación son:

• Sistema Operativo Linux Debian 8.7.1 – Jessie

• Conexión a Internet

Cowrie

El archivo /etc/apt/sources.list contiene la lista de los repositorios donde se pueden obtener los paquetes necesarios para la instalación de Cowrie. Se recomienda utilizar la réplica de Debian más cercana para descargar más rápido los paquetes.

Figura 2. Configuración de los repositorios

Cowrie necesita los siguientes paquetes.

Figura 3. Instalación de paquetes para Cowrie

Una parte importante durante la instalación y configuración de honeypots es la creación de un usuario normal para que el honeypot se ejecute sin privilegios. Esto ayuda a prevenir que los atacantes se aprovechen de alguna falla en el diseño del honeypot y puedan obtener privilegios de súper usuario en el equipo.

Continuando con la instalación del honeypot, se requiere crear un usuario con el cual se ejecutará. También se descargará el código fuente de Cowrie desde su repositorio en GitHub.

Figura 4. Creación de usuario y descarga de Cowrie

Existen diversas formas instalar Cowrie, una de ellas es utilizar virtualenv. Este módulo de Python permite crear un ambiente virtual en una carpeta particular sin interferir con los paquetes de Python del sistema nativo. Cada ambiente contiene su conjunto independiente de paquetes y su propio binario de Python.

Posteriormente, se instalan los paquetes de Python en el ambiente virtual (honeypot-unam) que Cowrie necesita para su funcionamiento.

Figura 5. Instalación de paquetes de Python para Cowrie

Configuración

El archivo principal de configuración (cowrie.cfg) contiene secciones para habilitar diferentes opciones; es posible modificar el archivo con un editor como vi, nano o gedit.  

  • Nombre: la línea 23 define el nombre del equipo (hostname = svr04).

El siguiente comando modifica la variable svr04 por unam.

sed -i '23 s/svr04/unam/' /home/cowrie/cowrie/cowrie.cfg

  • Habilitar el servicio: la línea 267 habilita el soporte para Telnet.

El siguiente comando modifica la variable false por true.

sed -i '267 s/false/true/' /home/cowrie/cowrie/cowrie.cfg

  • Configuración de puertos: la línea 180 y 280 especifican el puerto para escuchar las conexiones entrantes de SSH y Telnet respectivamente.

El siguiente comando modifica la variable #listen_port = 2222 quitando el signo #

sed -i '180 s/#listen_port = 2222/listen_port = 2222/' /home/cowrie/cowrie/cowrie.cfg

El siguiente comando modifica la variable #listen_port = 2223 quitando el signo #

sed -i '280 s/#listen_port = 2223/listen_port = 2223/' /home/cowrie/cowrie/cowrie.cfg

  • Reglas: es necesario realizar esta configuración debido a que Cowrie se ejecuta sin permisos de súper usuario y no puede poner en escucha los puertos 22 y 23 correspondientes a SSH y Telnet respectivamente. Se utiliza iptables para hacer una redirección del puerto 22 al 2222 y del 23 al 2223.

iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222

iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 2223

  • Permisos: se asigna el dueño y grupo cowrie a todos los archivos y carpetas.

chown -R cowrie:cowrie /home/cowrie/cowrie

Figura 6. Configuración de variables en el archivo principal de configuración

Iniciar Cowrie

Existen diferentes formas de iniciar Cowrie. El script start.sh se utiliza para iniciar el honeypot dependiendo de los argumentos pasados a través de la línea de comandos. Cuando se usa un ambiente virtual de Python, el primer argumento es el nombre del ambiente. La imagen 7 muestra los pasos para iniciar Cowrie cuando se ejecuta el comando ./start.sh honeypot-unam con el usuario que se creó previamente.

Figura 7. Iniciar Cowrie

Es importante verificar que los puertos 2222 y 2223 se encuentran en escucha (LISTEN), esto significa que el honeypot está ejecutando los procesos necesarios para abrir el socket en espera de conexiones entrantes.

Bitácoras

Es posible configurar Cowrie para registrar los eventos en archivos de texto, JSON, base de datos, entre otros. En la ruta de instalación se encuentra la carpeta log que contiene las bitácoras, una de ellas es cowrie.log. Este archivo contiene el registro de la actividad, configuraciones habilitadas, errores e inicio de los servicios indicando el puerto y la interacción de los atacantes con el honeypot.

Figura 8. Bitácora cowrie.log

Prueba de concepto

A continuación, se muestra un ataque de fuerza bruta realizado al servicio de SSH. Se podrá observar la combinación de usuarios y contraseñas, así como los intentos de autenticación fallidos y satisfactorios.

Figura 9. Ataque de fuerza bruta a SSH

Después de que el ataque de fuerza bruta o de diccionario fue satisfactorio, se conoce el usuario y contraseña válido para ingresar al honeypot. El atacante iniciará sesión y ejecutará comandos (interacción) creyendo que se trata de un equipo real, cuando en realidad toda actividad está siendo registrada y controlada por el honeypot para su análisis posterior.

La imagen 10 muestra la ejecución de algunos comandos (ls /, lscpu, cat /et/shadow, entre otros) realizados por los atacantes o malware.

Figura 10. Registro de los comandos ejecutados

La información generada y almacenada en las diferentes bitácoras por Cowrie es de vital importancia ya que puede ser utilizada para generar ciberinteligencia en nuestra organización.

Una de las principales ventajas de Cowrie es el uso de JSON, esto posibilita procesar todos los datos obtenidos por el honeypot en un SIEM o en herramientas que permitan este formato como entrada.

El archivo de registro cowrie.json muestra los eventos de la interacción con cada uno de los comandos ejecutados en formato JSON.

 

Figura 11. Bitácora cowrie.json

En la imagen 11 se puede observar el siguiente registro.

{"eventid": "cowrie.session.file_download", "src_ip": "172.16.16.150", "session": "1649f7f2", "shasum": "05b08f11a7073248fb29cfedb0ac4d4e050356b83eeaec8d7bbcd9f25b79fdbb", "url": "http://172.16.16.100/bin8", "timestamp": "2017-02-10T10:06:59.916566Z", "outfile": "dl/05b08f11a7073248fb29cfedb0ac4d4e050356b83eeaec8d7bbcd9f25b79fdbb", "sensor": "honeypot", "message": "Downloaded URL (http://172.16.16.100/bin8) with SHA-256 05b08f11a7073248fb29cfedb0ac4d4e050356b83eeaec8d7bbcd9f25b79fdbb to dl/05b08f11a7073248fb29cfedb0ac4d4e050356b83eeaec8d7bbcd9f25b79fdbb"}

Este evento muestra la descarga del archivo bin8 desde el servidor web http://172.16.16.100. El honeypot es capaz de almacenar el archivo en la carpeta dl dentro del directorio de instalación de Cowrie renombrando el archivo bin8 con su firma SHA256.

Es posible buscar el archivo sospechoso en el servicio web de VirusTotal a través de su firma SHA256 o subir el archivo para tener otra opinión de múltiples antivirus. Para determinar si el archivo sospechoso es algún tipo de malware es necesario realizar un análisis de malware. Se puede buscar el archivo sospechoso en esta URL.

La Red Distribuida de Honeypots (RDH) es un proyecto colaborativo de detección de eventos de seguridad implementado y administrado por el Proyecto Honeynet de UNAM-CERT. Los eventos de seguridad que se pueden observar en el mapa son conexiones de malware, SSH y Telnet dirigidas hacia los honeypots que forman parte de la RDH. Este honeypot forma parte de los sensores de UNAM-CERT en la RDH. Si deseas ver los eventos en tiempo real dirigidos a los honeypots de la RDH puedes consultar http://map.cert.unam.mx.

Conclusión

Las nuevas características del honeypot mejoran a Kippo debido a la capacidad de interacción, registro de eventos e integración con otras herramientas. La prueba de concepto muestra cómo se registran en dos bitácoras diferentes los eventos de un ataque de fuerza bruta y los comandos ejecutados cuando ingresan al honeypot.

A través del procesamiento, análisis e interpretación de la información generada por Cowrie se puede identificar equipos que están distribuyendo malware o realizando ataques de fuerza bruta y poder mitigar actividades maliciosas para mejorar la seguridad en una organización.

Antes de desplegar un sistema con servicios de Telnet o SSH, es recomendable cambiar las contraseñas preestablecidas por unas seguras, utilizar una red de administración, crear reglas de firewall y/o listas de control de acceso (ACL), complementar con TCPwrapper, firewall de host y programas como fail2ban o SSHGuard en los dispositivos.

Si deseas ver el video del artículo consulta el canal SeguridadTV de UNAM-CERT o entra directamente aquí.

Referencias

Si quieres saber más:

UNAM

[ CONTACTO ]

Se prohíbe la reproducción total o parcial
de los artículos sin la autorización por escrito de los autores

 

Hecho en México, Universidad Nacional Autónoma de México (UNAM) © Todos los derechos reservados 2017.