Proxychains

Dans cet article, je vous propose de partir à la découverte de proxychains. Cet outil permet de router très facilement le trafic d’une application à travers un tunnel SOCKS tel qu’un tunnel SSH. Cela peut être très pratique pour contourner un firewall restrictif laissant passer votre trafic SSH.

SSH encore et toujours !

Créons un tunnel SSH dynamique dans le but d’y faire passer du trafic.

Tunnel SSH dynamique sur le port local 9999
1
ssh -ND 9999 user@host

Pour rappel, cette commande permet de lancer un tunnel dynamique SOCKS sur le port local 9999 de votre machine qui communique directement avec votre serveur SSH distant. Il nous faut donc maintenant un moyen d’envoyer le trafic bloqué par notre firewall dans ce tunnel. Si il s’agit de votre trafic web, vous pouvez directement indiquer votre tunnel à Firefox comme expliqué dans mon article SSH sinon il faudra recourir à proxychains.

Installation de proxychains sous Linux et Mac OS X

Sous linux, votre package manager préféré devrait faire l’affaire (sudo apt-get install proxychains pour Ubuntu/Debian par exemple). Vous pouvez cependant compiler proxychains si vous le désirez. Sous mac OS X, c’est d’ailleurs la solution que je vous recommande vivement. Bien que tout soit expliqué sur la page du projet, voici les lignes de commande que j’ai utilisé chez moi pour compiler proxychains sur mon mac OS X.

Compiler proxychains sous OS X ou linux
1
2
3
4
5
6
7
cd /tmp/
curl https://nodeload.github.com/rofl0r/proxychains/zip/master -o proxychains.zip
unzip -x proxychains.zip
cd proxychains-master
./configure
make
sudo make install

Attention, pour pouvoir compiler sur Mac OS X, il vous faut avoir installé les outils développeur (Xcode).

Utilisation de proxychains

Ça y est, vous avez proxychains ! Il vous faut maintenant créer un fichier de configuration ~/.proxychains/proxychains.conf. Dans celui-ci, on lui précise notre tunnel SSH en 127.0.0.1 sur le port 9999, ainsi que de router aussi les requêtes DNS dans notre tunnel.

Configuration de proxychains
1
2
3
proxy_dns
[ProxyList]
socks5 127.0.0.1 9999

Il ne vous reste plus qu’à lancer vos applications avec proxychains maintenant ! Comment faire ? Rien de plus facile

Utilisation de proxychains
1
proxychains application

Votre dispositif peut être mis à l’épreuve via ce petit test

Vérification du bon fonctionnement du dispositif via le service ifconfig.me
1
2
3
4
5
6
7
8
% curl ifconfig.me
91.x.x.187
% proxychains4 curl ifconfig.me
[proxychains] config file found: /Users/tycale/.proxychains/proxychains.conf
[proxychains] preloading ./libproxychains4.dylib
[proxychains] DLL init
[proxychains] Dynamic chain  ...  127.0.0.1:9999  ...  49.212.202.172:80  ...  OK
94.23.252.75

On voit clairement que les deux adresses IPs sont différentes. Le trafic passe bien par notre proxy SOCKS.

Fonctionnement de proxychains

Proxychains redéfinit la variable d’environment LD_PRELOAD pour y placer son binaire qui va forcer les appels système de connexion à s’effectuer à travers notre proxy SOCKS. Notez qu’il existe d’autres applications sous Linux ayant le même fonctionnement et faisant la même chose tel que tsocks par exemple.

Il est important de comprendre que certains programmes peuvent donc créer des connexions qui évitent d’utiliser ce tunnel SSH en n’utilisant pas un appel système standard.

Conclusion

Proxychains est un outil incroyable pour tunneliser et chiffrer votre trafic, mangez-en !

Comments