Rechercher
Contactez-nous Suivez-nous sur Twitter En francais English Language
 

Abonnez-vous gratuitement à notre NEWSLETTER

Newsletter FR

Newsletter EN

Vulnérabilités

Se désabonner

Frédéric Charpentier, XMCO Partners : Quelle est cette nouvelle méthode découverte par Dan Kaminsky ?

juillet 2008 par Marc Jacob

Suite à une fuite d’information (leakage) malheureuse (1), certains détails de cette méthode d’attaque ont été publiés. Ces informations n’ont pas été confirmées par Kaminsky et sont donc à prendre avec précaution.

Notre première analyse de la faille (2) donnait quelques pistes sur la vulnérabilité en question. Nous vous proposons ici une nouvelle analyse avec les nouveaux détails publiés durant quelques heures Matasano.

Toute l’astuce repose sur le fait que l’attaquant demande un enregistrement volontairement inexistant aux serveurs DNS de la victime. Par exemple : L’attaquant demande la résolution de "inexistant.xmco.com" au serveur DNS du FAI de la victime "ns.fai.com". Pendant que le serveur DNS de "fai.com" réalise une requête récursive pour résoudre ce nom qui n’existe pas, l’attaquant s’empresse d’envoyer une réponse spoofée. Le serveur DNS victime va donc recevoir deux réponses : la première du serveur DNS d’autorité qui ne peut résoudre complètement la requête (nom inexistant) et la seconde du pirate assurant la résolution complète de la requête demandée. Dans le cas où deux réponses légitimes sont reçues par un serveur DNS, le protocole prévoit d’utiliser la réponse la plus complète ; dans notre exemple, la réponse spoofée par le pirate. Le protocole prévoit dans ce cas d’accorder une grande confiance au serveur dont la réponse et la plus complète : ici, le pirate.

Cette concurrence sur la confiance est la base de l’attaque DNS qui a fait la une des médias début juillet.

Toutefois, cette attaque n’est pas aussi simple. En effet, pour que la réponse envoyée par le pirate soit traitée, celle-ci doit contenir le même identifiant DNS (ID) utilisé par la requête récursive envoyée au serveur d’autorité (codé sur 16 bits soit 1 chance sur 65536). Le pirate doit donc envoyer de une à un maximum de 65536 requêtes différentes sur le serveur DNS de "fai.com" (10 minutes), avec des demandes pour résoudre de nombreux noms de domaine INEXISTANTS (inexistant1.xmcopartners.com, inexistant2.xmco.com..., inexistant65536.xmco.com). À chaque requête, une réponse forgée sera envoyée avec un QID incrémenté.

La méthode de Dan Kaminsky ne s’arrête pas là ! En effet, le pirate peut également exploiter le champ (ou enregistrement) DNS nommé RR : Resource Records. En insérant un RR additionnel dans la réponse, un pirate pourrait modifier le cache de manière à changer le serveur d’autorité du domaine visé (dans notre exemple "xmco.com").
Comme la réponse du DNS pirate est considérée « de confiance » car plus complète, le champs RR additionnel sera pris en compte par le serveur DNS victime.

Ces informations nous laissent penser que Microsoft a corrigé le serveur DNS et le client DNS dans son patch de sécurité de Juillet 2008.

Prenons un exemple concret :

• Rappel sur le fonctionnement DNS :

1) Un utilisateur demande l’adresse IP de www.xmco.com à son serveur DNS (ns.fai.com)
2) Le serveur DNS du FAI envoie une requête récursive au serveur DNS d’autorité (ns.xmco.com) du domaine « xmco.com ». Cette requête possède un ID (identifiant de sécurité).
3) Le serveur d’autorité renvoie l’adresse IP associée à www.xmco.com au serveur DNS du FAI dans une réponse DNS contenant le même ID que la requête.
4) La réponse est alors renvoyée à l’utilisateur.

• L’attaque de Dan Kaminsky : étape 1

1) Un pirate envoie de 1 à 65536 requêtes DNS concernant des noms inconnus (inexistantXXXX.xmco.com) au serveur DNS du FAI (ns.fai.com) de la victime. Ce serveur envoie alors des requêtes récursives au serveur DNS d’autorité du domaine « xmco.com » (ns.xmco.com).
2) Le serveur DNS « ns.xmco.com » répond en indiquant que le nom demandé est inconnu. La réponse contient uniquement l’adresse du domaine NX (l’adresse de xmco.com) avec l’identifiant contenu dans la requête.

Le pirate renvoie également une réponse spoofée avec un champ RR additionnel malicieux pour chaque requête envoyée en espérant que le ID utilisé soit le même que celui utilisé avec le serveur d’autorité (ns.xmco.com). Seule la réponse forgée possédant le bon ID sera traitée.

• L’attaque de Dan Kaminsky : étape 2

Une fois que le pirate a lancé les nombreuses requêtes DNS et les réponses associées, ce dernier trouve l’une des réponses envoyées par le pirate contient le bon ID DNS (ici 2222).

1) Le pirate envoie une requête DNS sur le nom de domaine inexistant « inexistant02222.xmco.com » au serveur DNS du FAI (82.82.82.82)
2) Le serveur DNS du FAI renvoie la requête au serveur d’autorité de « xmco.com » (ns.xmco.com) avec le ID=2222.
3) Le pirate envoie une réponse DNS spoofée avec l’ID=2222 et l’adresse IP de « inexistant02222.xmco.com ». Cette réponse inclut également un champ RR afin de mettre à jour le cache du serveur DNS du FAI et de modifier l’adresse IP du serveur d’autorité de « xmco.com » par l’adresse IP du serveur DNS du pirate.
Le serveur d’autorité a également envoyé une réponse or celle-ci indique que le nom « inexistant02222.xmco.com » est inconnue.
Le serveur DNS du FAI va donc recevoir 2 réponses DNS légitimes.
Toutefois, seule la réponse forgée par le pirate sera prise en compte, car elle résout complètement le nom de domaine « inexistant02222.xmco.com ». L’instruction RR remplacera également le cache du serveur DNS du FAI. Ainsi, toutes les nouvelles requêtes DNS (*.xmco.com) de tous les clients du serveur DNS du FAI seront redirigées vers le serveur DNS du pirate.
Le pirate maitrise désormais le domaine xmco.com : toutes les résolutions de noms pour ce domaine seront transmises au DNS pirate.


(1) http://www.matasano.com/log/1105/regarding-the-post-on-chargen-earl

(2) http://www.globalsecuritymag.fr/Frederic-Charpentier-XMCO-Partners,20080711,4038)


Articles connexes:

Voir les articles précédents

    

Voir les articles suivants