Skip to content

Latest commit

 

History

History
166 lines (122 loc) · 6.25 KB

README_JA.md

File metadata and controls

166 lines (122 loc) · 6.25 KB

中文介绍 | English | 日本語

GitHub stars GitHub forks CI Github Version

eCapture(旁观者): CA証明書なしで SSL/TLS のテキストコンテンツをキャプチャする eBPF を使用。

Linux/Android カーネルバージョン x86_64 4.18 以上、aarch64 5.5 以上に対応しています。 Windows、macOS には対応していません。


eCapture の仕組み

  • SSL/TLS テキスト コンテキスト キャプチャ、openssl\libssl\boringssl\gnutls\nspr(nss) ライブラリのサポート。
  • Go TLSライブラリをサポートする平文キャプチャ、つまりGolang言語で書かれたHTTPS/TLSプログラムの暗号化通信を使用します。
  • bash audit, ホストセキュリティ監査用のbashコマンドをキャプチャ。
  • mysql クエリ SQL 監査、サポート mysqld 5.6\5.7\8.0、および mariadDB。

eCapture アーキテクチャ

eCapture ユーザーマニュアル

eCapture User Manual

はじめに

ELF バイナリファイルを使用する

ELF zip ファイルリリースをダウンロードし、解凍して コマンド ./ecapture --help で使用します。

コマンドラインオプション

ROOT 権限が必要です。

eCapture はデフォルトで /etc/ld.so.conf ファイルを検索し、 SO ファイルのロードディレクトリを検索し、 openssl シャードライブラリの場所を検索します。

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

Pcapng 結果

./ecapture tls -i eth0 -w pcapng -p 443 平文パケットをキャプチャして pcapng ファイルとして保存し、 Wireshark でそれを直接読みます。

平文結果

./ecapture tls はすべてのプレーンテキストのコンテキストをキャプチャしてコンソールに出力し、openssl TLSMaster Secret をキャプチャして ecapture_masterkey.log に保存することができます。また、tcpdump を使って生のパケットをキャプチャし、 Wireshark を使って Master Secret 設定でそれらを読み込むことができます。

サーバーの BTF 設定を確認:

cfc4n@vm-server:~$# uname -r
4.18.0-305.3.1.el8.x86_64
cfc4n@vm-server:~$# cat /boot/config-`uname -r` | grep CONFIG_DEBUG_INFO_BTF
CONFIG_DEBUG_INFO_BTF=y

tls コマンド

TLS テキストコンテキストをキャプチャします。 ステップ 1:

./ecapture tls --hex

ステップ 2:

curl https://github.com

libssl & boringssl

# インストールされた libssl に対して、libssl.so.52 は動的な ssl lib です
vm@vm-server:~$ ldd /usr/local/bin/openssl
	linux-vdso.so.1 (0x00007ffc82985000)
	libssl.so.52 => /usr/local/lib/libssl.so.52 (0x00007f1730f9f000)
	libcrypto.so.49 => /usr/local/lib/libcrypto.so.49 (0x00007f1730d8a000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1730b62000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f17310b2000)

# libssl を使って libssl.so のパスを設定
vm@vm-server:~$ sudo ./ecapture tls --libssl="/usr/local/lib/libssl.so.52" --hex

# 別の端末で実行し、何らかの文字列を入力し、ecapture の出力を確認
vm@vm-server:~$ /usr/local/bin/openssl s_client -connect github.com:443

# インストールされた boringssl の場合、使い方は同じです
/path/to/bin/bssl s_client -connect github.com:443

bash コマンド

bash コマンドをキャプチャする。

ps -ef | grep foo

eBPF とは

eBPF

コンパイル方法

Linux カーネル: >= 4.18.

ツール

  • golang 1.21 またはそれ以降
  • clang 9.0 またはそれ以降
  • cmake 3.18.4 またはそれ以降
  • clang バックエンド: llvm 9.0 またはそれ以降
  • カーネル config:CONFIG_DEBUG_INFO_BTF=y (Optional, 2022-04-17)

コマンド

ubuntu

もしUbuntu 20.04以降を使用している場合、1つのコマンドでコンパイル環境の初期化が完了します。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/gojue/ecapture/master/builder/init_env.sh)"

other Linux

上記のツールチェーンバージョンに列挙されたソフトウェア以外に、以下のソフトウェアも必要です。自己でインストールしてください。

  • linux-tools-common
  • linux-tools-generic
  • pkgconf
  • libelf-dev

リポジトリのコードをクローンし、コンパイルしてください

git clone [email protected]:gojue/ecapture.git
cd ecapture
make
bin/ecapture

BTF なしでコンパイル

eCapture サポート BTF をコマンド make nocore で無効にし、2022/04/17 にコンパイルできるようにしました。LinuxのBTFをサポートしていなくても正常に動作することができます。

make nocore
bin/ecapture --help

Stargazers over time

Stargazers over time

コントリビュート

パッチの投稿やコントリビューションのワークフローの詳細は CONTRIBUTING を参照してください。