Hace 14 años | Por hakais a dabax.net
Publicado hace 14 años por hakais a dabax.net

En ocasiones, y cada vez más, encontramos redes Wi-Fi públicas y abiertas (sin codificación de datos) que requieren autenticación. Cuando te conectas y accedes a cualquier dirección Web, salta un portal cautivo donde tienes que introducir un login: controlan el tráfico HTTP. Algunas están restringidas a cierto público cerrado, como estudiantes de una universidad. Y otras son del estilo: "envía un SMS y te dejamos navegar durante 30 minutos". ¿Existe alguna manera de vulnerar dicha restricción? La respuesta es si, mediante un tunel DNS.

Comentarios

categoriacerdosya

qué pena que no entiendo ni papa...

bradbury9

Cualquier protocolo que permita payload es susceptible de algo así. Creo que sería mas exacto llamarlo canal encubierto.

Concretamente este caso concreto tiene un par de puntos flacos:

a) Muchos puntos de acceso no solo sirven de gateway, sino que proveen tambien la resolucion DNS. Eso implica que el administrador de turno pueda bloquear el trafico a servidores DNS externos.

b) Puede ser que haya instalado en la red un sistema IPS que detecte el trafico DNS modificado y lo considere sospechoso, bloqueándolo en consecuencia.

h

#2 si, esa es una posible solucion. Pero ¿cuantos portales cautivos implementan eso? Me atrevería a decir que el 95% no lo hacen.

kesar

vaya, siempre pensé en hacer un programita de este tipo... también me llamaba mucho la atención que el DNS lo permitan. Gran descubrimiento. Gracias =)

D

Yo en clase lo hago con:

ssh -p80 -ND 1234 usuario@servidor (obviamente el servidor tiene ssh en el puerto 80)

luego configuro un proxy socks v5 en el navegador (localhost:1234) y listo!

e

#20. Se suele camuflar mejor en el puerto 443

buly

#20 Entiendo que lo que usas en este caso no serviría, ya que el AP, al hacerle la petición de dns de tu servidor, te redireccionaría al portal cautivo

jonolulu

#24 Una pregunta de principiante... ¿las peticiones no irían cifradas? (o al menos no "visibles" al AP)

D

#24 Lo he usado para saltarme portales cautivos. No tienes por qué hacerle una petición al servidor DNS si te sabes la IP de tu servidor

D

Muy relacionado.
Para la gente que en su empresa le han puesto un proxy (le han capado el accedo a ciertas páginas) yo he usado con gran éxito:

http://www.privoxy.org/

Monta un proxy local tuneleando a tu servidor fuera de la red.

ochodias

#22 Para eso hay proxys como dice #18. Otro buen proxy es Ultrasurf

http://www.ultrareach.com/download_en.htm

Doble click y navegando en Windows.

D

#23: Joneame es un saco.

ochodias

¿Qué es AP?

El artículo muy interesante, y los comentarios también

Meneo

ochodias

Y yo me pregunto.

¿No hay este tipo de servidores "en Internet"? ¿Sin tener que crearnos nosotros uno?

natrix

A que no sabéis cómo se hace en Android...

D

Muy buena aunque requiere un servidor externo controlado por nosotros y para eso tb puedo hacer un tunel ssh con el putty (si es que se permite la salida por el puerto 22 o el que haya configurado en mis servidor ssh claro) y redirigir peticiones a donde me plazca

a

¿Alguien lo ha probado en los aeropuertos de AENA?

D

Lo que hace la gente por ahorrarse los 2 euros

h

Acces Point

ochodias

#14 Gracias, estaba sencillo lol

D

Por lo que entiendo es que solo "se bloquea" la DNS.

Mi solucion sencilla, que entiendo funcionaria tambien

Yo en el pasado, en una empresa usaban WINS (algo asi como unas DNs de microsoft para un controlador de dominio) y claro, si escribias www.google.es no te resolvia nada, solo las urls que ellos querian. Por lo tanto me busque una pagina DNS a IP y me apunté la IP de dicha web.

accedí al sitio al estilo http:// XX.XX.XX.XX y de ahi tecleaba la web que queria visitar y me daba la IP y accedia sin mayor problema la mayoria de veces, otras habia errores puesto que los vinculos a otras webs o imagenes no se resuelven, pero al menos vale para navegar un poco.

Entiendo que con el iodine no pasara puesto que te "resuelve" todas las peticiones que tenga la pagina html y fucnionara mejor, pero requiere instalacion y tener un servidor preparado por detras.

D

muy buen aporte bros ¡¡

D

¿Por symbian se podría hacer algo similar?

