miércoles, abril 12, 2017

Cómo explotar el bug de MS16-135 en Windows x64 con PowerShell & Metasploit "Like a Boss"

Hace unos días la gente de Fuzzy Security publicaba una PoC en Powershell que permitía explotar la vulnerabilidad MS16-135 con la que se puede llevar a cabo una escalada de privilegios total, es decir, de un usuario sin ningún privilegio en el equipo o usuario normal hasta ser Administrador. El CVE-2016-7255 presenta y detalla la vulnerabilidad. El código no es nuevo, ya que en C lo tenemos hace 4 meses, pero la prueba de concepto en Powershell es nueva.

Figura 1: Cómo explotar el bug de MS16-135 en Windows x64 con PowerShell & Metasploit "Like a Boss"

Este CVE se utilizó para llevar a cabo un ataque dirigido. Google y Microsoft confirmaron que el grupo APT28 utilizó una vulnerabilidad en Flash, con CVE-2016-7855, junto con esta vulnerabilidad para llevar a cabo la penetración y escalada de privilegios. La vulnerabilidad es explotada a través de la llamada a win32k.sys y NtSetWindowLongPtr(). El detalle de la vulnerabilidad lo puedes encontrar en este magnífico artículo de McAfee.

Figura 2: MS Security Bulletin MS16-135

Si revisamos los boletines de Microsoft nos encontramos con información detallada de la vulnerabilidad y el impacto y criticidad que esta presenta. La vulnerabilidad es crítica ya que afecta a los sistemas Microsoft desde Windows Vista  - y acostúmbrate a que esté sin parches en siguientes bugs - hasta Windows 10 & Windows Server 2016, es decir, en todos los sistemas operativos modernos de Microsoft.

¿Qué debemos tener en cuenta para ver si estamos protegidos?

Fácil, podemos revisar las actualizaciones, sobretodo de seguridad, instaladas en el equipo. Para ello podemos abrir el Panel de Control ir a Programas -> Ver actualizaciones instaladas. Si nos fijamos en la imagen, encontramos un paquete de actualizaciones de seguridad, el cual está protegiendo el equipo de laboratorio de esta vulnerabilidad. Para este ejemplo, quitamos dicha actualización, cosa no recomendada. Hacemos que el equipo sea vulnerable. Hay que ver que dicha actualización se instaló en Marzo, por lo que durante meses este equipo virtual de pruebas ha sido vulnerable.

Figura 3: Actualizaciones instaladas en Windows

El equipo es un Windows 10 con casi todas las actualizaciones instaladas, digo casi todas, ya que acabo de quitar una. Lo primero que vamos a hacer es probar el exploit escrito en Powershell que abusa de la vulnerabilidad del sistema de la que hablamos hoy.

Figura 4: Poc del exploit en Powershell

Estando en Windows 10 probamos el script de Powershell que implementa el exploit contra Win32k.sys. Si hacemos la lectura con los mensajes que ocurrían en el exploit escrito en C vemos que la cosa va bien. Obtenemos un ‘Duplicating SYSTEM token!’. A continuación, probamos rápidamente qué usuario somos en el sistema y hemos pasado de un usuario sin privilegios al usuario SYSTEM. La escalada de privilegio se ha llevado a cabo.

Figura 5: Escalada de privilegios hecha con éxito

El siguiente paso es probar esto en remoto, es decir, simular lo que hizo el APT28. Una vez se obtiene acceso remoto a través, por ejemplo, de Metasploit, vemos como ejecutar el exploit local a través de la sesión de Metasploit.

PoC de MS16-135 con Metasploit

En primer lugar, hay que tener en cuenta que el script de Powershell solo se ejecuta en arquitecturas x64, ya que el exploit solo es eficaz para este tipo de arquitecturas. Con Metasploit, si no tenemos una sesión x64 podemos crearla a través del módulo exploit/windows/local/payload_inject.

Figura 6: Configuración del exploit para aquitecturas x64

Ahora sí, estamos seguros de poder lanzar el exploit de Powershell. Para ello, cargamos en un Meterpreter el módulo de Powershell, el cual nos permite interactuar de forma sencilla con la línea de comandos. Ahora cargaremos directamente a memoria el código del script de Powershell, este podría ser obtenido desde el propio Github de FuzzySecurity o desde un servidor web bajo nuestro control. Como se puede en la imagen se descarga a memoria y se ejecuta automáticamente, gracias a la instrucción IEX o Invoke-Expression.

Figura 7: Explotación del bug en MS16-135

En este instante, tenemos una Powershell dónde ya no somos un usuario sin privilegios, si no que somos System. Para ejemplificar esto os dejamos un video dónde podéis ver la operativa de forma sencilla y simplificada.

Figura 8: PoC en vídeo de exploit para MS16-135 usando Kali Linux 2

De nuevo una forma a tener en cuenta en auditorías, tanto internas como externas, ya que pueden ayudar a un atacante a obtener privilegio sobre los cientos de equipos Microsoft que pueden estar desplegados en una organización. Mantén a salvo tu entorno y fortifica tu Windows.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares