Archives for posts with tag: httptunnel

Un post rapide et brute de fonderie pour parler des proxys.

Un proxy bien mis est le seul point de sortie vers Internet. On ne traitera que le proxy http(s) ici. La question est de savoir comment passer au travers.

  • La chaine proxy qu’on a en face de soi, que fait-elle ?
    • Antivirus : Bon la plupart du temps c’est en place. Ca ne nous gêne pas plus que ça mais bon il y a tout de même un minimum d’analyse sur la ligne et la méthode de gestion de cette analyse sera importante. Pour savoir si elle est en place, il faut tenter de télécharger un fichier eicar là-bas. Ce sont des fichiers de test d’antivirus qui ne sont pas nocifs.
    • Relais HTTP : Juste de l’inspection protocolaire. Mais les méthodes http sont peut-être filtrées et certaines interdites (connect surtout, hélàs pour nous). Pour savoir si la méthode connect est utilisable (l’AV peut aussi la bloquer), il faut aller vers les sites de streaming (dailymotion, last.fm , …). On teste ici si on peut lire le flux. Si le site entier est interdit c’est qu’il y a du :
    • Filtrage d’URL : Seulement certains sites sont autorisés. Facile à tester et si tu continues à lire ce post c’est peut être parce que tu en as en place.
    • Relais HTTPS : S’agit-il juste d’un relais tcp 443 ou bien vraiment d’une interception SSL ? Il faut aller sur un site classique en https, par exemple bnpparibas.net ou bien fastmail.fm . On cherche un site https qui fonctionne et qui ne soit pas intercepté. Pour le savoir, il faut trouver qui a signé le certificat du site visité, si c’est verisign ou une CA connue. si le signataire du certificat est l’entreprise dans laquelle on est ou le proxy lui-même, les flux https sont interceptés… mauvaise nouvelle.
  • Une fois les fonctionnalités recensées, que tenter pour passer ?
    • Sans filtrage d’URLs : A partir du moment où il n’y a pas de filtrage d’URLs, il faut trouver un proxy sous forme web (puisqu’en fait, on en utilise déjà un). Il en existe de plusieurs types plus ou moins pratiques :
      • Il y a celui de google qui traduit les pages en plus (et si on souhaite ne pas avoir de traduction il suffit de ne garder que la variable u dans l’URL) ou bien phpproxy .
      • Franchement débarqué picidae. Même s’il a des défauts, il est peut être le plus propre pour passer à travers un proxy puisque les pages web transférées ne sont pas compréhensible par l’analyse du proxy car elles sont sous forme d’image (démonstration là-bas).
    • Avec un filtrage d’URLs ça devient plus sportif. Les proxys énoncés au dessus sont souvent référencés et entrent dans une catégorie qui leur est dédiée. Il faut avouer que si celle-ci n’est pas bloquée c’est une erreur de configuration (et la fête du slip accessoirement). Si la catégorie des sites perso est autorisées il y a de fortes chances en installant l’un des proxys précédemment cités sur son serveur à soi qu’on puisse s’évader vers de verts pâturages.
    • Si les proxy sont bloqués non pas parce que le site est interdit mais parce que le proxy qu’on a déployé est détecté. Dans ce cas, s’il n’y a pas d’interception https, mettre le proxy qu’on héberge en https. Par contre si on ne peut toujours passer, on va mettre les mains dans le camboui.
  • A ce stade les solutions user-friendly ne sont pas efficaces. Et bien passons aux tunnels. Le principe d’un tunnel est de transmettre une session TCP mais une seule. Le plus pratique est de transmettre une connexion SSH donc. En suite, pour tunneliser son surf mon post précédent y a déjà répondu.
    • si le proxy ne surveille que le http et que pour le https on a le droit de sortir directement sur Internet, autant mettre son serveur ssh en écoute sur le port 443 et s’y connecter le plus simplement du monde.
    • Si le proxy autorise notre serveur et qu’il autorise la méthode connect, on est bon pour l’utilitaire httptunnel (un linux ou la combo windows-cygwin à chaque bout sont nécessaires).
    • S’il ne l’autorise pas en http mais en https et bien on utilise un stunnel et un SSH dedans. A noter que ça correspond aux VPN SSL dont certains sont gratuits (mais que je n’ai pas testé, ils sont peut être facile à installer qui sait ?). Par exemple OpenVPN ou SSLExplorer.

