Banner 1

Evadir un portal cautivo mediante un túnel DNS

En una cafetería, en el aeropuerto, en un hotel... hoy en día en cualquier sitio existen puntos de acceso wi-fi abiertos que te ofrecen la posibilidad de navegar por Internet, aunque la mayoría durante un tiempo limitado y por un precio fijado. Son los llamados hotspot públicos que te redireccionan a la web de un portal cautivo para solicitar previamente unas credenciales por las que has tenido que pagar. Evadirlos sin embargo es muy fácil...

Lo primero comentaros lo que seguro ya sabéis: estas redes inalámbricas carecen de cualquier tipo de cifrado por lo que es posible esnifar el tráfico y robar la sesión de otro usuario conectado (o las credenciales de Facebook, Dropbox, Whatsapp, etc.). Es decir, no sería dificil envenenar ARP y/o hacer MiTM para obtener lo que buscamos puesto que la inmensa mayoría de los usuarios NO utilizan un servicio VPN para protegerse en este tipo de redes públicas. Pero no vamos a no ser demasiado malos y simplemente vamos a navegar sin robar nada a ningún otro cliente...

Para ello vamos a aprovecharnos de que normalmente estos puntos de acceso permiten utilizar el protocolo DNS sin necesidad de estar autenticado.
Veamos. Por ejemplo, si nos conectamos a un SSID "wifi_hotel" e intentamos navegar se nos redireccionará a un portal cautivo Cisco:

https://1.1.1.1/login.html?redirect=web


Pero sin embargo comprobamos que si podemos resolver cualquier nombre de Internet:

Adaptador de LAN inalámbrica Conexión de red inalámbrica:

   Sufijo DNS específico para la conexión. . :
   Dirección IPv4. . . . . . . . . . . . . . : 192.168.2.133
   Máscara de subred . . . . . . . . . . . . : 255.255.255.0
   Puerta de enlace predeterminada . . . . . : 192.168.2.1

C:\Users\vmotos>ping www.oracle.com

Haciendo ping a e7075.b.akamaiedge.net [23.51.70.140] con 32 bytes de datos:
Control-C
^C
C:\Users\vmotos>ping www.google.es

Haciendo ping a www.google.es [173.194.41.215] con 32 bytes de datos:
Control-C   
  
Gracias a esto podremos encapsular IPv4 en el payload de los datos de los paquetes UDP y establecer un túnel DNS con un servidor externo.

Quizás la herramienta más extendida y la que utilizaré en este caso es iodine que facilita el túnel cliente-servidor mediante un interfaz TUN/TAP normalmente creado por OpenVPN, aunque (no sé vosotros) yo no dispongo de un servidor externo, así que para tener la parte servidor de iodine utilizaré dns.canhasinter.net, que es un servicio que nos permitirá 500mb de tráfico gratuito ampliables mediante pago con bitcoins.

Para empezar tenemos que tener previamente instalado OpenVPN con un interfaz tun/tap creado y un cliente ssh, con puttygen.exe si os gusta el PuTTY (qué mal suena esto XD). En mi caso utilizaré Windows 7 con msysgit (Git para Windows) y los primero que haremos será generar un par de claves simétricas para luego registrarnos en el servidor del proveedor:

vmotos@PCVMOTOS ~
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/vmotos/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/vmotos/.ssh/id_rsa.
Your public key has been saved in /c/Users/vmotos/.ssh/id_rsa.pub.
The key fingerprint is:
7e:0c:73:b7:b6:ba:4c:4f:ce:f0:02:3c:3e:66:e8:c5 vmotos@PCVMOTOS

Ahora descargamos iodine para Windows y ejecutamos:

C:\Users\vmotos\Desktop\iodine-0.6.0-rc1-win32\bin>iodine.exe -f -P canhasinternet 166.78.128.18 i.dfw1.dns.canhasinter.net
Opening device Conexi¾n de ßrea local 4
Opened UDP socket
Opened UDP socket
Sending DNS queries for i.dfw1.dns.canhasinter.net to 166.78.128.18
Autodetecting DNS query type (use -T to override)Opened UDP socket
.
Using DNS type NULL queries
Version ok, both using protocol v 0x00000502. You are user #0
Enabling interface 'Conexi¾n de ßrea local 4'
Setting IP of interface 'Conexi¾n de ßrea local 4' to 172.16.0.2 (can take a few
 seconds)...

Server tunnel IP is 172.16.0.1
Testing raw UDP data to the server (skip with -r)
Server is at 166.78.128.18, trying raw login: OK
Sending raw traffic directly to 166.78.128.18
Connection setup complete, transmitting data.

Con ésto hemos establecido un túnel virtual punto a punto mediante el interfaz tun/tap 'Conexi¾n de ßrea local 4'. Ahora tendremos que registrarnos con la clave pública generada:

