Comprometiendo cuentas con privilegios altos almacenadas en la base de datos de Lansweeper

Este mes me encontré con un caso que pensé que sería bueno compartir con ustedes porque me hizo recordar el viejo dicho “Una red informática es tan segura como su eslabón más débil”.
Cómo ustedes saben el trabajo de los administradores de sistemas y equipos de seguridad en organizaciones no es nada fácil. Atacantes necesitan simplemente una sola vulnerabilidad para poder tomar control de la red, mientras que el equipo a cargo de defender debe identificar y corregir TODAS las posibles vulnerabilidades existentes. Este es un caso más de cómo un pequeño descuido en la administración de una instancia de software llevó a comprometer completamente el directorio activo.
Lansweeper
Lansweeper es una utilidad diseñada para manejar el inventario de activos en redes informáticas. Esta herramienta escanea todos los equipos en la red y lleva un control de parches, software instalado y hasta del directorio activo de la organización. La primera alerta roja debió surgirles cuando instalaron el software. Las siguientes capturas de pantalla las obtuve en mi laboratorio posteriormente a la prueba:
**
**
Interesante. Entonces la aplicación solicita credenciales administrativas para conectarse a los equipos Windows (Además de pedir root para sistemas Linux, SNMP community strings y credenciales para servidores VMWare). Esto quiere decir que la aplicación almacena credenciales con privilegios altos en su base de datos. Navegando por la aplicación me llevo la siguiente sorpresa.
La herramienta utiliza una base de datos Microsoft SQL para almacenar estas credenciales y por defecto siempre genera el mismo usuario y password para accederla. Para mi grata sorpresa esta instalación usaba las contraseñas por defecto “lansweeperuser:mysecretpassword0*” por lo que pude conectarme y descargar la tabla donde se almacenan las credenciales.
Mi momento de victoria fue arruinado al ver que las contraseñas no se almacenan en texto plano. Lansweeper utiliza un algoritmo privado para cifrarlas cómo ellos mismos indican en su foro oficial.
Sin embargo, encontré que alguien ya había logrado descifrar la contraseña para versiones anteriores pero desafortunadamente su módulo ya no funcionaba para la versión actual de lansweeper. Entonces no quedó otra opción más que ensuciarnos las manos. Unas modificaciones y ya tenía listo nuestro nuevo módulo de Metasploit para conectarse a la base de datos de Lansweeper utilizando las credenciales por defecto, descargar y descifrar las contraseñas en texto plano. El módulo ha sido enviado al proyecto de Metasploit y debe estar disponible pronto de manera oficial. (Descarga)
Voilà! Hemos obtenido las credenciales en texto plano. Verificando en el controlador de dominio resultaron ser credenciales de Administradores de Dominio y otra de Enterprise Admin. Una vez más…Game over. =)
Moraleja
Recuerden proteger las llaves de su castillo. La seguridad de su red depende de ello.
Si utilizan Lansweeper es muy importante aplicar los siguientes controles compensatorios:
- Restringir el acceso a la aplicación. Idealmente solo permitir IPs autorizadas conectarse.
- Restringir el acceso a la base de datos de Lansweeper. Idealmente aislar esta tabla de otros sistemas.
- Cambiar la contraseña por defecto de la aplicación.
Links
- MSF module lansweeper_collector: https://github.com/rapid7/metasploit-framework/pull/5614/files
- Praudit.hu Lansweeper research: http://www.praudit.hu/prauditeng/index.php/blog/a-lansweeper-es-a-tea