¿Estás oyendo las noticias del ataque SAD DNS y te cuesta entenderlo? Tranquilo, es complejo entenderlo bien. Pero voy a intentar explicar desde mi punto de vista la parte interesante del ataque más importante a Internet desde el fallo de Kamisnky en 2008. Otro punto para 2020. ¬
Para falsear una petición DNS y devolverle al cliente una mentira, el atacante debe saber el TxID (transaction ID) y el puerto origen UDP desde el que la víctima realiza la consulta al servidor principal. Con esto bombardea al resolvedor, que creerá recibir la respuesta original.
Esto supone entropía de 32 bits (dos campos de 16). SAD DNS consiste (básicamente, porque el paper es muy complejo) en inferir el puerto UDP con un ingenioso método que se vale de los mensajes de vuelta de error ICMP. El atacante se enfrenta a una entropía de 16 bits, asumible.
¿Cómo deducir el puerto abierto del resolvedor (la víctima a la que se le va a envenenar la caché)? Lo más sencillo es escanear todos los puertos UDP y ver cuál está abierto, pero esto lleva demasiado tiempo. Para cuando se termine el puerto que querías estará obsoleto.
Además, si se machaca un servidor consultando puertos UDP él mismo limitará las respuestas ICMP de “error puerto cerrado” para no saturar. Todos los OS implementan este límite global. Y este límite para proteger, paradójicamente, es lo que aprovecha el ataque.
El límite global es de 1000 respuestas por segundo en Linux (200 en Windows). Se trata de un contador global compartido por cualquiera que le esté preguntado por puertos. Lanza como máximo 1000 respuestas a 1000 preguntas por, digamos, un puerto abierto en UDP.
Y el ataque consiste en 1) Enviar 1000 sondas UDP al resolvedor víctima con IPs de origen falseadas probando 1000 puertos. (En realidad son lotes de 50 cada 20 ms para superar otro límite de respuestas por IP, pero dejémoslo ahí por simplicidad).
2) Si los 1000 puertos están cerrados, la víctima devolverá (a las IPs falseadas) 1000 paquetes ICMP de error indicando que no está abierto el puerto. Si está abierto, no pasa nada, lo descarta la aplicación correspondiente en ese puerto.
No importa que el atacante no vea los ICMP respuesta (llegan a las IPs falseada). Lo que importa es ver cuánto del límite global de 1000 respuestas por segundo “se gasta” en esa tanda. Vamos al paso 3.
3) Antes de dejar pasar ese segundo, el atacante consulta un puerto UDP cualquiera que sepa cerrado y si el servidor le devuelve un ICMP de “puerto cerrado”… es que no se había gastado los 1000 ICPM de “error puerto cerrado” y por tanto…
... ¡en ese rango de 1000 había al menos un puerto abierto! Bingo. Como el límite de respuestas ICMP es global, una sola respuesta de puerto cerrado significa que no se gastó el límite de 1000 repuestas de “puerto cerrado” por segundo. Alguno había abierto.
Así, en tandas de 1000 consultas por segundo y comprobando si gasta o no el límite de paquetes de error puerto cerrado, el atacante puede ir deduciendo qué puertos están abiertos. En algo más de 65 segundos (para cubrir 65.536) tendrá mapeados los puertos abiertos del servidor.
Todo viene de una tormenta perfecta de errores, en implementación UDP, en la implementación del límite de 1000 respuestas... Esto al menos desde 2012. Ya había papers avisando de la posibilidad de ataques aprovechando este límite global desde 2016. Pero no tan "prácticos".
¿Soluciones? Pues Linux ya tiene preparado un parche. Pero hay mucha tela de cortar. Desde el DNSSEC que siempre se recomienda pero nunca termina de despegar, hasta desactivar las respuestas de ICMP… cosa que puede ser compleja.
El parche del Kernel hará que ahora no haya un valor fijo de 1000 respuestas por segundo, sino aleatoria de entre 500 y 2000. El atacante así no podrá hacer sus cábalas correctamente para saber si en un segundo se ha gastado ese límite y deducir puertos UDP abiertos.
Muchos servidores públicos ya están parcheados pero muchos más no. Resulta particularmente interesante en este ataque que es muy limpio para el atacante, no necesita estar en la red de la víctima. Puede hacerlo todo desde fuera y confundir a los servidores. Un desastre.
Parece que el origen absoluto del problema es de implementación, no diseño. En este RFC tools.ietf.org/html/rfc1812#s… se describe ese límite de ratio de respuesta, y se deja abierto a un número. Elegirlo fijo y en 1000 como se hizo en el kernel en 2014, es parte del problema.
Apunte: esta consulta la hace desde su IP real, no falseada, para recibir de verdad (o no) la respuesta.
Atención: obviamente el atacante lo combina con búsquedas "inteligentes" binarias para optimizar, dividiendo los rangos de puertos "potencialmente abiertos" en cada tanda para ir más rápido y dar así con el dato concreto.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Sergio de los Santos

