Mostrando entradas con la etiqueta dns. Mostrar todas las entradas
Mostrando entradas con la etiqueta dns. Mostrar todas las entradas

07 mayo 2014

Volvemos a la carga con un post referente a los Syrian Electronic Army.


Durante la pasada RSA Conference, celebrada entre los días 24 y 28 de Febrero, Ira Winkler, el presidente de la compañía de seguridad Secure Mentem, presentó una charla llamada "Syrian Electronic Army: Their Methods and Your Responses" comentando durante aproximadamente 30 minutos la historia, ataques, metodologías  y demás acerca de los Syrian Electronic Army. Dicha charla está disponible ya online para su visualización, y os la referenciamos a continuación:


Como principal conclusión, destacar que Ira (al igual que opina mucha gente) trasladó a los asistentes que los SEA no se caracterizan precisamente por su ataques altamente cualificados y de excelencia técnica, pero si que son tremendamente efectivos. En multitud de ocasiones incluso los llega a menospreciar, llamándoles "cucarachas" de internet, entre otras lindezas.

Pues bien, tras la publicación de este video, la respuesta de los SEA no se hizo esperar, y se pusieron manos a la obra para conseguir que durante un período de tiempo, la página principal de la RSA Conference, disponible en el dominio www.rsaconference.com, apareciese de la siguiente forma e incluyendo un mensaje contra Ira Winkler y su charla sobre ellos:


A continuación la traducción:

Hackeado por los Syrian Electronic Army
Querido Ira winkler,
¿Te crees muy gracioso? ¿Crees que estás a salvo?
Pues no lo estás
Si hubiese alguna CUCARACHA en Internet, definitivamente serías tú.
Tus amigos de SEA

Tras este hecho, se publicó una noticia en el blog de Secure Mentem, en la que se explicó cómo los SEA consiguieron mostrar este mensaje al acceder a la página de uno de los congresos más importantes de seguridad a nivel mundial, y que a continuación vamos a resumir:
  1. La página de RSA Conference contiene incrustado un código Javascript para el seguimiento de visitas a través de un software llamado Lucky Orange.
  2. El software, llamada a un código que estaba alojado en la URL w1.livestatserver.com/w.js
  3. Aún teniendo Luck Orange el dominio bloqueado, los SEA consiguieron averiguar cual era el proveedor DNS asociado a los dominios que utilizaban para sus servicios. Posteriormente, enviaron phishings sobre trabajadores del proveedor DNS tras recopilar información a través de Linkedin y otros recursos.
  4. Los phishings se enviaban en nombre del CEO de la compañía sobre los trabajadores, referenciando una supuesta noticia en la BBC que podría ser de interés. El enlace se dirigía a un panel de acceso falso para los usuarios, sobre los que los SEA se harían con cuentas de usuario y contraseñas.
  5. Uno de los ejecutivos de cuentas cayó en la trampa. Se utilizaron las credenciales para acceder al panel de acceso de clientes, y se reinicializó la contraseña de Lucky Orange, para posteriormente, acceder en su nombre.
  6. Se consiguió redirigir el subdominio w1 de livestatserver.com a una página controlada por los SEA que contenía la imagen en la que se muestra el mensaje que visteis anteriormente.
Con esto, cualquier persona que accediese a la página de rsaconference.com con Javascript habilitado (y cualquier otra página que utilizase este servicio de estadísticas) se redirigiría al mensaje para Ira Winkler.

Fácil, sencillo, y para toda la familia. ¿No es sofisticado? Bueno, pero se consiguió el objetivo de dejar un mensaje concreto en una página como la de la RSA Conference.

No hay que preocuparse sólo de nuestra propia seguridad, si no de la de nuestros proveedores de servicios o contenidos.


Leer más...

04 abril 2013


La semana pasada, Jesús Pérez nos dio precisos detalles de cómo se llevó a cabo el ataque a SpamHaus, grosso modo podemos decir que el quid de la cuestión era una mala configuración de los servidores DNS, que permitían ser empleados para ataques de amplificación.

Recientemente el US-CERT ha liberado una nota en la que describe este ataque y propone soluciones, así como unas cuentas herramientas online que permiten identificar si un servidor DNS es o no es susceptible de ser empleado para esos fines.

Open DNS Resolver project

Provee de una interface web donde podemos hacer búsquedas de servidores DNS vulnerables por rangos de IPs:


La herramienta es bastante pobre a nivel visual


The Measurement Factory

Al igual que Open DNS Resolver, dispone de una sencilla interface web para realizar comprobaciones:



Dnsinspect

Esta herramienta está notablemente más elaborada y realiza no solo la comprobación de la vulnerabilidad DNS, también emite un completo informe con muchos más detalles y comprobaciones:


Leer más...

11 febrero 2013

El curioso caso de Google y Jazztel

Como muchos otros hallazgos, el que voy a relatar hoy sucedió por casualidad. Estaba configurando una nueva máquina y como probablemente muchos de vosotros, la prueba definitiva de conectividad la hice contra www.google.com (sería genial que algún día Google publicase las estadísticas de tráfico ICMP contra www.google.com ...) 

Apunté el comando ping contra www.google.com y obtuve una respuesta tal que así:

