Skip to content

ICMP-Tunnel

Objectif

Dans ce document, nous allons voir comment créer un tunnel ICMP pour pouvoir contourner le pare-feu d'un hôtel qui n'aurait pas bloqué les flux ICMP, par exemple. Nous allons, via ce tunnel ICMP, créer un proxy pour naviguer sur Internet. Pour ce projet, nous allons utiliser le projet GitHub suivant : ICMPtunnel

Création du serveur

Voici les commandes suivante pour installer et lancer le tunnel icmp

sudo apt install make gcc net-tools
git clone https://github.com/jamesbarlow/icmptunnel
cd icmptunnel
make
sudo echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
sudo ./icmptunnel –sd
sudo ifconfig tun0 10.0.0.1 netmask 255.255.255.0

Création du client

sudo apt install make gcc net-tools
git clone https://github.com/jamesbarlow/icmptunnel
cd icmptunnel
make
./icmptunnel <server> &
sudo ifconfig tun0 10.0.0.2 netmask 255.255.255.0

Tunnelisation des flux

Par un proxy

Crée un serveur proxy socks sur le serveur icmp

docker run -d \
--restart=always \ 
--name socks5 \
-p 1090:9090 \ 
-e PROXY_PORT=9090 \ 
serjs/go-socks5-proxy

source : Github

Modifier le navigateur (Dans cette exemple firefox pour ajouter le proxy)

capture_d'écran_2024-01-09_211353.png

Par SSH (fonctionne pas)

On peut utiliser le logiciel sshuttle qui tunnelise les flux via ssh

sshuttle --latency-buffer-size 802768 -NHr 10.0.0.1 0/0
Les paramêtres supplémentaire permette d'éviter tout problème de connexion mais non

Résultat

Wireshark

En capturant les trames de notre client on peut voire que toutes les trames réseau sont bien tuneeliser sur le serveur.

capture_d'écran_2023-10-13_125842.png

Exemple de rêgle par feux qui bloque les flux TCP/UDP

Exemple de rêgle par feux qui bloque toutes les connexions sortantes (sauf l'ICMP ce qui nous permet de crée le tunnel)

capture_d'écran_2024-01-11_140402.png (Utilisée pour tester le tunnel ICMP dans le lab)