h

Punto 1, los servidores DNS funcionan bajo UDP. Aunque puedan funcionar por TCP, no se utiliza.

Punto 2, si quieres que tu portal cautivo funcione, y quieres dejar únicamente acceso a tu propio servidor dns, este tiene que permitir RECURSIVIDAD, ya que sino, no podría resolver las direcciones como google.com, ebay.es, etc... Y si permite recursividad, entonces sigue siendo vulnerable.

La única solucion es controlar el tráfico DNS (inspeccionar los paquetes), cosa que a la práctica no se hace.

albandy

#7 Te reto a que pases el wireshark en una red llena de máquinas windows filtrando el trafico al puerto 53, te vas a encontrar paquetes tanto TCP como UDP. Que teóricamente se tenga que utlizar UDP no quiere decir que los fabricantes de S.O. hagan lo que les salga de los huevos (sobre todo en el caso de M$)

Respecto a lo que me comentas sobre permitir la recursividad en las zonas, eso funcionaría si tu servidor DNS no hiciera cache de las peticiones y te pasara directamente la información tal cual de los servidores raíz, pero eso en la práctica no se hace (o no se debería hacer, ya que incrementas el tráfico hacia afuera).

h

#8
1. 74.125.77.99 es uno de los servidores DNS de google.

netcat -vv -u 74.125.77.99 53
ew-in-f99.1e100.net [74.125.77.99] 53 (domain) open

netcat -vv 74.125.77.99 53
...
timeout

Como verás, tiene el puerto TCP 53 CERRADO. Por lo tanto da igual que los clientes windows hagan peticiones por TCP, los servidores DNS de internet no las van a resolver...

2. Tu puedes hacer cache de google.com -> XXX.XXX.XXX.XXX pero luego si te piden test.google.com deberá volver a hacer la peticion, y si luego te piden test2.google.com otra vez... Y asís succesivamente, por lo que la cache no sirve de nada.
Y no! tampoco puedes "descargar" de una vez lo referente a todos los subdominios, ese sería un grave fallo de seguridad para un servidor DNS.

bradbury9

#7 Dudo que permitiendo recursividad siguiese siendo vulnerable ya que la recursividad implica que es el servidor DNS del portal el que resuelve la direccion (corregidme si me equivoco) y esa resolucion implica una nueva solicitud DNS que no tendria el payload que se quiere enviar al servidor DNS externo.

Aviso, no he probado el IODine, solo estoy teorizando.

e

#7. Sólo por informar. TCP se utiliza para las transferencias de zonas. Te aseguro que en donde estoy se hacen varias veces al día.

h

Y si la petición es a:
HOlAESTEESUNMENSAJEQUEESTOYENVIANDOAMISERVIDORDNSIONIZADO.foo.com

Entonces? Puedes o no comunicarte con el servidor? Funciona o no con recursividad?

bradbury9

#11

Llegar llegara la peticion, otra cosa es que llegue con el payload o sin el Sinceramente dudo que con recursividad funcionase.

albandy

iptables -A output -p TCP -dport 53 -j DROP

albandy

#4 Te vuelvo a contestar sobre TCP/UDP, ya que me he repasado el protocolo:

En la guia de especificaciones de implementación de DNS, en el apartado 4.2.2 aparece el texto siguiente:

http://www.faqs.org/rfcs/rfc1035.html

4.2.2. TCP usage

Messages sent over TCP connections use server port 53 (decimal). The
message is prefixed with a two byte length field which gives the message

length, excluding the two byte length field. This length field allows
the low-level processing to assemble a complete message before beginning
to parse it.

Several connection management policies are recommended:

- The server should not block other activities waiting for TCP
data.

- The server should support multiple connections.

- The server should assume that the client will initiate
connection closing, and should delay closing its end of the
connection until all outstanding client requests have been
satisfied.

- If the server needs to close a dormant connection to reclaim
resources, it should wait until the connection has been idle
for a period on the order of two minutes. In particular, the
server should allow the SOA and AXFR request sequence (which
begins a refresh operation) to be made on a single connection.
Since the server would be unable to answer queries anyway, a
unilateral close or reset may be used instead of a graceful
close.

Read more: http://www.faqs.org/rfcs/rfc1035.html#ixzz0gSUKtVoG

supongo que queda claro ¿no?

C

#31 El cliente DNS que es el que se está hablando funciona sobre UDP, lo de TCP es en algunos servidores que lo utilizan para enviar información entre slave/master. Pero el cliente funciona solo en UDP.

Así que en este caso la regla o cualquier cosa que haga referencia a TCP no sirve para aplicarlo en este caso.