Beruflich Dokumente
Kultur Dokumente
Paquete DNS.
DNS ID Hack/Spoof.
Vulnerabilidad de BIND.
/----------------------------------------------\
| 111.1.2.123 = cliente.prueba.com
|
| 111.1.2.222 = dns.prueba.com
|
| format:
|
| IP_ADDR:PORT->IP_ADDR:PORT
|
| ex:
|
| 111.1.2.123:2999->111.1.2.222:53
|
\----------------------------------------------/
...
gethosbyname("www.pagina.com");
...
[cliente.prueba.com]
[dns.prueba.com]
111.1.2.123:1999 --->[?www.pagina.com]------> 111.1.2.222:53
Aqu vemos nuestra peticin de resolucin del nombre del puerto fuente 1999
que est preguntando al DNS en el puerto 53. (Nota: El DNS siempre est en
el puerto 53.)
Ahora que dns.prueba.com ha recibido la peticin de la resolucin de
cliente.prueba.com, dns.prueba.com tendr que resolver el nombre, como
sigue.
[dns.prueba.com]
[ns.internic.net]
111.1.2.222:53-------->[dns?www.pagina.com]----> 198.41.0.4:53
dns.prueba.com pregunta a ns.internic.net quin es el servidor de nombres
raz para la direccin de www.pagina.com, y si no la tiene, enva la peticin a
un servidor de nombres que tenga autoridad en dominios '.com'.(Nota:
Preguntamos a internic porque podra tener esta peticin en su cach.)
[ns.internic.net]
[ns.prueba.com]
198.41.0.4:53 ------>[ns otro.com es 144.44.44.4]------>
111.1.2.222:53
Aqu podemos ver que ns.internic.net contest a ns.prueba.com (que es el
DNS que tiene autoridad sobre el dominio prueba.com), que el servidor de
nombres de otro.com tiene la IP 144.44.44.4 (vamos a llamarlo ns.otro.com).
Ahora nuestro ns.prueba.com pedir a ns.otro.com la direccin de
www.pagina.com, pero ste no la tiene y transmitir la peticin al DNS de
pagina.com el cul tiene autoridad para pagina.com.
[ns.prueba.com]
[ns.otro.com]
111.1.2.222:53 ------>[?www.pagina.com]-----> 144.44.44.4:53
Respuesta de ns.otro.com:
[ns.otro.com]
[ns.prueba.com]
144.44.44.4:53 ------>[ns para pagina.com is 31.33.7.4]--->
144.44.44.4:53
Ahora que conocemos qu direccin IP tiene autoridad en el dominio
"pagina.com" (lo llamaremos ns.pagina.com), le preguntamos cul es la IP de
la mquina www (www.pagina.com).
[ns.prueba.com]
[ns.pagina.com]
111.1.2.222:53 ----->[?www.pagina.com]----> 31.33.7.4:53
Y ahora tenemos por lo menos nuestra respuesta.
[ns.pagina.com]
[ns.prueba.com]
31.33.7.4:53 ------->[www.pagina.com == 31.33.7.44] ---->
111.1.2.222:53
Teniendo la respuesta, podemos remitirla a nuestro cliente
cliente.prueba.com.
[ns.prueba.com]
[cliente.prueba.com]
111.1.2.222:53 ------->[www.pagina.com == 31.33.7.44]---->
111.1.2.123:1999
Ahora cliente.prueba.com sabe la IP de www.pagina.com.
Ahora vamos a imaginarnos que quisiramos tener el nombre de una mquina
a partir de su IP, para hacer esto, la manera de proceder ser una poco
diferente porque la IP tendr que ser transformada:
Ejemplo: 100.20.40.3 se convertirn en 3.40.20.100.in-addr.arpa
Este mtodo es slamente para la peticin de la resolucin de IP (DNS
reverso). As que vamos a observar en la prctica cuando tomamos la IP de
www.pagina.com (31.33.7.44 o "44.7.33.31.in-addr.arpa" despus de la
traduccin en un formato comprensible por DNS).
...
gethostbyaddr("31.33.7.44");
...
[cliente.prueba.com]
[ns.prueba.com]
111.1.2.123:2600 ----->[?44.7.33.31.in-addr.arpa]----->
111.1.2.222:53
Enviamos nuestra peticin a ns.prueba.com
[ns.prueba.com]
[ns.internic.net]
111.1.2.222:53 ----->[?44.7.33.31.in-addr.arpa]------>
198.41.0.4:53
ns.internic.net enviar la IP de un servidor de nombres que tenga autoridad
en '31.in-addr.arpa'.
[ns.internic.net]
[ns.prueba.com]
198.41.0.4:53 --> [DNS para 31.in-addr.arpa es 144.44.44.4] ->
111.1.2.222:53
Ahora ns.prueba.com har la misma pregunta al DNS en 144.44.44.4.
[ns.prueba.com]
[ns.otro.com]
111.1.2.222:53 ----->[?44.7.33.31.in-addr.arpa]------>
144.44.44.4:53
En efecto, el mecanismo es casi igual que el usado para la resolucin de
nombre. Ahora vamos a estudiar el formato de los mensajes del DNS.
Paquete DNS.
Abajo se muestra el formato de un mensaje DNS:
+---------------------------------+-------------------------------------+
|
ID
|
Banderas
|
+---------------------------------+-------------------------------------+
|
Nmero de preguntas
| Nmero de respuestas
|
+---------------------------------+-------------------------------------+
| Nmero de RR autoritarios
| Nmero de RR suplementario
|
+---------------------------------+-------------------------------------+
|
|
\
\
\
PREGUNTA
\
|
|
+-----------------------------------------------------------------------+
|
|
\
\
\
RESPUESTA
\
|
|
+-----------------------------------------------------------------------+
|
|
\
\
\
Etc...
NO IMPORTA
\
|
|
+-----------------------------------------------------------------------+
3.
4 bits
3 bits (siempre 0)
4.
|
|
5.
|
|
6. [QR | opcode | AA| TC| RD| RA | zero | rcode ]
7.
|
|_ |_ |_ _|
|______ 4 bits
8.
|
|_ 1 bit
9.
|
10. 1 bit
11. QR: Si el bit QR = 0, significa que el paquete es una pregunta, si no es una
respuesta.
12. opcode: Si el valor es 0 para una peticin normal, 1 para una peticin de
reserva, y 2 para una peticin de estado.
13. AA: Si es igual a 1, dice que el servidor de nombres tiene una respuesta
autoritaria.
14. TC: No importa.
15. RD: Si esta bandera est a 1, significa "peticin recursiva", por ejemplo
cuando cliente.prueba.com pregunta a ns.prueba.com para resolver el nombre,
la bandera dice al DNS asumir esta peticin.
16. RA: Si se fija a 1, significa que la recursin est disponible. Este bit se coloca a
1 en la respuesta del servidor de nombres si soporta la recursin.
17. Zero: Aqu son tres ceros...
18. rcode: Contiene los mensajes de error de regreso para las peticiones DNS, si
+------------------------------------------------------------------------+
|
Nombre de la pregunta
|
+------------------------------------------------------------------------+
|
Tipo de pregunta
|
Tipo de consulta
|
+--------------------------------+---------------------------------------+
La estructura de la pregunta es como sigue:
Ejemplo:
www.pagina.com ser [3|w|w|w|5|p|a|g|i|n|a|3|c|o|m|0] para una
direccin IP es lo mismo.
44.33.88.123.in-addr.arpa sera:
[2|4|4|2|3|3|2|8|8|3|1|2|3|7|i|n|-|a|d|d|r|4|a|r|p|a|0]
Nota: Existe un formato de compresin, pero no lo utilizaremos.
Tipo de pregunta: Abajo se muestran los valores que se utilizan la mayora de
las veces:
Nota: Hay ms de 20 tipos de diverso valores.
Nombre
A
PTR
|
|
Valores
1
| IP Address
12
| Pointer
+-----------------------------------------------------------------------+
|
Nombre de Dominio
|
+-----------------------------------------------------------------------+
|
Tipo
|
Clase
|
+----------------------------------+------------------------------------+
|
TTL (Tiempo de Vida)
|
+-----------------------------------------------------------------------+
| Longitud de Datos del Recurso
|
|
|-------------------------------------------+
|
|
Dato del Recurso
|
+-----------------------------------------------------------------------|
Nombre del Dominio: El nombre del dominio en reportes para el siguiente
recurso. El nombre del dominio se almacena de la misma manera que la parte
de la pregunta para la peticin de la resolucin de www.pagina.com, la
bandera ``Nombre del Dominio`` contendr:
[3|w|w|w|5|p|a|g|i|n|a|3|c|o|m|0]
1. Tipo: El tipo de bandera es igual que el ``tipo de consulta'' en la parte de la
pregunta del paquete.
2. Clase: La bandera Clase es igual a 1 para los datos de Internet.
3. Tiempo de Vida: Esta bandera explica en segundos el tiempo-vida de la
informacin en la cach del servidor de nombres.
4. Longitud de datos del Recurso: La longitud de los datos del Recurso, por
ejemplo si la longitud de los datos del recurso es 4, significa que los datos en
los Datos del Recurso es de longitud 4 bytes.
5. Datos del Recurso: Aqu ponemos la IP por ejemplo (por lo menos en nuestro
caso).
La parte de la pregunta.
+---------------------------------------------------------------------------+
|
Nombre de la Pregunta = [3|w|w|w|5|p|a|g|i|n|a|3|c|o|m|0]
|
|
|
+---------------------------------------------------------------------------+
| Tipo de Pregunta = htons(1)
|
Tipo de
consulta=htons(1)
|
+-------------------------------------+-------------------------------------+
Ahora vamos a observar fijamente la respuesta de ns.pagina.com
|
+-------------------------------------------------------------------------------------------------+
|
Longitud de Datos del Recurso = htons(4)
|
Datos del
Recurso=inet_addr("31.33.7.44")
|
+-------------------------------------------------------------------------------------------------+
Enseguida se muestra el anlisis de las banderas:
DNS ID Hack/Spoof.
Ahora vamos a explicar claramente que es DNS ID hacking/spoofing. Como se
explic antes, la nica manera para que el demonio DNS reconozca las
diferentes preguntas/respuestas es la bandera en el paquete. Obsrvese este
ejemplo:
ns.prueba.com;53 ----->[?www.pagina.com] ------>
ns.pagina.com:53
Solamente tenemos que engaar la IP de ns.pagina.com y contestar
informacin falsa antes de que ns.pagina.com lo haga a ns.prueba.com
4.
db_free:
del ID.
Vulnerabilidad de BIND.
Esta es una vulnerabilidad en BIND (descubierta por SNI). De hecho, el DNS
es fcilmente predecible, tenemos que escuchar slamente un DNS en orden
para hacer lo que deseemos. El DNS utiliza un ID al azar en el principio pero
slamente aumenta para las preguntas siguientes. Es fcil explotar esta
vulnerabilidad. Abajo se muestra la forma:
1. Puede escuchar fcilmente los mensajes que viene a un DNS al azar
(ns.ejemplo.com para este ejemplo).
2. Preguntamos NS.victima.com para resolver (aleatorio).ejemplo.com.
NS.victima.com pedir a ns.ejemplo.com resolver (aleatorio).ejemplo.com
3.
6.
7. (Nosotros) --> [?www.microsoft.com ] --> ns.victima.com
8. nc.victima.com --> [?www.microsoft.com ID = 446 ] -->
ns.microsoft.com
9. Inundamos el servidor de nombres ns.victima.com con el ID (444) que
tenemos y entonces lo aumentamos.
10.
ns.microsoft.com -->
444] --> ns.victima.com
11.
ns.microsoft.com -->
445] --> ns.victima.com
12.
ns.microsoft.com -->
446] --> ns.victima.com
13.
ns.microsoft.com -->
447] --> ns.victima.com
14.
ns.microsoft.com -->
448] --> ns.victima.com
15.
ns.microsoft.com -->
449] --> ns.victima.com
[www.microsoft.com = 1.1.1.1 ID =
[www.microsoft.com = 1.1.1.1 ID =
[www.microsoft.com = 1.1.1.1 ID =
[www.microsoft.com = 1.1.1.1 ID =
[www.microsoft.com = 1.1.1.1 ID =
[www.microsoft.com = 1.1.1.1 ID =
Noticias
Artculos
Servicios
Discusin
Vulnerabilidades
Distribucin de correos electrnicos falsos
UNAM-CERT
Estadsticas
Boletines
Atencin a Incidentes
Reporte de vulnerabilidades
Seguridad TV
Seguridad TV
Programacin
Galera
Regstrate
Usuario Casero
Eduteca
Diccionario
Participa
Animaciones
Dlitos informticos
Becarios
Plan de becas
Convocatoria
Generaciones
Calendario
Noticias
Revista .Seguridad
Visitanos!