
Ivanti Secure Access (anteriormente Pulse Secure) escalada de privilegios Cobalt Strike BOF (CVE-2023-35080).
BOF de Cobalt Strike para escalada de privilegios en Ivanti Secure Access (anteriormente Pulse Secure) (CVE-2023-35080).
Exploit por Alex y BOF por Tijme. Hecho posible por Northwave Cyber Security
Este es un archivo de objeto Beacon (BOF) de Cobalt Strike (CS) y un ejecutable que explota el cliente VPN de Ivanti Secure Access (anteriormente Pulse Secure) (CVE-2023-35080). Desde un modo de usuario con bajos privilegios, explota una vulnerabilidad en el controlador del kernel para sobrescribir los privilegios del token del proceso beacon con los privilegios del token de un proceso del sistema. El enlace simbólico del controlador del kernel tiene una ACL que define que Everyone puede abrir un identificador hacia él. La investigación que condujo al descubrimiento de esta vulnerabilidad se presentó en RedTreat 2023 y BSIDES London 2023 (presentación).
El exploit se ha desarrollado en Windows 10 Pro 22H2 10.0.19045 (x64). Posteriormente se modificó y probó para funcionar en Windows 11 Pro 23H2 22631 (x64). Es posible que otras versiones de Windows no sean compatibles de forma nativa. Lista completa de versiones de Windows probadas y soportadas:
Clona este repositorio primero. Luego revisa el código, compila desde el código fuente (requiere MinGW) y úsalo en Cobalt Strike o como un archivo PE independiente.
make
¡Importante! Realiza los siguientes pasos en orden (desde el modo de usuario con bajos privilegios):
Primero, asegúrate de que el controlador vulnerable esté en ejecución. Si no está en ejecución, ¡no te preocupes! Puedes iniciarlo desde el modo de usuario con bajos privilegios. El nombre del controlador comienza con jnprTdi_ y se puede encontrar en HKLM\SYSTEM\CurrentControlSet\Services. Siempre se instala cuando se instala el cliente VPN, pero no se ejecuta por defecto.
El controlador vulnerable sí se inicia cuando un usuario (con bajos privilegios) en la máquina víctima se conecta a un servidor VPN malicioso que tiene la opción de TDI fail-over habilitada. Podemos iniciar el controlador nosotros mismos con bastante facilidad replicando ese comportamiento, ya que hemos comprometido un sistema y estamos ejecutando malware en él. Sigue esta guía para configurar tu propio dispositivo malicioso con TDI fail-over habilitado.
"%programfiles(x86)%\Common Files\Pulse Secure\Integration\pulselauncher.exe" -stop
Si el controlador está en ejecución y el cliente VPN está detenido, carga el script PulsePrivEsc.cna usando el Administrador de scripts de Cobalt Strike. Luego usa el siguiente comando para ejecutar el exploit.
$ pulse_priv_esc
Alternativamente (y con fines de prueba), puedes ejecutar directamente el ejecutable compilado. Esto abrirá un símbolo del sistema como SYSTEM.
$ .\PulsePrivEsc.x64.exe
Los problemas o nuevas funcionalidades se pueden informar mediante el rastreador de problemas. Asegúrate de que nadie más haya informado ya de tu problema o funcionalidad antes de enviar uno nuevo.
Copyright (c) 2023 Northwave Cyber Security. Todos los derechos reservados.