สำคัญ
รองรับเคอร์เนล Linux/Android เวอร์ชัน x86_64 4.18 ขึ้นไป, aarch64 5.5 ขึ้นไป ต้องได้รับอนุญาต ROOT ไม่รองรับระบบ Windows และ macOS
การแนะนำ
เริ่มต้นใช้งาน
โมดูล OpenSSL
โมดูล GoTLS
โมดูลอื่นๆ
ไฟล์ไบนารีของเอลฟ์
ภาพนักเทียบท่า
ดาวน์โหลด
บันทึกเนื้อหาข้อความ openssl
โมดูล
วิดีโอ
มีส่วนร่วม
การรวบรวม
การจับภาพข้อความธรรมดา SSL/TLS รองรับไลบรารี openssllibresslboringsslgnutlsnspr(nss)
รองรับข้อความธรรมดา GoTLS go tls ไลบรารี ซึ่งหมายถึงการสื่อสารที่เข้ารหัสในโปรแกรม https/tls ที่เขียนด้วยภาษา golang
bash audit, จับคำสั่ง bash สำหรับ Host Security Audit
การตรวจสอบ SQL แบบสอบถาม mysql รองรับ mysqld 5.65.78.0 และ mariadDB
เคล็ดลับ
รองรับ Linux/Android x86_64/aarch64
ดาวน์โหลดไฟล์ zip ของ ELF แตกไฟล์และใช้งานตามคำสั่ง sudo ecapture --help
เคล็ดลับ
ลินุกซ์เท่านั้น
# 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 ecapture 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 <[email protected]>"2024-09-15T11:51:31Z INF Description="การจับข้อความธรรมดา SSL/TLS โดยไม่มีใบรับรอง CA โดยใช้ eBPF รองรับบน Linux /เคอร์เนล Android สำหรับ amd64/arm64"2024-09-15T11:51:31Z INF Version=linux_arm64:0.8.6-20240915-d87ae48:5.15.0-113-ทั่วไป 2024-09-15T11:51:31Z ฟัง INF=localhost:28256 2024-09-15T11:51:31Z INF eCapture เรียกใช้ตัวบันทึกบันทึก= 2024-09-15T11:51:31Z INF ตัวจัดการไฟล์ที่ได้รับเหตุการณ์ที่บันทึกไว้ eventCollector= 2024-09-15T11:51:31Z INF ฟัง = localhost: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 btfMode=0 2024-09-15T11:51:31Z ตั้งค่าคีย์ล็อกเกอร์คีย์หลักของ INF แล้ว eBPFProgramType=คีย์ล็อกเกอร์ข้อความ= 2024-09-15T11:51:31Z การเริ่มต้นโมดูล INF isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T11:51:31Z โมดูล INF.Run() 2024-09-15T11:51:31Z WRN ไม่พบเวอร์ชัน OpenSSL/BoringSSL จากไฟล์ไลบรารี่ที่แชร์ ใช้เวอร์ชันเริ่มต้น เวอร์ชัน OpenSSL=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-gnu/libssl.so.3 2024-09-15T11:51:31Z INF กำหนดเป้าหมายกระบวนการทั้งหมด 2024-09-15T11:51:31Z INF กำหนดเป้าหมายผู้ใช้ทั้งหมด 2024-09-15T11:51:31Z INF setupManagers eBPFProgramType=ข้อความ 2024-09-15T11:51:31Z ไฟล์รหัสไบต์ INF BPF ตรงกัน bpfFileName=ผู้ใช้/bytecode/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=EBPFProbeOPENSSL 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"ฟิลด์ส่วนหัว "ยอมรับ" = "*/*"ประเภทเฟรม => การตั้งค่า 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' 'เข้มงวดแบบไดนามิก' 'รายงานตัวอย่าง' 'ไม่ปลอดภัย-eval' 'ไม่ปลอดภัยแบบอินไลน์' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp "ฟิลด์ส่วนหัว "date" = "วันอาทิตย์ที่ 15 กันยายน 2024 เวลา 11:51:52 GMT"ฟิลด์ส่วนหัว "หมดอายุ" = "อังคาร 15 ต.ค. 2024 11:51:52 GMT"ฟิลด์ส่วนหัว "cache-control" = "สาธารณะ, อายุสูงสุด=2592000"ฟิลด์ส่วนหัว "เซิร์ฟเวอร์" = "gws"ฟิลด์ส่วนหัว "ความยาวเนื้อหา" = "220"ฟิลด์ส่วนหัว "x-xss-protection" = "0"ฟิลด์ส่วนหัว "x-frame-options" = "SAMEORIGIN"ฟิลด์ส่วนหัว "alt-svc" = "h3=":443"; ma=2592000,h3-29=":443"; ma=2592000"Frame Type => PING ประเภทเฟรม => ข้อมูล<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>301 ย้ายแล้ว</TITLE></HEAD>< BODY><H1>301 ย้ายแล้ว</H1>เอกสารย้ายไปแล้ว<A HREF="https://www.google.com/">ที่นี่</A></BODY></HTML>
เครื่องมือ eCapture ประกอบด้วย 8 โมดูลที่รองรับการบันทึกข้อความธรรมดาสำหรับไลบรารีการเข้ารหัส TLS/SSL เช่น OpenSSL, GnuTLS, NSPR, BoringSSL และ GoTLS ตามลำดับ นอกจากนี้ยังอำนวยความสะดวกในการตรวจสอบซอฟต์แวร์สำหรับแอปพลิเคชัน Bash, MySQL และ PostgreSQL
คำสั่งทุบตีจับทุบตี
gnutls จับเนื้อหาข้อความ gnutls โดยไม่มีใบรับรอง CA สำหรับไลบรารี gnutls
gotls จับการสื่อสารข้อความธรรมดาจากโปรแกรม Golang ที่เข้ารหัสด้วย TLS/HTTPS
mysqld จับคำสั่ง sql จาก mysqld 5.6/5.7/8.0
nss จับเนื้อหาข้อความที่เข้ารหัส nss/nspr โดยไม่มีใบรับรอง CA สำหรับไลบรารี nss/nspr
postgres จับคำสั่ง sql จาก postgres 10+
tls ใช้เพื่อบันทึกเนื้อหาข้อความ tls/ssl โดยไม่มีใบรับรอง CA (รองรับ openssl 1.0.x/1.1.x/3.0.x หรือใหม่กว่า) คุณสามารถใช้ ecapture -h
เพื่อดูรายการคำสั่งย่อย
eCapture ค้นหาไฟล์ /etc/ld.so.conf
เป็นค่าเริ่มต้น เพื่อค้นหาไดเร็กทอรีโหลดของไฟล์ SO
และค้นหาตำแหน่งไลบรารี openssl
shard หรือคุณสามารถใช้ --libssl
flag เพื่อตั้งค่าเส้นทางไลบรารีชาร์ด
หากโปรแกรมเป้าหมายถูกคอมไพล์แบบคงที่ คุณสามารถตั้งค่าพาธของโปรแกรมเป็นค่าแฟล็ก --libssl
ได้โดยตรง
โมดูล OpenSSL รองรับโหมดการจับภาพสามโหมด:
โหมด pcap
/ pcapng
เก็บข้อมูลข้อความธรรมดาที่บันทึกไว้ในรูปแบบ pcap-NG
keylog
/ โหมด key
จะบันทึกคีย์การจับมือ TLS ลงในไฟล์
โหมด text
จะจับข้อมูลข้อความธรรมดาโดยตรง ไม่ว่าจะส่งออกไปยังไฟล์ที่ระบุหรือพิมพ์ไปยังบรรทัดคำสั่ง
รองรับการเข้ารหัส TLS http 1.0/1.1/2.0
ผ่าน TCP และโปรโตคอล http3 QUIC
ผ่าน UDP คุณสามารถระบุ -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 <[email protected]>"2024-09-15T06:54:12Z INF Description="การจับข้อความธรรมดา SSL/TLS โดยไม่มีใบรับรอง CA โดยใช้ eBPF รองรับบน Linux /เคอร์เนล Android สำหรับ amd64/arm64"2024-09-15T06:54:12Z เวอร์ชัน INF=linux_arm64:0.8.6-20240915-d87ae48:5.15.0-113-ทั่วไป 2024-09-15T06:54:12Z ฟัง INF=localhost: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 btfMode=0 2024-09-15T06:54:12Z INF ฟัง = localhost:28256 2024-09-15T06:54:12Z การเริ่มต้นโมดูล INF isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T06:54:12Z โมดูล INF.Run() 2024-09-15T06:54:12Z เซิร์ฟเวอร์ INF https เริ่มต้น...คุณสามารถอัปเดตไฟล์การกำหนดค่าผ่านอินเทอร์เฟซ HTTP 2024-09-15T06:54:12Z WRN ไม่พบเวอร์ชัน OpenSSL/BoringSSL จากไฟล์ไลบรารี่ที่แชร์ ใช้เวอร์ชันเริ่มต้น เวอร์ชัน OpenSSL=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.so.3 2024-09-15T06:54:12Z ฟังก์ชัน INF Hook masterKey Functions=["SSL_get_wbio", "SSL_in_before", "SSL_do_handshake"]2024-09-15T06:54:12Z INF กำหนดเป้าหมายกระบวนการทั้งหมด 2024-09-15T06:54:12Z INF กำหนดเป้าหมายผู้ใช้ทั้งหมด 2024-09-15T06:54:12Z INF setupManagers eBPFProgramType=PcapNG 2024-09-15T06:54:12Z ไฟล์รหัสไบต์ INF BPF ตรงกัน bpfFileName=ผู้ใช้/bytecode/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=EBPFProbeOPENSSL 2024-09-15T06:54:14Z บันทึกแพ็กเก็ต INF ลงในไฟล์ pcapng นับ=4 2024-09-15T06:54:16Z พบชุดการเข้ารหัส INF ที่ไม่ใช่ TLSv1.3 CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 CipherId=0 2024-09-15T06:54:16Z พบชุดการเข้ารหัส INF ที่ไม่ใช่ TLSv1.3 CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 CipherId=0 2024-09-15T06:54:16Z บันทึกแพ็กเก็ต INF ลงในไฟล์ pcapng นับ=183 2024-09-15T06:54:16Z INF CLIENT_RANDOM บันทึกความสำเร็จ CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 TlsVersion=TLS1_2_VERSION ไบต์=176 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
ข้อมูล Master Secret
OpenSSL TLS ที่บันทึกไว้จะถูกบันทึกไว้ใน --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 ฟิลด์ -e http.file_data -f "พอร์ต 443" -i eth0
sudo ecapture tls -m text
จะส่งออกแพ็กเก็ตข้อมูลข้อความธรรมดาทั้งหมด (ตั้งแต่ v0.7.0 เป็นต้นไป จะไม่บันทึกข้อมูล SSLKEYLOG อีกต่อไป)
คล้ายกับโมดูล OpenSSL
จับบริบทข้อความ tls
ขั้นตอนที่ 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
ขั้นตอนที่ 2:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
เช่น โมดูล bashmysqldpostgres
คุณสามารถใช้ ecapture -h
เพื่อดูรายการคำสั่งย่อยได้
วิดีโอ Youtube: วิธีใช้ eCapture v0.1.0
eCapture: รองรับการบันทึกข้อความธรรมดาของการรับส่งข้อมูล Golang TLS/HTTPS
ดูการมีส่วนร่วมสำหรับรายละเอียดในการส่งแพตช์และเวิร์กโฟลว์การสนับสนุน
ดูการรวบรวมสำหรับรายละเอียดเกี่ยวกับการคอมไพล์ซอร์สโค้ด eCapture