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

Los investigadores Roee Hay & Roi Saltzman miembros del grupo de investigación en seguridad de las aplicaciones de IBM - IBM Application Security Research Group - han publicado un documento demostrando una vulnerabilidad (CVE-2012-2808) en la implementación del generador pseudo-aleatorio (PRNG) del protocolo DNS que realiza el Sistema Operativo Android 4.0 o inferior.

¿Cuál es el Impacto?

Esto permitiría a un atacante llevar a cabo con éxito un "envenenamiento de la cache de DNS" - DNS Poisoning - es decir, manipular registros de los nombres de dominio (DNS) en el Sistema Operativo Android, de forma que un usuario al utilizar su navegador WEB podría ser redirigido a páginas WEB maliciosas para robar cookies, tokens de autenticación, inyectar malware etc sin que el usuario fuera realmente consiente de ello.

¿En que consiste?

Esta vulnerabilidad permite a un atacante averiguar con cierta facilidad  los datos pseudo-aleatorios generados por el algoritmo (PRNG), este es el responsable de obtener de manera pseudo-aleatoria el puerto origen (source port) y el valor TXID. Lo que implica un mayor éxito en la realización de ataques  DNS poisoning.

Solución

La ultima versión de Android 4.1.1 incluye un parche que soluciona esta vulnerabilidad. Por lo que se recomienda encarecidamente que se aplique lo antes posible. Aunque esto ultimo dependerá en gran medida de las operadoras y sus propias versiones del sistema operativo.

Referencias:

A continuación enlazo la presentación llevada a cargo por Carlos Diaz & Francisco J. Gomez , colaboradores del blog iniqua.com, en la RootedCON2012. que se titula: DNS: A Botnet Dialect.


DESCRIPCIÓN


DNS_ A BOTNET DIALECT es el nombre que recibe la presentación que realizaron Fran y Carlos en la RootedCON 2012, para presentar el protocolo DNS como un modo de comunicación posible para redes BOTNET. Este proyecto forma parte de su trabajo sobre la evolución de los métodos de comunicación y distribución de Malware, utilizando simplemente la cache de los servidores DNS libres en Internet, que fue bautizado como Cloud Malware Distribution (CMD).

A continuación os dejo el vídeo de su presentación en la RootedCON 2011:






En esta ocasión, además de hablar sobre CMD (Cloud Malware Distrubution) , introducen la teoría de "covert channels" a través de canales activos de DNS con una demostración incluida, y como es posible la utilización del protocolo DNS para establecer canales de comunicación para controlar redes BOTNET.

"SLIDES"


Saludos.

INDICE: 



En las anteriores artículos (I, II) se realizo un repaso sobre los conceptos fundamentales del funcionamiento del Sistema DNS. En esta "entrada" se analizaran los problemas de seguridad asociados al Sistema DNS actual y cuales son las medidas de protección a implementar.

Si recordamos los anteriores artículos sobre DNS, para conectarnos a un  servidor o cualquier otro recurso de una red, es necesaria alguna forma de indicar el destino, esto se consigue asignando direcciones de red (IP). La dirección de red (IP) debe de ser única para poder encaminar correctamente los paquetes de un host o router a otro, esto desde la perpestiva de los equipo informáticos. Sin embargo, ya se vio en su momento, que desde la perspectiva del usuario para acceder a los recursos de Internet se utilizan los nombres de dominio (DNS) que da lugar al Sistema de DNS actual, para cada nombre de dominio existe una o varias IP asociadas.

¿Qué pasaría si alguien consiguiera cambiar la IP asociada a un determinado dominio?

En ese caso, el acceso a los servicios a través del nombre de dominio "manipulado" conduciría al usuario hacia un servidor "malicioso" con publicidad, phishing, troyanos, malware, etc. En definitiva, llevaría al usuario hacia un servidor "falso" o incluso provocaría la caída del servicio (DoS).

Vulnerabilidades DNS

