PETEP ( PEnetration TEsting Proxy ) เป็นแอปพลิเคชัน Java โอเพ่นซอร์สสำหรับการสร้างพรอกซีสำหรับการวิเคราะห์และแก้ไขการรับส่งข้อมูล เป้าหมายหลักของ PETEP คือการจัดหาเครื่องมือที่มีประโยชน์สำหรับดำเนินการทดสอบการเจาะระบบของแอปพลิเคชันด้วยโปรโตคอลต่างๆ (บน TCP/UDP) โดยการตั้งค่าพรอกซีและตัวดักเพื่อจัดการการรับส่งข้อมูลที่ส่งระหว่างไคลเอนต์และเซิร์ฟเวอร์
ข้อกำหนด: Java 11+ (สำหรับ M1, M2 Mac ใช้ Java 17+)
petep.sh
(Linux, Mac) หรือ petep.bat
(Windows) # Linux / Mac
chmod +x petep.sh
./petep.sh
# Windows
petep.bat
เคล็ดลับ: สคริปต์การรันที่ให้มามีตัวแปรที่เป็นประโยชน์ รวมถึงไดเร็กทอรีการทำงาน (สำหรับไฟล์ petep.json
) และพาธไปยังไฟล์เรียกทำงาน Java คุณอาจต้องเปลี่ยนหากคุณไม่มีใน PATH หรือคุณใช้ Java หลายเวอร์ชันบนเครื่องของคุณ
เคล็ดลับ: การเปลี่ยนแปลงส่วนใหญ่ในโปรเจ็กต์จะไม่คงอยู่โดยอัตโนมัติ ใช้ Project → Save เพื่อบันทึกการเปลี่ยนแปลง เมื่อ PETEP กำลังทำงาน
PETEP เวอร์ชันล่าสุดมีการรองรับโปรโตคอลดังต่อไปนี้:
และมีฟังก์ชั่นดังต่อไปนี้:
คำอธิบายโดยละเอียดของโมดูลทั้งหมดสามารถพบได้ในคู่มือผู้ใช้อย่างเป็นทางการ
PETEP ถูกสร้างให้เป็นพร็อกซีสำหรับโปรโตคอลแอปพลิเคชันที่สร้างบน TCP/UDP ในการใช้ PETEP เป็นพร็อกซีสำหรับแอปพลิเคชันของคุณ โดยปกติแล้วจะมีตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้:
/etc/hosts
และแทนที่ที่อยู่ IP สำหรับโดเมนเป้าหมายได้ หากแอปพลิเคชันเป้าหมายไม่รับรู้ถึงพร็อกซี และ/หรือไม่สามารถใช้วิธีอื่นได้ (เช่น /etc/hosts
) เพื่อให้แอปพลิเคชันสื่อสารผ่าน PETEP คุณสามารถใช้ Deluder ได้
Deluder เป็นยูทิลิตี้ Python ซึ่งใช้เครื่องมือแบบไดนามิกเพื่อสกัดกั้นการเรียกใช้ฟังก์ชันในไลบรารีเครือข่ายและการเข้ารหัสทั่วไป ดู Deluder GitHub
ในการใช้ส่วนขยาย Scripter ขอแนะนำให้ใช้ GraalVM เนื่องจากการนำไปใช้งานนั้นสร้างขึ้นโดยใช้ GraalVM Polyglot ตั้งแต่ GraalVM 22.2 คุณอาจต้องติดตั้งภาษาสคริปต์ใน GraalVM โดยใช้ gu install js
เพื่อทดสอบการสื่อสาร TCP โดยใช้พร็อกซี HTTP ที่มีอยู่ เช่น Burp Suite, OWASP Zap ฯลฯ) คุณสามารถใช้โมดูลพร็อกซี HTTP ภายนอก PETEP ซึ่งช่วยให้คุณส่งสัญญาณการสื่อสาร TCP ผ่านพร็อกซีเหล่านี้ได้
โมดูลพร็อกซี HTTP ภายนอกล้อมการสื่อสาร TCP ภายใน HTTP ซึ่งถูกส่งผ่านพร็อกซี นอกจากนี้ ยังรองรับการทำซ้ำแพ็กเก็ตตราบใดที่การเชื่อมต่อยังมีอยู่ ดังนั้น Burp Intruder/Repeater และ Zaproxy Requester/Fuzzer ยังสามารถใช้สำหรับการสื่อสาร TCP ได้ด้วย
สำหรับข้อมูลเพิ่มเติม โปรดดูคู่มือผู้ใช้ - พร็อกซี HTTP ภายนอก
หมายเหตุ: หากคุณต้องการใช้ PETEP เป็นช่องทางในการส่ง TCP ผ่านพร็อกซี HTTP ฉันขอแนะนำให้ตั้งค่าในโหมด GUI จากนั้นเรียกใช้ในโหมด NO-GUI ( PETEP [project_path] --nogui
)
PETEP รองรับพร็อกซี TCP ด้วย SSL/TLS และ STARTTLS เพื่อที่จะใช้สิ่งเหล่านี้ คุณต้องจัดเตรียมใบรับรอง เนื่องจากแอปพลิเคชันไม่ได้สร้างใบรับรองขึ้นมาเอง สำหรับการสร้างใบรับรอง มีเครื่องมือมากมายที่สามารถใช้ได้ แต่หนึ่งในนั้นเป็นส่วนหนึ่งของไบนารี Java ( %JAVA_HOME%/bin/keytool
)
หากต้องการสร้างใบรับรองในที่เก็บคีย์ JKS คุณสามารถใช้คำสั่งต่อไปนี้:
keytool -genkey -alias petep -keyalg RSA -validity 3650 -keysize 4096 -keystore server.jks
หมายเหตุ: ขอแนะนำให้จัดเก็บใบรับรองเหล่านี้ควบคู่ไปกับโปรเจ็กต์ (project_dir/conf/server.jks)
มีคำแนะนำที่แตกต่างกันสามข้อที่จะช่วยให้คุณใช้ PETEP ได้เต็มประสิทธิภาพ:
เป็นไปได้ที่จะพัฒนาส่วนขยายโดยใช้ Java เพื่อใช้การสนับสนุนโปรโตคอลใหม่และ/หรือเพื่อใช้ฟังก์ชันใหม่ในการสกัดกั้นการสื่อสาร (รวมถึงส่วนติดต่อผู้ใช้แบบกราฟิก)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาส่วนขยาย โปรดดู Dev Guide
PETEP ได้รับอนุญาตภายใต้ GNU GPL 3.0