Python Network Attacks

Transcription

Python Network Attacks
Python Network Attacks
CHAKROUN SLIM (GI2)
EL MOUADDEB SIRINE (RT3)
BEL HAJ YAHYA EMNA (RT4)
BENJEMAA TAKWA (GI1)
SAKLY AZIZ (GI1)
Python Network Attacks |SECURILIGHT 2014
Table de matière
1- Présentation de l’atelier.........................................................................2
2- Man In The Middle.................................................................................2
a- Définition...........................................................................................................2
b- Arp spoofing......................................................................................................3
c- Terminologie......................................................................................................4
3- DDOS.........................................................................................................................4
a- Définition............................................................................................................4
b- Terminologie.......................................................................................................4
4- Wireless SSID Sniffer ..............................................................................5
5- Présentation des outils utilisés...............................................................6
a- BackTrack.............................................................................................................6
b- Kali........................................................................................................................7
c- Scapy....................................................................................................................7
d- WireShark............................................................................................................7
e- Python..................................................................................................................8
6- Architecture/Topologie du réseau .........................................................8
7- Un scénario de test................................................................................10
8- Conclusion.............................................................................................14
1
Python Network Attacks |SECURILIGHT 2014
1- Présentation de l’atelier
A travers notre atelier intitulé "Python Network Attacks" nous allons simuler
quelques attaques réseaux tels (DDOS , MITM , Wireless SSID Sniffer) que en
utilisant le langage de programmation des scripts Python.
2- Man In The Middle :
a. Définition :
Les attaques de type Man-In-the-Middle sont très faciles à
comprendre. Man-in-the-Middle signifie l'homme du milieu. Cette attaque fait
intervenir trois protagonistes : le client, le serveur et l'attaquant. Le but de
l'attaquant est de se faire passer pour le client auprès du serveur et se faire
passer pour le serveur auprès du client. Il devient ainsi l'homme du milieu. Cela
permet de surveiller tout le trafic réseau entre le client et le serveur, et de le
modifier à sa guise pour l'obtention d'informations (mots de passe, accès
système, etc...)
Plusieurs protocoles internet sont vulnérable à ce type d’attaque plus
particulièrement les protocoles http, ftp et ARP.
L'objectif de l'attaque consiste à s'interposer entre deux machines du réseau et de
transmettre à chacune un paquet ARP falsifié indiquant que l'adresse ARP (adresse
MAC) de l'autre machine a changé, l'adresse ARP fournie étant celle de l'attaquant.
Les deux machines cibles vont ainsi mettre à jour leur table dynamique appelée
Cache ARP. On parle ainsi de « ARP cache poisoning » (parfois « ARP spoofing » ou
« ARP redirect ») pour désigner ce type d'attaque.
2
Python Network Attacks |SECURILIGHT 2014
De cette manière, à chaque fois qu'une des deux machines souhaitera communiquer
avec la machine distante, les paquets seront envoyés à l'attaquant, qui les
transmettra de manière transparente à la machine destinatrice.
Exemple
de
MITM
sur
une
authentification
sur
Facebook.com :
b- Arp spoofing :
L'ARP spoofing, ou ARP poisoning, est un moyen utilisé en informatique pour
détourner des flux de communication transitant sur un réseau local, cette technique
permet d'écouter et de corrompre mais aussi d'usurper une adresse IP ou de bloquer
du trafic. Cela consiste à se faire passer pour quelqu'un d'autre sur un réseau, les cas
les plus répandus étant les réseaux Ethernet et Wifi.
Elle aussi en quelque sorte introduit la technique de Man in the Middle.
3
Python Network Attacks |SECURILIGHT 2014
c- Terminologie :
Adresse IP : Une adresse IP (avec IP pour Internet Protocol) est un numéro
d’identification qui est attribué de façon permanente ou provisoire à chaque
appareil connecté à un réseau informatique utilisant l'Internet Protocol.
Adresse Mac : une adresse MAC (Media Access Control) est un identifiant physique
constitué de 6 octets, elle est attribuée par le constructeur de l’équipement et «
hard codé » sur la carte (il est possible de la changer, mais ce n’est pas le but de cet
article.) Elle consiste en six nombres hexadécimaux séparés par des « – » ou des « :
», il existe potentiellement
248 (environ 281 000 milliards) d’adresses MAC possible, il est donc quasiment
impossible de se retrouver avec un doublon sur le réseau. Notez que l’adresse de
broadcast est: FF:FF:FF:FF:FF:FF, les données seront envoyées à l’ensemble du
réseau local.
Protocole ARP : L’Address resolution protocol (ARP, protocole de résolution
d’adresse) est un protocole effectuant la traduction d’une adresse de protocole de
couche réseau (typiquement une adresse IPv4) en une adresse MAC (typiquement
une adresse ethernet), ou même de tout matériel de couche de liaison. Il se situe à
l’interface entre la couche réseau (couche 3 du modèle OSI) et la couche de liaison
(couche 2 du modèle OSI).
3- DDOS :
a- Définition :
Le déni de service (ou DoS : Denial of Service) est une attaque qui vise à rendre
une application informatique incapable de répondre aux requêtes de ses utilisateurs.
Les serveurs de messagerie peuvent être victimes de ces attaques. Le déni de service
distribué (DDos pour Distributed DoS) est une attaque de DoS émise depuis plusieurs
origines distinctes. Ce type d'attaque est extrêmement complexe à bloquer, car il est
souvent impossible de différencier une vraie requête d'une requête de DDos.
L'attaque par DDos utilise très souvent une multitude de PC zombies infectés par des
backdoors exploités à distance par un pirate et attaquant simultanément une cible
unique.
b- Terminologie :
On distingue habituellement deux types de dénis de service :