Si le proxy résiste encore, et il y a des chances pour que ça soit le cas, il faut passer par autre chose. Mais ça c’est une autre histoire…

Juste un post rapide pour parler de ce qu’on peut faire avec une connexion SSH.

  • Le client :
    • Pour ceux qui ont accès à un linux/unix la commande ssh est Le client parfait. Je rappelle que MacOS est un unix.
    • Pour ceux qui ne possèdent qu’un windows putty est impeccable. Pour ceux qui ne possèdent pas les droit pour accéder à la base de registre (et oui putty y stocke sa conf), la version de putty par portable apps leur conviendra.
  • Le serveur :
    • Avoir un compte sur une machine à soi : Un linux ou un unix, c’est parfait. Le serveur s’appelle opensshd. Pour win, il existe un démon sshd sous cygwin. Pour les plus bourrins, une vmware avec un *nux n’est pas mal non plus.
    • Avoir un compte sur une machine que l’on connait. Ca va du compte sur le serveur d’un ami, de sa dedibox, son serveur OVH ou un accès oublié dans son ancienne boite.
    • Avoir un compte sur une machine inconnue. Il semblerait qu’il soit possible d’en avoir et la liste des serveurs qui en proposent sont là bas.
  • Une fois une connexion obtenue, il reste à l’exploiter :
    • Toujours marrant bien qu’inutilisable w3m qui même s’il reste un navigateur par la console est quand même mieux que l’ancêtre lynx.
    • Plus pratique, le forward de port TCP. Ce sont des tunnels. Sous linux, cherchez du côté de l’option -L. Sous win, putty, dans l’arbre de la configuration Configuration > SSH, Tunnels. Par sécurité le tunnel ne forwarde que les connexions émanant du poste qui a initié la connexion. L’option -g lève cette restriction sous nux et une checkbox dans putty. Simple et pratique. Mais ça ne fonctionne que si la destination est statique et connue au moment de l’ouverture du tunnel et qu’il s’agit de TCP. De plus le tunnel a un sens (de la source vers la cible ou le contraire (option -R ou Remote dans putty)).
    • Plus pratique encore le proxy socks ou port dynamique. C’est un proxy TCP. La connexion SSH prendra les flux en entrée et fera une résolution DNS une fois arrivé sur le serveur. Sous firefox, déclarez simplement un proxy SOCKS 5 avec le port qu’on a choisi comme ‘port dynamique’. Sous réserve d’avoir bien mis l’option qu’il fallait (sous firefox 2, il faut activer l’option network.proxy.socks_remote_dns dans about:config), on peut maintenant surfer via le tunnel et en chiffré. En fait du moment que l’application implémente la gestion des proxys Socks ça passera (Pidgin, ThunderBird,…). Mais encore une fois, la connexion a un sens (j’ai lu que SOCKS5 supportait le TCP et l’UDP mais je n’ai pas testé).
    • Plus violent, le tunnel ethernet over SSH. Ca ne fonctionne pour l’instant que sous linux, l’option est -W. Il faut des droits particuliers et un peu de préparation l’interface tun sur le serveur et, ce qui n’est pas dit dans l’article, penser à mettre les routes ou le NATage qui vont bien pour que les paquets qui sortent du tunnel reviennent bien par le même chemin. On a ici affaire à un VPN LAN2LAN.
  • Les problèmes restant sont peut être comment faire passer un SSH vers l’extérieur :
    • Dans le cas d’un simple FW, il est peut être judicieux de faire écouter son serveur SSH sur les port 443 ou même 80.
    • S’il y a un proxy sur la ligne ou bien si on héberge des sites web sur la machine, il faudra faire un peu de conf reverse proxy sur apache (ou squid mais bon je n’en ai pas sous le coude). En suite un httptunnel devrait passer.
    • Si le proxy est plus costaud encore et bien, il y a sans doute un utilitaire à développer (un jour si j’ai le temps, la motivation, besoin de reconnaissance de ce monde hostile) ou alors la solution serait peut être de passer par autre chose comme l’ICMP ou (et c’est plus crédible) le DNS.

En petite note de fin, notez qu’il ne faut pas être irresponsable car vu les systèmes de traçage, on pourra presque toujours vous retrouver. Parfois, c’est même l’antivirus du poste qui cafte. Et pour le point final, je souligne que ce post est juste fait afin de recenser les possibilités. A vous d’approfondir.