PDA

Ver la versión completa : Navegar gratis por una WiFi de pago mediante un túnel DNS con dns2tcp



LUK
02-09-2016, 17:48
Normalmente en una red WiFi de pago, cuando no estamos logeados en un portal cautivo con un usuario válido, tenemos el tráfico restringido.
Aún así y en la mayoría de los casos, podemos hacer un túnel y navegar a través del protocolo DNS debido a que el servidor DNS que automáticamente nos asigna el DHCP puede hacer consultas hacia Internet.

Podemos comprobar si podemos aprovechar esta característica en nuestra WiFi:

nslookup www.google.com (http://www.google.com/)

Si recibimos respuesta, podemos aprovechar esta vulnerabilidad y encapsular nuestro tráfico en DNS. Para llevar a cabo esta tarea, vamos a usar dns2tcp (http://www.hsc.fr/ressources/outils/dns2tcp/).

Prerrequisitos:

- Una máquina corriendo el servidor dns2tcp
- Un nombre de dominio.


Servidor dns2tcp
Podemos tener corriendo el servicio en local simplemente en nuestro ordenador, añadiendo una regla en el NAT para el puerto 53, pero voy a explicar como hacerlo en una máquina de Amazon AWS, que además es gratis durante un año.

Vamos a: https://aws.amazon.com/ y buscamos el plan gratuito de hosting de una instancia EC2 durante un año.
Una vez nos logeamos, vamos a Services > Cloud Computing y elegimos EC2.


https://4.bp.blogspot.com/-KOi--HmuDq4/V8XsfPeIFkI/AAAAAAAAEKU/0UeeTSVehY4GoMp6IvLpqmSDuyUB-qNdwCK4B/s640/ec2.PNG (http://4.bp.blogspot.com/-KOi--HmuDq4/V8XsfPeIFkI/AAAAAAAAEKU/0UeeTSVehY4GoMp6IvLpqmSDuyUB-qNdwCK4B/s1600/ec2.PNG)
Después vamos al panel 'Instances' y damos a 'launch instance'. Yo he seleccionado Ubuntu Server de tipo t2.tiny. La máquina no es muy potente pero es gratis 750 horas al mes durante un año.

Cuando creamos la instancia nos dan una clave para conectarnos por ssh con la opcion -i.
Ahora que tenemos la instancia, podemos ver la información relevante:



https://4.bp.blogspot.com/-Q_t9crkNLRk/V8XtwZTL11I/AAAAAAAAEKc/YDIOSKcsyicyZzWpmG7ZD4V23XDVi1VUwCK4B/s640/2016-08-26%2B21_53_32-EC2%2BManagement%2BConsole.png (http://4.bp.blogspot.com/-Q_t9crkNLRk/V8XtwZTL11I/AAAAAAAAEKc/YDIOSKcsyicyZzWpmG7ZD4V23XDVi1VUwCK4B/s1600/2016-08-26%2B21_53_32-EC2%2BManagement%2BConsole.png)




Vemos nuestra ip pública y Security Groups, que es donde determinamos nuestras reglas de entrada y salida, ya que nuestra máquina tiene una ip privada.
Abrimos el puerto 53, dentro del Security Group que tenemos asignado a nuestra instancia:



https://2.bp.blogspot.com/-3pSZCoF19Zc/V8XuqrBQakI/AAAAAAAAEKk/CoesM_ZK-pIYYIml_jLBTcijF7Ea1JI4QCK4B/s640/2016-08-26%2B21_56_31-EC2%2BManagement%2BConsoleNAT.png (http://2.bp.blogspot.com/-3pSZCoF19Zc/V8XuqrBQakI/AAAAAAAAEKk/CoesM_ZK-pIYYIml_jLBTcijF7Ea1JI4QCK4B/s1600/2016-08-26%2B21_56_31-EC2%2BManagement%2BConsoleNAT.png)
Nos conectamos por ssh y comprobamos que tenemos el puerto 53 abierto al exterior:



https://4.bp.blogspot.com/-Jw8KXwm2GXM/V8XwB4lJ4JI/AAAAAAAAEKw/FzyWaQoX8HkG2ETTlVr8_mclZHTyfYXiQCK4B/s640/netcat.png (http://4.bp.blogspot.com/-Jw8KXwm2GXM/V8XwB4lJ4JI/AAAAAAAAEKw/FzyWaQoX8HkG2ETTlVr8_mclZHTyfYXiQCK4B/s1600/netcat.png)
Ahora descargamos el paquete dns2tcp:

$ apt-get install dns2tcp
Antes de explicar la configuración del servidor dns2tcp, vamos a ver la configuración del dominio, ya que así va a ser más fácil entenderlo.

Nombre de dominio
Vamos a la página que más nos guste que nos permita adquirir un nombre de dominio y administrar los DNS y adquirimos un dominio. En este caso he escogido goddady.
Una vez tenemos el dominio, vamos al apartado administar dns y necesitaremos:


Un registro A apuntando a la máquina donde esta corriendo el servidor dns2tcp.
Un registro NS para un subdominio apuntando a la maquina corriendo el servidor dns2tcp.


https://2.bp.blogspot.com/-_lMVGY_Z6ak/V8XzxbKVl0I/AAAAAAAAEK4/h4m2Nu7ZDbgLmJucbT3z07H-V3gIYsOegCK4B/s640/Administrador%2Bde%2Bdominios.png (http://2.bp.blogspot.com/-_lMVGY_Z6ak/V8XzxbKVl0I/AAAAAAAAEK4/h4m2Nu7ZDbgLmJucbT3z07H-V3gIYsOegCK4B/s1600/Administrador%2Bde%2Bdominios.png)


En mi caso, esos son los dos registros que he añadido para el dominio ad0n.com (http://ad0n.com/).
El registro NS tunnel dns2tpcd.ad0n.com (http://dns2tpcd.ad0n.com/) tiene especial importancia, es una de las claves para que ésto funcione y quiere decir que cuando se haga una consulta DNS atunnel.ad0n.com (http://tunnel.ad0n.com/), el DNS autoritativo para ese subdominio, es decir, el que va a responder, será dns2tcpd.ad0n.com (http://dns2tcpd.ad0n.com/), osea, donde está alojado nuestro servidor DNS fake.


Podemos comprobar que lo tenemos todo bien configurado preguntando a un servidor autoritativo del dominio ad0n.com (http://ad0n.com/) por el subdominio tunnel.ad0n.com (http://tunnel.ad0n.com/):


$ dig @ns46.domaincontrol.com (http://ns46.domaincontrol.com/) tunnel.ad0n.com (http://tunnel.ad0n.com/)



https://4.bp.blogspot.com/-3CozTJoPgD0/V8X3GoVWOKI/AAAAAAAAELE/tvAp_GF220Ez0603kROEr09qGN_S4d4xgCK4B/s640/digtunneldns.png (http://4.bp.blogspot.com/-3CozTJoPgD0/V8X3GoVWOKI/AAAAAAAAELE/tvAp_GF220Ez0603kROEr09qGN_S4d4xgCK4B/s1600/digtunneldns.png)


Pasamos a ver la configuración del cliente y servidor dns2tcp.


Cliente/Servidor dns2tcp

Servidor:

Abrimos el fichero /etc/dns2tcpd.conf y lo configuramos de la siguiente manera:



https://2.bp.blogspot.com/-qwyo1UY8mUQ/V8X4R7yTFpI/AAAAAAAAELM/reCjkT5OAioDotJXmKbQfIT9_6l91O4vwCK4B/s640/servidordns2tcpd.png (http://2.bp.blogspot.com/-qwyo1UY8mUQ/V8X4R7yTFpI/AAAAAAAAELM/reCjkT5OAioDotJXmKbQfIT9_6l91O4vwCK4B/s1600/servidordns2tcpd.png)


Escuchamos en 0.0.0.0 para que sea accesible desde el exterior y en domain ponemos el subdominio que va a delegar en nuestro servidor DNS.
El campo key es opcional pero servirá si no queremos que todo el mundo pueda usar nuestro servidor DNS sin clave.

Lanzamos el servidor:

$ dns2tcpd -F -d2 -f /etc/dns2tcpd.conf


https://2.bp.blogspot.com/-vfS4PvsYuJU/V8X5qAPOJPI/AAAAAAAAELU/OURECAgdOLca0had2v0bjiVGzEO_TJtkgCK4B/s640/dns2tcpd.png (http://2.bp.blogspot.com/-vfS4PvsYuJU/V8X5qAPOJPI/AAAAAAAAELU/OURECAgdOLca0had2v0bjiVGzEO_TJtkgCK4B/s1600/dns2tcpd.png)


Cliente
Comprobamos los servicios disponibles del servidor:

$ dns2tcpc -z tunnel.ad0n.com (http://tunnel.ad0n.com/) -k 1234



https://1.bp.blogspot.com/-n_MRBPmlS2Q/V8X6usVfC_I/AAAAAAAAELc/oDPY0w_a3VQtzeWLXbAI5dMT_VoP86BywCK4B/s640/dns2tcpc.png (http://1.bp.blogspot.com/-n_MRBPmlS2Q/V8X6usVfC_I/AAAAAAAAELc/oDPY0w_a3VQtzeWLXbAI5dMT_VoP86BywCK4B/s1600/dns2tcpc.png)


Levantamos el túnel en el puerto 3333 solicitando el recurso ssh.


$ dns2tcpc -z tunnel.ad0n.com (http://tunnel.ad0n.com/) -k 1234 -l 3333 -r ssh

Nos conectamos por ssh al servidor y hacemos bind al puerto 1080, que será el puerto que usemos en el navegador para nuestro proxy socks.

$ ssh -i dns2tcpd.pem ubuntu@localhost -p 3333 -D 1080



https://1.bp.blogspot.com/-VI6i0JbHlDQ/V8X_dSH8HaI/AAAAAAAAELs/afWOpvnu92UpZKqGYbfDKGvBLyLvarohwCK4B/s640/proxy.png (http://1.bp.blogspot.com/-VI6i0JbHlDQ/V8X_dSH8HaI/AAAAAAAAELs/afWOpvnu92UpZKqGYbfDKGvBLyLvarohwCK4B/s1600/proxy.png)



Listo, ya podemos navegar a través de DNS.
La primera vez se tarda bastante en configurar todo, pero a partir de aquí, lo único que se necesitaría son estos dos comandos:

$ dns2tcpc -z tunnel.ad0n.com (http://tunnel.ad0n.com/) -k 1234 -l 3333 -r ssh
$ ssh -i dns2tcpd.pem ubuntu@localhost -p 3333 -D 1080

y configurar el proxy el navegador y a saltarse los portales cautivos en un momento ;).


Fuente: http://www.hackplayers.com/2016/08/navegar-gratis-por-una-wifi-de-pago-con-dns2tcp.html

gondar_f
13-09-2016, 13:17
Pedazo tutorial