PING


 

Un ping veut dire Paquet Internet Groper, il consiste à envoyer des paquets ICMP Echo Internet Control Message Protocol) à une interface sur un ordinateur ou un périphérique réseau. Si l'appareil ou la carte réseau de la cible est allumée et est configurée pour répondre alors elle renvoie à la machine d'origine des paquets de réponse ICMP Echo.

 

Cela nous permet de savoir si un hôte est actif et accepte le trafic, on connaît aussi le temps qu'il faut au paquet pour atteindre la cible et revenir, et donc connaître la fiabilité du réseau entre les deux correspondants.

 

Essayons, que ce soit sur Mac, Windows ou Linux, la commande se fait dans le terminal ou le CMD

 

On tape ping "IP ou URL", ici ping padawanhacker.com

 

 

Sur Mac et Linux, ping émet en continu des paquets, pour l'arréter faire ctrl+c, sur Windows il envoie par défaut 4 paquets.

 

 

On voit ici que 83 paquets ont été transmis et 83 reçut

 

Analysons un paquet :

 

 

  • La taille du paquet est de 64 bytes, c'est à dire 64 octets
  • Ensuite nous avons 356.204.150.5 qui est l'adresse IP de Padawanhacker (au passage on obtient l'IP de la cible)
  • icmp_seq=75 est l'ordre du paquet  (c'est le 757ème paquet)
  • ttl=75 est la durée de vie du paquet c'est à dire le nombre de sauts qu'il effectuera avant d'expirer
  • time=52.235ms est durée du voyage aller retour du paquet

 

 

 


Hacking éthique avec Scapy

 

Comme nous aimons savoir tout faire par nous même mettons les main dans le cambouis et partons à la découverte de Scapy (lien vers la documentation ici).

 

Scapy est un outil codé en python qui fait parti de la bibliothèque python mais que l'on va utiliser seul à partir du terminal. C’est un outil multifonction puissant permettant de forger des paquets, sniffer le réseau, scanner, tester et même attaquer une cible, il a été créé par Philippe Biondy.

 

Ici il est beaucoup plus simple d'utiliser Linux ou mac pour l'installation, pour Windows mieux vaut installer kali rolling grâce au WSL (voir page Créer son laboratoire de hacking) voici la procédure d'installation de Scapy, rendez-vous sur GitHub.

 

 

Ensuite allons dans le fichier scapy en tapant cd scapy/

 

Pour l’exécuter tapez sudo ./run-sacpy

 

 

Et voilà c'est déjà fait...merci Linux

 

 

Maintenant apprenons à nous en servir : tout d'abord recherchons tous les protocoles que peut utiliser scapy

 

Scapy doit être lancé et vous invite tout comme python par trois chevrons à taper votre commande >>>

 

Tapez ls(IP)

 

 

La liste est impressionnante, ici dans ce chapitre nous voulons émettre un paquet ICMP afin de reproduire une requête et une réponse ping nous même. Recherchons ICMP :

 

 

Il supporte près de 300 protocoles réseau

 

Si nous tapons ls(ICMP) nous avons le détail de ce qui constitue le protocole ICMP

 

 

Pour connaître les commandes de base tapez lsc()

 

 

 

Revenons à notre paquet ICMP,

 

Voyons la trame Ethernet d'un paquet (voir chapitre Architecture d'internet) en tapant ls(Ether), cette trame correspond à la couche réseau (link layer) du modèle TCP/IP

 

Voici la structure d'une trame Ethernet

 

 

on voit ici que la trame Ethernet utilise l'adresse mac du destinataire et celle de la source

 

Forgeons maintenant un paquet ICMP à partir de la couche IP, elle correspond à la couche internet (network layer) du modèle TCP/IP

 

 

Ici IP() et ICMP() sont séparés par / qui permet l'encapsulation, il est aussi possible de faire Ether() / IP() / TCP() etc...en rensignant chaque couche du paquet.

 

Si vous voulez bien comprendre cette notion d'encapsulation rendez-vous sur le page architecture d'internet de padawanhacker.com

 

 Nous pouvons grâce à la commande hexdump(p)  voire une représentation hexadécimale du paquet (ainsi qu'une représentation ASCII)

 

 

Nous pouvons également avoir une représentation plus complète et mieux compréhensible par l'homme en faisant un p.pdfdump('p.pdf')

 

Avant ça il faut installer le package python3-pyx

 

 

Ensuite il faut taper dan scapy >>> import warnings

                                                            warnings.filterwarnings("ignore", category=DeprecationWarning)

 

Puis enfin p.pdfdump('p.pdf')

 

 

Et là c'est le Graal, si je ne vous ai pas encore perdu bravo, pour ouvrir le fichier p.pdf cherchez le dans vos dossier et ouvrez le et là...

 

Visualiser le paquet de cette manière va nous aider plus bas dans wireshark

 

 

Pour voir comment est forgé le paquet taper p.summary()

 

 

Et maintenant envoyons le paquet en faisant send(p) puis q=sr1(p) et enfin q.summary()

 

 

Voilà vous savez maintenant envoyer vous même un paquet ICMP Echo grâce à scapy

 

Voici pour finir un tour de hacker qui s'appelle le "ping de la mort", à ne pas essayer sur internet mais vous pouvez le faire sur votre propre laboratoire de hacking. Le ping de la mort désigne un paquet ICMP dont la taille excède les capacités de la machine. Cela peut provoquer une erreur sérieuse du système cible.

 

Avec scapy tapez : send(fragment(IP(dst='taper ici l'IP cible') / ICMP() / ('X'*60000)))

 

Dans cet exemple nous envoyons 60000X