OpenDLP para pentesters

odlp0Ser administrador del dominio o disponer de credenciales de acceso con máximos privilegios a repositorios de ficheros, bases de datos o sistemas ERP no sirve de mucho a la hora de plasmar los riesgos de la organización auditada en un informe, ya que «negocio», muchas veces, no concibe las consecuencias que puede suponer el disponer de tales capacidades.

Es por eso que después de la fase de explotación y elevación de privilegios, comienza desde mi punto de vista la más importante de todas, la de obtención de información y toma de evidencias. De nada sirve conseguir ser administrador de un dominio Windows si no se pueden obtener datos sensibles o ejecutar acciones que puedan suponer un impacto para el auditado. Es en este momento donde entra en juego esta simple pero potentísima herramienta: OpenDLP.

Este software, que se despliega mediante un GUI Web en la máquina del pentester, permite realizar búsquedas masivas de información en miles de equipos de forma simultánea y con una baja carga, tanto para la máquina objetivo como para el equipo del auditor. A diferencia del buscador de Windows que identifica los patrones de búsqueda en los nombres de los documentos, OpenDLP permite inspeccionar el contenido de los ficheros mediante expresiones regulares. Como su nombre indica es un DLP o herramienta de prevención de fuga de información, pero la verdad es que dista mucho de las capacidades de las soluciones comerciales, por lo que para este propósito no lo recomendaría. Sin embargo descaradamente, OpenDLP ha sido desarrollado para cubrir la fase comentada anteriormente, dentro de un test de intrusión.

OpenDLP puede ser descargado desde su página web en Google Code en dos sabores: código fuente y máquina virtual. Yo recomiendo el segundo ya que nos evita problemas de instalación y dependencias y podemos levantar la VM (VMWARE/VIRTUALBOX) cuando necesitemos de sus servicios.

Tras levantar la máquina virtual copiaremos en primer lugar un ejecutable sc.exe de un equipo Windows XP/2000 32 bits a “/var/www/OpenDLP/bin/”, ya que por temas de licencias este no puede ser distribuido con la solución.

A continuación instalaremos el certificado “client.p12” en nuestro navegador favorito, que nos permitirá conectar al servicio web, introduciendo la siguiente contraseña.

username: dlpuser
password: OpenDLP

Bien, ya tenemos el servidor levantado, que no nos engañe el interfaz Web 3.0 optimizado para Mosaic 0.1Beta, la herramienta esconde capacidades muy potentes.

odlp1

OpenDLP nos permite realizar básicamente 3 tipos de búsquedas:

  1. Búsquedas sin despliegue de un agente de ficheros en la maquina objetivo, a través de SMB o SSH. No recomendable para más de 1 máquina bajo análisis ya que ha de conectarse al recurso remoto, descargarse todos los archivos y analizarlos en local en la máquina del pentester. Una locura si nos disponemos a evaluar 200 equipos.
  2. Búsquedas mediante el despliegue de agente en la máquina remota. Recomendado y tremendamente potente, ya que nos permite ejecutar de forma paralela cientos de búsquedas sin la consiguiente carga en el equipo, ya que es el agente de cada máquina objetivo la que se encargará de realizar el trabajo, remitiendo de forma periódica sus avances al servidor. Destacar que la carga en el equipo auditado es baja y no apreciable por el usuario del mismo.
  3. Búsqueda sin despliegue de agente en bases de datos Mysql y MSSQL. Nuevamente se recomienda lanzarlo de forma secuencial unitaria, sino queremos que se eternice la búsqueda.

Por último como capacidad adicional, es posible realizar el despliegue del agente de búsqueda a través de una sesión de Metasploit abierta, feature muy interesante también que no he llegado a probar.

Vamos a ver ahora como realizar una búsqueda básica. En primer lugar necesitamos identificar qué queremos buscar, para lo que definiremos en la pestaña de ”Expresiones regulares” las cadenas objetivo. En este punto la imaginación es nuestra mejor aliada, plasmando mediante REGEX aquellas palabras que puedan suponer información confidencial o sensible para la organización. En un principio OpenDLP viene con una serie de expresiones destinadas a detectar números tarjetas bancarias. Esto puede ampliarse con por ejemplo, las siguientes REGEX (en rojo) que identifiquen otro tipo de información. Debemos ser cuidadosos en este punto, ya que la calidad de nuestras expresiones regulares marcará la tasa de falsos positivos. En posteriores entradas daré una lista de las que yo utilizo.

odlp2

En segundo lugar definiremos un Profile de tipo “Agente de Windows”. Tras introducir el nombre de nuestro nuevo perfil tal y como muestra la imagen siguiente, deberemos tener en cuenta los siguientes aspectos.

odlp3

Introduciremos un usuario y contraseña con privilegios de administrador en las máquinas a analizar, si este es un usuario de dominio (admin del dominio) por ejemplo, estableceremos el nombre del mismo (en este caso prueba.com). Destacar que OpenDLP permite también realizar las búsquedas sin conocer las credenciales a través de técnicas de Pass-the-hash (brutal). Por lo que respecta a los demás parámetros de la captura los dejaremos por defecto.

A continuación prestaremos atención al parámetro “Regular expresions” que nos permitirá seleccionar las REGEX que queremos ejecutar sobre los equipos, incluyendo la definidas previamente por nosotros.

odlp4

En este punto hay que tener cuidado con el parámetro UploadURL , el cual define la ruta del servidor OpenDLP a la cual los agentes subirán los resultados y el progreso de la búsqueda. Por algún problema desconocido este parámetro a veces no se setea automáticamente de forma correcta, lo que se soluciona con un simple reinicio de la VM. Tras configurar el usuario y contraseña utilizado por los agentes para subir la información (u: ddt, p: OpenDLPagent) estableceremos el número de despliegues de forma concurrente que queremos realizar. Este parámetro afecta tan solo al despliegue inicial del agente, no a la búsqueda concurrente, por lo que no pondremos un valor muy alto.

A continuación configuraremos una nueva búsqueda mediante “Scans-> Start New Scan”, definiendo el direccionamiento a analizar y el Profile que hemos creado anteriormente.

odlp5

Tras lanzar la búsqueda podemos ver el estado de la ejecución en “View Results”. Destacar en esta parte los diferentes estados en los que puede estar un agente (Step):

  • Desplegando el agente.
  • Identificando lista blanca de archivos (que directorios y archivos ha de excluir).
  • Buscando.
  • Finalizado.

odlp6

En cualquier momento es posible parar/ pausar o desinstalar un agente en la máquina remota, no dejando rastro de las acciones realizadas. Asimismo se pueden consultar los resultados remitidos hasta el momento sin necesidad de que la búsqueda termine; como ejemplo la captura siguiente muestra cómo se presentan los hallazgos. Simple pero efectivo, OpenDLP nos permite descargarnos el archivo para visualizarlo tan solo dándole un click en el respectivo enlace (muy rápido además y nuevamente brutal).

odlp7

En conclusión, OpenDLP nos permite en muy poco tiempo identificar información sensible de la organización bajo análisis, de una forma eficaz y fácil. Si a este proceso le añadimos algunas técnicas de “Rapid pentesting” que aceleran notablemente la fase de explotación (en otro post), podemos llegar al cliente, darle a un botón, ponernos las gafas de sol y abrirnos una cervecita, quedándonos tan solo redactar el informe, ¿tiene alguien algún script en Python por ahí…?