Implementación de HoneyProxy
HoneyProxy es un proxy de hombre en el medio (mitm, man in the middle) ligero que permite la inspección y análisis de tráfico HTTP(S) en tiempo real y a través de registros. Se enfoca en las características que son útiles para el análisis forense de tráfico de red y de malware, esto permite extender las capacidades de visualización y posibilita adaptarse a las necesidades de los investigadores de seguridad. HoneyProxy está hecho en Python donde reside su núcleo de bitácoras, funciona como una aplicación web basada en HTML5.
Fue creado por Maximilian Hils en el año 2012 y guiado por Guillaume Arcas a través del programa Google Summer of Code donde The Honeynet Project participa como una organización mentora.
La funcionalidad de proxy con capacidad SSL de HoneyProxy se basa en mitmproxy, este último desarrollado por Aldo Cortesi. Ahora HoneyProxy es parte de mitmproxy como mitmweb. Consulta el artículo HoneyProxy: Análisis de tráfico HTTP en el número 31 de la Revista .Seguridad, ahí podrás ver la prueba de concepto.
CARACTERÍSTICAS
La versión 1.1 del proxy cuenta con las siguientes características:
- Analiza tráfico HTTP(S) al vuelo
- Filtra y resalta el tráfico de red, incluye soporte de expresiones regulares
- Generación de reportes para flujos guardados, incluye un editor en vivo de JS
- Guarda las conversaciones HTTP para un análisis posterior
- Realizar cambios con scripts con Python, por ejemplo, eliminar el encabezado de caché
- Compatible y basado en mitmproxy
- Multiplataforma (Windows, Mac OS, Linux)
- Certificados de interceptación SSL generados al vuelo
- Editor de informes, analiza y agrega tráfico
- Búsqueda de flujos similares
- Visualizar sumas de verificación de solicitudes y respuestas
- Corrección de errores y cambios internos (se eliminaron dependencias y es modular)
- Mejoras en cómo se muestran los flujos en diferentes códigos HTTP y formato en respuestas JSON
FUNCIONAMIENTO
HoneyProxy tiene diferentes modos de operación (regular, transparente, etc.), el modo determinará si el cliente necesita realizar alguna configuración. Cuando se ejecuta HoneyProxy utiliza las opciones preestablecidas o las que se encuentran el archivo de configuración (default.conf). Cuando cliente realiza una solicitud a un sitio web, la solicitud es recibida por HoneyProxy y procesada para enviarla al servidor. En este punto la solicitud puede ser modificada antes de su envío (solicitud modificada). Posteriormente el servidor recibe, procesa y genera una respuesta ante la solicitud del cliente. HoneyProxy recibe la respuesta y también puede ser modificada antes de su envío al cliente (respuesta modificada). Durante este proceso HoneyProxy emplea las bibliotecas para su funcionamiento, utiliza los programas (scripts), registra el tráfico y los sitios en las bitácoras, inicia la interfaz web de HoneyProxy para observar las solicitudes y respuestas y generar reportes.
Figura 1. Panorama general de funcionalidad (de Sergio Anduin Tovar Balderas)
Cuando se ejecuta HoneyProxy crea un proceso que pone en escucha tres puertos de red que utiliza para su funcionamiento y la comunicación entre el cliente y servidor. Los puertos de red utilizados son:
- Puerto 8080: es utilizado para el servidor proxy
- Puerto 8081: entrega los archivos estáticos de la interfaz web
- Puerto 8082: comunicación a través de un websocket
HoneyProxy cuenta con una interfaz web que permite inspeccionar y analizar el tráfico HTTP(S). Esta interfaz web utiliza el puerto 8081, es accesible a través de un navegador web usando la dirección IP del equipo, nombre de equipo o dominio (por ejemplo, http://honeyproxy.honeynet.unam.mx:8081/app/). A demás, HoneyProxy emplea un websocket en el puerto 8082 para establecer un canal de comunicación interactiva entre el navegador web y el servidor y poder realizar la autenticación del proxy y la interfaz web de HoneyProxy. Por último, se usa el puerto 8080 para el servidor proxy. En la siguiente figura se muestra el flujo de trabajo y los puertos de red utilizados por HoneyProxy.
Figura 2. Flujo de trabajo y puertos de red utilizados por HoneyProxy (traducción de Sergio Anduin Tovar Balderas)
La interfaz web de HoneyProxy permite ver las conversaciones, la comunicación entre el navegador y HoneyProxy es realizada a través de un websocket. El flujo de solicitud y respuesta se puede observar en la figura 3 y a continuación se describe:
- El cliente solicita una página web al servidor (request)
- La solicitud es recibida por HoneyProxy, se procesa y se envía al servidor. En este punto la solicitud puede ser modificada (modified request).
- El servidor recibe, procesa y genera una respuesta (response) para responder la solicitud del cliente.
- La respuesta es recibida por HoneyProxy, se procesa y se envía al cliente. En este punto la respuesta puede ser modificada (modified response).
Figura 3. Flujo de solicitud y respuesta (traducción de Sergio Anduin Tovar Balderas)
INSTALACIÓN
El proceso de instalación de HoneyProxy se realizará en un sistema operativo Debian, aunque es posible instalarlo en otros sistemas operativos. Los requisitos para la instalación son:
- Sistema Operativo Debian 9.3 (stretch)
- Conexión a Internet
- HoneyProxy
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 Debian 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 HoneyProxy. Se procede con la configuración y actualización de los repositorios.
Figura 4. Configuración y actualización de los repositorios
Se instalan los paquetes que necesita HoneyProxy.
Figura 5. Instalación de paquetes para HoneyProxy
Posteriormente, se instalan los paquetes de Python que HoneyProxy necesita para su funcionamiento.
Figura 6. Instalación de paquetes de Python para HoneyProxy
Continuando con la instalación de HoneyProxy, es importante crear un usuario con el cual se ejecutará. Esto ayuda a prevenir que los atacantes se aprovechen de alguna falla en el diseño y puedan obtener privilegios de súper usuario en el equipo.
Figura 7. Creación de usuario para HoneyProxy
Se descargará el código fuente de HoneyProxy desde su repositorio en GitHub.
Figura 8. Instalación de HoneyProxy
OPCIONES
HoneyProxy cuenta con diferentes opciones, se pueden consultar con la opción -h o --help desde la línea de comandos. El modo de uso es: python honeyproxy.py [opciones]
Un ejemplo de ejecución es el siguiente:
python honeyproxy.py -a 172.16.16.108 -p 8080 --dump-dir logs --guiport 1018 --singleuser sean:lucas
Algunas de las opciones que tiene HoneyProxy son:
- -h o --help: muestra la ayuda
- --version: muestra la versión
- -a ADDR: dirección IP para vincular el proxy (de forma prestablecida lo hace en todas las interfaces)
- --confdir CONFDIR: carpeta de configuración
- -n: no inicia el servidor proxy
- -p PORT: especifica el puerto del proxy
- -r RFILE: lee los flujos de un archivo
- -s SCRIPT: ejecuta un programa
- --dump-dir DUMPDIR: carpeta para almacenar todos los objetos de respuesta
- --guiport GUIPORT: especifica el puerto de la interfaz gráfica de usuario (GUI)
- --replace PATTERN: remplaza el patrón especificado
- --nonanonymous: permite el acceso a cualquier usuario con las credenciales especificadas
- --singleuser USER: permite el acceso a un usuario con las credenciales especificadas
- --htpasswd PATH: permite el acceso a los usuarios especificados en el archivo de contraseñas creado con la herramienta htpasswd
Figura 9. Opciones de HoneyProxy
CONFIGURACIÓN
Cuando se ejecuta HoneyProxy sin opciones, el archivo de configuración preestablecido será cargado. El archivo principal de configuración (default.conf) contiene la lista de argumentos que son pasados a través de la línea de comandos. Es posible utilizar otro archivo de configuración, se utiliza el signo de arroba (@) antecediendo el nombre del archivo de configuración (por ejemplo, @sean.conf).
Figura 10. Archivos de configuración
EJECUCIÓN
Es posible ejecutar HoneyProxy con diferentes opciones que determinarán su funcionamiento, las opciones se pueden especificar en un archivo de configuración o con los argumentos pasados a través de la línea de comandos.
Figura 11. Iniciar HoneyProxy
Es importante verificar que los puertos de red 8080, 8081 y 8082 se encuentran en escucha (LISTEN), esto significa que HoneyProxy está ejecutando los procesos necesarios para abrir el socket en espera de conexiones entrantes.
Figura 12. Verificar puertos
La siguiente figura muestra la interfaz web de HoneyProxy.
Figura 13. Interfaz web de HoneyProxy
BITÁCORAS
Las bitacoras son almacenadas en la carpeta dump ubicada en la ruta de instalación de HoneyProxy. El archivo traffic-dump contiene un volcado del tráfico y dentro de la carpeta sites, se encuentra a su vez una carpeta por cada sitio que contienen los archivos del sitio.
Figura 14. Estructura de bitácoras generadas por HoneyProxy
El archivo traffic-dump se puede leer con HoneyProxy y ser observado en su interfaz web.
Figura 15. Lectura de archivo traffic-dump
En la interfaz web es posible realizar filtros, observar la solicitud, método empleado, estado, tipo de respuesta, tamaño, fecha y hora, vista previa, de detalles y en crudo.
Figura 16. Vista del archivo traffic-dump en interfaz web
REFERENCIAS
- Hils, Maximilian. (2013). HoneyProxy. GitHub. Recuperado el 14 de diciembre de https://github.com/mhils/HoneyProxy
- Hils, Maximilian. (2013). HoneyProxy - flow. GitHub. Recuperado el 14 de diciembre de https://github.com/mhils/HoneyProxy/blob/master/docs/flow.pdf
- Hils, Maximilian. (2013). HoneyProxy - ports. GitHub. Recuperado el 14 de diciembre de https://github.com/mhils/HoneyProxy/blob/master/docs/ports.pdf
- Mitmproxy Project. (2015). Mitmproxy. Recuperado el 14 de diciembre de https://mitmproxy.org
- The Honeynet Project. (s.f.). The Honeynet Project. Recuperado el 14 de diciembre de https://www.honeynet.org/
- Tovar Balderas, Sergio Anduin. (mayo 2018). HoneyProxy: análisis de tráfico HTTP. Revista .Seguridad, Defensa Difital, número 31. UNAM. Recuperado el 24 de mayo de 2018. https://revista.seguridad.unam.mx/content/honeyproxy-analisis-de-trafico-http