$ ping www.google.com
PING www.google.com (212.106.221.21) 56(84) bytes of data.
64 bytes from 21.221.106.212.dynamic.jazztel.es (212.106.221.21): icmp_req=1 ttl=128 time=19.9 ms
64 bytes from 21.221.106.212.dynamic.jazztel.es (212.106.221.21): icmp_req=2 ttl=128 time=19.0 ms
64 bytes from 21.221.106.212.dynamic.jazztel.es (212.106.221.21): icmp_req=3 ttl=128 time=19.0 ms
64 bytes from 21.221.106.212.dynamic.jazztel.es (212.106.221.21): icmp_req=4 ttl=128 time=18.9 ms

¿Disculpa? ¿ dynamic.jazztel.es ? ¿Cómo es esto posible?

Movido por la curiosidad hice la resolución DNS completa:

$ nslookup www.google.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   www.google.com
Address: 212.106.221.26
Name:   www.google.com
Address: 212.106.221.25
Name:   www.google.com
Address: 212.106.221.24
Name:   www.google.com
Address: 212.106.221.23
Name:   www.google.com
Address: 212.106.221.27
Name:   www.google.com
Address: 212.106.221.21
Name:   www.google.com
Address: 212.106.221.22
Name:   www.google.com
Address: 212.106.221.20

Nótese que siempre uso el servidor DNS de Google (8.8.8.8) por lo que en teoría la respuesta ha de ser mucho más fiable.

Comprobando esas IPs 'de google' vía MaxMind se puede ver que todas las direcciones IPs son de Jazztel.

Decidí cambiar de servidor DNS, en este caso usé los de OpenDNS, y si bien en el caso de www.google.com la respuesta parecía ser satisfactoria, estuve probando varios servicios de google y obtuve en varias ocasiones la siguiente respuesta de OpenDNS

$ nslookup www.youtube.com 208.67.222.222
Server:         208.67.222.222
Address:        208.67.222.222#53

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com.
Name:   youtube-ui.l.google.com
Address: 212.106.221.26
Name:   youtube-ui.l.google.com
Address: 212.106.221.23
Name:   youtube-ui.l.google.com
Address: 212.106.221.20
Name:   youtube-ui.l.google.com
Address: 212.106.221.27
Name:   youtube-ui.l.google.com
Address: 212.106.221.24
Name:   youtube-ui.l.google.com
Address: 212.106.221.22
Name:   youtube-ui.l.google.com
Address: 212.106.221.25
Name:   youtube-ui.l.google.com
Address: 212.106.221.21

¡¡ Otra vez las IPs de Jazztel !!

En este punto, lo primero que quise averiguar es si era 'mi' problema o el problema de mas gente. Googleando las direcciones IPs extrañas, encontré este post de bandaancha en el que, si bien el tema que se tocaba no era el mismo, un usuario pasteaba un lookup de www.google.com y obtenía las mismas direcciones IP extrañas que yo.

Así mismo encontré tweets de @Germinen donde mencionaba el mismo tema. Me puse en contacto con el vía twitter y estaba en las mismas que yo.

Comenté el asunto en twitter y encontré a varias personas que obtenían esas mismas respuestas cuando resolvían google.com (la mayoría clientes de Jazztel)

En este punto uno piensa en las posibles 'contramedidas' que, en caso de que esto fuese un ataque, le hubiesen podido salvar: Búsquedas de Google bajo SSL

Es más que conveniente tenerlas activadas. Todas las IPs 'extrañas' tienen un servicio https en el puerto 443, me bajé el certificado que devolvían en la comunicación empleando:

$ openssl s_client -connect 212.106.221.24:443

y ¡ Sorpresa ! El certificado que me devolvía era perfectamente válido y de Google. También pueden hacer verificaciones de certificados empleando el servicio SSL Checker de sslshopper.

Si hacemos la verificación para esa IP:


Podemos ver que es perfectamente 'legal'

Entonces, o bien esa máquina tiene la clave privada del certificado (poco probable) o está redirigiendo la petición hacia alguna máquina de Google.

¿Y qué esta pasando? Bien, aquí va la solución más plausible, aunque deja varias dudas en el aire. De entrada, casi podemos descartar que alguien esté haciendo 'envenenamiento' de DNS o algún tipo de hijack, uno puede pensar que es cosa de Jazztel, pero -y aquí va la parte que mas dudas genera- resulta que yo NO soy cliente de Jazztel, y mi ISP no tiene ninguna relación con el.

La pista mas realista la puso sobre la mesa @Guillermo quien me pasó un enlace hacia la 'Google Global Cache' del que cito:

'User resolves content_host.google.com. (example only)

If the ISP DNS doesn’t already know the IP address, it queries Google DNS for the IP address of content_host.google.com.

Google DNS server knows that this ISP has a Google Global Cache node that should be able to service the request, so it replies with that IP address
'

Así que:

1- Asumimos que Jazztel tiene nodos de la Google Global Cache 

2- Damos por hecho que, pese a la fisonomía de las IPs 
(dynamic.jazztel.es), no son ADSLs de usuarios

3- Por algún motivo ¿mala configuración? Google está redireccionándome a mi, que no soy de Jazztel hacia los nodos de dicha compañía

Aunque claro, salvo que alguien confirme por parte de Jazztel eso, sigue siendo todo un tanto oscuro

PD: ¡¡ Muchas gracias a toda la gente que colaboró conmigo en Twitter dando pistas y haciendo pruebas !!
Leer más...

08 julio 2011

Vulnerabilidades en Bind 9 y los australianos prematuros

