Según Wikipedia entendemos como Spoofing al uso de técnicas de suplantación de identidad generalmente con usos maliciosos o de investigación.
Hace ya unos días que se viene hablando de una grave vulnerabilidad en el protocolo DNS que consiste en permitir falsificar las respuestas del servidor de nombre de dominio facilitando con esto la suplantación de cualquier sitio en Internet, es decir, lo que actualmente se ha venido a denominar DNS Cache Poisoning y que puede devenir facilmente en un ataque DNS Spoofing.
Según leo en los maravillosos blogs de Kriptópolis y de Sergio Hernando esta vulnerabilidad fue descubierta por Dan Kaminsky que prometió que daría detalles sobre la misma en la conferencia Black Hat de agosto para, en principio, dar tiempo de corregirla a todos los proveedores de Internet aunque al parecer y como era de esperar ya se le han adelantado.
Problema
Grosso modo, la vulnerabilidad está implícita en la implementación del mismísimo protocolo DNS que como sabemos usa UDP.
Un DNS funciona enviando peticiones en paquetes individuales UDP, cada respuesta que recibe el servidor DNS usa una única random query ID, es decir, un identificador aleatorio único, y se tienen que cumplir dos reglas básicas: que todas las respuestas y peticiones emparejadas compartan ese ID, y que las respuestas se emitan desde el mismo puerto empleado en la petición. Si se cumplen las condiciones, la primera respuesta válida es la que prevalece.
Pero si un atacante tuviera la capacidad de conocer el puerto empleado en la petición y el valor de esa query ID, podría fabricar respuestas falsas que serían aceptadas, ya que cumplen con las condiciones y podría redireccionar nuestras peticiones de páginas, por ejemplo, bancarias a cualquier otra página y hacerse con las claves bancarias.
El query ID tiene 16 bits de longitud, lo que permite obtener 2^16 = 65.536 combinaciones posibles aunque en implementaciones defectuosas, puede ser menor, reduciendo el espacio considerablemente. Otras veces, la implementación defectuosa simplemente generará IDs predecibles.
Respecto a puertos estamos hablando de 64.511 posibilidades ya que hay que restar a 65.535 (valor límite) los 1.024 primeros puertos reservados. Sería fácil pensar que falsificar una respuesta es complicado estadísticamente hablando pero, en la realidad, es más fácil ya que, a parte de que no todos los rangos de puertos están disponibles, casi todos los DNS operan con los mismos puertos, lo que reduce drásticamente la combinatoria.
Protección
Bien, ahora que ya sabemos cuál es la vulnerabilidad, cómo funciona el protocolo DNS y cuál es el problema debemos preocuparnos por protegernos.
Lo primero que debemos saber es si nuestros DNS’s son vulnerables. Para saberlo hay dos páginas que nos indican si nuestros servidores DNS tienen esta vulnerabilidad y una tercera vía a través del command.com de Windows (Ejecutar → cmd).
1.- Visitando la página DoxPara Research y tras pinchar en Check My DNS nos mostrará si nuestros DNSs son o no vulnerables.
2.-. Visitando la página DNS-OARC y realizando el Web-based DNS Randomness Test. Se trata de un test más detallado que el anterior y que muestra sus resultados de forma más gráfica. Este test informa por separado de la aleatoriedad de los dos factores implicados en la vulnerabilidad:
a.- Aleatoriedad del puerto de origen.
b.- Aleatoriedad del identificador de la transacción.
3.- Desde la pantalla (Ejecutar → cmd) teclear:
nslookup -type=txt -timeout=30 porttest.dns-oarc.net
Solución
Bien, ahora ya que podemos saber si nuestros DNS tienen esa grave vulnerabilidad, ha llegado el momento de, dado el caso, solucionar el problema.
Solo tienes que poner los DNS que no tengan la vulnerabilidad, como por ejemplo 208.67.222.222 y 208.67.220.220 (DNS de OpenDNS) en tu conexión de red. Para ello, sigue estos sencillos pasos:
Windows
1.- inicio
2.- panel de control
3.- Conexiones de red
4.- click derecho en Conexión de área local luego en propiedades
5.- doble click en Protocolo Internet (TCP/IP)
6.- seleccionar “Usar las siguientes direcciones de servidor DNS”
7.- ingresar cualquier estos 208.67.222.222 – 208.67.220.220
GNU/Linux
Edita el archivo /etc/resolv.conf y coloca los siguientes datos
nameserver 208.67.222.222
nameserver 208.67.220.220
Problemas detectados
El parche creado por Microsoft (MS08-037) comenzó dando problemas a los usuarios de Zone Alarm, un popular cortafuegos personal aunque, según parece, también existen problemas con servicios como Exchange Server, Active Sync, IPSec (Internet Protocol Security), IAS (Internet Authentication Services).
