Consulta técnica sobre FortiEDR
Descripción
La Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA) emitió una alerta luego de la divulgación de un exploit de prueba de concepto (PoC) para una vulnerabilidad de día cero en el servicio Windows Print Spooler. Esta vulnerabilidad crítica se ha denominado PrintNightMare y se le asigna un CVE (CVE-2021-34527) . En este artículo, mostraremos cómo usar FortiEDR para detectar y mitigar la explotación de esta vulnerabilidad.
Cómo la vulnerabilidad PrintNightmare conduce a LPE y RPE
La vulnerabilidad en el método RpcAddPrinterDriver() conduce a la escalada de privilegios locales (LPE) y la ejecución remota de código (RCE). La escalada de privilegios local permite que un usuario con privilegios más bajos obtenga acceso a nivel del sistema, mientras que RCE permite que un usuario remoto ejecute código en el contexto del sistema.
El método RpcAddPrinterDriverEx() se usa para instalar un controlador de impresora en un sistema y se define de la siguiente manera.
DWORD RpcAddPrinterDriverEx( [en, cadena, único] STRING_HANDLE pName, [en] DRIVER_CONTAINER* pDriverContainer, [en] DWORD dwFileCopyFlags );
|
pName: puntero a una cadena que especifica el nombre del servidor de impresión en el que opera el método
dwFileCopyFlags: un campo de bit que especifica opciones para copiar archivos de controlador de impresora de reemplazo.
pDriverContainer: un puntero a una estructura DRIVER_CONTAINER
El objeto CONTENEDOR DE CONTROLADOR es uno de los parámetros de RpcAddPrinterDriverEx() y contiene información sobre qué controlador utilizará la impresora agregada. La estructura DRIVER_CONTAINER proporciona esta información mediante estructuras DRIVER_INFO. El miembro DriverInfo que se proporciona a continuación define las propiedades de un controlador de impresora.
estructura typedef _DRIVER_INFO_2 { DWORD versión c; [cadena] wchar_t* pNombre; [cadena] wchar_t* pEntorno; [cadena] wchar_t* pDriverPath; [cadena] wchar_t* pDataFile; [cadena] wchar_t* pConfigFile; } INFORMACIÓN_CONDUCTOR_2; |
pDataFile : un puntero a una cadena que especifica un nombre de archivo o una ruta completa que contiene datos del controlador de impresora.
pConfigFile : un puntero a una cadena que especifica un nombre de archivo o una ruta completa al módulo de configuración del controlador de impresora.
pDriverPath : un puntero a una cadena que especifica un nombre de archivo o una ruta completa al archivo del controlador de la impresora.
El código de explotación llama al método RpcAddPrinterDriverEX() dos veces. La dll de explotación en la ruta del servidor remoto se pasa al parámetro pDataFile en la primera llamada a RpcAddPrinterDriverEX (que se muestra a continuación). Esto hará que la dll del atacante se copie en la ruta » C:WindowsSystem32spooldriversx643old» dentro del sistema del controlador de dominio .
RpcAddPrinterDriverEX() se invoca nuevamente después de modificar pConfigFile para que apunte a la ubicación («» C:WindowsSystem32spooldriversx643old»») donde está escrita la dll del atacante. Ahora
¡Déjanos cualquier duda sobre FortiEDR aquí abajo!
¿Te ha resultado útil??
0 / 0

Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!