Graftcp - Un petit tool capable de proxifier n'importe quel programme

par Korben -

Voici un outil bien pratique pour faire passer vos connexions TCP par un proxy SOCKS5 ou HTTP. Ça s’appelle graftcp et grâce à lui, vous pouvez dire adieu à vos galères pour proxifier certains outils.

Comparé à des solutions comme tsocks, proxychains ou proxychains-ng, graftcp n’utilise pas la méthode LD_PRELOAD qui ne fonctionne que pour les programmes liés dynamiquement. Par exemple, les applications construites avec Go ne peuvent pas être “accrochées” par proxychains-ng. Alors que Graftcp, lui, peut suivre et modifier les connexions de n’importe quel programme, ce qui le rend très versatile.

Pour l’essayer, c’est fastoche. Sur Linux, compilez graftcp et graftcp-local avec Go ou téléchargez directement les binaires Debian ou Arch.

Voici comment faire :

  1. Clonez le dépôt : git clone https://github.com/hmgle/graftcp.git cd graftcp make
  2. Après compilation, utilisez les binaires résultants dans local/graftcp-local et graftcp. Vous pouvez aussi les installer dans le système : sudo make install<br></br>sudo make install_systemd<br></br>sudo make enable_systemd
  3. Lancez graftcp-local avec l’adresse de votre proxy SOCKS5, genre 127.0.0.1:1080. Par exemple : local/graftcp-local -socks5 127.0.0.1:1080
  4. Utilisez ensuite graftcp pour encapsuler vos programmes afin qu’ils passent par le proxy sans broncher. Exemple pour installer un package Go : ./graftcp go get -v golang.org/x/net/proxy

Ou pour surfer pépouze avec Chromium ou Firefox : ./graftcp chromium-browser

Même votre shell préféré peut surfer incognito si vous le lancez avec graftcp : ./graftcp bash wget https://www.google.com

Sous le capot, Graftcp fork et trace le programme avec ptrace. À chaque appel connect, il attrape l’adresse de destination et la transmet par pipe à graftcp-local. Ensuite, il la modifie pour pointer vers graftcp-local avant de relancer le syscall. L’appli croit alors qu’elle cause à sa destination mais en fait, elle parle à graftcp-local qui se charge de tunneler le trafic dans le proxy SOCKS. Malin non ?

Evidemment, vous pouvez personnaliser le comportement de graftcp en utilisant divers paramètres, comme spécifier des fichiers de configuration pour gérer une liste noire d’IPs (blacklist) ou une liste blanche (whitelist). Par défaut, localhost passe en direct :

$ graftcp -h Usage: graftcp [options] prog [prog-args] Options: -c --conf-file=<path> -a --local-addr=<ip> -p --local-port=<port> -n --not-ignore-local -b --blackip-file=<path> -w --whiteip-file=<path> -V --version -h --help</path></path></port></ip></path>

Pour plus de détail et options, consultez GitHub.

Notez que Graftcp est limité au TCP… pas d’UDP donc. Pour le DNS, il faudra donc passer par un proxy dédié comme ChinaDNS ou dnscrypt-proxy. Pour les performances, bien que les chiffres précis varient en fonction des configurations, graftcp est assez connu pour offrir une alternative robuste aux solutions comme proxychains.

Bref, c’est un outil polyvalent pour la proxification puisqu’il est léger, compatible avec tout et surtout facile à utiliser…

Source