Este pasado 5 de Julio, mientras todos los americanos estaban de resaca por el día de la independencia, se publicaba prematuramente por parte del CERT Australiano (AusCERT) un nuevo advisory (nota de seguridad) sobre el DNS de BIND. Se trataba de un par de vulnerabilidades que afectaban remotamente al servicio, y que mediante paquetes malformados serían capaces de provocar la denegación del servicio named, afectando tanto a servidores autoritativos como a recursivos. De criticidad severa y explotable remotamente. Las vulnerabilidades corresponderían con los CVE CVE-2011-2465 y CVE-2011-2464.

La nota de prensa por parte del AUSCERT la podréis consultar en este enlace (pastebin). Si bien su fecha de publicación oficial finalmente ha sido el 5 de Julio, el AUSCERT especificaba que esta información se publicaría el 6 de Julio en la sección de seguridad del ISC, www.isc.org/security (buscad la cadena "Document URL: http://www.isc.org/security (to be published July 6)"). ¿Desfases horarios? ¿Mala coordinación? ¿Despiste?

Seguidamente, el AUSCERT se disculpaba enviando la siguiente nota a todos sus usuarios:
Pedimos disculpas si el anuncio prematuro ha causado que hayan iniciado algún tipo de acción para la que no estén preparados y que debería ser interrumpida. Por favor, no distribuyan el boletín del AusCERT. Por favor, elimínenlo de sus sistemas inmediatamente y permanentemente.
Tarde, lo que publicas en internet, ya nunca puede desaparecer o ser eliminado.

Volviendo al tema más importante, estas vulnerabilidades se resuelven actualizando a las siguientes versiones de Bind 9:

  • 9.6-ESV-R4-P3
  • 9.7.3-P3
  • 9.8.0-P4
Según el ISC acerca de que servidores resultarían vulnerables: "Servidores que tuviesen la recursión habilitada y estuviesen configurados con una zona RPZ conteniendo ciertos tipos de registros. Sobretodo, registros DNAME y algunos tipos de registros CNAME"

Leer más...

11 noviembre 2010

KodiakDNS, cuando los pentesters escribían sus propias herramientas

El DNS es una base de datos jerárquica y distribuida que permite traducir nombres de dominio en direcciones IP y viceversa. Las especificaciones del sistema de nombres de dominio están basadas en las RFC rfc1034 y rfc1035 que datan de 1987, y en ellas se describen los detalles del protocolo.

El protocolo DNS se creó hace más de 20 años, y desde entonces se han producido más de 40 implementaciones de DNS independientes, algunas de estas implementaciones cuentan con más de 20 versiones.

Hace poco Chema Alonso nos habló sobre como consultar el registro de la versión de BIND en los servidores DNS a mano. Pudiendo ser útil para conocer si un determinado servidor se encuentra desactualizado o para descubrir una política de versiones descoordinada.

Durante un pentest es importante obtener las versiones del servidor de DNS, para extraer información que nos será útil para saber si es vulnerable al envenenamiento de DNS o a otro tipo de vulnerabilidades. En ocasiones, nmap no nos proporciona buenos resultados (opción -sV) sobre servidores de nombres de dominio. Podríamos pensar en capturar el banner que nos devuelve la petición al servidor, pero esta solución no es fiable, ya que podríamos modificar la información que deseamos mostrar.

La metodología que se debe utilizar para identificar las implementaciones de servidores de nombres se basa en cómo se comporta del protocolo en la frontera, al proporcionarnos un gran cantidad de información útil (mensajes de bits, tipos de respuesta, opcodes, clases, tipos de consulta, tipos de etiquetas)

Queremos desarrollar nuestra propia herramienta para DNS fingerprinting, para ello podemos utilizar el proyecto fpdns que determina de forma remota las versiones del servidor DNS, mediante el envío de una serie de consultas DNS que se comparan con una tabla con las respuestas y las versiones de los servidores. Este proyecto es bastante fiable y permite detectar la siguientes implementaciones. El descubrimiento de las versiones formará parte de nuestra herramienta de descubriendo de servidores DNS.

Y ya que estamos animados, ¿por qué no programar nuestra propia herramienta para hacer gathering de DNS?

Para animaros a desarrollar vuestra propia herramienta, he programado a modo ejemplo una tool de gathering de DNS llamada kodiakDNS. La herramienta está hecha en Perl, y usa la librería Net::DNS para resolver todas las consultas y fpdns.

Los pasos que debemos seguir son los siguientes:

1- Obtener los servidores de nombres y los tipos de registros DNS (NS, A, MX)

print "\n[Resolving DNS NS]\n\n";
foreach my $rr (grep { $_->type eq "NS" } $query->answer) {       
    print $rr->string, "\n";
    if ((grep { $_ eq $rr->nsdname } @nsdnamelist)==0){
         push(@nsdnamelist, $rr->nsdname);
    }
}

print "\n[Resolving DNS MX]\n\n";
my @mx = mx($res, $domain);
foreach my $rrmx (@mx) {   
   print $rrmx->string, "\n";
}
   
print "\n[Resolving DNS A]\n\n";
foreach my $rrns (@nsdnamelist) {
    resolveDomain($rrns);
} 
   
