Plantas carnívoras vs. nuevos bichos (I)

carnivorasEn 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.

Comments

  1. Hola:

    Cuando decís “sistemas de decepción” imagino que querréis decir “sistemas de engaño”, del inglés ‘deception’ = engaño (o también mentira, fraude, ilusión), pues es ‘disappointment’ = decepción. De otro modo no tiene mucho sentido.

    Por el título pensaba que ibais a explicar los métodos que usa la naturaleza para atacar y defenderse, como en alguna ocasión ha publicado Bruce Schneier en su blog, en todo caso muy interesante.

    Saludos.

  2. El término “sistemas de decepción” es una expresión que no me gusta demasiado y, como bien comentas, es una mala traducción del inglés, pero creo que está muy extendido y se utiliza como sinónimo de honeypot. Por eso lo utilizo en este artículo, pero todos sabemos la cantidad de anglicismos que tiene este mundo de la Informática y es mucho más común la palabra inglesa. Quizá sea momento para dejar de utilizar este “Falso amigo”.

    Por otro lado, lamento que el título te haya llevado a confusión, pero sería un tema interesante a tratar en futuros artículos.

    Un saludo.

  3. Defacear, debugear, encriptar, spoofear, encodear….palabras que se usan a diario en mayor o menor medida y que hace que Dios no pare de matar gatitos xD

  4. Hola

    Dices “Por último, hay que tener cuidado con los binarios descargados, ya que estamos tratando con archivos peligrosos.” …obviamente siembras la duda. ;)

    Partimos de la base de que si lo descargamos de la web del proyecto, entendemos “no comprometida” deberían ser de cierta confianza los archivos ¿no?, o tener algún archivo de firma que nos garantice su autenticidad, aunque también son …pofeables. ;)

    Buen artículo, gracias por compartirlo.

    Saludos

  5. Esos binarios se refieren al malware descargado, no a la propia aplicación dionaea. Hay que recordar que lo que se descarga dionaea son virus o troyanos que podrían infectar un sistema Windows, y digo “podría” porque suele ser malware antiguo.

    La misma máquina no puede infectarse, ya que es GNU/Linux, pero si llevamos esos ficheros a otro sitio hay que tener cuidado de no infectarse.

    Gracias por los comentarios.

    Un saludo

Trackbacks

  1. […] Plantas carnívoras vs. nuevos bichos (I)(…) 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… […]

  2. […] en C e implementada en frameworks como Dionaea —de la que por cierto ya hablamos en el blog aquí y aquí— o PhoneyC, es emular instrucciones x86 e identificar/hookear llamadas a la API de […]

  3. […] entrada anterior era tan sólo una introducción a esta interesante herramienta, pero no mucho más extensa de lo […]