DNS Recursivo, y ataques DDoS a que se refiere?

Antes de verse intimidado por la cantidad exagerada de texto de este post, si usted administra un servidor DNS, debería de leer lo siguiente:

Primero aclararemos que DNS es el acrónimo en inglés para Sistema de Dominio de Nombres, en otras palabras es un medio que nos permite traducir una dirección web a IP y viceversa, por ejemplo linux.org.sv a la IP 68.178.241.185 y la IP 68.178.241.185 a linux.org.sv. Esto se pensó con el propósito de que la navegación en Internet fuera cómoda.

En forma general, existen dos tipos de servidores DNS, que son los servidores recursivos y los servidores autoritativos, y es posible que ambos se ejecuten en la misma máquina.

El autoritativo es un servidor que conoce información acerca de uno o más dominios (lo que normalmente se denominan zonas), por lo general es uno o dos dominios, y no sabe información sobre otros dominios.

El recursivo es un servidor capaz de encontrar la respuesta a cualquier consulta DNS, y puede encontrar información acerca de casi todos los dominios, por ejemplo google.com, linux.org, gentoo.org . Generalmente estos servidores están abiertos a cualquier IP , en otras palabras, pueden ser consultados por cualquier maquina en el mundo.

El problema es que muchas entidades hacen que el mismo servidor actúe tanto como autoritativo como recursivo. Una práctica sana es tenerlos separados, lo cual previene el problema denominado “envenenamiento de cache”.
Si es imposible tenerlos separados, es recomendable que permitan recursión a solo un rango de IPs “confiables”.

Para clasificar la inseguridad de tener un servidor DNS recursivo abierto a internet es comparable a tener un “Open Proxy” en un servidor proxy o un “Open Relay” en un servidor de correos. Simplemente era algo que hasta cierta fecha no fue aprovechado por “mentes siniestras” pero que ahora es aprovechado y utilizado para fines oscuros.

Posibles riesgos de tener un servidor recursivo en Internet
Ser una víctima de ataques de envenenamiento de caché, la cual hace que el servidor afectado almacene información falsa. Dicha información puede ser utilizada para comprometer la seguridad de los clientes que hacen consultas al servidor afectado, por ejemplo redireccionar google.com a un sitio con malware, o redireccionar sitios de bancos con la intención de obtener información confidencial del usuario.

El servidor podría ser ocupado para un ataque DoS distribuido el cual puede tener las siguientes consecuencias:

  • La gran cantidad de consultas DNS recibidas por el servidor y la gran cantidad de respuestas enviadas a la víctima pueden consumir una considerable cantidad de ancho de banda
  • Problemas legales ya que si, por ejemplo, un equipo de un ISP ataca a un cliente, seguramente el cliente lo demandará

Un ejemplo de las consecuencias de la recursividad (Ataque DDoS)

Aquí

En que consiste el ataque? me da curiosidad saber…
Trataré de explicarlo de la manera mas sencilla: con ejemplos.
Para dar un ejemplo, a veces un dominio x recibe respuestas ICMP echo, porque “alguien” modifico los paquetes para que parecieran como si el dominio x hizo la petición ICMP echo, en otras palabras recibimos respuesta de un ping que NUNCA salio de nuestro dominio.
Ahora de otra manera, como los paquetes UDP son fragmentados por los servidores, y UDP puede ser fácilmente modificado su IP de origen, el servidor DNS recibe un paquete grande, que se hace mas grande (técnicamente, mas fragmentos), enviando la respuesta al blanco atacado. Imaginemos muchos DNS recursivos enviando respuestas al “blanco atacado”. Si, eso es una Denegación de servicio distribuida (DDoS).

Si sienten la explicación anterior muy sencilla o vaga, pueden leer http://www.isotf.org/news/DNS-Amplification-Attacks.pdf 🙂

Soluciones al problema

Entonces algunos podrían decirme, y no es esa la intención de un DNS, resolver todos los dominios a todo el mundo?
No, esa es una función de un servidor recursivo, como hemos hablado anteriormente puede ser autoritativo y contener información solamente para un dominio. Lo mas conveniente es que permita la recursividad solamente a un rango de IPs

Yo estoy protegido, porque ocupo Bind en Linux/BSD 🙂
No, la recursión no se refiere a un sistema operativo o software en específico 🙁

Espero lo anterior les haya despertado la curiosidad sobre el tema, saludos

Curioso script de perl