sub resolveDomain {
    my $resolver = Net::DNS::Resolver->new;
    my $domain = $_[0];
    my $query = $resolver->search($domain);

    if ($query) {   
        foreach my $rr ($query->answer ? $query->answer : $query->authority) {
            $rr->print;
            if ($rr->type eq "A") {
                if ((grep { $_ eq $rr->address } @iplist)==0){
                    push(@iplist, $rr->address);
                }
            }
        }
    } elsif ($resolver->errorstring eq "NXDOMAIN" || $resolver->errorstring eq "NOERROR") {
         warn "$domain NXDOMAIN doesnt exist" . $resolver->errorstring . "\n";
    } else {
         warn "Cannot resolve host $domain: " . $resolver->errorstring . "\n";
    }
}
2- Comprobar si el dominio soporta transferencia de zona.
foreach my $rrns (@nsdnamelist) {
       
    $res->nameservers($rrns);     

    my @zone = $res->axfr($domain);
    if (@zone) {
        $noaxfr = 1;
        print "\n[Resolving AXFR for ".$rrns."]\n\n";
        foreach my $rra (@zone) {
            $rra->print;
            if ($rra->type eq "A") {
                if ((grep { $_ eq $rra->address } @iplist)==0){
                    push(@iplist, $rra->address);
                }
            }
        }
    }  
}
3- En caso de no soportar transferencia de zona obtener los subdominios por fuerza bruta. Debemos obtener un diccionario con palabras lo más extenso posible. Por la red disponemos de varios a modo de ejemplo e ir ampliándolo. Podemos hacer uso de herramientas como dnsmap, que nos permite descubrir subdominios a través de fuerza bruta.
print "\n[Resolving DNS by bruteforcing]\n\n";
my $wordlist = "wordlist.txt";

if ($wordlist) {
    open DATA, $wordlist;
    my @list = ();
    @list = <DATA>;
    close DATA;
    chomp @list;

    my @mylist = map "$_.$domain", @list;

    foreach my $elto (@mylist){
        resolveDomain($elto);
    }
}
4- Una vez obtenidas las IPs de los hosts, devolvemos los PTRs de las IPs por el rango entero. Las librerias disponen de funcionen que nos permiten resolver los PTRs
print "\n[Resolving Reverse DNS [PTR]]\n";
foreach my $ip (@iplist){
    my $position = rindex $ip, '.';
    my $ip_range = substr ($ip,0,$position+1);
    if ((grep { $_ eq $ip_range } @iprange)==0){
        push(@iprange, $ip_range);
    }
}

foreach my $iprange (@iprange){
    print "\n".$iprange.'0-255'."\n\n";
    for ($i = 0; $i <= 255; $i++){
        resolveReverse($iprange.$i);
    }
}
   
sub resolveReverse {

    my $ip = new Net::IP($_[0],4);        
    my $mx_res = Net::DNS::Resolver->new();
    my $mxanswer = $mx_res->query($ip->reverse_ip(),'PTR');

    if($mxanswer) {
        foreach my $mrr (grep {$_->type eq "PTR" } $mxanswer->answer) {
            if ($ip->reverse_ip()) {       
                print $ip->reverse_ip()," PTR ",$mrr->ptrdname,"\n";
            } else {
                print "No Reverse IP \n";
            }     
        }
    } else {
        print "MX records not found\n";
    }
}
5- Obtener las versiones de los servidores de DNS. Para ello podemos utilizar el proyecto fpdns, del que hemos hablado antes. Podíamos invocarlo desde nuestra herramienta de la siguiente forma:
fpdns -D <nameserver>
print "\n[Resolving DNS Version]\n\n";
my $dnsversion = `fpdns -D $domain`;
print $dnsversion;
Podemos ver los resultados obtenidos para los dominios google.com y slackware.com (este último soporta transferencia de zona)

¿Has visto lo sencillo que es programar tu propia herramienta para gathering de DNS? ¿Te animas a programar la tuya?

Artículo cortesía de: Laura García.
Leer más...

23 junio 2010

Seguridad con DNS de acceso público

El uso de DNS Blackholing es una opción clásica para evitar algunos ataques de dominios conocidos. El CERT de RedIris dispone de una guía muy sencilla donde explica su funcionamiento, básicamente consiste en configurar el servidor DNS de una organización o ISP para que responda con direcciones IP propias a una lista de dominios con malware, pornografía o lo que se desee filtrar.

Hay muchas fuentes que enumeran estos dominios, por ejemplo la ISO que recientementedistribuye SANS con una configuración establecida de DNS Sinkhole, utiliza las siguientes:
Los usuarios domésticos o pequeñas empresas también se pueden utilizar servidores DNS públicos que mantienen estos mismos filtros. Symantec ha presentado hace poco los de Norton, pero no son los únicos, ni tampoco los primeros.

NOMBRE DNS 1 DNS 2
NortonDNS 198.153.192.1 198.153.194.1
Scrubit 67.138.54.100 207.225.209.66
Comodo DNS 156.154.70.22 156.154.71.22
OpenDNS 208.67.222.222 208.67.220.220

Google también tiene los suyos propios, aunque estos no disponen de filtrado en base a dominios, por lo que no entramos a valorarlos. El de Norton es el más nuevo y disponen de una herramienta para madres que configura directamente el DNS. Scrubit es otra alternativa, aunque tiene picos de rendimiento y no funciona siempre tan rápido como se desea. Comodo DNS parece la versión segura de DNS Advantage, o por lo menos están en el mismo direccionamiento, son muy rápidos, aunque tienen menos "firmas" que los de Norton  y por último el archiconocido OpenDNS que se puede utilizar gratuitamente para uso personal o una versión comercial algo más amplia, entre las que permite seleccionar el tipo de contenidos que se quieren eliminar.

