Implementación del honeyclient Thug
Thug es un cliente honeypot (honeyclient) de baja interacción hecho en Python desarrollado por Angelo Dell'Aera que permite analizar los ataques del lado de cliente (client side attacks). Está basado en un enfoque híbrido de análisis (estático y dinámico) con el propósito de imitar el comportamiento de un navegador web, así como detectar y emular contenidos maliciosos cuando intentan explotar alguna vulnerabilidad. Consulta el artículo Thug Honeyclient: Atrapando sitios web maliciosos en el número 30 de la Revista .Seguridad, en el podrás ver la prueba de concepto del análisis de tres sitios maliciosos con Thug.
En esta entrada se mostrará el proceso de instalación de Thug en un sistema operativo Ubuntu, aunque es posible instalarlo en otros sistemas operativos. Los requisitos para la instalación son:
- Sistema Operativo Ubuntu Server 16.04.3 LTS (Xenial Xerus)
- Conexión a Internet
- Thug
Se asume que ya se tiene instalado el sistema operativo junto con los parámetros de red necesarios para estar conectado a Internet. Se recomienda utilizar los servidores con la réplica de Ubuntu geográficamente más cercana para descargar más rápido los paquetes. El archivo /etc/apt/sources.list contiene la lista de repositorios de donde se pueden obtener los paquetes necesarios para la instalación de Thug. Se procede con la configuración y actualización de los repositorios.
Figura 1. Configuración y actualización de los repositorios
Se instalan los paquetes necesarios para Thug.
Figura 2. Instalación de paquetes para Thug
Otro requisito para la instalación de Thug es libemu. Libemu es una biblioteca diseñada para ser utilizada por herramientas para la detección de intrusiones/prevención de red y en honeypots, es una biblioteca escrita en lenguaje C que ofrece la emulación básica de instrucciones de ensamblador para procesadores de la familia x86, y detección de shellcodes usando heurísticas GetPC. Se muestra la instalación de libemu.
Figura 3. Instalación de libemu
Pylibemu es una biblioteca envolvente en Python de la biblioteca libemu. Se continúa con la instalación de Pylibemu.
Figura 4. Instalación de Pylibemu
Google V8 es el motor de JavaScript de código abierto de Google, V8 está escrito en C ++ y se utiliza en Google Chrome. PyV8 es una biblioteca envolvente en Python del motor de Javascript Google V8 que actúa como un puente entre los objetos de Python y JavaScript, y soporta el motor de Google V8 en scripts programados en Python. El proceso de instalación es el siguiente.
Figura 5. Instalación de PyV8
Continuando con la instalación del honeyclient, se descargará el código fuente de Thug desde su repositorio en GitHub y se instalarán los paquetes de Python que necesita para su funcionamiento. A continuación, se muestra el proceso.
Figura 6. Instalación del honeyclient Thug
CONFIGURACIÓN
Ya que hemos instalado Thug procedemos a configurarlo. Una parte importante durante la instalación y configuración de honeyclients es la creación de un usuario normal para que el cliente honeypot se ejecute sin privilegios. Esto ayuda a prevenir que los atacantes se aprovechen de alguna falla en el diseño del honeyclient y puedan obtener privilegios de súper usuario en el equipo.
Continuando con la configuración del honeyclient, se requiere crear un usuario con el cual se ejecutará.
Figura 7. Creación de usuario para el honeyclient Thug
El honeyclient utiliza el archivo de configuración /etc/thug/logging.conf para indicar como se almacenarán las bitácoras de análisis de los sitios. Este archivo (logging.conf) contiene secciones para habilitar diferentes opciones; es posible modificar el archivo con un editor como vi, vim, nano o gedit. Para nuestra configuración modificaremos las siguientes líneas:
- MongoDB: la línea 9 habilita el registro de bitácoras en MongoDB.
El siguiente comando modifica la variable False por True.
sed -i '9s/False/True/' /etc/thug/logging.conf
- Configuración de puerto: la línea 10 específica los parámetros de conexión a MongoDB, cambia el puerto.
El siguiente comando modifica el valor 27018 por 27017.
sed -i '10 s/27018/27017/' /etc/thug/logging.conf
Figura 8. Edición de parámetros en el archivo de configuración de bitácoras
Se puede verificar el puerto de MongoDB con alguno de los siguientes comandos:
- netstat -natp | grep mongod
- ss -natp | grep mongod
Figura 9. Verificación de puerto de MongoDB
Es posible configurar el honeyclient con HoneyAgent. El HoneyAgent es una biblioteca de agentes Java que crean un entorno limitado (sandbox) para applets y aplicaciones Java. Si deseas conocer más acerca de HoneyAgent consulta el sitio.
INICIAR
Es posible ejecutar Thug con diferentes personalidades y complementos (plugins), esto depende de las opciones pasadas como argumentos a través de la línea de comandos.
Figura 10. Opciones de Thug
La siguiente tabla muestra las versiones de los navegadores Internet Explorer, Chrome, Firefox y Safari para los diferentes sistemas operativos Windows, Linux y MacOS X disponibles en Thug, estas son las personalidades que emula Thug.
Tabla 1. Agentes de usuario disponibles en Thug para Windows, Linux y MacOS X (de Sergio Anduin Tovar Balderas)
La tabla 2 muestra las versiones de los navegadores Chrome y Safari utilizadas por los sistemas operativos Android e iOS para dispositivos móviles Galaxy, Nexus y iPad, de esta forma observamos que Thug cuenta con una gran variedad de dispositivos, navegadores y sistemas operativos que puede utilizar en el análisis de sitios.
Tabla 2. Agentes de usuario disponibles en Thug para dispositivos móviles (de Sergio Anduin Tovar Balderas)
En la siguiente figura se pueden observar las personalidades de Thug
Figura 11. Personalidades de Thug
Las diferentes opciones que tiene Thug, permiten realizar el análisis de sitios maliciosos con diferentes personalidades, complementos y versiones con el fin de obtener los archivos del sitio, realizar un análisis hibrido (estático y dinámico) del código, identificar los exploits o código malicioso empleado para aprovecharse de la vulnerabilidad y si es posible identificar el CVE (Common Vulnerabilities and Exposures o Vulnerabilidades y Exposiciones Comunes).
El modo de uso del honeyclient es: thug [ opciones ] url
Un ejemplo de ejecución es el siguiente:
thug -u win7ie80 -n poc -v -A 9.1.0 -S 10.0.64.0 -K -L 4.0.50826.0 -F -Z http://dominioMalicioso.com
El significado de cada opción del comando anterior es:
- -u win7ie80: especifica el agente de usuario, será un sistema operativo Windows 7 con Internet Explorer 8.0
- -n poc: indica la ruta de salida de la ejecución
- -v: hablita el modo verbose, muestra mayor detalle de la ejecución
- -A 9.1.0: especifica la versión de Adobe Acrobat Reader
- -S 10.0.64.0: especifica la versión de Shockwave Flash
- -L 4.0.50826.0: especifica la versión de SilverLight
- -F: habilita el modo de registro de bitácoras en archivo de texto
- -Z: hablita el modo de registro de bitácoras en formato JSON
Figura 12. Ejemplo de ejecución de Thug
BITÁCORAS
Thug soporta diferentes modos para almacenar las bitácoras en archivo de texto, JSON, MAEC, base de datos, entre otros. Es posible combinar los modos para registrar los eventos en diferentes formatos. Las bitácoras generadas por el honeyclient se almacenarán dependiendo de la configuración y las opciones utilizadas durante la ejecución. A continuación, se muestra la forma en cómo se pueden consultar las colecciones en la base de datos de MongoDB.
Figura 13. Colecciones en la base de datos
Se pueden consultar los documentos de la colección análisis de los sitios revisados por Thug, el documento contiene las versiones de los complementos utilizados cuando se ejecutó el honeyclient.
Figura 14. Análisis en la base de datos
Asimismo, se puede consultar las URL de los sitios analizados y también las que son detectadas por Thug.
Figura 15. Consulta de las URL
Durante el análisis que realiza Thug se generan las bitácoras de:
- Análisis: el archivo analysis/json/analysis.json contiene el análisis realizado por Thug, en él se encuentran los métodos, lenguajes identificados, relaciones, comportamiento, conexiones, complementos y muchos más.
- Gráfica: la imagen analysis/graph.svg muestra el flujo del comportamiento de las ventanas, iframe, parámetros, objeto de datos y redirecciones al visitar el sitio.
- application, image y text: estas carpetas contienen los diferentes tipos y subtipos de medios como texto, imágenes, audio, video y aplicaciones encontrados en páginas web. El honeyclient almacena los archivos encontrados y los renombra con su firma MD5.
La figura 16 muestra las carpetas y archivos generados durante el análisis de la página web.
Figura 16. Estructura de bitácoras generadas por Thug
Thug genera una imagen que muestra la interacción con la página maliciosa facilitando en análisis de forma gráfica, puede contener redirecciones a otras páginas u otros archivos, iframe (sirven para insertar un documento o mostrar contenidos externos al sitio web), scripts, objetos, contenedores para aplicaciones externas o contenido interactivo, etc.
Figura 17. Imagen de análisis del sitio
VIDEO
Implementación de Thug
Thug Honeyclient: Atrapando sitios web maliciosos
REFERENCIAS
- Dell'Aera, Angelo. (2017). Thug - Python low-interaction honeyclient. GitHub Pages. Recuperado el 12 de octubre de https://buffer.github.io/thug/
- Dell'Aera, Angelo. (2017). Thug 0.9.3 documentation. GitHub Pages. Recuperado el 12 de octubre de https://buffer.github.io/thug/doc/index.html
- Dell'Aera, Angelo. (2017). Thug - Python low-interaction honeyclient. GitHub. Recuperado el 12 de octubre de https://github.com/buffer/thug
- Dell'Aera, Angelo. (2012). Thug: a new low-interaction honeyclient. Recuperado el 12 de octubre de https://www.honeynet.org/files/HPAW2012-Thug.pdf
- Baecher, Paul. Koetter, Markus. (2008). libemu - shellcode detection. GitHub. Recuperado el 12 de octubre de https://github.com/buffer/libemu
- Dell'Aera, Angelo. (2016). A Libemu Cython wrapper. GitHub. Recuperado el 12 de octubre de https://github.com/buffer/pylibemu
- Hablich, Michael. (2017). V8 Wiki. GitHub. Recuperado el 12 de octubre de https://github.com/v8/v8/wiki
- MongoDB. (2017). MongoDB for GIANT Ideas. Recuperado el 12 de octubre de https://www.mongodb.com/es
- MITRE. (2017). CVE. Common Vulnerabilities and Exposures (CVE). Recuperado el 12 de octubre de https://cve.mitre.org/