Comment tester un pare-feu avec hping ?

By | October 28, 2016

Comment tester un pare-feu avec hping?

La sécurité d’un système doit être testée fréquemment pour s’assurer qu’elle fonctionne bien. A cause de la complexité des différents environnements, des scanners automatisés ne seront d’aucune utilité dans ce but.
Il existe plusieurs forgeurs de paquets qui vous aideront à manipuler les paquets dans le but de tester vos Firewalls et vos systèmes IDS.
Cet article vous démontrera comment faire ce genre de test en utilisant hping et Tcpdump.
hping est un puissant outil réseau qui permet l’assemblage et l’analyse de paquets de réseau.
Tcpdump permet la capture des paquets dans un réseau.

Vous devez avoir quelques pré-réquis sur le TCP/IP avant d’aller plus loin dans cet article.
Aussi, je vous invite à revoir mes premiers articles sur hping pour avoir une idée de ce que peut faire cet outil.

Partie 1
Nous tenterons nos expériences sur les protocoles TCP, UDP et ICMP. Dans cette première partie, nous forgerons des paquets pour voir les réponses par défaut d’un système à certains paquets réseaux.

PING
Commençons par le protocole ICMP. Lançons un PING vers la machine yao.marty.ci pour vérifier si la machine est reachable.

Pour les options:
-1 représente le protocole ICMP. hping envoi par défaut des segments TCP.
-s 50000 pour le port source
-c 1 le nombre de paquet à envoyer

Dans Tcpdump, on peut voir les échanges qui se sont effectués. A partir de ce 1er paquet envoyé, l’on peut déduire déjà que notre cible peut être atteinte. Notez le ICMP echo reply.

TCP

Testons à présent un protocole très connnu, le Telnet. Cette fois, ce sera un paquet TCP avec une entête marqué par le drapeau SYN. Le SYN étant la 1ère étape dans le Three-Way-Handshake (SYN, SYN ACK, ACK), la cible doit répondre avec un SA (SYN ACK) dans une tentative de continuer la connexion.

-S pour le drapeau Syn
-s 50000 pour le port source
-p 23 pour le port de destination qui représente le protocole Telnet

Notre cible nous a répondu avec un SA, nous pouvons donc déduire que le port 23 est accessible.
Dans Tcpdump, le S. ici représente notre SYN ACK recherché :

UDP

Enfin, envoyons notre dernier paquet pour voir la réponse de notre cible. Le HTTP utilisant le port TCP 80, il serait intéressant de voir la réponse qu’on aura sur le port UDP 80.

Vous devez être habitué maintenant avec ces options à part le -2 qu’on utilise ici pour spécifier le protocole UDP.

Le résultat qu’on obtient est: ICMP Host Unreachable.

Partie 2

Dans la première partie, nous avons vu comment un système doit répondre à certains types de paquets.
Dans cette section, nous verrons comment quelques règles de pare-feu peuvent faire une différence énorme dans les réponses de notre cible.

Nous devons permettre uniquement les paquets qui nous sont nécessaires et réfuser tous les autres. Le seul port dont nous avons besoin dans notre expérience, est le port TCP 23, tous les autres doivent être fermés. Si configuré correctement, le pare-feu sur la cible que nous avons utilisé ne devrait répondre à rien à part le paquet SYN au port TCP 23.

Soit donc notre cible yao.marty.ci avec les règles de pare-feu suivantes :

*La règle 1 dans la chaîne INPUT sert à rejeter toutes les nouvelles connexions qui ne sont pas marquées par le drapeau SYN dans les échanges TCP. Il est très important de n’accepter que ce drapeau car les autres drapeaux (FIN, URG, XMAS, YMAS, etc.) peuvent être abusés par des hackers.
*La règle 2 dans la chaîne INPUT sert à accepter des nouvelles connexions qui sont part d’une connexion existante, et à accepter les connexions dont les paquets ont été vus dans les deux sens.
*bootpc représente le Port UDP 68 utilisé par un client pour recevoir une adresse dynamique d’un serveur DHCP.

PING

Commençons par le Ping.

Dans la première section, nous avons reçu une réponse ICMP echo reply, mais dans notre cas présent, notre paquet a totalement été rejeté. Et on obtient aucune réponse dans Tcpdump à notre ICMP echo request.

TCP
Passons au Telnet:

Le pare-feu autorise l’entrée du paquet et permet une réponse avec un paquet SYN ACK. Si ce paquet avait été marqué par un autre drapeau, le paquet aurait été rejété à cause des règles du pare-feu de la machine yao.marty.ci.

UDP
Terminons avec le UDP 80.

Dans la 1ère partie, nous avons reçu une réponse ICMP Host Unreachable et on aurait eu la même réponse si le pare-feu avait autorisé le paquet. Vu qu’il n’y a eu aucune reponse, on peut conclure que le paquet a été rejété.

Par ces réponses, nous pouvons déduire que notre pare-feu est bien configuré.

Le firewall est l’un des points d’entrée dans un réseau et doit être considéré comme un appareil qui sera testé 24h/24 par de potentiels hackers.
Raison pour laquelle, une fois appliqué, le pare-feu doit être testé régulièrement pour identifier des potentielles failles surtout après des changements dans un réseau.
Le pare-feu doit surtout être adapté aux besoins de l’hôte.

Merci pour votre attention,

mdestroy

Leave a Reply

Your email address will not be published. Required fields are marked *