Routing

Y el uso de la herramienta IP route

Featured image

El direccionamiento de los dispositivos es sólo la mitad del trabajo necesario para llegar a un host. Sus paquetes tienen que seguir una ruta válida para llegar a él.

Los routers son dispositivos conectados a diferentes redes al mismo tiempo. Son capaces de reenviar los datagramas IP de una red a otra. La política de reenvío se basa en los protocolos de enrutamiento. Estos se utilizan para determinar la mejor ruta para llegar a una red. Se comportan como un cartero que intenta utilizar el camino más corto posible para entregar una carta.

Un router inspecciona la dirección de destino de cada paquete entrante y luego lo reenvía a través de una de sus interfaces.

Para elegir la interfaz de reenvío correcta, un router realiza una búsqueda en la tabla de enrutamiento, donde encuentra un enlace IP-interfaz.

La tabla también puede contener una entrada con la dirección por defecto (0.0.0.0). Esta entrada se utiliza cuando el router recibe un paquete cuyo destino es una “red desconocida”.

IP Route

Este proceso se puede realizar a través de ip route, de la siguiente forma:

┌─[root@kali]─[/home/user/routing]
└──╼ ip route | grep 'tun0'                                                                                                         
10.10.10.0/23 via 10.10.14.1 dev tun0 
10.10.14.0/23 dev tun0 proto kernel scope link src 10.10.14.13 
10.129.0.0/16 via 10.10.14.1 dev tun0

En este caso observamos la ruta válida para un VPN. Si estuviera directamente conectado a la red local, por lo general debemos filtrar por ‘eth0’.

Ahora para ver una a una las IP’s disponibles realizamos lo siguiente con nmap:

┌─[root@kali]─[/home/user/routing]
└──╼ nmap -sn 10.10.10.0/23                                                                                             
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-14 21:42 -03
Nmap scan report for 10.10.10.2
Host is up (0.15s latency).
Nmap scan report for 10.10.10.5
Host is up (0.15s latency).
Nmap scan report for 10.10.10.74
Host is up (0.15s latency).
Nmap scan report for 10.10.10.79
Host is up (0.15s latency).
Nmap scan report for 10.10.10.103
Host is up (0.15s latency).
Nmap scan report for 10.10.10.171
Host is up (0.15s latency).
Nmap scan report for 10.10.10.238
Host is up (0.15s latency).
Nmap scan report for 10.10.11.105
Host is up (0.15s latency).
Nmap scan report for 10.10.11.114
Host is up (0.15s latency).
Nmap scan report for 10.10.11.120
Host is up (0.15s latency).
Nmap scan report for 10.10.11.125
Host is up (0.16s latency).
Nmap scan report for 10.10.11.134
Host is up (0.15s latency).
Nmap scan report for 10.10.11.136
Host is up (0.15s latency).
Nmap scan report for office.paper (10.10.11.143)
Host is up (0.15s latency).
Nmap done: 512 IP addresses (14 hosts up) scanned in 12.28 seconds                                                                                   

Otra opción podría ser netdiscover -i eth0.

Parámeto utilizado:

Parámetro Utilidad
-sn Se utiliza para realizar un simple ping al host especificado.

Para ver solo las IP’s, se realiza lo siguiente:

┌─[root@kali]─[/home/user/routing]
└──╼ nmap -sn 10.129.2.0/24 -oA tnet | grep for | cut -d" " -f5

Realizamos un ping a alguna IP de las mostradas, para comprobar que realmente funciona:

┌─[root@kali]─[/home/user/routing]
└──╼ ping -c 1 10.10.10.5                                                                                            
PING 10.10.10.5 (10.10.10.5) 56(84) bytes of data.
64 bytes from 10.10.10.5: icmp_seq=1 ttl=127 time=147 ms

--- 10.10.10.5 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 146.675/146.675/146.675/0.000 ms

Y como se puede apreciar responde, por lo tanto, encontramos las rutas de tun0 en este caso.

Si queremos escanear una lista de IP’s, se realiza lo siguiente:

┌─[root@kali]─[/home/user/routing]
└──╼ nmap -sn -oA tnet -iL hosts.lst | grep for | cut -d" " -f5

Finalmente para agregar nuevas rutas y de esta forma comunicarse entre ellas, debemos realizar lo siguiente:

┌─[root@kali]─[/home/user/routing]
└──╼ ip route add 172.20.0.0/24 dev tun9

En este caso ocupamos ‘tun9’ pues es por medio de VPN. En caso estuvieramos en una red local, deberíamos escribir por ejemplo, ‘eth9’ o el correspondiente al caso. Para terminar revisamos la nueva ruta por medio del siguiente comando:

┌─[root@kali]─[/home/user/routing]
└──╼ ip route list

Otra forma es por medio de via, por ejemplo se tiene el siguiente caso:

┌─[root@test]─[/routing]
└──╼ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.165.192.3  netmask 255.255.255.0  broadcast 192.165.192.255
        ether 02:42:c0:a5:c0:03  txqueuelen 0  (Ethernet)
        RX packets 1345869  bytes 180771025 (180.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 797725  bytes 269960646 (269.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.79.39.2  netmask 255.255.255.0  broadcast 192.79.39.255
        ether 02:42:c0:4f:27:02  txqueuelen 0  (Ethernet)
        RX packets 21  bytes 1742 (1.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Se detecta eth1, en el cual no llegamos a tener conexión:

┌─[root@kali]─[/home/user/routing]
└──╼ ping -c 1 192.79.39.2                                                                                                
PING 192.79.39.2 (192.79.39.2) 56(84) bytes of data.
--- 192.79.39.2 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Para recibir conexión nos centramos en la información de eth0, ya que lo ocuparemos para realizar la conexión:

┌─[root@kali]─[/home/user/routing]
└──╼ ip route add 192.79.39.0/24 via 192.165.192.3

Metasploit

Para el caso de metasploit se debe tener acceso por meterpreter a una sesión explotada para poder ejecutar autoroute:

meterpreter > run autoroute -s 192.79.39.0 -n 255.255.255.0

[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Adding a route to 192.79.39.0/255.255.255.0...
[+] Added route to 192.79.39.0/255.255.255.0 via 192.165.192.3
[*] Use the -p option to list all active routes

meterpreter > background
[*] Backgrounding session 1...

Para escanear puertos ya se debería ocupar el auxiliar portscan:

msf6 exploit(linux/http/vcms_upload) > use auxiliary/scanner/portscan/tcp 
msf6 auxiliary(scanner/portscan/tcp) > set PORTS 80, 8080, 445, 21, 22
PORTS => 80, 8080, 445, 21, 22
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.79.39.3-10
RHOSTS => 192.79.39.3-10
msf6 auxiliary(scanner/portscan/tcp) > exploit

[+] 192.79.39.3:          - 192.79.39.3:21 - TCP OPEN
[+] 192.79.39.3:          - 192.79.39.3:22 - TCP OPEN
[*] Auxiliary module execution completed

msf6 auxiliary(scanner/portscan/tcp) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > portfwd add -l 1234 -p 21 -r 192.79.39.3
[*] Local TCP relay created: :1234 <-> 192.79.39.3:21
meterpreter > portfwd list

Active Port Forwards
====================

   Index  Local           Remote        Direction
   -----  -----           ------        ---------
   1      192.79.39.3:21  0.0.0.0:1234  Forward

1 total active port forwards.

meterpreter > background
[*] Backgrounding session 1...
msf6 auxiliary(scanner/portscan/tcp) > nmap -SVC -p1234 localhost