8 points par GN⁺ 2025-02-04 | 2 commentaires | Partager sur WhatsApp
  • httptap est un outil qui permet de voir facilement les requêtes HTTP et HTTPS effectuées par des programmes Linux
    • Vous pouvez suivre les requêtes réseau d’une commande spécifique avec httptap --
  • Par exemple, si vous envoyez une requête vers une URL donnée avec la commande curl, httptap affiche cette requête ainsi que la réponse
    • httptap ne nécessite pas les privilèges root et n’affecte pas l’ensemble du système
    • Il fonctionne actuellement uniquement sous Linux, et son portage vers d’autres systèmes d’exploitation serait difficile
  • Installation
  • Démarrage rapide
    • Vous pouvez envoyer une requête HTTP avec la commande curl et vérifier la requête et la réponse avec httptap
    • Si vous utilisez l’option -L pour suivre les redirections, des requêtes HTTP supplémentaires sont émises
  • Exemples avec Google Cloud et kubectl
    • Vous pouvez suivre les requêtes HTTP générées lors de l’exécution de la commande gcloud compute instances list pour lister les instances de calcul sur Google Cloud
    • Vous pouvez suivre les requêtes HTTP générées lors de l’exécution de la commande kubectl get all pour lister les ressources d’un cluster Kubernetes
  • DNS-over-HTTP
    • Vous pouvez effectuer des requêtes DNS-over-HTTP avec l’option --doh-url de curl.
    • Vous pouvez vérifier les requêtes et réponses DNS avec httptap.
  • Sortie HAR
    • Les requêtes et réponses HTTP peuvent être exportées dans un fichier HAR.
    • Le fichier HAR peut être visualisé avec différents outils.
  • Fonctionnement
    • httptap utilise des espaces de noms réseau pour exécuter les commandes dans un environnement isolé
    • Il crée un périphérique TUN pour suivre le trafic réseau et génère une autorité de certification temporaire afin de déchiffrer le trafic HTTPS
  • Points à noter
    • Le processus ne peut pas accepter de connexions réseau entrantes.
    • Un droit d’accès à /dev/net/tun est nécessaire.
    • Toutes les requêtes ICMP echo sont renvoyées localement sans envoyer de paquets ICMP sur le réseau réel

2 commentaires

 
halfenif 2025-02-06

Il a été développé à la Monastic Academy, dans le Vermont, aux États-Unis. Nous pensons qu’un emploi du temps monastique, et plus généralement la pratique de la voie spirituelle bouddhiste, offrent des conditions idéales au développement technologique.

En le testant, je suis allé voir sur GitHub. Une formation monastique ? On dirait presque qu’ils l’ont créé dans le cadre d’une quête d’accomplissement spirituel.

 
GN⁺ 2025-02-04
Avis sur Hacker News
  • La section "How it was made" du README est aussi intéressante que l’outil lui-même

    • Le développement logiciel a été mené dans le cadre d’une vie en communauté et d’une pratique de méditation
    • L’idée d’exécuter un processus dans un espace de noms réseau isolé est géniale
    • La partie HTTPS m’intéresse, avec la définition de variables d’environnement qui indiquent au programme d’utiliser le bundle CA du répertoire temporaire
    • Des problèmes similaires à http_proxy peuvent survenir, et le programme peut ignorer la variable
    • Un système de fichiers en surcouche est monté sur /etc/resolv.conf, et je me demande s’il serait utile de monter aussi le répertoire /etc/ca-certificates pour utiliser le bundle CA temporaire
  • httptap est un traceur HTTP à l’échelle du processus qui peut s’exécuter sans privilèges root

    • Il s’exécute avec httptap <command> et permet de suivre les requêtes et réponses HTTP/HTTPS sur la sortie standard
    • Il exécute la commande dans un espace de noms réseau isolé et utilise sa propre pile TCP/IP
    • Ce n’est pas un proxy HTTP, et il n’est pas nécessaire de configurer la commande pour qu’elle utilise un proxy HTTP
    • Il déchiffre le trafic TLS en générant un certificat d’autorité en temps réel
    • Il n’installe pas de règles iptables et n’apporte aucune modification globale au système
  • Un autre outil permettant d’analyser le trafic réseau sans privilèges root est l’association de Podman rootless et de Pasta

    • En ajoutant l’option --network=pasta:--pcap,myfile.pcap, le trafic réseau est enregistré dans un fichier PCAP
    • Un exemple simple a été rédigé pour analyser le fichier PCAP enregistré avec tshark
  • Utiliser un périphérique TUN est une idée élégante, et la section "How it was made" est l’une des meilleures README GitHub

    • Un outil appelé Subtrace est en cours de développement et peut intercepter automatiquement les requêtes entrantes et sortantes
    • Il intercepte, via Seccomp BPF, des appels système comme socket, connect, recv ou accept, puis fait transiter toutes les connexions TCP par Subtrace
    • Il analyse les requêtes HTTP dans le flux TCP et les affiche à l’utilisateur comme dans l’onglet Network des Chrome DevTools
  • Je vais l’utiliser immédiatement pour déboguer une configuration nginx

    • Pour l’instant, j’utilise curl -v et j’inspecte manuellement la sortie, mais cet outil permet de repérer instantanément des boucles de redirection et autres problèmes
  • J’ai récemment ajouté une fonctionnalité similaire à mitmproxy, mais avec d’autres compromis

    • Les privilèges root sont nécessaires, et l’installation automatique des certificats n’existe pas encore
    • Il n’est pas nécessaire d’exécuter l’application dans un espace de noms dédié, ce qui permet de capturer des processus déjà en cours d’exécution
  • Une autre approche utilisant LD_PRELOAD peut échouer avec des ELF liés statiquement, par exemple des binaires golang

  • C’est une excellente utilisation de la pile TCP/IP en espace utilisateur de gVisor

  • Mitmproxy v11.1 peut aussi offrir une fonctionnalité similaire