Shared posts

19 Jul 22:21

Uggy : Cas debug DNS

by Uggy

Je suis tombé sur un petit problème DNS interressant...
Le voici dans l'ordre...

- Je clic sur un lien et me voila envoyé vers un article du site http://www.leparisien.fr
- Patatra, marche pas.
- Vérification DNS:

$ dig www.leparisien.fr

; > DiG 9.9.5-9+deb8u1-Debian > www.leparisien.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.leparisien.fr. IN A

;; Query time: 448 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 15 21:36:55 CEST 2015
;; MSG SIZE rcvd: 46

$

Marche pas, status: SERVFAIL

- Interressant

$ dig cname www.leparisien.fr
www.leparisien.fr. 86400 IN CNAME 2-01-275c-0002.cdx.cedexis.net.

Bon cette 1ère partie fonctionne.

- Essayons de voir ce que donne 2-01-275c-0002.cdx.cedexis.net.

$ dig 2-01-275c-0002.cdx.cedexis.net.

; > DiG 9.9.5-9+deb8u1-Debian > 2-01-275c-0002.cdx.cedexis.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;2-01-275c-0002.cdx.cedexis.net. IN A

;; Query time: 25 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 15 21:39:41 CEST 2015
;; MSG SIZE rcvd: 59

Donc c'est lui qui ne résoud pas chez moi... status: SERVFAIL...

- Voyons voir les DNS de cdx.cedexis.net. ou plutôt ceux de cedexis.net.

$ dig ns cedexis.net. +short
flipa.cedexis.net.
flipd.cedexis.net.
flipg.cedexis.net.
$

- Testons les en direct

$ dig 2-01-275c-0002.cdx.cedexis.net. @flipa.cedexis.net. +short
cdn2.lequipe.fr.
$ dig 2-01-275c-0002.cdx.cedexis.net. @flipd.cedexis.net. +short
cdn2.lequipe.fr.
$ dig 2-01-275c-0002.cdx.cedexis.net. @flipg.cedexis.net. +short
cdn2.lequipe.fr.
$

Arf çà répond.
Alors que cela ne répond toujours pas avec mon serveur local:

$ dig 2-01-275c-0002.cdx.cedexis.net.

; > DiG 9.9.5-9+deb8u1-Debian > 2-01-275c-0002.cdx.cedexis.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;2-01-275c-0002.cdx.cedexis.net. IN A

;; Query time: 44 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 15 21:44:22 CEST 2015
;; MSG SIZE rcvd: 59

- Comme vous l'avez remarqué, j'interroge mon serveur récursif local.

Quand la demande passe par lui, cela ne fonctionne pas, sinon cela semble fonctionner.

$ dig 2-01-275c-0002.cdx.cedexis.net. @8.8.8.8 +short
cdn2.lequipe.fr.
62.210.149.48
$

- Mon serveur DNS local est Unbound, et il semble qu'un truc le dérange (uniquement avec ces serveurs DNS cedexis.net !)...

- Activation des logs verbeux par la ligne

verbosity: 3

- Et on regarde les logs:

1436989983] unbound[12494:1] info: reply from 209.107.211.4#53
1436989983] unbound[12494:1] info: Capsforid fallback: getting different replies, failed
1436989983] unbound[12494:1] debug: return error response SERVFAIL

- Capsforid... Interressant

- Allons voir la doc de la conf d'Unbound

use-caps-for-id: Use 0x20-encoded random bits in the query to foil spoof
attempts. This perturbs the lowercase and uppercase of query
names sent to authority servers and checks if the reply still
has the correct casing. Disabled by default. This feature is
an experimental implementation of draft dns-0x20.

Donc en gros, avec ce paramètre à "yes", unbound envoit le nom à résoudre avec des minuscule/majuscule aléatoires, puis vérifie que la réponse à la question, qui contient la question, à bien les minuscules/majuscules aux bons endroits.

Et ce paramètre est a "yes" dans ma conf Unbound.

- Avant d'aller voir le draft dns-0x20, on lance wireshark

dns-wireshark-1.png


dns-wireshark-2.png

On voit clairement ce qui se passe, la réponse contient la question en minuscule, donc pas exactement comme elle a été posée.

- Vérifions avec un autre domaine.. Au hasard bortzmeyer.org

$ dig www.bortzmeyer.org +short
204.62.14.153
$