En 2008 fue descubierta una grave vulnerabilidad en el Sistema DNS por el investigador Dam Kamisky, esta permitía a un atacante realizar un "envenenamiento de la cache" (cache poisoning attacks). El ataque no era nuevo, sin embargo la forma de explotar esa vulnerabilidad fue lo que clasifico la vulnerabilidad como "muy crítica".

El ataque de "envenenamiento de la cache DNS" consiste en "explotar" una vulnerabilidad de modo que el servidor DNS acepta una información "manipulada", al no realizar una validación correcta en las respuestas DNS procedentes de una fuente (servidor) "no autoritativa". Al no validar correctamente el atacante puede "inyectar/manipular" registros siendo estos cacheados en el Servidor DNS.

La cache de los Servidores DNS es una pequeña base de datos que contiene el resultado de las peticiones de "nombres de dominio" (DNS) a consultas previas, con objeto de acelerar los tiempos de respuesta. Es decir, cuando los usuarios realizan una petición al www.google.es, realmente el sistema de cache devuelve inmediatamente la IP almacenada en la cache como consulta previa realiza por otro usuario, no llegando a consultar el registro original. 

Existen dos tipo de cache:

Local: es la base de datos ubicada en los ordenadores de los usuarios, es decir, la cache que guarda tu ordenador cada vez que realizas una consulta mediante el navegador Web.

C:\ipconfig /displaydns

Si deseamos borrar la cache local de DNS, se ejecuta el comando: ipconfig /flushdns


Remota: la base de datos ubicada en los servidores DNS, utilizada para acelerar las consultas DNS, de forma que ante las mismas consultas, resuelve utilizando el sistema de "cache" y no accediendo al registro DNS correspondiente.

El ataque de Dam Kamensky consite en "secuestrar" una sesión (hijack the authority record) procedente de un servidor autoritativo, de forma que el proceso de "envenenamiento" sea mucho más efectivo y rápido. La explicación con todo lujo de detalles sobre esta vulnerabilidad la podéis encontrar en la "An Illustrated Guide to the Kaminsky DNS Vulnerability", cuya lectura os recomiendo.

Como se puede intuir, el alcance del "problema" si se consigue envenenar la cache de un servidor DNS, y sobre todo si la cache que ha sido "envenenada" es la correspondiente a un servidor "raíz", es realmente alarmante ¿verdad?. Afortunadamente existe solución, y los servidores DNS han corregido la vulnerabilidad.

La falta de controles de integridad en las consultas recursivas realizadas por el protocolo DNS, y por consiguiente por los Servidores que lo implementan, hacen de él un protocolo (in)seguro.

Seguridad en los Sistemas

Existen algunas medidas para prevenir este tipo de ataques y vulnerabilidades:

1) Si el servidor DNS no es accesible desde Internet, no puede realizarse el ataque con éxito. Las empresas con servidores DNS propios, deberán de proteger el acceso a los servidores desde Internet, creando dos zonas (Externa / Interna). Siendo el servidor DNS interno de la red quien tenga mayor relevancia, mientras el externo sea configurado en modo Relay.

2) DNS-Sec: una solución parcial a los problemas existentes en DNS. DNSSEC responde a “Domain Name System Security Extensions”. DNSSEC es una extensión del protocolo DNS (RFCs 1034 y 1035) y es definido en varias especificaciones por la Internet Engineering Task Force (IETF). Proporciona control de integridad en los registros y consultas de los servidores DNS, aunque todavía existen ciertos problemas de implementación que ponen en duda su efectividad real, pero en teoría la correcta implementación de esta extensión daría con la solución al "envenenamiento de la cache". Existe un proyecto Open Source dedicado a gestionar e implementar DNSSEC en los servidores, denominado OpenDnsSec.

3) La utilización de SSL, se puede considerar una medida efectiva al validar el servidor mediante certificados. El problema real, es que no existe una forma sencilla de que el usuario sea correctamente advertido, y en la mayoría de los casos el "propio" usuario es quién ignora las advertencias de seguridad relacionadas. Es por tanto, una medida técnica efectiva, aunque parcialmente ignorada por la falta de concienciación en seguridad.