Les dénis de service par saturation, consistant à submerger une machine de
requêtes, afin qu'elle ne soit plus capable de répondre aux requêtes réelles ;

Les dénis de service par exploitation de vulnérabilités, consistant à exploiter une
faille du système distant afin de le rendre inutilisable.
Le principe des attaques par déni de service consiste à envoyer des paquets IPou des
données de taille ou de constitution inhabituelle, afin de provoquer une saturation
ou un état instable des machines victimes et de les empêcher ainsi d'assurer les
services réseau qu'elles proposent.
4
Python Network Attacks |SECURILIGHT 2014
Lorsqu'un déni de service est provoqué par plusieurs machines, on parle alors de
« déni de service distribué » (noté DDOS pour Distributed Denial of Service). Les
attaques par déni de service distribué les plus connues sont Tribal Flood
Network (notée TFN) et Trinoo.
4- Wireless SSID Sniffer :
Tout comme sur un réseau filaire, il est possible sur un réseau sans fil
(ou wireless) d'observer passivement le trafic, ce que l'on appelle plus
communément sniffer. Sur un réseau filaire, ethernet par exemple, il suffit d'avoir
accès à un port d'un quelconque hub ou switch connecté au réseau local pour
pouvoir tranquillement jouer les voyeurs (moyennant l'investissement dans une
paire de jumelles adéquates dans le cas d'un switch). En règle générale, cela impose
à un éventuel attaquant d'obtenir un accès physique aux locaux et un peu d'intimité
pour établir une relation de confiance avec la prise réseau qu'il aura repérée.Sur un
réseau sans fil, c'est encore plus simple. Pas besoin de trouver une prise, ni même de
se faire passer pour le livreur de pizzas pour pénétrer physiquement sur le site
concerné. Les ondes radios, ayant un esprit libertaire assez développé, sont
relativement délicates à confiner dans une enceinte fermée. Il suffit à notre méchant
pirate de garer sa vieille Panda Fire noire (avec les pare-chocs violets) à proximité de
l'immeuble dans lequel est déployé le réseau sans fil, et pour peu qu'il ait une carte
réseau d'une puissance suffisante, il pourra accéder sans effort au trafic interne de
ce réseau.
5
Python Network Attacks |SECURILIGHT 2014
5- Présentation des outils utilisés :
a- BackTrack :
BackTrack est une distribution GNU/linux reconnue par les professionnels
comme complète et efficace en matière d’analyse réseau et de test d’intrusion.
Cette distribution est idéale pour tester l'efficacité de vos mesures de sécurité sur
votre ordinateur ou votre réseau et ce en l'installant, ou à partir d'un live DVD. Les
environnements graphiques proposés par défaut sont KDE et GNOME. Issue de
Whax et ASC (Auditor Security Collection), son système est maintenant basé sur
Ubuntu (depuis sa version 4, dans ses versions précédentes, il était basé sur
Slackware). Backtrack est composé d’une série d’outils (plus de 300) permettant à
toute personne de sécuriser son réseau en testant ses vulnérabilités.
b- Kali :
La dernière version de Backtrack (5 release 3) ne sera pas remplacée par la
Backtrack 6 mais par kali-linux 1.0. Cette nouvelle apporte de nouvelles
fonctionnalités mais aussi et surtout elle n’est plus basée sur la distribution Ubuntu
mais reprends comme base une Debian ! Je suis ravi de ce choix car j’ai moi même
décidé de m’investir sur la distribution Debian il y a quelques mois car je trouve
qu’Ubuntu veut aller trop vite et veut couvrir trop de fonctionnalités par défaut. Cela
entraine malheureusement des mises à jour et vulnérabilités plus fréquentes.
6
Python Network Attacks |SECURILIGHT 2014
c- Scapy :
Scapy est un logiciel libre de manipulation de paquets, écrit en langage
python. Il est capable, entre autres, d'intercepter le trafic sur un segment réseau, de
générer des paquets dans un nombre important de protocoles, de réaliser une prise
d'empreinte de la pile TCP/IP, de faire un traceroute et d'analyser le réseau.
Cet utilitaire permet de manipuler, forger, décoder, émettre, recevoir les
paquets d’une multitude de protocoles (ARP, DHCP, DNS, ICMP, IP...).
Il peut facilement manipuler la plupart des tâches classiques comme le scan,
tracerouting, des investigations, des attaques ou la découverte de réseau (il peut
remplacer hping, une infime partie de nmap, arpspoof, arp-sk, arping, tcpdump,
WireShark, p0f, etc).
Il permet d’exécuter des tâches spécifiques que la plupart des autres outils ne
sont pas capable de traiter, comme envoyer des trames invalides, injecter ses
propres trames 802.11, combiner des techniques (VLAN hopping+ARP cache
poisoning, VOIP decoding sur canal chiffré en WEP...).
d- WireShark :
Wireshark est analyseur de protocole réseau très puissant.
Le logiciel vous permettra de scanner ce qu'il se passe sur un réseau en analysant les
paquets
qui
y
transitent.
Grâce aux nombreux utilitaires présent dans le logiciel, vous arriverez repérer les
différents protocoles utilisés par vos logiciels favoris : HTTP, FTP, etc... Et si vous
désirez connaître le chemin exact qu'un paquet, une fonction: Follow TCP Stream est
là
pour
reconstituer
l'intégralité
de
l'échange.
Pour ne voir que des paquets particuliers, des filtres répondant à de nombreux
critères personnalisables, sont présents.
7
Python Network Attacks |SECURILIGHT 2014
e- Python :
C’est un langage de programmation très puissant qui est de plus en plus
utilisé pour développer des applications rapidement qui soient tout de même
efficaces ! Il est très utilisé dans le monde scientifique pour sa syntaxe aérée et une
vitesse d'exécution correcte. Ce langage est aussi excellent pour la création de
prototypes car sa simplicité permet d'implémenter un projet aussi vite que l'on y
réfléchit ! Il est aussi utilisé en modélisation 3D dans des programmes comme
Blender par exemple. Bref, c'est un langage de plus en plus utilisé et vous en
deviendrez très certainement fan rapidement !
Les principales caractéristiques du langage Python sont :

C'est un langage interprété, c'est-à-dire que le code ne nécessite pas d'être
compilé pour être exécuté (nous verrons ça plus tard, ne vous en faites pas !)

Il est multiplateforme et il est d'ailleurs natif sur tous les systèmes Unix (Mac
OS, Linux) et ne nécessite pas d'y être installé !