Mon unbound résoud parfaitement.

On voit bien que la réponse, contient bien cette fois exactement la question, avec les minuscules/majuscules aux bons endroits.

dns-wireshark-3.png

- Vérifions en mettant à "no" le use-caps-for-id (ce qui, il est vrai, est la valeur par défaut)

Bingo, çà fonctionne cette fois

$ dig 2-01-275c-0002.cdx.cedexis.net. +short
cdn2.lequipe.fr.
62.210.149.48
$

Unbound considère maintenant comme valide la réponse des serveurs de cedexis.net
Victoire, je peux lire mon article sur www.leparisien.fr

- C'est quoi cedexis.net, ils auraient leur propre serveur DNS maison ?

"We’re dedicated to building a faster web for everyone in the world. Cedexis optimizes web performance across data centers, content delivery networks (CDNs) and clouds..."

Ah oui, çà colle, ils seraient bien capable d'avoir leur implémentation DNS maison.

- Maintenant allons voir ce fameux draft dns-0x20.

Déjà on peut noter que c'est rédigé par Paul Vixie de l'ISC, c'est du sérieux.

Je vais vous résumer en gros:

Le protocole DNS est tel, qu'il y a parfois moyen de réussir à forger des réponses et donc de poluer les caches DNS.
Il est donc ensuite possible de rediriger les users vers des faux site web.. bref pas cool.. mais rien de nouveau pour l'instant.
Mais tout moyen permettant d'améliorer la sécurité, en rendant plus difficile de forger des fausses réponses, sans tout casser au protocole existant, est donc la bienvenue.
Ce draft expose un moyen d'y parvenir.

Comme vous l'avez compris (pour les 3 personnes qui sont arrivées jusqu'ici, chapeau bas), il s'agit de mettre des majuscules/minuscules aléatoires dans la question envoyée au serveur DNS, puis considérer comme invalides, les réponses qui ne reprendaient pas la question en respectant la casse.

Pour forger une fausse réponse DNS et donc polluer le cache, il faudrait donc non seulement trouver le bon ID (Kaminsky, Paradoxe des anniversaires etc..) mais donc en plus avoir les bonnes majuscules/minuscules aux bons endroits. (Pas con le Paul Vixie ! )

Mais pour que l'idée soit exploitable, il faut donc voir ce que dit la RFC 1035 et voir comment réagissent les principales implémentations de serveurs DNS authoritatives.

Pour ce qui est de la RFC1035 on peut lire en 7.3

that the question section corresponds to the information currently desired

Mmmm...Ce n'est pas super précis ... Est-ce que cela inclu le respect de la casse... ?

Voyons voir les différentes implémentations:

On peut lire en 6.1

Several popular authoritative DNS implementations including ISC BIND (versions 4, 8, and 9), Nominum ANS, Akamai AKADNS, Neustar UltraDNS, Verisign Atlas, NLNetLabs NSD, PowerDNS, and DJBDNS were tested. All copied the question name exactly, bit for bit, from the request into the response.

Et en 6.2

Operational testing has revealed a small set of rare and/or private label authoritative DNS implementations who modify the 0x20 bits in question names while copying the question section from the request to the response. Usually this modification is to set the 0x20 bit, thus converting a domain name to be all-lower-case (0x61..0x7A, e.g., a-z).

- Conclusion:

Toutes les implémentations de serveur DNS authoritative majeures répondent en respectant la casse de la question.
Si les serveurs récursifs pouvaient implémenter cette vérification, ceci pourrrait améliorer la sécurité du DNS.
Et c'est d'ailleurs la 1ère fois que j'ai ce problème avec un serveur DNS, je vais donc garder mon paramêtre, et tant pis pour le site web du Parisien ;)

Les serveurs DNS de cedexis.net ne semblent pas tourner sous une "popular authoritative DNS implementations" :)
Je les ai contacté pour les informer.... si çà les interresse...

Gravatar de Uggy
Original post of Uggy.Votez pour ce billet sur Planet Libre.

Articles similaires

02 Jul 08:10

World, if it was scaled down to only 100 people.

17 Jun 00:00

Planning

[10 years later] Man, why are people so comfortable handing Google and Facebook control over our nuclear weapons?
08 Jun 01:25

Change the way you think...

24 Oct 08:35

