📘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 DisabledComprobando 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 DisabledEs 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 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.
Nota: Desde Windows 10 versión 1803, el "SeLoadDriverPrivilege" no se puede explotar, ya que ya no es posible incluir referencias a claves de registro en "HKEY_CURRENT_USER".
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?