Realmente, esta vulnerabilidad es inherente al protocolo DNS, por lo que sigue existiendo y por consiguiente es explotable. Sin embargo, existen algunas medidas de mitigación que dificultan la ejecución del ataque y minimizan la probabilidad de éxito. 

En caso, de no poder aplicar algunas de las medidas de "prevención" anteriormente expuestas, se deben de tomar una serie de precauciones, antes de configurar un servidor DNS con acceso desde Internet. A este respecto los fabricantes han desarrollado un parche para los servidores DNS (software) que realiza la "randomización" de los puerto origen (source port) que se utilizan en las conexiones para reducir la superficie de exposición y la probabilidad de éxito en el ataque. 

La aplicación del parche disponible por el fabricante no es suficiente, se debe de realizar una configuración  segura de los servidores DNS, limitar el uso de consultas recursivas y controlar mediante "listas de acceso" y/o cortafuegos los servidores autorizados.

Hasta aquí el flash de formación sobre DNS, espero que os hay gustado.

Un Saludo.

Referencias:
Nivel: Avanzado

INDICE: 

En la primera parte del "flash de formación: DNS Conceptos y funcionamiento", se introdujeron los conceptos y funcionamiento básico del Sistema DNS. En esta segunda parte se va a proceder a analizar el funcionamiento del sistema DNS, desde un punto de vista práctico.

Para ello se analizará el proceso de comunicación y resolución del nombre de dominio cuando se consulta una página web. Como parte de este ejemplo, se utilizará la herramienta wireshark para analizar el tráfico de red.

Terminología

Antes de empezar, creo que es conveniente recordar algunos términos básicos (RFC1034), que han sido tratados en la primera parte, y algunos otros más complejos que serán tratados más adelante en este artículo:
  • Host Name: El nombre de un host es una sola “palabra” (formada por letras, números y guiones). Ejemplos de nombres de host son “www“, “blog” y “obelix“.
  • Fully Qualified Host Name (FQHN): Es el “nombre completo” de un host. Está formado por el hostname, seguido de un punto y su correspondiente nombre de dominio. Por ejemplo, “sxato2.blogspot.com“
  • Domain Name: El nombre de dominio es una sucesión de nombres concatenados por puntos. Algunos ejemplos son “webmail.example.com“, “example.com” y “com“.
  • Top Level Domains (TLD): Los dominios de nivel superior son aquellos que no pertenecen a otro dominio. Ejemplos de este tipo son “com“, “org“, “net” y “es“.
Funcionamiento

DNS son las iniciales de Domain Name System (sistema de nombres de dominio) y es un sistema que sirve para resolver nombres de dominio, es decir,un sistema para transformar nombres de dominio a las direcciones IP que necesitan los sistemas de comunicación para localizarse en Internet. Este sistema se encuentra soportado por un fichero (base de datos) que guarda la dirección IP asociadas a los host donde está alojado el contenido del dominio al que queremos acceder.

IP - NOMBRE DOMINIO
 209.85.169.121 - www.seguridadparatodos.es
En la parte I, se comentó la estructura jerárquica del espacio de nombre de dominios, en forma de árbol, donde un nombre de dominio completo consiste en la concatenación de todas las etiquetas de un camino a lo largo del árbol.



El sistema DNS esta soportado por una aplicación servidor, que responde a las peticiones de información sobre el nombre de dominio. La arquitectura del funcionamiento de DNS, esta compuesto por un sistema estructurado en forma de “árbol“. Cada nodo del árbol está compuesto por un grupo de servidores que se encargan de resolver un conjunto de dominios (zona de autoridad). Un servidor puede delegar en otro (u otros) la autoridad sobre alguna de sus sub-zonas (esto es, algún subdominio de la zona sobre la que él tiene autoridad). Un subdominio puede verse como una especialización de un dominio de nivel anterior. Por ejemplo, “mail.example.com” es un subdominio de “example.com“, que a su vez lo es del TLD “com“.