Long exposure+ low iso level + DSLR+ luck = Real photograph

17 Sep 22:07

Connaissance du 18/09/2014

La "Rainbow valley" ou "Vallée Arc-en Ciel" est une zone du Mont Everest traversée par les alpinistes pour atteindre le sommet. Elle se nomme ainsi en raison des combinaisons multicolores portées par les cadavres qui jonchent le long du chemin.
18 Aug 22:04

Connaissance du 19/08/2014

En 563 après J.C., une partie de la cité de Genève a été ravagée par un tsunami sur le lac Léman. Il semble que la vague fut provoquée par l'écroulement d'un pan du mont Taurus, montagne à l'extrémité du lac.
10 Jul 00:25

No ones published this beautiful picture of this sad Brazilian fan

11 Jul 10:55

Respect Terry Fox

12 Jun 18:36

Quack1 : Analysez vos configurations firewall avec #Springbok

by Quack1

Springbok est un outil tout juste sorti qui permet d'analyser les configurations de vos firewall.

Après avoir chargé le fichier de configuration dans l'outil, il est possible d'afficher un graphe du réseau sur lequel sont représentés les pares-feux ainsi que les machines et groupes de machines.

On peut ensuite utiliser l'outil pour « interroger » la configuration pour vérifier que la configuration est correcte et détecter des anomalies. Par exemple :

  • Chercher tous les chemins entre un subnet (ou une IP) et un autre, sur des ports source et destinations donnés (voir l'image plus haut) ;
  • Détecter les anomalies dans la configuration, et notamment les règles qui se surchargent entre elles. Deux mécanismes de détection sont possibles :
  • Détection « centralisée » : on cherche toutes les anomalies dans une ACL ;
  • Détection « décentralisée » : l'outil cherche toutes les anomalies dans tous les réseaux et chemins disponibles.

L'outil est pour le moment en version alpha et son code est ouvert[^1] et disponible sur Github. Pour l'instant, les seuls firewall supportés sont Cisco ASA, Fortigate et Juniper Netscreen[^2]

Si vous le testez (j'espère que oui !), n'hésitez pas à reporter des bugs ou des idées de fonctionnalités sur Github pour que l'outil parvienne vite à une version stable et complète ! :)

Quelques screenshots pour vous donner une idée de l'outil :

 


Recherche des chemins entre 192.168.0.42 et 192.168.1.43 sur le port tcp/3700

 


Résultat de la recherche. Les chemins trouvés sont listés à droite

 


Détection d'anomalies dans la configuration

 


Affichage des règles d'un ACL

 


Objets définis mais non utilisés

 


Détection « centralisée » : Anomalies dans une ACL

 


Détection « décentralisée » : Anomalies dans tous les chemins

Et en plus, c'est fait dans ma boîte, si c'est pas beau ça[^3] !

[^1]: Il n'y a pas de licence clairement définie, il faudra que je fasse corriger ça. [^2]: Je pense que les fichiers de règles iptables et pf ne devraient pas tarder à être supportés. [^3]: Oui, je fais de la pub, et alors ?!

Gravatar de Quack1
Original post of Quack1.Votez pour ce billet sur Planet Libre.

17 Apr 08:40

Decode your teen's txt lingo!

11 Jun 23:20

True story about Metallica

12 Jun 09:15

Rally racer says he doesn't understand anything his co-driver says.

05 Jun 11:00

3rd person view driving simulator

15 May 19:55

Elephant rock, Iceland

20 May 10:20

Creative and Funny Street Art

20 May 22:05

The Proper Way To Use A Handrail

21 May 03:55

What a liter bottle of soda looks like before compressed air is added

21 May 10:15

The truth about spanish

21 May 11:45

Only one word to describe this.. Smooth.

03 Jun 07:50

F**k FIFA!

15 May 08:55

Was given this advice, tried it, it worked.

Hugo.allamel

ça peut servir

05 May 13:40

Disney has been hiding a secret number, right in front of our eyes

25 Apr 15:00

Wet phone, no problem

22 Apr 22:15

His face... Classic...

04 Apr 00:45

Hair evolution

01 Apr 15:45

International problem/solution chart

17 Mar 00:25

Stare at the green dot and watch what happens to the yellow dots...

18 Mar 03:25

I really think this could be an upgrade to the biking experience at night!

29 Jan 22:35

Bieber at Shawshank