Page cover

📘Print Operators

Los operadores de impresión son otro grupo con muchos privilegios, que otorga a sus miembros los derechos SeLoadDriverPrivilege para administrar, crear, compartir y eliminar impresoras conectadas a un controlador de dominio, así como la capacidad de iniciar sesión localmente en un controlador de dominio y apagarlo. Si emitimos el comando whoami /priv y no vemos el SeLoadDriverPrivilege desde un contexto no elevado, necesitaremos omitir el UAC.

Explotación con interfaz gráfica

Confirmando privilegios

C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name           Description                          State
======================== =================================    =======
SeIncreaseQuotaPrivilege Adjust memory quotas for a process   Disabled
SeChangeNotifyPrivilege  Bypass traverse checking             Enabled
SeShutdownPrivilege      Shut down the system                 Disabled

Comprobando nuevamente los privilegios

El repositorio de UACMe incluye una lista completa de omisiones de UAC, que se pueden utilizar desde la línea de comandos. Alternativamente, desde una GUI, podemos abrir un shell de comandos administrativos e ingresar las credenciales de la cuenta que es miembro del grupo Operadores de impresión. Si examinamos los privilegios nuevamente, SeLoadDriverPrivilege está visible pero deshabilitado.

C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================  ==========
SeMachineAccountPrivilege     Add workstations to domain           Disabled
SeLoadDriverPrivilege         Load and unload device drivers       Disabled
SeShutdownPrivilege           Shut down the system			       Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled

Es bien sabido que el controlador Capcom.sys contiene una funcionalidad que permite a cualquier usuario ejecutar código shell con privilegios de SYSTEM. Podemos usar nuestros privilegios para cargar este controlador vulnerable y escalar privilegios. Podemos usar esta herramienta para cargar el controlador. La PoC habilita el privilegio y también carga el controlador por nosotros.

Descárguelo localmente y edítelo, pegándolo sobre los archivos incluidos a continuación.

A continuación, desde el CMD para desarrolladores de Visual Studio 2019, compílelo usando cl.exe .

Compilar con cl.exe

Agregar referencia al controlador

A continuación, descargue el Capcom.syscontrolador desde aquí y guárdelo en C:\temp. Ejecute los comandos siguientes para agregar una referencia a este controlador en nuestro árbol HKEY_CURRENT_USER.

La sintaxis extraña \??\que se utiliza para hacer referencia a la ruta de imagen de nuestro controlador malicioso es una ruta de objeto NT . La API Win32 analizará y resolverá esta ruta para localizar y cargar correctamente nuestro controlador malicioso.

Verificar que el controlador no esté cargado

Usando DriverView.exe de Nirsoft , podemos verificar que el controlador Capcom.sys no esté cargado.

Verificar que el privilegio esté habilitado

Ejecute el binario EnableSeLoadDriverPrivilege.exe.

Verificar que el controlador de Capcom esté en la lista

A continuación, verifique que el controlador de Capcom ahora aparezca en la lista.

ExploitCapcom para aumentar los privilegios

Para explotar el Capcom.sys, podemos utilizar la herramienta ExploitCapcom después de compilar con Visual Studio.

Esto lanza un shell con privilegios de SYSTEM.

Explotación de impresiones

Explotación alternativa: sin interfaz gráfica de usuario

Si no tenemos acceso GUI al objetivo, tendremos que modificar el código de ExploitCapcom.cpp antes de compilar. Aquí podemos editar la línea 292 y reemplazarla con "C:\\Windows\\system32\\cmd.exe", digamos, un binario de reverse shell creado con msfvenom, por ejemplo: c:\ProgramData\revshell.exe.

La string CommandLine en este ejemplo se cambiaría a:

Configuraríamos un receptor en función del payload que generamos con msfvenom y, con suerte, recibiríamos una conexión de shell reversa al ejecutar ExploitCapcom.exe. Si una conexión de shell reversa se bloquea por algún motivo, podemos intentar un payload de usuario de bind shell o exec/add.


Automatizar los pasos

Automatización con EopLoadDriver

Podemos utilizar una herramienta como EoPLoadDriver para automatizar el proceso de habilitar el privilegio, crear la clave de registro y ejecutar la carga NTLoadDriver del controlador. Para ello, ejecutaríamos lo siguiente:

Luego correríamos ExploitCapcom.exe para abrir un shell de SYSTEM o ejecutaríamos nuestro binario personalizado.


Limpieza

Eliminar clave de registro

Podemos cubrir un poco nuestras huellas eliminando la clave de registro agregada anteriormente.


Caso práctico

Siga los pasos de esta sección para escalar privilegios a SYSTEM y enviar el contenido del archivo flag.txt del escritorio del administrador. Las herramientas necesarias para ambos métodos se pueden encontrar en el directorio C:\Tools, o puede practicar compilándolas y cargándolas por su cuenta.

Herramientas

Comprobar privilegios del usuario

Abrimos una Powershell como administrador. Necesitamos introducir las credenciales del usuario printsvc:

Tenemos el SeLoadPrivilege deshabilitado por lo que tenemos que habilitarlo.

Agregar referencia al controlador

Habilitar SeLoadPrivilege

Verificar que el controlador Capcom está en la lista

Exploit Capcom para aumentar los privilegios

Somos SYSTEM!

Acceso a la flag

Última actualización

¿Te fue útil?