L'IP
SPOOFING
|
Qu'est-ce que c'est ?
L'IP Spoofing signifie usurpation d'adresse IP. Bien que cette attaque soit ancienne, certaines formes d'IP Spoofing sont encore d'actualité. Effectivement, cette attaque peut être utilisée de deux manières différentes :
- La première utilité de l'IP Spoofing va être de falsifier la source d'une attaque. Par exemple, lors d'une attaque de type déni de service, l'adresse IP source des paquets envoyés sera falsifiée pour éviter de localiser la provenance de l'attaque.
- L'autre utilisation de l'IP Spoofing va permettre de profiter d'une relation de confiance entre deux machines pour prendre la main sur l'une des deux. Il s'agit de cette attaque dont il va être question ici.
Description de l'attaque
Il existe plusieurs types d'IP Spoofing. La première est dite Blind Spoofing, c'est une attaque "en aveugle". Les paquets étant forgés avec une adresse IP usurpée, les paquets réponses iront vers cette adresse. Il sera donc impossible à l'attaquant de récupérer ces paquets. Il sera obligé de les "deviner". Cependant, il existe une autre technique que le Blind Spoofing. Il s'agit d'utiliser l'option IP Source Routing qui permet d'imposer une liste d'adresses IP des routeurs que doit emprunter le paquet IP. Il suffit que l'attaquant route le paquet réponse vers un routeur qu'il contrôle pour le récupérer. Néanmoins, la grande majorité des routeurs d'aujourd'hui ne prennent pas en compte cette option IP et jettent tous paquets IP l'utilisant.
La cible de cette attaque sera un service de type rlogin ou rsh (qui ne sont plus très utilisés de nos jours). Ce sont des services avec une authentification basée sur l'adresse IP de la machine cliente. En outre, les protocoles utilisés par ces services sont simples, les réponses attendues n'en sont que plus facilement prédictibles quand il y en a.
A noter : L'IP Spoofing peut être utilisé pour faire du DNS Spoofing...
Cette attaque va se dérouler en plusieurs étapes :
- Trouver la machine de confiance (son adresse IP) qu'accepte le service du serveur cible.
- Mettre hors service cette machine de confiance (avec un SYN Flooding par exemple) pour éviter qu'elle ne réponde aux paquets éventuellement envoyés par le serveur cible.
- Prédire les numéros de séquence TCP du serveur cible. Ce numéro caractérise une connexion TCP (un numéro de séquence initial est généré à chaque nouvelle connexion TCP). C'est un champ de l'en-tête du protocole TCP. De nos jours ce numéro est difficilement prédictible voire impossible sur des systèmes type Linux. Ce qui n'était pas le cas il y a quelques années.
- Lancer l'attaque. Elle va consister à créer une connexion TCP sur le serveur cible. Pour cela, l'attaquant va forger un paquet TCP avec le flag SYN et l'adresse IP source de la machine de confiance. Le serveur cible va répondre par un paquet TCP avec les flags SYN-ACK. L'attaquant, qui aura prédit le numéro de séquence TCP, pourra forger un paquet TCP avec le flag ACK et le bon numéro d'acquittement (numéro de séquence envoyé par le serveur cible incrémenté de 1). Une connexion TCP est alors établie au niveau du serveur cible. L'attaquant n'a plus qu'à envoyer un paquet TCP avec le flag PSH (permettant de remonter directement à l'application les données du paquet) pour envoyer une commande au service (par exemple echo ++ >> /.rhosts). L'attaquant peut accéder librement au serveur cible.
Le schéma suivant illustre cette attaque. La machine A est celle de l'attaquant, la C celle de confiance et enfin Cible qui est le serveur cible. A(C) signifie que la machine A va envoyer un paquet en spoofant l'adresse IP de la machine C :
Conséquences :
- Usurpation d'identité.
- Prise de contrôle du serveur cible.
Comment s'en protéger ?
- Supprimer tous les services de type rsh et rlogin.
- Ne pas utiliser uniquement l'adresse IP comme méthode d'authentification (ajouter au moins un login et un password).
- Vérifier que son système n'a pas des numéros de séquence TCP facilement prédictible.
- Vérifier que la fonction anti-spoofing est bien présente sur le firewall.
LE DNS SPOOFING
|
Qu'est-ce que c'est ?
L'objectif de cette attaque est de rediriger, à leur insu, des Internautes vers des sites pirates. Pour la mener à bien, le pirate utilise des faiblesses du protocole DNS (Domain Name System) et/ou de son implémentation au travers des serveurs de nom de domaine. A titre de rappel, le protocole DNS met en œuvre les mécanismes permettant de faire la correspondance entre une adresse IP et un nom de machine (ex.: www.truc.com). Il existe deux principales attaques de type DNS Spoofing : le DNS ID Spoofing et le DNS Cache Poisoning. Concrètement, le but du pirate est de faire correspondre l'adresse IP d'une machine qu'il contrôle à un nom réel et valide d'une machine publique.
Description de l'attaque
DNS ID Spoofing
Si une machine A veut communiquer avec une machine B, la machine A obligatoirement besoin de l'adresse IP de la machine B. Cependant, il se peut que A possède uniquement le nom de B. Dans ce cas, A va utiliser le protocole DNS pour obtenir l'adresse IP de B à partir de son nom.
Une requête DNS est alors envoyée à un serveur DNS, déclaré au niveau de A, demandant la résolution du nom de B en son adresse IP. Pour identifier cette requête un numéro d'identification (en fait un champ de l'en-tête du protocole DNS) lui est assigné. Ainsi, le serveur DNS enverra la réponse à cette requête avec le même numéro d'identification. L'attaque va donc consister à récupérer ce numéro d'identification (en sniffant, quand l'attaque est effectuée sur le même réseau physique, ou en utilisant une faille des systèmes d'exploitation ou des serveurs DNS qui rendent prédictibles ces numéros) pour pouvoir envoyer une réponse falsifiée avant le serveur DNS. Ainsi, la machine A utilisera, sans le savoir, l'adresse IP du pirate et non celle de la machine B initialement destinatrice. Le schéma ci-dessous illustre simplement le principe du DNS ID Spoofing.
DNS Cache Poisoning
Les serveurs DNS possèdent un cache permettant de garder pendant un certain temps la correspondance entre un nom de machine et son adresse IP. En effet, un serveur DNS n'a les correspondances que pour les machines du domaine sur lequel il a autorité. Pour les autres machines, il contacte le serveur DNS ayant autorité sur le domaine auquel appartiennent ces machines. Ces réponses, pour éviter de sans cesse les redemander aux différents serveurs DNS, seront gardées dans ce cache. Le DNS Cache Poisoning consiste à corrompre ce cache avec de fausses informations. Pour cela le pirate doit avoir sous son contrôle un nom de domaine (par exemple fourbe.com) et le serveur DNS ayant autorité sur celui-ci ns.fourbe.com. L'attaque se déroule en plusieurs étapes :
- Le pirate envoie une requête vers le serveur DNS cible demandant la résolution du nom du domaine fourbe.com (ex.: www.fourbe.com)
- Le serveur DNS cible relaie cette requête à ns.fourbe.com (puisque c'est lui qui a autorité sur le domaine fourbe.com)
- Le serveur DNS du pirate (modifié pour l'occasion) enverra alors, en plus de la réponse, des enregistrements additionnels (dans lesquels se trouvent les informations falsifiées à savoir un nom de machine publique associé à une adresse IP du pirate)
- Les enregistrements additionnels sont alors mis dans le cache du serveur DNS cible
- Une machine faisant une requête sur le serveur DNS cible demandant la résolution d'un des noms corrompus aura pour réponse une adresse IP autre que l'adresse IP réelle associée à cette machine.
Comment s'en protéger ?
- Mettre à jour les serveurs DNS (pour éviter la prédictibilité des numéros d'identification et les failles permettant de prendre le contrôle du serveur)
- Configurer le serveur DNS pour qu'il ne résolve directement que les noms des machines du domaine sur lequel il a autorité
- Limiter le cache et vérifier qu'il ne garde pas les enregistrements additionnels.
- Ne pas baser de systèmes d'authentifications par le nom de domaine : Cela n'est pas fiable du tout.
Publier un commentaire
Blogger Facebook