หากคุณเคยลองใช้ Wireshark เพื่อตรวจสอบปริมาณการใช้งานเว็บคุณอาจพบปัญหา – มีการเข้ารหัสจำนวนมาก ในความเป็นจริงไซต์ส่วนใหญ่ใช้การเข้ารหัส SSL หรือ TLS เพื่อให้ผู้ใช้ปลอดภัย การเข้ารหัสที่แพร่หลายเป็นสิ่งที่ดีถ้าคุณซื้อของใน Amazon แต่มันเป็นความเจ็บปวดที่แท้จริงเมื่อคุณพยายามจัดการเครือข่าย นี่คือวิธีที่ฉันถอดรหัส SSL ด้วย Wireshark.
Wireshark และ SSL คืออะไร?
Wireshark เป็น เครื่องวิเคราะห์ปริมาณการใช้เครือข่าย; เป็นยูทิลิตี้หลักที่ผู้ดูแลระบบจำนวนมากใช้เพื่อแก้ไขปัญหาในเครือข่าย โดยเฉพาะมันจับเฟรม – หน่วยการสร้างของแพ็คเก็ต – และช่วยให้คุณเรียงลำดับและวิเคราะห์พวกเขา การใช้ Wireshark คุณสามารถดูปริมาณการใช้งานที่ไหลผ่านเครือข่ายของคุณและตัดออกทำให้มองเข้าไปในเฟรมของข้อมูลดิบ.
SSL เป็นโปรโตคอลการเข้ารหัสที่ทำงานบน Transport layer ของรุ่น OSI มันใช้วิธีการเข้ารหัสต่าง ๆ เพื่อรักษาความปลอดภัยข้อมูลในขณะที่เคลื่อนย้ายข้ามเครือข่าย หมายเหตุ: ในคู่มือนี้ส่วนใหญ่ฉันจะอ้างถึง SSL เป็นคำศัพท์ที่จับได้ทั้งสำหรับ SSL และ TLS ซึ่งเป็นตัวตายตัวแทน.
การเข้ารหัส SSL ทำให้การใช้ Wireshark มีความท้าทายมากขึ้นเนื่องจากป้องกันผู้ดูแลระบบจากการดูข้อมูลที่แต่ละแพ็คเก็ตมี เมื่อตั้งค่า Wireshark อย่างเหมาะสมจะสามารถถอดรหัส SSL และกู้คืนความสามารถในการดูข้อมูลดิบ.
การใช้คีย์ลับหลักก่อนการถอดรหัส SSL และ TLS
การใช้คีย์ลับหลักก่อนการถอดรหัส SSL ใน Wireshark เป็นวิธีที่แนะนำ รหัสลับหลักปรีมาสเตอร์ ถูกสร้างโดยไคลเอนต์และใช้โดยเซิร์ฟเวอร์เพื่อรับคีย์หลักที่เข้ารหัสการรับส่งข้อมูลเซสชัน เป็นมาตรฐานปัจจุบันในการเข้ารหัสและมักใช้งานผ่าน Diffie-Hellman.
เบราว์เซอร์ของคุณสามารถทำการบันทึกคีย์ลับหลักก่อนซึ่ง Wireshark ใช้ในการถอดรหัสเซสชัน SSL และ TLS.
นี่คือขั้นตอนในการถอดรหัส SSL และ TLS ด้วยรหัสลับหลัก:
- ตั้งค่าตัวแปรสภาพแวดล้อม
- เปิดเบราว์เซอร์ของคุณ
- กำหนดค่า Wireshark
- จับภาพและถอดรหัสเซสชั่น
เมื่อเสร็จแล้วคุณจะสามารถถอดรหัสเซสชัน SSL และ TLS ใน Wireshark ได้โดยไม่จำเป็นต้องเข้าถึงเซิร์ฟเวอร์เป้าหมาย.
ตั้งค่าตัวแปรสภาพแวดล้อม Windows
ใน ของ windows, คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมโดยใช้ การตั้งค่าระบบขั้นสูง ประโยชน์ ตัวแปรนี้มีชื่อว่า SSLKEYLOGFILE, มีเส้นทางที่จัดเก็บคีย์ลับหลักปรมาจารย์.
เริ่มต้นด้วยการคลิกขวาที่ คอมพิวเตอร์ของฉัน, และการเลือก คุณสมบัติ จากเมนู ระบบ เมนูจะเปิดขึ้น.
คลิกถัดไป การตั้งค่าระบบขั้นสูง ในรายการทางด้านซ้าย คุณสมบัติของระบบ หน้าต่างจะเปิดขึ้น.
บน สูง คลิกแท็บ ตัวแปรสภาพแวดล้อม ปุ่ม.
คลิก ใหม่… ใต้ปุ่ม ตัวแปรผู้ใช้. คุณยังสามารถสร้างตัวแปรภายใต้ ตัวแปรระบบ หากคุณต้องการบันทึกคีย์ SSL สำหรับผู้ใช้ทุกคนในระบบ แต่ฉันต้องการเก็บไว้ในโปรไฟล์ของฉัน.
ภายใต้ ชื่อตัวแปร, พิมพ์ต่อไปนี้:
SSLKEYLOGFILE
ใน ค่าตัวแปร พิมพ์เส้นทางไปยังไฟล์บันทึก คุณยังสามารถคลิก เรียกดูไฟล์ … ปุ่มและระบุพา ธ โดยใช้ตัวเลือกไฟล์.
โปรดทราบว่าหากคุณกำลังสร้างสิ่งนี้เป็นตัวแปรสภาพแวดล้อมทั้งระบบคุณจะต้องใช้อักขระตัวแทนที่เหมาะสมหรือจัดเก็บไฟล์ในที่ที่ผู้ใช้ทุกคนสามารถเข้าถึงได้ ตัวอย่างเช่นคุณอาจเลือก % USERPROFILE% \ Data Data \ ssl-keys.log หรือ C: \ SSL-keys.log.
เมื่อเสร็จแล้วให้คลิก ตกลง และย้ายไปยังขั้นตอนชุดถัดไป.
ตั้งค่าตัวแปรสภาพแวดล้อม Linux หรือ Mac
ใน ลินุกซ์ และ Mac, คุณจะต้องตั้งค่า SSLKEYLOGFILE ใช้ตัวแปรสภาพแวดล้อม นาโน. ใน ลินุกซ์, ตัวแปรถูกเก็บไว้ใน ~ / .bashrc. บน Mac, คุณจะสร้างตัวแปรในไฟล์ ~ / .MacOSX / สภาพแวดล้อม.
เปิดเทอร์มินัลแล้ว ใช้คำสั่งนี้ใน Linux:
นาโน ~ / .bashrc
เปิด ยิงจรวดขีปนาวุธ, คลิก อื่น ๆ, และเปิดเครื่องไปที่ เรียกใช้คำสั่งนี้ใน Mac OSX:
นาโน ~ / .bash_profile
ขั้นตอนต่อไปนี้เหมือนกันสำหรับทั้งระบบปฏิบัติการ.
ในตอนท้ายของไฟล์เพิ่มบรรทัดนี้:
ส่งออก SSLKEYLOGFILE = ~ / .ssl-key.log
กด Ctrl + X, Y เพื่อบันทึกการเปลี่ยนแปลงของคุณ.
ปิดหน้าต่างเทอร์มินัลแล้วเปิดอีกอันเพื่อตั้งค่าตัวแปรจากนั้นพิมพ์ข้อความต่อไปนี้เพื่อยืนยันว่าได้รับการตั้งค่าเรียบร้อยแล้ว:
echo $ SSLKEYLOGFILE
หลังจากที่คุณดำเนินการคำสั่งคุณจะเห็นผลลัพธ์คล้ายกับภาพด้านบน. /Users/comparitech/.ssl-key.log เป็นเส้นทางแบบเต็มไปยังบันทึกคีย์หลัก SSL ล่วงหน้าของฉัน หมายเหตุ: คุณจะต้องจดบันทึกของคุณซึ่งจะแตกต่างกันเพื่อเข้าสู่ Wireshark.
หลังจากที่ตัวแปรถูกตั้งค่าแล้วคุณสามารถไปยังขั้นตอนถัดไปได้.
เปิดเบราว์เซอร์ของคุณและตรวจสอบไฟล์บันทึก
ก่อนที่คุณจะเปิดใช้ Wireshark และกำหนดค่าให้ถอดรหัส SSL โดยใช้คีย์ pre-master คุณควรเริ่มต้นเบราว์เซอร์ของคุณและยืนยันว่ามีการใช้ไฟล์บันทึก.
ในการเติมบันทึกเป็นสิ่งสำคัญที่คุณจะต้องไปที่ไซต์ที่เปิดใช้งาน SSL ฉันใช้เซิร์ฟเวอร์ Apache ของตัวเองเพื่อทดสอบ แต่ไซต์ใด ๆ ก็ใช้งานได้ หนึ่งในประโยชน์ที่ใหญ่ที่สุดของการใช้คีย์ที่ใช้ร่วมกันล่วงหน้าเป็นหลัก คุณไม่จำเป็นต้องเข้าถึงเซิร์ฟเวอร์ เพื่อถอดรหัส SSL.
หลังจากที่คุณเยี่ยมชมเว็บไซต์ที่เปิดใช้งาน SSL ให้ตรวจสอบไฟล์เพื่อดูข้อมูล ใน ของ windows, คุณสามารถใช้ได้ Notepad. ใน ลินุกซ์ หรือ Mac, ใช้คำสั่งต่อไปนี้:
cat ~ / .ssl-log.key
ในระบบปฏิบัติการใด ๆ ไฟล์ของคุณควรมีลักษณะเหมือนของฉัน หลังจากที่คุณยืนยันว่าเบราว์เซอร์ของคุณกำลังบันทึกคีย์ล่วงหน้าหลักในตำแหน่งที่คุณเลือกคุณสามารถกำหนดค่า Wireshark เพื่อใช้คีย์เหล่านั้นเพื่อถอดรหัส SSL.
กำหนดค่า Wireshark เพื่อถอดรหัส SSL
เมื่อเบราว์เซอร์ของคุณบันทึกคีย์ล่วงหน้าหลักแล้วก็ถึงเวลากำหนดค่า Wireshark เพื่อใช้บันทึกเหล่านั้นเพื่อถอดรหัส SSL.
เปิด Wireshark แล้วคลิก แก้ไข, แล้วก็ การตั้งค่า. การตั้งค่า กล่องโต้ตอบจะเปิดขึ้นและด้านซ้ายคุณจะเห็นรายการรายการ ขยายตัว โปรโตคอล, เลื่อนลงแล้วคลิก SSL.
ในรายการตัวเลือกสำหรับโปรโตคอล SSL คุณจะเห็นรายการ (Pre) -Master-Secret ชื่อไฟล์บันทึก. เรียกดูไฟล์บันทึกที่คุณตั้งค่าในขั้นตอนก่อนหน้าหรือเพียงแค่วางเส้นทาง.
เมื่อคุณตั้งค่าเสร็จแล้ว (Pre) -Master-Secret ชื่อไฟล์บันทึก, คลิก ตกลง และกลับไปที่ Wireshark คุณพร้อมที่จะไปต่อ.
จับเซสชันและถอดรหัส SSL
ขั้นตอนสุดท้ายคือการจับภาพการทดสอบและตรวจสอบให้แน่ใจว่า Wireshark ถอดรหัส SSL ได้สำเร็จ.
- เริ่มเซสชันการดักจับที่ไม่กรองลดขนาดและเปิดเบราว์เซอร์ของคุณ.
- เยี่ยมชมไซต์ที่ปลอดภัยเพื่อสร้างข้อมูลและตั้งค่าตัวกรองการแสดงผลแบบ “ssl” เพื่อลดเสียงเซสชัน.
- คลิกที่เฟรมใด ๆ ที่มีข้อมูลที่เข้ารหัส.
ในกรณีของฉันฉันจะเลือกอันที่มีการรับส่งข้อมูล HTTP ด้วยการเข้ารหัสข้อความ / HTML เนื่องจากฉันต้องการดูซอร์สโค้ดที่เว็บเซิร์ฟเวอร์กำลังส่งไปยังเบราว์เซอร์ของฉัน แต่ทราฟฟิกที่เข้ารหัสใด ๆ ที่ใช้คีย์ลับหลักก่อนจะใช้ได้กับวิธีนี้ ซึ่งรวมถึงข้อมูลทั้งหมดที่ใช้การส่งต่อที่สมบูรณ์แบบ (PFE) ผ่าน Diffie-Hellman หรือการแลกเปลี่ยนคีย์ที่เทียบเท่า.
เมื่อคุณเลือกเฟรมเข้ารหัสแล้วให้ดูที่ มุมมองแพ็คเก็ตไบต์, และโดยเฉพาะแท็บที่อยู่ใต้มุมมอง คุณควรเห็นรายการสำหรับ ถอดรหัส SSL ข้อมูลอื่น ๆ ในกลุ่ม.
คุณจะสังเกตเห็นว่าเซสชันของฉันยังคงดูเหมือนว่าเต็มไปด้วยขยะและไม่มี HTML ปรากฏให้เห็น นั่นเป็นเพราะเว็บเซิร์ฟเวอร์ของฉัน (และเซิร์ฟเวอร์ Apache ส่วนใหญ่) ใช้การบีบอัด GZIP ตามค่าเริ่มต้น.
เมื่อคุณคลิก เนื้อความเอนทิตีที่ไม่ถูกบีบอัด แท็บซึ่งแสดงเฉพาะในกรณีนี้เมื่อเปิดใช้งานการถอดรหัส SSL คุณสามารถดูซอร์สโค้ดของไซต์ได้ ตัวอย่างเช่นนี่คือองค์ประกอบหัวเรื่องของหน้า Apache เริ่มต้นในแบบธรรมดา.
การใช้คีย์ RSA เพื่อถอดรหัส SSL
คุณอาจสังเกตเห็นก่อนหน้านี้ว่า Wireshark มีฟิลด์ที่ให้คุณอัปโหลดคีย์ RSA ของคุณและใช้เพื่อถอดรหัส SSL ในทางปฏิบัติ, การถอดรหัสคีย์ RSA เลิกใช้แล้ว.
เหตุผลในการถอดรหัส SSL ด้วยคีย์ RSA ไม่ได้ใช้กันอีกต่อไปคือ Perfect Forward Encryption (PFE) ทำให้ล้าสมัย การเจรจาต่อรองกับ Diffie-Hellman จะไม่ใช้คีย์ RSA โดยตรง แต่จะสร้างคีย์แบบครั้งเดียวซึ่งเก็บไว้ใน RAM เท่านั้นซึ่งถูกเข้ารหัสโดยใช้คีย์บนดิสก์.
หากก่อนหน้านี้คุณใช้คีย์ RSA เพื่อถอดรหัสทราฟฟิกและหยุดทำงานคุณสามารถยืนยันได้ว่าเครื่องเป้าหมายใช้การแลกเปลี่ยน Diffie-Hellman โดยเปิดใช้งานการบันทึก SSL.
หากต้องการเปิดการบันทึกให้คลิก แก้ไข จากเมนูแถบเครื่องมือและเลือก การตั้งค่า. ขยายตัว โปรโตคอล รายการเมนูด้านซ้ายและเลื่อนลงไปที่ SSL. จากที่นี่คุณสามารถคลิก หมวด ปุ่มและกำหนดตำแหน่งของบันทึก SSL ของคุณ.
เมื่อมีการตั้งค่าตำแหน่งการโต้ตอบ SSL ทั้งหมดจะถูกบันทึกไว้ในไฟล์ที่ระบุ.
จับเซสชันกับโฮสต์ที่เปิดใช้งาน SSL ของคุณจากนั้นตรวจสอบบันทึก โดยเฉพาะอย่างยิ่งคุณควรเลื่อนจนกว่าคุณจะพบเฟรมที่การจับมือ TLS ถูกเจรจา เป็นไปได้ว่าคุณจะเห็นรายการ DHE ที่บอกเล่าเรื่องราวในสตริงตัวเลข.
นั่นหมายถึงเปิดใช้งานการแลกเปลี่ยนคีย์ Diffie-Hellman ในกรณีของฉัน Apache ใช้เฉพาะ Diffie-Hellman พร้อมกับปุ่มรูปไข่ซึ่งเป็นสัญลักษณ์ของสตริง ECDHE.
เลื่อนไปอีกเล็กน้อยแล้วคุณจะเห็นว่าไม่พบความลับหลัก.
หากบันทึกของคุณมีลักษณะเช่นนั้นและคุณไม่สามารถถอดรหัสทราฟฟิกโดยใช้คีย์ RSA คุณไม่มีทางเลือกอื่นนอกจากเปลี่ยนเป็นวิธีลับแบบปรีมาสเตอร์ด้านบน.
เนื่องจาก PFE กำลังกลายเป็นแนวปฏิบัติมาตรฐานโดยมีแนวโน้มว่าจะบังคับให้ปัญหา TLSv1.3 การถอดรหัสคีย์ RSA แบบง่ายจึงเลิกใช้แล้วและไม่ควรใช้.
Wireshark ทำให้การรับส่งข้อมูล SSL เป็นไปอย่างง่ายดาย
ฉันชอบวิธีที่ Wireshark จัดการกับการถอดรหัส SSL การเข้ารหัสมีความซับซ้อนและมาตรฐานมีการเปลี่ยนแปลงอย่างต่อเนื่องเพื่อความปลอดภัยมากขึ้น แต่เมื่อตั้งค่า Wireshark และสภาพแวดล้อมของคุณอย่างถูกต้องสิ่งที่คุณต้องทำคือเปลี่ยนแท็บเพื่อดูข้อมูลที่ถอดรหัส มันไม่ง่ายไปกว่านี้อีกแล้ว.