Los servidores con autoridad sobre los TLD son los llamados “root servers” (o “servidores raíz“) del sistema. Actualmente ha 13 servidores raíz, que controlan la gestión de la resolución de nombre en todo Internet, es decir, un ataque [1][2] a los servidores raíces, provocaría la caída "aparente" de Internet, puesto que no podrían resolverse los nombres de dominio, y la mayoría de las aplicaciones en la actualidad no serían capaces de funcionar.


Ejemplo: Capturar una petición DNS a www.seguridadparatodos.es

1. Eliminar la cache DNS de nuestro equipo, en equipos windows el comando es el siguiente:

 C:>  ipconfig /flushdns

2. Establecer el filtro para capturar solo tráfico UDP, en el puerto 53, en la aplicación de análisis de tráfico de red (wireshark), el valor del filtro es:

" udp.port == 53"

3. Debido a que normalmente nuestro router, se encarga de resolver los nombres de dominio, es por ello que solamente capturamos una parte de la comunicación:

1-> petición de resolucion (Query) www.seguridadparatodos.es
2-> el router recibe la petición, y reenvia al servidor DNS del ISP (proveedor de servicios): www.seguridadparatodos.es
3-> el ISP examina la www.seguridadparatodos.es, extrae: seguridadparatodos.es y envia una pregunta a un servidor DNS Raiz (root) "."
4-> el DNS Raiz comprueba la consulta (query): seguridadparatodos.es, y deriva su respuesta al ".es".
5-> El ".es" localiza el host,  y devuelve (awnser) www.seguridadparatodos.es -> IP
6-> todos los paquetes vuelven hasta el router, quien se lo comunica a nuestro equipo.
7-> El navegador muestra la página web. Proceso se realiza en cuestión de microsegundos.


Una vez que sabemos como funcionan el sistema DNS, creo que es muy interesante saber, con más detalle que tipo de información puede registrarse y almacenarse en los servidores DNS. Para ello, en cada zona de autoridad se dispondrá de registros de distintos tipos. Entre los más importantes se encuentran:
  • A (Address): Este registro se utiliza para traducir nombres de hosts del dominio en cuestión a direcciones IP.
  • CNAME (Canonical Name): El nombre canónico es un alias para un host determinado. (No define una dirección IP, sino un nuevo nombre.)
  • NS (Name Server): Especifica el servidor (o servidores) de nombres para un dominio.
  • MX (Mail Exchange): Define el servidor encargado de recibir el correo electrónico para el dominio.
  • PTR (Pointer): Especifica un “registro inverso“, a la inversa del registro A, permitiendo la traducción de direcciones IP a nombres.
  • TXT (Text): Permite asociar información adicional a un dominio. Esto se utiliza para otros fines, como el almacenamiento de claves de cifrado, “DomainKeys” o “Sender Policy Framework“, trataremos este tema en artículos posteriores.

 Los mas utilizados son CNAME, para configurar por ejemplo:
  • www.seguridadparatodos.es -> TIPO A: registro de la dirección IP a la que apunta.
  • seguridadparatodos.es -> TIPO CNAME alias del registro anterior.
Si quiere utilizar un servidor de correo electrónico con tu propio dominio (DNS), el ajuste que se tendrá que realizar en el servidor es incluir un nuevo registro DNS, TIPO MX, que apunte a la dirección IP del servidor de correo y se le asignarán una prioridad.

Por ejemplo, puedes utilizar Google Apps, para configurar de forma gratuita, hasta un máximo de 10 usuarios, un servicio de correo electrónico con tu propio nombre de dominio. Aquí os dejo un enlace al tutorial de Google.


En la próxima entrega, os contaremos los "problemas de seguridad" y las medidas de protección existentes.
Nivel: Principiante
INDICE: 

En este artículo voy a realizar una breve introducción, al sistema DNS, conceptos y funcionamiento. Imagino que "todo" el mundo sabe o lo suenan las siglas DNS.

