8 ポイント 投稿者 GN⁺ 2025-02-04 | 2件のコメント | WhatsAppで共有
  • httptap は、Linuxプログラムが実行する HTTP および HTTPS リクエストを簡単に確認できるツール
    • httptap -- を使って、特定のコマンドのネットワークリクエストを追跡できる
  • たとえば curl コマンドで特定の URL にリクエストを送ると、httptap はそのリクエストとレスポンスを出力する
    • httptap は root 権限を必要とせず、システム全体にも影響しない
    • 現時点では Linux でのみ動作し、他の OS への移植は難しい
  • インストール方法
  • クイックスタート
    • curl コマンドで HTTP リクエストを送り、httptap でリクエストとレスポンスを確認できる
    • -L オプションでリダイレクトを追跡する場合、追加の HTTP リクエストが発生する
  • Google Cloud と kubectl の使用例
    • gcloud compute instances list コマンドを使って Google Cloud のコンピュートインスタンスを一覧表示する際に発生する HTTP リクエストを追跡できる
    • kubectl get all コマンドを使って Kubernetes クラスターのリソースを一覧表示する際に発生する HTTP リクエストを追跡できる
  • DNS-over-HTTP
    • curl--doh-url オプションを使って DNS-over-HTTP リクエストを実行できる
    • httptap を使って DNS リクエストとレスポンスを確認できる
  • HAR 出力
    • HTTP リクエストとレスポンスを HAR ファイルとしてダンプできる
    • HAR ファイルはさまざまなビューアで可視化できる
  • 動作原理
    • httptap はネットワーク名前空間を使ってコマンドを分離環境で実行する
    • TUN デバイスを作成してネットワークトラフィックを追跡し、HTTPS トラフィックを復号するために一時的な認証局を生成する
  • 注意事項
    • プロセスは着信ネットワーク接続を受信できない
    • /dev/net/tun へのアクセス権が必要
    • すべての ICMP エコーリクエストは、実際のネットワークに ICMP パケットを送信せずにエコーされる

2件のコメント

 
halfenif 2025-02-06

it was developed at the Monastic Academy in Vermont in the US. We believe that a monastic schedule, and the practice of the Buddhist spiritual path more generally, provide ideal conditions for technological development.

テストしながらGitHubを見てみると、修道院での修練? をしている人たちが、精神的な成就の一環として作ったのかなと思ったりもします。

 
GN⁺ 2025-02-04
Hacker Newsのコメント
  • READMEの「How it was made」セクションは、ツール自体と同じくらい興味深い

    • コミュニティ生活と瞑想修行を通じてソフトウェア開発を進めている
    • 隔離されたネットワーク名前空間でプロセスを実行するという発想が天才的
    • HTTPSの部分に関心があり、一時ディレクトリのCAバンドルを使うようプログラムに指示する環境変数を設定している
    • http_proxyと似た問題が発生する可能性があり、プログラムがその変数を無視することがある
    • /etc/resolv.confにオーバーレイファイルシステムをマウントしているが、一時CAバンドルを使って/etc/ca-certificatesディレクトリをマウントするのも有効なのか気になる
  • httptapは、root権限なしで実行できるプロセス単位のHTTPトレーサー

    • httptap <command>で実行し、HTTP/HTTPSリクエストとレスポンスを標準出力に追跡できる
    • 隔離されたネットワーク名前空間でコマンドを実行し、独自のTCP/IPスタックを使用する
    • HTTPプロキシではなく、コマンド側でHTTPプロキシを使うよう設定する必要がない
    • TLSトラフィックをリアルタイムでCAを生成して復号する
    • iptablesルールをインストールしたり、システム全体に変更を加えたりしない
  • root権限なしでネットワークトラフィックを分析できる別のツールとして、rootless PodmanとPastaがある

    • --network=pasta:--pcap,myfile.pcapオプションを追加して、ネットワークトラフィックをPCAPファイルに記録する
    • 記録したPCAPファイルをtsharkで分析する簡単な例を書いた
  • TUNデバイスを使うのはすばらしいアイデアで、「How it was made」セクションはGithub READMEの中でも最高クラス

    • Subtraceというツールを開発中で、自動的に入出力リクエストをインターセプトできる
    • Seccomp BPFを使ってsocket、connect、recv、acceptなどのシステムコールをフックし、すべてのTCP接続をSubtrace経由でプロキシする
    • TCPストリームからHTTPリクエストを解析し、Chrome DevToolsのNetworkタブのような形でユーザーに表示する
  • nginx設定のデバッグにすぐ使うつもり

    • 今はcurl -vを使って手作業で出力を確認しているが、このツールならリダイレクトループなどをすぐ把握できる
  • 最近mitmproxyに似た機能を実装したが、トレードオフは異なる

    • root権限が必要で、自動証明書インストールもまだない
    • 専用の名前空間でアプリを実行する必要がないため、すでに実行中のプロセスをキャプチャできる
  • LD_PRELOADを使う別の方法は、静的リンクされたELF、たとえばgolangバイナリでは失敗することがある

  • gVisorのユーザー空間TCP/IPスタックの見事な活用例

  • Mitmproxy v11.1でも同様のことができる