TP2 Part 3 : DNS Spoof¶
DNS. Casser. 🐈
1. Intro¶
Dukoo. DNS spoof.
L'attaque DNS Spoof désigne le fait d'usurper l'identité du serveur DNS que le client utilise.
Généralement ça commence par un MITM pour voir tout le trafic du client. Et on peut alors agir/réagir quand le client envoie des requêtes DNS.
Warning
Tout ça est possible car par défaut, le protocole DNS n'utilise aucun chiffrement : tout est en clair.
C'est un sujet un peu sensible, ou du moins mon avis sur le sujet l'est, alors je parlerai peu de ça ici, demandez-moi si vous voulez.
N'importe quel client d'un réseau peut cependant configurer sa machine ou spécifiquement son navigateur, pour faire du DoH (DNS over HTTPS) ou du DoT (DNS over TLS) et ainsi, chiffrer tout le traffic DNS que la machine émet et reçoit.
Pareil, plusieurs façons d'y arriver, et pour nous dans ce TP :
-
vu qu'on est en MITM
- que ce soit avec ARP spoof ou DHCP spoof
- on peut intercepter les requêtes DNS du client (genre on les laisse pas partir vers internet)
- et répondre arbitrairement au client (donc indiquer que
efrei.frcorrespond à l'adresse IP que l'attaquant choisit) - évidemment il faut usurper l'adresse IP du serveur DNS légitime quand on répond (c'est à dire répondre avec
1.1.1.1en adresse IP source)
-
but wait, you said DHCP spoof
- quand on répond au client en DHCP spoof, on peut aussi juste lui indiquer que son DNS, c'est l'attaquant
- et bonne journée, pas besoin de se casser le crâner à intercepter ou quoi
Info
En vrai y'a des tonnes de façons de mener cette attaque.
Si tu veux prendre du skill, en tout, juste développe le toi-même.
Je conseille Python avec la librairie Scapy, c'est une dinguerie ce que tu peux faire en genre 5 lignes.
T'façon tant que vous savez pas dév à peu près correctement dans au moins un langage, bon, vous méritez pas le nom de juste informaticien.
Ha et j'ai dit toi-même, c'est ton cerveau qui doit le craft, se buter dessus et retourner le problème. Si tu le vibecodes ça n'a aucun intérêt, parce que la démarche c'est précisément pour faire fonctionner TA cognition.
Je propose d'aller au plus simple :
- utiliser DHCP spoof
- indiquer au client que le serveur DNS c'est la machine attaquante
- quand le client fait une requête DNS, il l'enverra directement à l'attaquant (même pas de MITM nécessaire)
- faire tourner un
dnsmasqlocal en mode DNS (oui il fait serveur DNS aussi, d'où son nom à la base) pour répondre ce qu'on veut au client
Ha, et on est pas dans le rôle de l'adminsys là. We hax. Fuck le fichier de conf propre avec le beau dnsmasq.service qu'on manipule avec systemctl.
On va tout faire "oneshot" à la main, avec des vieux fichiers qui traînent dans /tmp, bien dégueu là. No sarcasm :)
On va droit au but.
2. Go for it¶
A. Setup¶
Deeeeeeeeeeeeeeeee toute évidence, tout est à réaliser sur la machine attaquante.
➜ Préparer le DNS spoof
- créer un fichier
/tmp/spoofed_hostsavec le contenu :
Note
Euh tu remplaces <ATTACKER_IP> par l'adresse IP de ta machine attaquante of course.
- créer un
/tmp/dnsmasq.confavec le contenu suivant :
interface=<INTERFACE>
listen-address=<ATTACKER_IP>
port=53
no-hosts
addn-hosts=/tmp/dns_spoof_hosts
no-resolv
server=1.1.1.1
server=8.8.8.8
- (installer puis) lancer
dnsmasqa la manooo dans un shell avec :
- si t'as un firewall sur ta machine attaquante, ouvre le port 53/udp
Note
Le port 53/udp est le port standard sur lequel écoute un serveur DNS.
Et ici, on va faire tourner un serveur DNS (dnsmasq) sur la machine de l'attaquant.
dnsmasq va écouter sur le port 53/udp pour attendre les requêtes des clients, donc ouais faut pas que le bro firewall bloque ça, et qu'il laisse passer vers dnsmasq.

B. Vérification¶
➜ S'assurer que c'est up & running, on en profite pour réviser un peu de shell :
- une commande
ps -efavec un| grepqui met en évidence le processdnsmasq - une commande
ss(avec les bonnes options, voir mémo Rocky) avec un| grepqui met en évidencednsmasqen écoute sur un port -
une commande
dig(oudrill) pour faire une requête DNS légitime :- doit être envoyée à l'adresse
1.1.1.1(pour voir la réponse d'un serveur légitime) - requête pour résoudre
efrei.fr - l'IP publique associée à
efrei.frsera retournée
- doit être envoyée à l'adresse
-
une commande
dig(oudrill) pour faire une requête DNS vers votrednsmasq:- doit être envoyée à l'adresse
127.0.0.1(dnsmasqqui répondra) - requête pour résoudre
efrei.fr - vous devriez constater que c'est l'IP de la machine attaquante qui est retournée
- doit être envoyée à l'adresse
C. Hax ?¶
➜ Relance ton attaque DHCP spoof depuis la machine attaquante
- il faut modifier ta conf : ton rogue DHCP doit indiquer au client l'adresse IP de la machine attaquante comme serveur DNS
- montre la ligne de conf modifiée dans le compte-rendu !
➜ Test test test : depuis la machine bowser
- récupère une adresse IP en DHCP
- constate que l'adresse IP du DNS que t'as récupéré c'est la machine attaquante
- fais un
ping efrei.fret constate que tu ping la machine attaquante
➜ WIRESHARK
- lance Wireshark sur la machine attaquante
- capturer le trafic quand
bowserfait unping efrei.fr
🦈 p4_dns_spoof.pcap, on doit y voir :
- la requête DNS du client
- la réponse de votre DNS malveillant
- le
pingqui part vers votre machine attaquante (genre l'IP de destination c'est la machine attaquante)
Note
Si bowser ouvre un navigateur et va sur https://efrei.fr il se passe des dingueries là.
T'as qu'à tester en remplaçant bowser par une VM avec interface graphique s'tu veux.