Para saber cuál es la configuración óptima en velocidad de respuesta la herramienta namebench ejecuta una serie de pruebas contra cada uno de ellos mostrando los resultados en un archivo HTML con la configuración ideal para la conexión desde la que se ha lanzado.

Utilizando como entrada de dominios las web top (2000) de Alexa, estas gráficas resumen las pruebas:



Leer más...

13 enero 2010

Tunelizando DNS, otra opción con iodine 0.5.x


Otra herramienta para llevar a cabo tuneles DNS, además de OzymanDNS, DNS2TCP (comentada en SbD el año pasado), NSTX o DNScat es iodine, que actualmente se encuentra en su versión 0.5.2 (0.5.1 para windows).

Este tipo de aplicaciones son útiles en las que deseamos ocultar el tráfico o se desea saltar las restricciones de un firewall, como en el caso de los hotspots wireless de hoteles, aeropuertos y otros malos lugares que se enriquecen con precios de a €uro el byte.

Para el primero de los casos hay túneles más eficaces que nos proveerán de mejor rendimiento y mayores prestaciones, pero para el segundo, esta es posiblemente la única opción.

Iodine funciona de forma portable y no requiere ningún módulo adicional. Además de es compatible con Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Windows e incluso la plataforma móvil Android. Otra ventaja es que tiene un sistema de autenticación para que nadie pueda conectarse si no conoce la contraseña.

La aplicación se compone de un cliente y un servidor siendo ambos necesarios para poder crear el tunel. El cliente es la utilidad que se instala donde se desea saltar u ocultar la información y la parte servidor se ha de alojar en un sistema que se pueda configurar como servidor DNS.

Lo más "complicado" es configurar la parte servidor, ya que requiere que se disponga de un equipo conectado constantemente, un dominio y una dirección pública para que responda las peticiones DNS del cliente.

Por ejemplo, la siguiente configuración haría a que cualquier servidor DNS tuviera que solicitar a la dirección IP 74.82.14.199, donde escucha el servidor iodine, todas aquellas peticiones que se hagan sobre  los subdominios de tdns.securitybydefault.com:
tunnel          IN A 74.82.14.199
tdns            IN NS tunnel.securitybydefaul.com.

Una vez configurado el servidor, se arranca  con algo tan sencillo como:
iodined -f 10.0.0.1 tunnel.securitybydefault.com
y el cliente:
iodine tunnel.securitybydefault.com
Con lo que se crearía una red con dos direcciones IP (10.0.0.1 y 10.0.0.2) en las que el tráfico será enviado mediante peticiones DNS.

Leer más...

30 julio 2009

Grave vulnerabilidad en Bind 9 con exploits publicados

¿Tienes un servidor DNS Bind 9 instalado en alguna de tus máquinas que administras, que no corresponde ni con la versión 9.4.3-P3, 9.5.1-P3 ni la 9.6.1-P1? Pues deja todo lo que estés haciendo.

El 28 de Julio podíamos leer en la página del ISC un advisory sobre una vulnerabilidad que afectaba al servidor Bind, versión 9, con la que se puede provocar una denegación de servicio al sistema dónde se encuentre instalado (que no son pocos en todo el mundo).

La vulnerabilidad afecta a la función dns_db_findrdataset() que se encuentra en el fichero db.c, y que según explica el advisory, falla en caso de que el mensaje de actualización dinámica contenga un registro de tipo "ANY" y si por lo menos un registro RRSet para ese FQDN (Fully Qualified Domain Name) existe ya en el servidor."

Lo más grave de todo es que ya existen exploits públicos que se aprovechan de esta vulnerabilidad. En SecurityFocus podemos encontrarnos este txt que explica como explotar el fallo, y en la lista de seguridad Full-Disclosure, KingCope (el que descubrió no hace mucho el fallo de bypass en WebDav del que os hablamos por aquí) ha publicado una versión del exploit en C.

Así que no hay excusa, hay que actualizar YA de YA.
Leer más...

21 enero 2009

Vuelve el SMURF (antiguo y mítico DoS)

Hace no demasiado, se popularizó un tipo de ataque devastador llamado Smurf que tuvo en jaque a ISPs enteros. En una época en la que las IRC-Wars estaban en pleno auge, este tipo de ataque era la forma mas efectiva de poner fuera de juego cualquier sistema.

El ataque se fundamentaba en las facilidades que da tanto ICMP como UDP para 'spoofear' tráfico. Lo único que había que hacer era bombardear direcciones de broadcast con la dirección IP que se pretendía dejar offline (provocando un efecto bola-de-nieve).

Si tu lista de direcciones broadcast era lo suficientemente amplia, el sistema atacado no lardaba ni 30 minutos en pedir árnica.

Paulatinamente el aumento de la seguridad en ISPs y organizaciones hizo ese ataque inviable ya que se aplicaron los filtros correctos hasta hacer practicamente imposible encontrar direcciones broadcast que se presten a ese tipo de usos.

Ahora en 2009 parece que el concepto resurge con otra forma de ataque que ha sido detectada por la gente del ISC-Sans.

Mucho se habló el año pasado sobre las debilidades del protocolo DNS motivado por el uso de UDP y la facilidad para falsear tráfico inherente a ello (nosotros propusimos una solución).