Recientemente vagando en el Internet me hallé el siguiente script de perl con forma de camello:

                                                       #
                                                   sub j(\$){($
                     P,$V)=                      @_;while($$P=~s:^
                 ([()])::x){                    $V+=('('eq$1)?-32:31
           }$V+=ord(  substr(                 $$P,0,1,""))-74} sub a{
          my($I,$K,$  J,$L)=@_               ;$I=int($I*$M/$Z);$K=int(
         $K*$M/$Z);$J=int($J*$M             /$Z);$L=int($L*$M/$Z); $G=$
         J-$I;$F=$L-$K;$E=(abs($          G)>=abs($F))?$G:$F;($E<0) and($
          I,$K)=($J,$L);$E||=.01       ;for($i=0;$i<=abs$E;$i++ ){ $D->{$K
                  +int($i*$F/$E)      }->{$I+int($i*$G/$E)}=1}}sub p{$D={};$
                 Z=$z||.01;map{    $H=$_;$I=$N=j$H;$K=$O=j$H;while($H){$q=ord
                substr($H,0,1,"" );if(42==$q){$J=j$H;$L=j$H}else{$q-=43;$L =$q
              %9;$J=($q-$L)/9;$L=$q-9*$J-4;$J-=4}$J+=$I;$L+=$K;a($I,$K,$J,$ L);
              ($I,$K)=($J,$L)}a($I,$K,$N,$O)}@_;my$T;map{$y=$_;map{ $T.=$D->{$y}
              ->{$_}?$\:' '}(-59..59);$T.="\n"}(-23..23);print"\e[H$T"}$w= eval{
              require Win32::Console::ANSI};$b=$w?'1;7;':"";($j,$u,$s,$t,$a,$n,$o
              ,$h,$c,$k,$p,$e,$r,$l,$C)=split/}/,'Tw*JSK8IAg*PJ[*J@wR}*JR]*QJ[*J'.
               'BA*JQK8I*JC}KUz]BAIJT]*QJ[R?-R[e]\RI'.'}Tn*JQ]wRAI*JDnR8QAU}wT8KT'.
               ']n*JEI*EJR*QJ]*JR*DJ@IQ[}*JSe*JD[n]*JPe*'.'JBI/KI}T8@?PcdnfgVCBRcP'.
                '?ABKV]]}*JWe*JD[n]*JPe*JC?8B*JE};Vq*OJQ/IP['.'wQ}*JWeOe{n*EERk8;'.
                  'J*JC}/U*OJd[OI@*BJ*JXn*J>w]U}CWq*OJc8KJ?O[e]U/T*QJP?}*JSe*JCnTe'.
                   'QIAKJR}*JV]wRAI*J?}T]*RJcJI[\]3;U]Uq*PM[wV]W]WCT*DM*SJ'.  'ZP[Z'.
                      'PZa[\]UKVgogK9K*QJ[\]n[RI@*EH@IddR[Q[]T]T]T3o[dk*JE'.  '[Z\U'.
                        '{T]*JPKTKK]*OJ[QIO[PIQIO[[gUKU\k*JE+J+J5R5AI*EJ00'.  'BCB*'.
                             'DMKKJIR[Q+*EJ0*EK';sub h{$\ = qw(% & @ x)[int    rand
                              4];map{printf  "\e[$b;%dm",int(rand 6)+101-60*   ($w
                               ||0);system(  "cls")if$w ;($A,$S)=    ($_[1],   $
                                _[0]);($M,   @,)= split  '}';for(     $z=256
                                ;$z>0; $z   -=$S){$S*=   $A;p @,}      sleep$_
                                [2];while   ($_[3]&&($    z+=$ S)       <=256){
                                p@,}}("".   "32}7D$j"     ."}AG".       "$u}OG"
                                ."$s}WG"    ."$t",""      ."24}("        ."IJ$a"
                                ."}1G$n"    ."}CO$o"     ."}GG$t"        ."}QC"
                                 ."$h}"      ."^G$e"    ."})IG"          ."$r",
                                 "32}?"       ."H$p}FG$e}QG$r".          "}ZC"
                                 ."$l",          "28}(LC" .""            ."".
                                 "$h}:"           ."J$a}EG".             "$c"
                                 ."}M"             ."C$k}ZG".            "$e"
                                 ."}"             ."dG$r","18"          ."}("
                                ."D;"            ."$C"  )}{h(16         ,1,1,0
                               );h(8,          .98,0,0   );h(16         ,1,1,1)
                               ;h(8.0         ,0.98,0,     1);         redo}###
                             #written                                 060204 by
                           #liverpole                                  @@@@@@@
                        #@@@@@@@@@@@

Si, ES UN SCRIPT DE Perl! y también pueden descargarlo aquí , lo más interesante es ver la salida del comando. Ahora me ha quedado muy claro que perl es facilísimo de interpretar 😐

Alianza Secreta entre OpenRanger y MarkVision

Recientemente me “regalaron” una memoria Markvision de esas que son feas pero que no caen mal 😛 y traía un volante con el siguiente texto:

Publicidad voip en Markvision

y pensé que seguramente era alguna empresa extranjera haciéndose publicidad, al visualizar los archivos contenidos en la USB me encontré con lo siguiente:


Léase el archivo “vivophone.exe” , ese es seguramente otro producto calidad OpenRanger quienes han hecho una alianza internacional!

Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds. Valid XHTML and CSS.