Explotación de Entornos Windows
Exploits
Enlace de descargar de exploits de Windows.
Buffer Overflow básico
Abrimos el programa usando Immunity Debugger (este deber ser iniciado como administrador). En Debug, seleccionamos Run para iniciar el programa:

Por cada prueba a realizar, se debe repetir este paso, debido que, el programa deja de funcionar.
Validamos si el puerto del servicio se encuentra abierto:

Chequeamos el funcionamiento del servicio:

Si ingresamos OVERFLOW1 test, observamos que nos responde OVERFLOW1 COMPLETE:

Creamos un directorio de trabajo usando mona:


Usando el siguiente programa, podemos validar la cantidad de caracteres que hacer que el programa deje de funcionar:

Si revisamos en Immunity Debugger, podemos observar que tiene los caracteres A enviados en el registro EIP:

Como se puede apreciar en la imagen del script fuzzer.py, a los 2100 caracteres, el programa deja de responder.
Para obtener la cantidad correcta de caracteres que necesitamos para crashear el programa, usamos los scripts pattern_create.rb y pattern_offset.rb de Metasploit.
Con `pattern_create.rb` generamos un patrón de caracteres con la cantidad indicada:

Modificamos el script anterior para enviar la lista de caracteres generados:

Observamos el valor del EIP, y lo copiamos para usarlo con pattern_offset.rb:


Con mona generamos un bytearray, en el cual, se excluirá el byte null \x00:

Ahora, generamos una lista de caracteres a revisar usando el siguiente script:

Ejecutamos el siguiente script, el cual, contiene el valor del offset, el valor que escribiremos en el registro EIP, y los badchars:
Tomamos el valor del registro ESP que es 01A5FA30 y lo analizamos con mona:

Vemos que los caracteres indicados por mona son: \x00, \x07, \x08, \x2e, \x2f, \xa0, \xa1.
Volvemos a ejecutar el script anterior, pero esta vez, se debe modificar los badchars sacando uno a la vez:

Los badchars identificados son: \x00, \x07, \x2e, \xa0.
Usando mona, debemos encontrar el valor de un registro de salto JMP al ESP, el cual, no debe tener protecciones:

El salto al ESP es 0x625011af, que, en little endian es \xaf\x11\x50\x62.
Generamos con msfvenom el payload de la shell reversa que usaremos:

Modificamos el script, donde, se debe indicar lo siguiente:
payload: cantidad de caracteres a enviar antes de generar la denegación de servicio (corresponde al offset)address: dirección de la instrucciónJMPque saltará al registroESPnops: instrucciones recomendadas para el funcionamiento del scriptbuf: payload generado conmsfvenom

Antes de ejecutar el exploit, debemos tener el puerto indicado en el payload a la escucha.
Capturando hash LM/NTLMv1 con Metasploit
Iniciamos el módulo de captura:
En este caso, podemos usar alguna técnica de ingeniería social para pasar la URL al target, como por ejemplo, una imagen con hipervínculo en un phishing:
Cuando se conecte el target, y este trabaje con hashes LM o NTLMv1, podemos intentar crackearlos usando JohnTheRipper:
En caso de que JohnTheRipper falle, podemos usar rainbow tables:
Comando:
-hprimeros 8 bytes del hash LM-tthreads a usar
Ejemplo:
Ahora que tenemos la primera parte de la password descifrada, usamos la herramienta halflm_second.rb de Metasploit, el cual, se encuentra en /usr/share/metasploit-framework/tools/password:
-nhash obtenido-pparte de la password encontrada en el paso anterior
Ejemplo:
Ahora con la herramienta netntlm de JohnTheRipper, podemos obtener la password real (esta se encuentra en /usr/share/john/):
-filearchivo que tiene el hash obtenido en la primera etapa-seedpassword obtenida en el paso anterior
Ejemplo:
Podemos usar esta herramienta para obtener la password en mayúsculas, al igual que lo hace
halflm_second, donde,-seedseria la primera parte de la password obtenida.El cracking de los hashes NTLMv2 se considera no factible.
SMB Relay en NTLMv1/v2
Resumen del ataque:

Para iniciar este ataque, usamos los siguientes comandos:
Con la opción
SMBHOSTindicamos el target.
Esto funciona solo si el Network security: LAN Manager authentication level se encuentra configurado como Send LM & NTLM responses o Send NTLMv2 response only.
Para este caso, usaremo el script smbrelayx.py.
Lo primero es crear un payload para obtener una shell usando msfvenom.
Comando:
-pindicamos el payload a usarLHOSTdirección IP local que estará a la escucha de la conexiónLPORTpuerto local que estará a la escucha-fformato del archivo-oindicamos el nombre del archivo donde se guardará el output
Ejemplo:
En otra terminal, ponemos a la escucha la dirección y puerto para poder obtener la shell:
Ejecutamos nuestro relay:
-hindicamos la dirección IP del target-eespecificamos el archivo creado conmsfvenom
Ejemplo:
NBT-NS/LLMNR Spoofing
Es posible realizar un spoofing de LLMNR (Link-Local Multicast Name Resolution) y de NBT-NS (NetBIOS Name Service) a través de un ataque mitm y así, obtener sus hashes.
LLMNR es el sucesor de NBT-NS, el cual, fue introducido en Windows Vista.
Cuando la resolución de nombres falla, se utilizan estos protocolos.
Al momento que estos protocolos son usados para descubrir host, envían mensajes broadcast a la red con los hashes NTLMv1/v2, los cuales, pueden ser interceptados en la red local (VLAN), para usarlos en otros sistemas, o crackearlos de forma offline.
Escenario de ataque
El host A envía un request a un recurso compartido SMB al sistema
\\intranet\files, pero, en vez de escribirintranet, escribeintrnetSe manda una consulta al DNS para poder resolver el nombre
intrnet, el cual, no es conocido por este, por lo tanto, el host A envía un mensaje broadcast LLMNR o NBT-NS consultando la dirección IP de dicho hostEl atacante responde el mensaje broadcast, indicando que el es
intrnetEl host A envía al atacante su nombre de usuario y el
hash NTLMv1/v2

Herramientas para realizar el ataque
Responder es una herramienta que permite explotar esta debilidad en estos protocolos, para así, poder capturar los hashes NTLMv1/v2, y con esto, retransmitirlos a otro sistema para poder autentificarnos.
En Kali se puede encontrar en
/usr/share/responder
Para este caso, Responder actúa como un listener de los mensajes broadcast, y realiza un spoofing de las respuesta al host target, resultando en la intercepción de los hashes que pueden ser pasados a otros sistemas, o eventualmente, poder crackearlos de forma offline.
En conjunto con Responder, se usa Multirelay, el cual, permite realizar un relay de los hashes a otras máquinas de la LAN, y con esto, obtener una shell en ellos.
Para llevar a cabo este ataque, es necesario que se encuentre deshabilitado el SMB Signing en el target. Para poder determinar si este no se encuentra habilitado, se puede usar la herramienta RunFinger.
Uso de RunFinger:
Atacando LLMNR/NBT-NS
Modificar el archivo
Responder.conf, deshabilitandoSMByHTTP:

Ejecutamos Responder en la interfaz que deseamos:
-Iinterfaz que estará a la escucha--lmrealiza un downgrade de los hashes a LM
En otra terminal, ejecutar MultiRelay:
-tindicamos la IP del target-u ALLrealiza un relay de todos los usuarios. También se puede indicar el usuario que queremos, reemplazandoALLpor el nombre del usuario
EternalBlue (MS17-010)
Metasploit posee dos módulos asociados a esta vulnerabilidad que nos ayudaran a detectarla y explotarla:
Validación de vulnerabilidad:
Explotación:
Lo primero que validamos es si es vulnerable a la versión que usa PIPE. Para lograr esto, descargamos el siguiente script.
Este script usa como complemento el script mysmb.py.

Vemos que no es vulnerable a la opción que utiliza PIPE, por lo tanto, usaremos el siguiente script.
Lo primero es definir la arquitectura del target, para lograr esto, usamos crackmapexec:

Vemos que la máquina es de arquitectura x64, por lo tanto, trabajamos con el shellcode indicado para esa arquitectura.
Ensamblamos el shellcode del kernel con nasm:
Generamos el payload para poder obtener una reverse shell:
Ahora juntamos ambos archivos:
Por último, ejecutamos el exploit:
El valor 6 corresponde al
numGroomConn, el cual, a prueba y error resultó ser dicho número.

Explotación 1
Para máquinas x64m usar el siguiente shellcode:
Ensamblamos el shellcode del kernel con nasm:
Generamos un payload con el reverse shell:
Ahora juntamos ambos archivos:


Explotación 2
Descargamos los siguientes scripts para explotar esta vulnerabilidad:
Ahora ejecutamos el script, con el cual, obtenemos una shell en la máquina:

NetAPI (MS08-067)
Metasploit posee el módulo exploit/windows/smb/ms08_067_netapi que permite explotar esta vulnerabilidad.
Para poder explotar esta vulnerabilidad, usamos el siguiente script:
Debemos modificar la variable shellcode para poder obtener nuestra shell reversa. Para esto, usamos el siguiente comando:
Ejecutamos el script, dejando a la escucha el puerto 443:

VNC Keystrokes con Metasploit
El parámetro
PASSWORDno es requerido.
Adobe Flash Player ByteArray Use After Free
Este exploit explota el uso de After Free de Adobe Flash Player cuando maneja objetos ByteArray.
SRVHOSTdirección IP local que se encuentra a la escuchaSRVPORTpuerto local que se encuentra a la escuchaURIPATHURI a usar para en el exploitTARGET0 para Windows, 1 para LinuxPAYLOADpayload a usar para obtener la shell reversaLHOSTdirección IP local al que se conectará el targetLPORTpuerto local al que se conectará el target
Esto generará una URL, la cual, el target debe ingresar para poder explotar este recurso (se puede usar alguna técnica de ingeniería social para lograr esto).
Last updated