vmotos@PCVMOTOS ~
$ ssh nopass@172.16.0.1
The authenticity of host '172.16.0.1 (172.16.0.1)' can't be established.
RSA key fingerprint is 17:79:60:65:21:8e:af:c6:4a:20:98:a5:8c:cc:e6:b5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.0.1' (RSA) to the list of known hosts.

Help:
a) About
r) Register
l) Login
q) Quit
? r
Register:
Enter in an SSH key (~/.ssh/id_rsa.pub) to register your account.
You must have a 2048 bit RSA key. No others accepted.
Input must be exactly 372 characters. Paste the key here.
Do not paste in the ssh-rsa prefix. Go from the start of the key to
the end without the user@host comment section.
Press ctrl+c if you wish to abort.
?
Does this key look good?
AAAAB3NzaC1yc2EAAAABIwAAAQEAu/iH3eybVrQcvXhSh4SKxsOUNfJmSogAoxOHlrx/Tu8IwmyA+0ha
G0R+ZFNxwikfLXmMrzNvBwVjWdQ9wfxVw9adwD7H7l4vORuj/Nh//Jxq7EV2fSPnmco8wRCFHoSidYmW
1baZijiv2hEcIDJlyMY9KM23vhOTI91XewCl5KSWsjVgz4tpSwOh2n9G/JFf8u53+HqP4N+eUgWNss/Z
G2OFcfb3rVuCm5LMDfClOQ41wiGH69bdvgubt7/eCREhJlfWS8NZsf4eFx5x+6sj44+2bU3TPHKKG1U2
jMiWQcRHp5PYKx9TwgC4pePe4MOgfvFC3A8ER2y8s6jNpfglMw==
? y
Registration successful!
? e
Help:
a) About
r) Register
l) Login
q) Quit
?
? q
Connection to 172.16.0.1 closed.

Ahora mantenemos las rutas para los servidores DNS y cambiamos el gateway por defecto para redireccionar todo el tráfico por el túnel:


D:\>route add 8.8.8.8 mask 255.255.255.255 192.168.2.1
 Correcto

D:\>route add 8.8.4.4 mask 255.255.255.255 192.168.2.1
 Correcto

D:\>route add 166.78.128.18 mask 255.255.255.255 192.168.2.1
 Correcto

D:\>route delete 0.0.0.0
 Correcto
 
D:\>route add 0.0.0.0 mask 0.0.0.0 172.16.0.1
 Correcto

Finalmente lanzamos el cliente ssh:


Bandwidth purchased: N/A Bandwidth used: 560134
Bandwidth remaining: 499 MB
Bitcoin address: 1GMaV7RMyiagFmkv3EyPGGvgJ647bBFEfn
BTC/GB: 0.001. Minimum suggested payment 0.01 BTC.
Last transasction: N/A

Y probamos... ;)


D:\>ping www.oracle.com

Haciendo ping a e7075.b.akamaiedge.net [23.77.102.140] con 32 bytes de datos:
Respuesta desde 23.77.102.140: bytes=32 tiempo=265ms TTL=51
Respuesta desde 23.77.102.140: bytes=32 tiempo=260ms TTL=51

Estadísticas de ping para 23.77.102.140:
    Paquetes: enviados = 2, recibidos = 2, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 260ms, Máximo = 265ms, Media = 262ms
Control-C
^C
D:\>tracert www.oracle.com

Traza a la dirección e7075.b.akamaiedge.net [23.77.102.140]
sobre un máximo de 30 saltos:

  1   135 ms   136 ms   135 ms  172.16.0.1
  2   139 ms   136 ms   136 ms  166.78.16.2
  3   140 ms   139 ms   138 ms  core3.dfw1.rackspace.net [72.3.202.48]
  4   182 ms   139 ms   138 ms  coreb.dfw1.rackspace.net [74.205.108.22]
  5   141 ms   138 ms   138 ms  corea-edge6.dfw1.rackspace.net [74.205.108.113]

  6   140 ms   139 ms   139 ms  ae53.edge10.Dallas1.Level3.net [4.28.44.161]
  7   143 ms   138 ms   149 ms  ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]

  8   140 ms   139 ms   138 ms  xe-8-1-2.dal33.ip4.tinet.net [77.67.71.221]
  9   264 ms   262 ms   270 ms  xe-0-0-0.bru20.ip4.tinet.net [89.149.187.121]
 10   270 ms   267 ms   265 ms  akamai-gw.ip4.tinet.net [77.67.65.90]
 11   265 ms   259 ms   259 ms  a23-77-102-140.deploy.static.akamaitechnologies.
com [23.77.102.140]

Traza completa.

Y ya está, ya podemos navegar... aunque recordar que conviene utilizar además un servicio VPN para mantener la privacidad de nuestros datos.

Fuente:http://www.hackplayers.com/2013/09/evadir-un-portal-cautivo-mediante-un.html

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay