Se puede abusar de una configuración errónea del derecho de acceso en Osquery para Windows para cargar programas arbitrarios de ejecución o cargar archivos DLL arbitrarios. Esto puede ser utilizado por un usuario sin privilegios para obtener privilegios de SISTEMA en la máquina local.
Esta vulnerabilidad está parcheada en la versión 3.4.0.
Esta vulnerabilidad está parcheada en la versión 3.4.0.
Descripción
El ejecutable principal de Osquery para Windows osqueryd.exe, se ejecuta con privilegio SYSTEM y se inicia automáticamente en el arranque. Se instala C:\ProgramData\osquery\osquery con derechos de acceso reforzados para evitar la modificación binaria y la plantación de DLL.
Sin embargo, el directorio principal C:\ProgramData\osqueryno tiene derechos de acceso especÃficos, por lo tanto, hereda la ACL estándar C:\ProgramDataque permite a los usuarios sin privilegios crear archivos y directorios (pero no modificar los existentes). Asà que los usuarios sin privilegios pueden crear archivos y directorios en C:\ProgramData\osquery.
Esto es un problema porque hay al menos 2 elementos que no son creados por el instalador de osquery pero son utilizados por osqueryd.exe si están presentes: el extensions.load archivo (usado para cargar extensiones de osquery) y el osquery.conf.d directorio (usado para cargar archivos de configuración adicionales).
La creación de un extensions.load archivo con contenido arbitrario permite a los usuarios sin privilegios hacer que el osqueryd.exe servicio que ejecute ejecutables arbitrarios con privilegios SYSTEM como extensiones de osquery. Se realiza una comprobación en los permisos y el propietario del archivo ejecutable, y los permisos de su directorio principal para (intentar) evitar que se ejecute un archivo ejecutable modificable por el usuario. Hay varias formas de omitir esta comprobación, una de las cuales es crear un enlace fÃsico al propio osqueryd.exe (ya que es propiedad de SYSTEM) en un directorio propiedad del usuario en el que podemos eliminar una DLL para realizar un secuestro de DLL estándar.
osqueryd.exe intenta cargar los siguientes archivos DLL de su propio directorio: wevtapi.dll, NETAPI32.dll, WTSAPI32.dll, Secur32.dll, dbgeng.dll, IPHLPAPI.DLL, bcrypt.dll, VERSION.dll, dbgmodel.dll, dbghelp.dll, XmlLite.dll, USERENV.dll, NETUTILS.DLL, SAMCLI.DLL, SSPICLI.DLL. El que tiene las funciones menos importadas es USERENV.dll, desde el cual solo se importa GetUserProfileDirectoryW, por lo que podemos crear una DLL que solo exporte esta función y ejecute la carga útil deseada cuando se cargue.
Como usuario sin privilegios, no podemos escribir en el directorio C:\ProgramData\osquery\osqueryd, pero podemos crear nuestro propio directorio, colocar el malware USERENV.dlly crear un enlace osqueryd.exe fijo para obtener el propietario / ACL deseado.
También se realiza una verificación en la ACL del directorio, por lo que también tendremos que eliminar la entrada de acceso de escritura de nuestro propio usuario de la ACL del directorio para pasar esta verificación.
Finalmente, podemos crear C:\ProgramData\osquery\extensions.load(debido a la ACL predeterminada) y escribir la ruta del enlace duro en ella. En la próxima ejecución, osqueryd se ejecutará (a través del enlace duro) desde nuestro directorio, cargará nuestra DLL y ejecutará su código con privilegios SYSTEM.
Nota: en nuestra DLL también tenemos que salir del proceso (justo después de iniciar la carga útil) para evitar la generación recursiva infinita de osqueryd.exe procesos que harÃan DoS en la máquina, ya que cada instancia leerá el archivo extensions.load e intentará ejecutar la extensión.
Para resumir este procedimiento de explotación, desde una sesión de usuario sin privilegios:
- Cree un directorio (en algún lugar donde el usuario tenga acceso de escritura), por ejemplo C:\temp_dir
- Soltar un archivo malicioso USERENV.dll en C:\temp_dir
- Crear un enlace por ejemplo C:\temp_dir\osq.exe, para C:\ProgramData\osquery\osqueryd\osqueryd.exe
- Eliminar el acceso de escritura del usuario a C:\temp_dir
- Crear archivo C:\ProgramData\osquery\extensions.load con contenido: C:\temp_dir\osq.exe
- Espere la próxima ejecución del servicio de osquery (por ejemplo, el próximo reinicio)
POC
El siguiente video muestra una secuencia de comandos de PoC que realiza los pasos anteriores para cargar una DLL arbitraria que agrega al unprivileged usuario al administrador del grupo:
Fijar
El Desarrollador ha lanzado un parche y un aviso .
Los usuarios deben actualizar a la versión 3.4.0 o superior.
Referencias
https://www.facebook.com/security/advisories/cve-2019-3567
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-3567
Fuente: provadys.com

0 Comentarios