DNS son las siglas de "Domain Name System", o lo que es lo mismo, Sistema de Nombres de Dominio. El  DNS se utiliza en Internet para acceder y localizar los servidores web que publican el contenido de las páginas webs.


¿Qué es el DNS?

El Sistema de nombres de dominio (DNS) es un protocolo desarrollado en 1987 (RFC-1034 y RFC-1035) cuyo objetivo era facilitar el acceso de los usuarios al contenido publicado en los servidores Web de Internet, de forma centralizada y global.

Para navegar por Internet solo es necesario conocer la dirección IP del servidor web, pero el formato numérico de la dirección IP era difícil de recordar y se convirtío en un impedimento para la gestión y mantenimiento de los administradores de sistema y un problema para los usuarios en general. En este contexto, nace el protocolo DNS (Domain Name System) que tiene como misión proporcionar un mecanismo que permita gestionar los servicios, protocolos y servidores de forma más sencilla y global.


Espacio de nombres de dominios

El nombre de dominio se obtiene del espacio de nombres de dominios que componen el DNS. El espacio de nombres de dominio se organiza internamente de forma jerárquica. Los nombres de dominio se construyen para que su estructura sea coincidente con la jerarquia definida por el espacio de nombres de dominios. 
Un nombre de dominio esta formado por dos o más partes, separadas por puntos cuando se las escribe en forma de texto (ejemplo: www.seguridadparatodos.es).

NOMBRE DOMINIO = (SUB_DOMINIO).(NOMBRE_DOMINIO).(DOMINIO_
NIVEL_SUPERIOR)

A la etiqueta ubicada más a la derecha se le llama dominio de nivel superior (en inglés top level domain). Por ejemplo: "es" en www.seguridadparatodos.es o org en www.ejemplo.org.

Cada etiqueta a la izquierda especifica una subdivisión o subdominio. Nótese que "subdominio" expresa dependencia relativa, no dependencia absoluta. Por ultimo, la etique más a la izquierda del dominio suele expresar el nombre de la máquina (hostname). El resto del nombre de dominio simplemente especifica la manera de crear una ruta lógica a la información requerida. El hostname, no tiene porque referirse a una máquina física.


El espacio de nombres de dominio tiene una estructura jerarquica en forma de arbol, donde un nombre de dominio completo consiste en la concatenación de todas las etiquetas de un camino a lo largo del arbol.


En el ejemplo de la imagen (www.seguridadparatodos.es) se ha construido el nombre, siguiendo una ruta lógica por el arbol de la estructura, y se dice que: "seguridadparatodos es un dominio perteneciente al dominio superior .es, donde las www indica que nos referimos a la máquina principal (dirección IP) que proporciona el servicio web".

Para mantener la organización, y coherencia en el espacio de nombres de dominios, la organización ICANN (Internet Corporation for Assigned Names and Numbers) es una organización que opera a nivel internacional y es la responsable de asignar las direcciones del protocolo IP, de los identificadores de protocolo, de las funciones de gestión del sistema de dominio (DNS) y de la administración del sistema de servidores raíz.
Es decir, ICANN es la que define los nombres de domino de niveol superior tales como ".es, .org, .com, etc.". Luego ICANN delega las gestiones de alta, registro, baja, etc en operadores nacionales, por ejemplo el dominio ".es" lo gestiona Red.es a través de agentes registradores en www.nic.es.

¿Cómo funcionan los DNS?

El DNS funciona como un listín telefónico, donde se emparejan los nombres de dominio con las direcciones IP, de forma, que si sabemos el nombre del dominio estamos en condiciones de realizar una búsqueda y encontrar la dirección IP asociada.

En la siguiente entrega explicaremos con más profundidad cómo funciona el sistema de DNS de Internet. Pero eso será en Flash Formación: DNS - Conceptos y funcionamiento (II).


Referencias

[1] RFC 1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
[2] RFC 1034: DOMAIN NAMES - CONCEPTS AND FACILITIES
[3] DNS: Wikipedia