重要的
支援Linux/Android核心版本x86_64 4.18以上, aarch64 5.5以上。需要ROOT權限。不支援Windows和macOS系統。
介紹
入門
OpenSSL 模組
GoTLS 模組
其他模組
ELF 二進位檔案
Docker映像
下載
捕獲 openssl 文字內容。
模組
影片
貢獻
彙編
SSL/TLS 明文捕獲,支援 openssllibresslboringsslgnutlsnspr(nss) 函式庫。
GoTLS 明文支援 go tls 函式庫,指用 golang 語言編寫的 https/tls 程式中的加密通訊。
bash審計,捕獲bash命令以進行主機安全審計。
mysql查詢SQL審計,支援mysqld 5.65.78.0,和mariadDB。
提示
支援Linux/Android x86_64/aarch64。
下載 ELF zip 檔案版本,解壓縮並透過指令sudo ecapture --help
使用。
提示
僅限 Linux。
# pull docker imagedocker pull gojue/ecapture:latest# rundocker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
請參閱 Docker Hub 以了解更多資訊。
sudo 捕獲 tls 2024-09-15T11:51:31Z INF AppName="eCapture(旁觀者)"2024-09-15T11:51:31Z INF HomePage=https://ecapture.cc 2024-09-15T11:51:31Z INF 儲存庫=https://github.com/gojue/ecapture 2024-09-15T11:51:31Z INF Author="CFC4N"2024-09-15T11:51:31Z INF Description="使用eBPF 在沒有CA 憑證的情況下擷取SSL/TLS 明文。 Linux 上支援/amd64/arm64 的 Android 核心。 2024-09-15T11:51:31Z INF 監聽=本地主機:28256 2024-09-15T11:51:31Z INF eCapture 運行日誌記錄器= 2024-09-15T11:51:31Z INF 接收捕獲事件的文件處理程序 eventCollector= 2024-09-15T11:51:31Z INF 監聽=本地主機:28256 2024-09-15T11:51:31Z INF https 伺服器啟動...您可以透過 HTTP 介面更新設定檔。 2024-09-15T11:51:31Z WRN ========== 模組啟動。 ========= 2024-09-15T11:51:31Z INF 核心訊息=5.15.152 Pid=233698 2024-09-15T11:51:31Z INF BTF 字節碼模式:CORE。 btf模式=0 2024-09-15T11:51:31Z INF 主密鑰鍵盤記錄器已設定。 eBPFProgramType=文字鍵盤記錄器= 2024-09-15T11:51:31Z INF 模組初始化。 isReload=false moduleName=EBFProbeOPENSSL 2024-09-15T11:51:31Z INF 模組.Run() 2024-09-15T11:51:31Z WRN OpenSSL/BoringSSL 版本未從共享庫檔案找到,使用預設版本 OpenSSL Version=linux_default_3_0 2024-09-15T11:51:31Z INF Hook masterKey 函數 ElfType=2 Functions=["SSL_get_wbio","SSL_in_before","SSL_do_handshake"] binrayPath=/usr/lib/aarch64-linux/ 2024-09-15T11:51:31Z INF 針對所有進程。 2024-09-15T11:51:31Z INF 針對所有使用者。 2024-09-15T11:51:31Z INF setupManagers eBPFProgramType=Text 2024-09-15T11:51:31Z INF BPF 字節碼檔案匹配。 bpfFileName=使用者/字節碼/openssl_3_0_0_kern_core.o 2024-09-15T11:51:32Z INF perfEventReader 建立了mapSize(MB)=4 2024-09-15T11:51:32Z INF perfEventReader 建立了mapSize(MB)=4 2024-09-15T11:51:32Z INF 模組啟動成功。 isReload=false moduleName=EBFProbeOPENSSL 2024-09-15T11:51:53Z??? UUID:233851_233851_curl_5_1_172.16.71.1:51837,名稱:HTTP2Request,類型:2,長度:304 框架類型 => 設定 幀類型 => WINDOW_UPDATE 影格類型 => 標頭 標頭欄位":method" = "GET"標頭欄位":path" = "/"標頭欄位":scheme" = "https"標頭欄位":authority" = "google.com"標頭欄位" user-agent" = “curl/7.81.0”標頭字段“accept”=“*/*”幀類型=>設定 2024-09-15T11:51:53Z??? UUID:233851_233851_curl_5_0_172.16.71.1:51837,名稱:HTTP2Response,類型:4,長度:1160 框架類型 => 設定 幀類型 => WINDOW_UPDATE 框架類型 => 設定 影格類型 => 標頭 標頭欄位":status" = "301"標頭欄位"location" = "https://www.google.com/"標頭欄位"content-type" = "text/html; charset=UTF-8"標頭欄位 " content-security-policy-report-only" = "object-src 'none';base-uri 'self';script-src 'nonce-qvZZ0XreBfeqRnUEV1WoYw' '嚴格動態' '報告樣本' '不安全評估' ' unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"標頭欄位"日期" = "Sun, 15 Sep 2024 11:51:52 GMT"標頭字段“expires”=“Tue, 15 Oct 2024 11:51:52 GMT”標頭字段“cache-control”=“public, max-age=2592000”標頭字段“server”=“gws”標頭欄位「content-length」 " = "220" 標頭欄位"x-xss-protection" = "0" 標頭欄位"x-frame-options" = "SAMEORIGIN" 標頭欄位"alt-svc" = "h3=":443"; ,h3-29=":443"; ma=2592000"幀類型 => PING 幀類型=> DATA 301 已移動 < BODY>301 已移動
文件已移至此處。
eCapture 工具包含 8 個模組,分別支援 OpenSSL、GnuTLS、NSPR、BoringSSL 和 GoTLS 等 TLS/SSL 加密庫的明文擷取。此外,它還有助於對 Bash、MySQL 和 PostgreSQL 應用程式進行軟體審核。
bash 捕獲 bash 指令
gnutls 擷取 gnutls 文字內容,無需 gnutls 函式庫的 CA 憑證。
gotls 從使用 TLS/HTTPS 加密的 Golang 程式中擷取明文通訊。
mysqld 從 mysqld 5.6/5.7/8.0 捕獲 sql 查詢。
nss 擷取 nss/nspr 加密文字內容,無需 nss/nspr 函式庫的 CA 憑證。
postgres 從 postgres 10+ 擷取 sql 查詢。
tls 用於在沒有 CA 憑證的情況下捕獲 tls/ssl 文字內容。 (支援 openssl 1.0.x/1.1.x/3.0.x 或更高版本)。您可以使用ecapture -h
查看子指令清單。
eCapture預設搜尋/etc/ld.so.conf
文件,搜尋SO
檔案的載入目錄,並搜尋openssl
分片庫位置。或者您可以使用--libssl
標誌來設定分片庫路徑。
如果目標程式是靜態編譯的,可以直接將程式路徑設定為--libssl
標誌值。
OpenSSL 模組支援三種擷取模式:
pcap
/ pcapng
模式以pcap-NG
格式儲存所擷取的明文資料。
keylog
/ key
模式將 TLS 握手金鑰儲存到檔案中。
text
模式直接捕獲明文數據,要么輸出到指定文件,要么列印到命令列。
支援基於 TCP 的 TLS 加密 http 1.0/1.1/2.0
和基於 UDP 的 http3 QUIC
協定。您可以指定-m pcap
或-m pcapng
並將其與--pcapfile
和-i
參數結合使用。 --pcapfile
的預設值為ecapture_openssl.pcapng
。
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng TCP 連接埠 443
該命令將捕獲的明文資料包儲存為 pcapng 文件,可以使用Wireshark
查看。
sudo ecapture tls -m pcap -w ecap.pcapng -i ens160 2024-09-15T06:54:12Z INF AppName="eCapture(旁觀者)"2024-09-15T06:54:12Z INF HomePage=https://ecapture.cc 2024-09-15T06:54:12Z INF 儲存庫=https://github.com/gojue/ecapture 2024-09-15T06:54:12Z INF Author="CFC4N"2024-09-15T06:54:12Z INF Description="使用eBPF 在沒有CA 憑證的情況下擷取SSL/TLS 明文。 Linux 上支援/amd64/arm64 的 Android 核心。 2024-09-15T06:54:12Z INF 監聽=本地主機:28256 2024-09-15T06:54:12Z INF eCapture 運行日誌記錄器= 2024-09-15T06:54:12Z INF 接收捕獲事件的文件處理程序 eventCollector= 2024-09-15T06:54:12Z WRN ========== 模組啟動。 ========= 2024-09-15T06:54:12Z INF 內核資訊=5.15.152 Pid=230440 2024-09-15T06:54:12Z INF BTF 字節碼模式:CORE。 btf模式=0 2024-09-15T06:54:12Z INF 監聽=本地主機:28256 2024-09-15T06:54:12Z INF 模組初始化。 isReload=false moduleName=EBFProbeOPENSSL 2024-09-15T06:54:12Z INF 模組.Run() 2024-09-15T06:54:12Z INF https 伺服器啟動...您可以透過 HTTP 介面更新設定檔。 2024-09-15T06:54:12Z WRN OpenSSL/BoringSSL 版本未從共享庫檔案找到,使用預設版本 OpenSSL Version=linux_default_3_0 2024-09-15T06:54:12Z INF HOOK 類型:Openssl elf ElfType=2 IFindex=2 IFname=ens160 PcapFilter= binrayPath=/usr/lib/aarch64-linux-gnu/libssl. 2024-09-15T06:54:12Z INF Hook masterKey 函數 Functions=["SSL_get_wbio","SSL_in_before","SSL_do_handshake"]2024-09-15T06:54:12ZNF 目標所有流程。 2024-09-15T06:54:12Z INF 針對所有使用者。 2024-09-15T06:54:12Z INF setupManagers eBPFProgramType=PcapNG 2024-09-15T06:54:12Z INF BPF 字節碼檔案匹配。 bpfFileName=使用者/字節碼/openssl_3_0_0_kern_core.o 2024-09-15T06:54:12Z INF 封包儲存到 pcapng 檔案中。 pcapng路徑=/home/ecapture/ecap.pcapng 2024-09-15T06:54:12Z INF perfEventReader 建立了mapSize(MB)=4 2024-09-15T06:54:12Z INF perfEventReader 建立了mapSize(MB)=4 2024-09-15T06:54:12Z INF 模組啟動成功。 isReload=false moduleName=EBFProbeOPENSSL 2024-09-15T06:54:14Z INF 封包儲存到 pcapng 檔案中。計數=4 2024-09-15T06:54:16Z INF 非 TLSv1.3 密碼套件發現 CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30 2024-09-15T06:54:16Z INF 非 TLSv1.3 密碼套件發現 CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30 2024-09-15T06:54:16Z INF 封包儲存到 pcapng 檔案中。計數=183 2024-09-15T06:54:16Z INF CLIENT_RANDOM保存成功CLientRandom = f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f306345507ccfaba58b823904a357f303457f305 2024-09-15T06:54:18Z INF 封包儲存到 pcapng 檔案中。計數=65 ^C2024-09-15T06:54:18Z INF 模組關閉。 2024-09-15T06:54:18Z INF 封包儲存到 pcapng 檔案中。計數=3 2024-09-15T06:54:18Z INF 封包儲存到 pcapng 檔案中。計數=255 2024-09-15T06:54:18Z INF 模組已關閉,從上下文收到訊息 2024-09-15T06:54:18Z INF iModule 模組關閉 2024-09-15T06:54:18Z INF 再見。
使用Wireshark
開啟ecap.pcapng
文件,查看明文資料包。
您可以指定-m keylog
或-m key
並將其與--keylogfile
參數結合使用,該參數預設為ecapture_masterkey.log
。
擷取的 OpenSSL TLS Master Secret
資訊儲存到--keylogfile
。也可以啟用tcpdump
抓包,然後使用Wireshark
開啟檔案並設定Master Secret
路徑來查看明文封包。
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
sudo ecapture tls -m text
將輸出所有明文資料包。 (從v0.7.0開始,不再捕獲SSLKEYLOG資訊。)
與 OpenSSL 模組類似。
捕獲 tls 文字上下文。
步驟一:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
步驟2:
/home/cfc4n/go_https_client
sudo 捕獲gotls -h
例如bashmysqldpostgres
模組,可以使用ecapture -h
查看子指令清單。
Youtube 影片:如何使用 eCapture v0.1.0
eCapture:支援捕捉Golang TLS/HTTPS流量的明文
有關提交補丁和貢獻工作流程的詳細信息,請參閱貢獻。
有關編譯 eCapture 原始碼的詳細信息,請參閱編譯。