アップデート一覧に戻る
UpdatedOct 4, 2026

ecapture — Updated!

eBPFを使用してCA証明書なしでSSL/TLS平文をキャプチャする。amd64/arm64向けのLinux/Androidカーネルでサポートされています。

共有
eCapture Logo

汉字 | English

GitHub stars GitHub forks CI GitHub Version

eCapture (傍観者): eBPF を使用して CA 証明書なしで平文 SSL/TLS トラフィックをキャプチャします。

[!IMPORTANT] x86_64 (カーネル 4.18+) および aarch64 (カーネル 5.5+) の Linux と Android をサポートします。カーネルの要件は、Linux と Android の両方で CPU アーキテクチャごとに適用されます。 root 権限または特定の Linux ケイパビリティ が必要です。 Windows および macOS はサポートしていません。


はじめに

  • OpenSSL、LibreSSL、BoringSSL、GnuTLS、NSS/NSPR ライブラリから平文 TLS/SSL トラフィックをキャプチャします。
  • Go TLS プログラムの平文キャプチャをサポートし、Go アプリケーションの HTTPS/TLS トラフィックを含みます。
  • ホストのセキュリティ監視のために bash および zsh のコマンド履歴を監査します。
  • MySQL クエリを監査し、MySQL 5.6/5.7/8.0 および MariaDB をサポートします。

はじめかた

ダウンロード

ELF バイナリファイル

[!TIP] x86_64 および aarch64 の Linux/Android をサポートします。

リリースページ から ELF バイナリパッケージをダウンロードし、展開して実行します:

sudo ecapture --help

Docker イメージ

[!TIP] Linux のみ。

# Pull the Docker image
docker pull gojue/ecapture:latest

# Run it
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS

⚠️ セキュリティに関する注意: --privileged=true はホストへの完全なアクセスを許可します。本番環境では、代わりに特定のケイパビリティを使用することを推奨します。最小権限ガイド を参照してください。

詳細については Docker Hub を参照してください。

OpenSSL 平文データのキャプチャ

sudo ecapture tls

eCapture はシステムの OpenSSL ライブラリを自動的に検出し、平文トラフィックのキャプチャを開始します。curl https://google.com などの HTTPS リクエストを行うと、キャプチャされたリクエストとレスポンスが表示されます:

...
INF module started successfully. moduleName=EBPFProbeOPENSSL
??? UUID:233851_233851_curl_5_1_172.16.71.1:51837, Name:HTTP2Request, Type:2, Length:304
header field ":method" = "GET"
header field ":path" = "/"
header field ":authority" = "google.com"
...

📄 完全な出力例については、docs/example-outputs.md を参照してください。

モジュール

eCapture ツールには 8 つのモジュールがあり、OpenSSL、GnuTLS、NSS/NSPR、BoringSSL、GoTLS などの TLS/SSL ライブラリから平文データをキャプチャできます。また、Bash、MySQL、PostgreSQL アプリケーションからのコマンドとクエリの監査もサポートします。

  • bash: bash コマンドをキャプチャします
  • zsh: zsh コマンドをキャプチャします
  • gnutls: CA 証明書を必要とせずに GnuTLS ライブラリから平文をキャプチャします
  • gotls: TLS/HTTPS を使用する Go プログラムからの平文通信をキャプチャします
  • mysqld: MySQL 5.6/5.7/8.0 および MariaDB から SQL クエリをキャプチャします
  • nss: CA 証明書を必要とせずに NSS/NSPR ライブラリから平文をキャプチャします
  • postgres: PostgreSQL 10+ から SQL クエリをキャプチャします
  • tls: CA 証明書を必要とせずに平文 TLS/SSL トラフィックをキャプチャします (OpenSSL 1.0.x/1.1.x/3.0.x 以降をサポート)

ecapture -h を使用して、サブコマンドの完全なリストを表示できます。

OpenSSL モジュール

eCapture は /etc/ld.so.conf のデフォルトライブラリパスを検索して共有ライブラリを特定し、OpenSSL ライブラリの場所を検出します。--libssl フラグでライブラリパスを明示的に設定することもできます。

ターゲットプログラムが静的リンクされている場合は、--libssl フラグの値としてプログラムパスを直接設定できます。

OpenSSL モジュールは 3 つのキャプチャモードをサポートします:

  • pcap/pcapng モードは、キャプチャした平文データを pcap-NG 形式で保存します。
  • keylog/key モードは、TLS ハンドシェイクキーをファイルに保存します。
  • text モードは平文データを直接キャプチャし、ファイルに書き込むかコンソールに出力します。

Pcap モード

TCP 上の TLS 暗号化 HTTP 1.0/1.1/2.0 および UDP 上の HTTP/3 (QUIC) をサポートします。

-m pcap または -m pcapng を --pcapfile および -i とともに指定できます。--pcapfile のデフォルト値は ecapture_openssl.pcapng です。

sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443

このコマンドは、キャプチャした平文パケットを pcapng ファイルとして保存し、Wireshark で開くことができます。

📄 完全な pcapng モードの出力については、docs/example-outputs.md を参照してください。

Keylog モード

-m keylog または -m key を --keylogfile オプションとともに指定できます。デフォルトの出力ファイルは ecapture_masterkey.log です。

キャプチャした OpenSSL TLS マスターシークレットは --keylogfile に保存されます。tcpdump キャプチャを有効にしてから Wireshark でファイルを開き、マスターシークレットのパスを設定して平文パケットを表示することもできます。

sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log

tshark を使用してリアルタイムで復号および表示することもできます:

tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0

Text モード

sudo ecapture tls -m text

すべての平文データパケットを出力します。

GoTLS モジュール

OpenSSL モジュールと同様です。

gotls コマンド

TLS 平文データをキャプチャします。

ステップ 1:

sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex

ステップ 2:

/home/cfc4n/go_https_client

その他のヘルプ

sudo ecapture gotls -h

その他のモジュール

bash、mysqld、postgres などのモジュールも使用できます。ecapture -h で完全なリストを表示できます。

動画

eCaptureQ GUI アプリケーション

eCaptureQ は、eCapture 用のクロスプラットフォーム GUI クライアントで、eBPF ベースの TLS キャプチャ機能を可視化します。Rust + Tauri + React で構築され、CA 証明書を必要とせずに暗号化トラフィックを分析するための応答性の高いリアルタイムインターフェースを提供します。複雑な eBPF キャプチャワークフローを簡素化し、より使いやすくします。

2 つのモードをサポートします:

  • 統合モード: Linux/Android の統合実行
  • リモートモード: Windows/macOS/Linux クライアントがリモートの eCapture サービスに接続

イベント転送

イベント転送プロジェクト

動画デモ

https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb

🔗 GitHub リポジトリ

Protobuf プロトコル

eCapture/eCaptureQ で使用される Protobuf ログスキーマの詳細については、以下を参照してください:

時系列の Stargazers

Stargazers over time

セキュリティと運用

コントリビューション

パッチの提出とコントリビューションワークフローの詳細については、CONTRIBUTING を参照してください。

コンパイル

カスタムコンパイル

静的にリンクされた OpenSSL ライブラリをサポートするために uprobe オフセットアドレスを設定するなど、必要な機能をカスタマイズできます。詳細な手順については コンパイルガイド を参照してください。

リモート設定の更新

カテゴリ