En este caso se ha detectado un uso bastante intensivo de una oscura forma de hacer peticiones DNS que genera un volumen relativamente alto de tráfico. Por lo visto, lanzando una petición a un DNS preguntando por '.' el servidor DNS devuelve la lista de root nameservers.
$ host -t ns .
. name server F.ROOT-SERVERS.NET.
. name server G.ROOT-SERVERS.NET.
. name server H.ROOT-SERVERS.NET.
. name server I.ROOT-SERVERS.NET.
. name server J.ROOT-SERVERS.NET.
. name server K.ROOT-SERVERS.NET.
. name server L.ROOT-SERVERS.NET.
. name server M.ROOT-SERVERS.NET.
. name server A.ROOT-SERVERS.NET.
. name server B.ROOT-SERVERS.NET.
. name server C.ROOT-SERVERS.NET.
. name server D.ROOT-SERVERS.NET.
. name server E.ROOT-SERVERS.NET.
El ataque consiste en falsear la dirección IP en las consultas DNS para que el servidor responda la petición al host que se pretende atacar. Como el volumen de la respuesta tiene una equivalencia superior a 1=1 (por cada petición que se lance, el servidor devuelve mucho más tráfico) se consigue el efecto de amplificación necesario para realizar el ataque.

Habrá que estar atento
Leer más...

11 diciembre 2008

Servicio online de pagos comprometido


CheckFree.com, un servicio online para pago de facturas, notificó que el pasado martes 2 de Diciembre estuvo durante unas horas sin poseer el control sobre sus propios registros DNS.

Al parecer, un grupo procedente del este (siempre provienen los ataques desde el mismo lado, como no...) robó las credenciales de acceso al gestor de registros DNS de la compañía y pudo redirigir tanto el dominio principal checkfree.com como su servicio mycheckfree.com hacia unos servidores en los cuales, al acceder, se intentaba instalar malware (seguro que algo no muy agradable) en el PC del visitante.

Estamos hablando de un servicio mediante el cual un "simple" puñado de personas (más concretamente 24.7 millones, por lo que pongamos la palabra "simple" de antes en tamaño 72, verdana y negrita) pueden realizar pagos de seguros, créditos, hipotecas entre otros tipos de transacciones a comienzos de cada mes.

Según las declaraciones de una portavoz de la compañía registradora, Network Solutions, alguien a las 12.30am del día 2 de Diciembre se autenticó en el panel de configuración de los registros DNS y los cambió para apuntar a servidores localizados en Ucrania. También recalca que no se debió a una falla de seguridad en sus sistemas.

Esto abre el debate por fin de lo que supone la seguridad para los registradores DNS, los cuales siguen protegiendo sus servicios con sus combos de "usuario y contraseña". Por ello, podemos leer unas reflexiones sobre este hecho desencadenado por el caso Checkfree en la versión digital del Washington Post, en la que se anuncia que los expertos preveen que en el próximo 2009, este tipo de "ataques" se verán cada vez más y más.

Más información:
Leer más...

24 julio 2008

DNS, pasaté al TCP

Mucho se ha hablado ya del famoso bug que afecta al DNS y del que recientemente se han conocido los detalles "mas íntimos" sobre la forma y manera de sacarle partido (con su correspondiente exploit).

De una forma muy resumida y digerible el asunto estriba en dos características del protocolo DNS tal y como está desplegado actualmente :


·La comunicación se realiza con un protocolo NO orientado a conexión (UDP) y por tanto susceptible de ser "spoofeado"
· Las transacciones (peticiones-respuestas) están marcadas con un ID que, si bien se han hecho esfuerzos por dotarlo de aleatoriedad, como se ha podido comprobar, no ha sido suficiente.

El protocolo DNS, tal y como está definido en la RFC 883 debería de ser capaz de atender querys tanto en el puerto 53-UDP como en el 53-TCP. Erróneamente mucha gente asocia únicamente la comunicación del protocolo DNS en formato TCP a las transferencias de zonas entre DNSs primarios <-> secundarios y cuando una petición excede los 512 bits. Incluso no es descabellado encontrar documentos de hardening en el que se propone como medida de seguridad bloquear el acceso al puerto TCP del DNS.

Lo cierto es que un servidor DNS debería de prestar servicio por el puerto 53-TCP de forma "normal" el problema está en que consuetudinariamente la gente ha usado siempre 53-UDP alegando motivos de eficiencia, motivos que, en origen, cuando se diseñó el protocolo DNS tenían mucho peso, el problema es que esos conceptos forman parte de la época del Gopher y la www por texto, donde unos pocos bits eran un lujo. En los tiempos actuales en los que cualquiera puede incluso emplear su ADSL para colgar enormes vídeos en formato flash de varios megas, no tiene demasiado sentido seguir con esas premisas.

A nivel seguridad, ¿que supondría pasar el protocolo DNS a TCP? En pocas palabras: adiós al spoofing de conexiones (parte básica en todos los ataques al protocolo DNS), cuando hablamos de conexiones TCP estamos hablando de un protocolo orientado a conexión, donde interviene en cada conexión lo que se conoce como "TCP Sequence Number" que es un numero aleatorio por cada conexión. Hace años (principio de los 90) el protocolo TCP adoleció de fallos en este sistema que permitía predecir dichos números volviéndolo vulnerable a ataques de tipo IP-Spoof. Actualmente y tras muchos esfuerzos, unánimemente se considera un mecanismo robusto y fiable ya que prácticamente todos los sistemas operativos cuentan con mecanismos muy probados para obtener la suficiente entropia.
Podemos usar Hping para comprobar la aleatoriedad del ISN sobre cualquier host de la siguiente forma:
hping -S -p 80 www.security-projects.com -Q
HPING www.security-projects.com (eth0 208.88.52.63): S set, 40 headers + 0 data
bytes
1144894739 +1144894739
1147953489 +3058750
1136625600 +4283639406
1137798400 +1172800
1150024660 +12226260
1147708505 +4292651140
1138715293 +4285974083