Il peut être utilisé en tant que langage de script pour exécuter une suite
simple de commande mais c'est aussi un langage objet qui permet de
développer des applications solidement construites !

Sa syntaxe est très simple et aérée et permet de se libérer de tous les
caractères de démarquation des blocs de code.
6- Architecture/Topologie du réseau :
Pour simuler ces attaques, nous allons utiliser 2 machines : une machine victime
qui est notre machine physique et une machine virtuelle qui est la machine du
pirate.
Ces deux machines doivent être sur le même réseau.
8
Python Network Attacks |SECURILIGHT 2014
Architecture du réseau

Adresse IP de la machine victime :

Adresse IP de la machine du pirate :
Pour vérifier que les deux machines sont situées sur le même réseau on va
utiliser la commande Ping.

Ping @IP machine victime :
9
Python Network Attacks |SECURILIGHT 2014

7-
Ping @IP machine pirate :
Un scénario de test:
 Attaque Man In The Middle:
Le protocole ARP (Address Resolution Protocol) permet d'associer à chaque
adresse IP une adresse MAC pour connaitre les machines sur le réseau et donc
savoir ou router les paquets. , toute machine connectée à un réseau possède un
cache ARP de toutes les adresses IP/MAC des machines du réseau.L’ordinateur
192.168.10.22 envoie sur le réseau une requête « arp who-has » pour savoir
l’adresse MAC du routeur qui a l’adresse IP 192.168.10.1 , le routeur répond « arp isat » à 192.168.10.25 avec son adresse MAC
Au cours d’une attaque Mitm le pirate va exploiter le fait que le trafic entre le
routeur et l’ordinateur n’est pas crypté pour se placer au milieu et faire transiter
tout le trafic à travers lui. Le pirate envoie à la machine victime une requête arp
192.168.10.1 is-at C :C :C :C :C qui est son adresse MAC, ainsi l se fait passer pour le
10
Python Network Attacks |SECURILIGHT 2014
routeur.
outeur une requête arp 192.168.10.25 is-at C :C :C :C
:C :C et se fait passer ainsi pour la machine victime. Passons à la partie pratique
après avoir vérifié que les machines soient sur le même réseau il faut tout d'abord
empoisonner la victime .
on
va écrire une fonction « v_poison() » pour intercepter la communication entre la
victime et le routeur.
Ensuite on va empoisonner le routeur pour cela on va écrire la fonction gw_poison().
Pour assurer la commutation des paquets de la victime vers le routeur on va
utiliser la commande echo 1 dans notre script avec la commande « os.system »
comme indiqué ci dessous:




iface : désigne l'interface sur laquelle snifer
filter : filtre les paquets à garder d'après une chaîne de caractère.
prn :fonction à appliquer à chaque paquet.
dnshandle : Avec cete fonction on va afficher seulement les
paquet dns qui contient le nom de site par exmple
www.google.com .
Maintenant la machine victime connecte sur le site www.google.com .
En exécutant le script écrit précédemment sur la machine victime on aura l'affichage
suivant.
11
Python Network Attacks |SECURILIGHT 2014
 Attaque DDOS:
Les étapes de la réalisation de l’attaque DDOS sont précisées ci-dessous :
1)
Téléchargement du script torshammer.py à partir du site
http://packetstormsecurity.com/files/download/98831/torshammer.tgz
2)
Sur le terminal on tape :
cd Desktop/torshammer
./torshammer.py -t www.example.com -r 50000 ( 50000 étant le
nombre de threads à poster , plus le nombre de threads plus efficace serait
l'attaque )
Les arguments de torshammer.py sont :
-t|–target <Hostname|IP>
-r|–threads <Number of threads> Defaults to 256
-p|–port <Web Server Port> Defaults to 80
-T|–tor Enable anonymising through tor on 127.0.0.1:9050
-h|–help shows this help
12
Python Network Attacks |SECURILIGHT 2014
Résultat:
 Wireless SSID sniffer:
Code en python:
13
Python Network Attacks |SECURILIGHT 2014
Application sur un LAN :
8- Conclusion :
A travers cet atelier on a constaté que les attaques ne sont pas trop compliquées
à réaliser. C'est pour cette raison qu'il faut être conscient de l'importance de la
sécurité informatique" surtout qu'on est dans un monde où tout est connecté
14