Sergio de los Santos Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @ssantosv

11 Nov
112 vulnerabilidades ha corregido Microsoft este martes. Pero la noticia es que ha remodelado por completo su página web en las que anuncia las vulnerabilidades y, ojo, que se ha adaptado a los estándares ofreciendo el valor CVSS de cada CVE. Pero... algo ha hecho mal ¬ Image
Ha eliminado una explicación que siempre daba en cada fallo. Un pequeño párrafo en el que explicaba con un lenguaje natural cómo afectaba la vulnerabilidad, a qué componente, su gravedad, impacto y sus consecuencias. Algo que todos podían entender.
Cierto que a veces minimizaban el impacto, subestimaban los problemas, pero la explicación era correcta. Se echa de menos ahora. Ayudaba a contextualizar. Tanto como antes se echaba de menos el CVSS. Pero parece que les han obligado a elegir. En fin. Esperamos que vuelva.
Read 4 tweets
14 Jul
Cosas chulas que tiene Conti, el ransomware más rápido del Oeste. 32 hilos de CPU en paralelo, pero… ¿para qué? Interesante la diferencia entre el ransomware "doméstico" y el "industrial". Hilo ¬
Ha sido Carbon Black quien ha analizado una nueva versión de Conti, descubriendo nuevos niveles de sofisticación. Conti utiliza 32 hilos simultáneos de CPU. Esto permite que cifre muy rápido todo el disco duro que se le ponga por delante, o en remoto a "vecinos de red".
Cuanto más rápido es el ransomware, antes puede pasar desapercibido ante cualquier sistema de alerta, desde los reactivos hasta los preventivos. Siempre será demasiado tarde. También le sirve para cifrar ficheros muy grandes de BBDD de servidores, que es donde se "agazapa".
Read 8 tweets
4 Apr
En estos días, Zoom se está sintiendo un poco Windows. Analizado por todos los frentes, diana de todos los ataques. En tres meses ha pasado de 10 millones de reuniones diarias a más de 200. Si te has perdido un poco en todos sus fallos y ataques aparecidos, hilo con resumen ¬.
Por supuesto, aprovechar el tirón mediático para robar SEO. Check Point ha detectado en los últimos tiempos hasta 1700 dominios con la palabra “Zoom”. Al menos 70 maliciosos. Y también malware (ejecutables) que han renombrado también con esa palabra.
Y ante la popularidad, oportunistas. Practicar ZoomBombing o Zoom Raid está de moda gracias a la herramienta zWarDial, que permite simplemente buscar reuniones sin contraseña (o débiles, que también sirve) y colarse en ellas. Ahora pasamos a las vulnerabilidades.
Read 11 tweets
30 Jun 19
Lo que está pasando con el ataque a OpenPGP es verdaderamente grave, un desastre en palabras de los afectados que mantienen el protocolo. Robert J. Hansen, que ha comunicado el incidente, ha calificado literalmente de “hijo de puta” al atacante. Más información abajo:
En la red de pares de certificados públicos, donde cualquiera puede encontrar la clave pública PGP de una persona, no se borra jamás nada, nunca. Esto se decidió así por diseño para resistir a los potenciales ataques de gobiernos que quisieran censurar.
Cualquiera puede firmar un cert público, dando fe de que pertenece a la persona que dice ser. Y lo puede firmar un número indeterminado de veces, alegando con su propia firma que el cert pertenece a quien dice. Esto añade una firma de ciertos bytes al cert para siempre
Read 12 tweets
21 Jun 19
El informe que hace el Office of Inspector General de la NASA, de su propio JET (Jet Propulsion Laboratory) es demoledor. Tras denunciar su seguridad en marzo, se publica el informe que habla de intrusiones durante un año y unas prácticas pésimas de seguridad. Hilo👇
El JPL ha sufrido 6 incidentes de seguridad en los últimos 10 años. Quizás el más grave se mantuvo de abril del 18 hasta hace poco. Se llegó a la red por una Raspberry Pi ahí conectada a una red sin monitorización, plana y compartida. Hay ataques en 2009, 2011, 2014, 2016 y 2017.
Y eso que según ellos mismos, la seguridad de las unidades de red e la NASA está lejos de ser una tontería. Desde la seguridad nacional hasta infraestructuras críticas, pasando por robo de conocimiento crítico y tecnología punta.
Read 12 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!