Como se puede observar, la forma en la que se altera el ISN no tiene ningún patrón predecible.
Con el cambio de UDP a TCP, un potencial atacante tendría que deducir el ISN de TCP y el DNS-query-ID para falsear una respuesta, algo prácticamente imposible.

A nivel rendimiento, ¿que supondría pasar el protocolo DNS a TCP? En este punto toca disfrazarse del Sr Solbes y sacar la calculadora para manejar correctamente los datos, Wireshark en mano, una consulta DNS por el protocolo UDP, de www.google.com en un Windows XP sp2 sale en:

4 Paquetes / 461 Bytes

Misma query usando TCP:

22 Paquetes / 1557 Bytes

Evidentemente, bajo UDP, el consumo de ancho de banda es infinitamente menor, y visto porcentualmente, puede que el dato sea demoledor, pero si nos fijamos en las cifras y sobre todo en el orden de magnitud que nos estamos moviendo (Bytes) ¿realmente supone tanta diferencia?
He buscado algún tipo de métrica online con datos fiables a-la-mrtg para tratar de hacerme una idea de lo que puede suponer multiplicar por dos el trafico DNS. Y si, estudios del estilo "El p2p ocupa el 80% del tráfico" hay cientos, pero con datos para ver, pocos. Finalmente he encontrado un proyecto de la organización CAIDA (si, un nombre poco apropiado para los hispanohablantes) que se basa en obtener métricas de "puntos neutros" al estilo de nuestro Espanix.

Ojeando dichos datos me llama la atención que el DNS no está entre los protocolos con mas consumo de ancho de banda, de hecho, ni sale en la lista ordenada por consumo de bytes hay que ir a las listas de flujos de datos (normal, el DNS se supone que ha de generar múltiples hits) para encontrar los datos de consumo que, según esas estadísticas, suponen un 0,18 %

Con esos datos en la mano (que no tienen porque ser ni parecidos a los de, por ejemplo, un ISP como telefónica) queda bastante claro que el cambio TCP por UDP no tiene que resultar especialmente traumatico.

¿Soluciones? A dia de hoy no resulta obvio ni trivial alterar los parámetros del sistema operativo para forzar que las consultas DNS se hagan mediante TCP, en Linux-Unix, el 'resolver' (la base donde se sustenta el mecanismo para resolver direcciones), está preparado para hacer consultas vía TCP empleando la opción RES_USEVC, pero sorprendentemente, esta opción no se puede configurar desde el fichero /etc/resolv.conf (otras muchas, si). Resultaría trivial hacer unas pequeñas modificaciones para soportar esta funcionalidad. En el caso de sistemas Windows no costaría mucho adaptar el sistema y dejar al usuario la opción de añadir una clave en el registro para activar-desactivar esa opción.

A nivel servidores, (Bind, DJB y cía) como ya hemos visto, nativamente soportan querys vía 53-tcp, no costaría demasiado adaptarlos para que empleen un mecanismo al estilo "primero intento TCP, si falla, lo envío por UDP", ajustando muy muy bien los 'timeouts' para identificar con suficiente celeridad que servidor DNS esta dispuesto a resolver por TCP y cuales no.

Queda un ultimo punto: el desempeño en enlaces con poco ancho de banda (PPP, GSM, y similares) obviamente esta claro que ese tipo de conexiones iban a sufrir bastante por la falta de rapidez en realizar las transacciones DNS, por eso, la solución necesariamente tendría que ser como he comentado antes, dejar al usuario los mecanismos para decidir si necesita UDP o TCP.

¿Que se puede hacer ahora? Con todo lo expuesto anteriormente, si se puede hacer algo, al menos, para securizar nuestro entorno (Red local, nuestro PC). Después de investigar bastante el tema, buscar y probar varias implementaciones de DNS Cache e incluso plantearme hacer mi propio DNS-proxy, di con un software que hace justo lo que yo tenia en la cabeza: Admite querys en formato UDP (necesario para la comunicacion PC<->DNS) y re-envía la petición al DNS principal en formato TCP, su nombre: Pdnsd (Para linux).

La configuración que se puede hacer con este programa corresponde a este esquema:


Como se puede ver, la comunicación desde nuestro PC / un equipo de nuestra red, hacia el cache DNS va en formato UDP "atacable" pero la comunicación hacia el servidor DNS principal, en internet, va en formato TCP con lo que restringimos el riesgo de ataque a nuestra propia red, cosa bastante menor ya que si alguien pretende atacarnos desde nuestra intranet o nuestro PC, tendríamos bastantes mas problemas de los que preocuparnos.

Un ejemplo de configuración para Pdnsd de cara a usarlo en local (para tu propio PC, no como DNS cache para toda tu intranet) sería ésta

