En numerosas ocasiones hemos hablado en este blog de sistemas de decepción, normalmente conocidos como Honeynets ,que nos sirven para dos propósitos fundamentales. Por un lado, podemos “entretener” a alguien que esté tratando de entrar en nuestros sistemas, atacando unos sistemas que en realidad se tratan de un señuelo, mientras nosotros hemos sido advertidos del intento de intrusión y podemos actuar en consecuencia al identificar el atacante, su modus operandi, sus herramientas y objetivos. Por otro lado, nos puede servir para identificar nuevos tipos de ataque o vulnerabilidades desconocidas. De toda esta información extraída podemos crear firmas para los sistemas de detección/prevención de intrusiones que tengamos en nuestra infraestructura.
Uno de los proyectos open source más conocidos en este campo es The Honeynet Project. Este proyecto cuenta con numerosas soluciones que abarcan diferentes ámbitos en el estudio de nuevos ataques, entre otros. También cuenta con un programa de financiación para nuevos proyectos, pero sólo los más interesantes son aceptados y patrocinados por Google a través de su programa Google Summer of Code.
En esta entrada vamos a presentar uno de ellos realmente interesante y fácil de desplegar, el cual puede contribuir, no sólo a la protección de nuestros sistemas, sino también a un nivel global.
Se trata de Dionaea, una evolución del también conocido Nepenthes que fue abandonado en 2009. Dionaea, según mencionan en su página web, tiene el propósito de identificar malware, centrándose en detectar nuevos especímenes que circulan en la red. El sistema está desarrollado en C y Python y almacena la información en una base de datos SQLite.
Para que la descarga del malware y su posterior análisis sea posible, el sistema expone a la red una serie de servicios vulnerables a la espera de que éstos sean atacados, partiendo de la premisa de que toda petición recibida y todo código que se haya podido descargar es malicioso, ya que ninguno de estos servicios estan publicados o tienen uso alguno por ningún cliente. Los principales servicios que se ofrecen son: SMB, HTTP, FTP, TFTP, MSSQL y SIP.
Se trata de un sistema modular, compuesto por los siguientes elementos que describiremos muy brevemente:
Explotación: este módulo hace uso de libemu para tratar de averiguar qué trata de hacer el código y emularlo. Una vez ya sabe qué hace el payload y sus intenciones, cuenta con otros shellcodes que actúan como debería hacerlo el malware.
Shells: ofrece un terminal falso al atacante; incluso puede abrir una conexión a la espera de que se conecte el atacante o conectarse a él directamente.
URLDownloadToFile: obtiene el archivo mediante HTTP y después emula su ejecución.
Exec: executa el comando recibido usando WinExec.
Multi-stage payloads: realiza varias acciones de las anteriores.
Descargas: una vez ha identificado la ubicación del fichero que quiere que nos descarguemos, dionaea tratará de descargarlo mediante los módulos ftp, tftp o http con los que cuenta.
Envío: el código malicioso descargado puede enviarse a terceros para que sea analizado e incluso podemos obtener el resultado de los informes tras el análisis. Entre éstos podemos enviar a Anubis o VirusTotal, así como a servicios propios que tengamos desplegados en otro lugar.
Registro: módulo que resgistra los incidentes y ofrece una traza de todo lo ocurrido.
Toda la información que genera Dionaea sobre ataques, incidentes y muestras de virus, como hemos dicho anteriormente, se almacena en una base de datos SQLite. Sabemos las limitaciones que tiene esta base de datos pero puede sernos más que suficiente para nuestro propósito. Tan sólo comentar que, según los desarrolladores, se puede enviar la información a una base de datos Postgres o MySQL a través de un módulo que actúa como cliente XMPP, por lo que bastaría con montar un servidor XMPP quien escribirá en estas bases de datos, pero en mi opinión es una solución un poco enrebesada y SQLite es suficiente, aunque no estaría mal que desarrollaran un módulo que permita escribir directamente en éstas, como lo hace Snort, por ejemplo.
La instalación es bastante sencilla. Se deben instalar antes algunas dependencias pero no suelen dar problemas en la instalación/compilación y las instrucciones indicadas en la propia web de Dionaea dejan poco margen de error. Para iniciarlo, se recomienda ejecutarlo con un usuario con pocos privilegios, ya que es un servicio que está siendo atacado constantemente y debemos ser precavidos. Además, se puede ejecutar dentro de un ambiente chroot. Podemos lanzarlo con el siguiente comando:
# /opt/dionaea/bin/dionaea -l all,-debug -L ‘*’ -u nobody -g nogroup -r /opt/dionaea -w /opt/dionaea -D
Hasta aquí la primera entrega en la que quería presentar esta herramienta y describir algunos de los módulos que la componen. En la próxima entrada hablaremos más en profundidad de algunos módulos interesantes y cómo explotar la información recopilada por esta sensacional herramienta. Por último, hay que tener cuidado con los binarios descargados, ya que estamos tratando con archivos peligrosos.