En este punto solo nos hace falta localizar un servidor DNS recursivo que acepte querys por el puerto TCP, como ya hemos dicho anteriormente, muchos ISPs cierran ese puerto o impiden que se acepten querys por el 53-TCP. Para comprobar si un servidor DNS acepta peticiones al 53-tcp podemos usar la herramienta dig con los parametros +vc

dig +vc www.google.com @dns.ya.com

; <<>> DiG 9.2.3 <<>> +vc www.google.com @dns.ya.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38295 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 7, ADDITIONAL: 7 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 577445 IN CNAME www.l.google.com. www.l.google.com. 245 IN A 66.102.9.99 www.l.google.com. 245 IN A 66.102.9.104 www.l.google.com. 245 IN A 66.102.9.147

Como se puede ver, el DNS de ya.com acepta y resuelve bien por el puerto 53-TCP
Leer más...

10 julio 2008

El protocolo DNS, de nuevo, en boca de TODOS

El protocolo DNS es el encargado de traducir a nombres de internet las direcciones IP. Gracias a esto, nos evitamos tener que escribir http://72.14.207.99 cada vez que querramos buscar algo, y podemos utilizar algo más fácil de recordar, como es http://www.google.com.

Se sobreentiende que actualmente, con la expansión de la red de redes a todos los rincones del planeta, este servicio resulta de vital importancia. Y el hecho de que salga algún tipo de incidencia en este protocolo de 3 letras, provoca una alarma social a nivel mundial, sobretodo cuando empiezan a aparecer palabras como phising, o frases como “¡se podría incluso redirigir el dominio www.google.com a cualquier otro sitio!”.

¿ Y en que consiste la vulnerabilidad? Bueno, realmente, parece ser que son varias vulnerabilidades que han sido recopiladas y han sido investigadas de nuevo más a fondo.

Todo se basa en la facilidad que dan dichas vulnerabilidades en poder llevar a cabo con éxito un envenenamiento de los sistemas DNS, pudiendo engañarles para que apunten a donde no deberían apuntar, aunque el usuario haya introducido correctamente la dirección de internet a la que quería dirigirse.

En el 2002, se reportó que mediante métodos probabilísticos, como es por ejemplo el famoso ataque de cumpleaños, se conseguía reducir drásticamente el número de intentos necesarios para conseguir con éxito un ataque de suplantación de DNS o DNS spoofing, por lo que la fuerza bruta…resultaba un poco menos “bruta”.

En 2007, salió a la luz de nuevo (digo de nuevo, porque ya antes del 2000, se conocían los problemas) una vulnerabilidad para la cual hubo informes de seguridad o advisories apareciendo tanto la implementación de DNS de Microsoft, como el BIND del ISC en sus versiones 8 y 9. ¿El fallo? Algo que debería ser aleatorio, al final resultaba que no lo era tanto…

¿Por qué estos fallos que son de sobra conocidos ya durante casi una década, de repente generan titulares tan alarmistas en todos los medios, ya sean tecnológicos o no, ya sean prensa escrita, digital o incluso informativos de televisión? Juntando varios factores como por ejemplo a) que el autor de este último informe sobre todos estos fallos de implementación, Dan Kaminsky, es el mismo que descubrió el famoso rootkit que Sony incorporaba a sus CDs, que si b) el autor predica que lleva 6 meses en secreto contactando con las principales empresas tecnológicas para poder diseñar una solución conjunta y una actualización también nivel mundial y de manera coordinada y masiva, y que podría haber ganado mucho dinero con este hecho pero que ha preferido ponerse el “sombrero blanco”… lo que son los medios.

En la próxima conferencia de hackers, Defcon, Dan tiene su hueco, el domingo 10 de Agosto de 11:00 a las 11:50 de la mañana, y ha prometido que contará más detalles de todo. En la sección de la página de Defcon sobre los conferenciantes de este año, bajo su nombre sigue apareciendo un TBA (“To Be Announced"), pero ya sabemos de que hablará... y también sabemos que su conferencia será de las más seguidas y comentadas.

Fuente : http://www.kb.cert.org/vuls/id/800113
Leer más...

05 junio 2008

OpenDNS, luchando contra el phishing

Llevaba cierto tiempo con la idea de hablar sobre OpenDNS, una iniciativa destinada a la lucha frente al phishing de una forma bastante mas creativa que las ya clásicas y ¿obsoletas? barras anti-phishing asociadas a un determinado tipo de navegador / versión. El concepto de OpenDNS subyace en uno de los puntos claves de Internet: las resoluciones DNS. A grosso modo, lo que hace OpenDNS es mantener una extensa base de datos de dominios en Internet que han sido reportados como "sitios cuyo contenido es malicioso" de forma que, si inadvertidamente nuestro navegador, o en general cualquier aplicación, intenta conectarse a un dominio que esté catalogado como pernicioso, al intentar resolverlo a su correspondiente IP, automáticamente la conexión no se produce porque la resolución nunca se realiza. ¿Ingenioso verdad?. Este proyecto goza de un amplio apoyo por parte de muchas instituciones y organismos (lamentablemente, no he sido capaz de encontrar ninguna referencia Española) y tiene un ritmo de actualización muy impresionante ya que se nutre de las colaboraciones que llegan por parte de los usuarios. Cualquiera puede reportar un sitio malicioso y tras la correspondiente verificación, quedará añadido a la base de datos. Este servicio es totalmente gratuito y para beneficiarse de el, únicamente hay que cambiar los servidores DNS que estemos empleando por los siguientes:
208.67.222.222
208.67.220.220


Leer más...