คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

ถอดรหัส SSL ด้วย Wireshark


หากคุณเคยลองใช้ 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: วิธีถอดรหัส SSL ด้วย Wireshark

เริ่มต้นด้วยการคลิกขวาที่ คอมพิวเตอร์ของฉัน, และการเลือก คุณสมบัติ จากเมนู ระบบ เมนูจะเปิดขึ้น.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

คลิกถัดไป การตั้งค่าระบบขั้นสูง ในรายการทางด้านซ้าย คุณสมบัติของระบบ หน้าต่างจะเปิดขึ้น.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

บน สูง คลิกแท็บ ตัวแปรสภาพแวดล้อม ปุ่ม.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

คลิก ใหม่… ใต้ปุ่ม ตัวแปรผู้ใช้. คุณยังสามารถสร้างตัวแปรภายใต้ ตัวแปรระบบ หากคุณต้องการบันทึกคีย์ SSL สำหรับผู้ใช้ทุกคนในระบบ แต่ฉันต้องการเก็บไว้ในโปรไฟล์ของฉัน.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

ภายใต้ ชื่อตัวแปร, พิมพ์ต่อไปนี้:

SSLKEYLOGFILE

ใน ค่าตัวแปร พิมพ์เส้นทางไปยังไฟล์บันทึก คุณยังสามารถคลิก เรียกดูไฟล์ ... ปุ่มและระบุพา ธ โดยใช้ตัวเลือกไฟล์.

โปรดทราบว่าหากคุณกำลังสร้างสิ่งนี้เป็นตัวแปรสภาพแวดล้อมทั้งระบบคุณจะต้องใช้อักขระตัวแทนที่เหมาะสมหรือจัดเก็บไฟล์ในที่ที่ผู้ใช้ทุกคนสามารถเข้าถึงได้ ตัวอย่างเช่นคุณอาจเลือก % USERPROFILE% \ Data Data \ ssl-keys.log หรือ C: \ SSL-keys.log.

เมื่อเสร็จแล้วให้คลิก ตกลง และย้ายไปยังขั้นตอนชุดถัดไป.

ตั้งค่าตัวแปรสภาพแวดล้อม Linux หรือ Mac

ใน ลินุกซ์ และ Mac, คุณจะต้องตั้งค่า SSLKEYLOGFILE ใช้ตัวแปรสภาพแวดล้อม นาโน. ใน ลินุกซ์, ตัวแปรถูกเก็บไว้ใน ~ / .bashrc. บน Mac, คุณจะสร้างตัวแปรในไฟล์  ~ / .MacOSX / สภาพแวดล้อม.

เปิดเทอร์มินัลแล้ว ใช้คำสั่งนี้ใน Linux:

นาโน ~ / .bashrc

เปิด ยิงจรวดขีปนาวุธ, คลิก อื่น ๆ, และเปิดเครื่องไปที่ เรียกใช้คำสั่งนี้ใน Mac OSX:

นาโน ~ / .bash_profile

ขั้นตอนต่อไปนี้เหมือนกันสำหรับทั้งระบบปฏิบัติการ.

ในตอนท้ายของไฟล์เพิ่มบรรทัดนี้:

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

ส่งออก SSLKEYLOGFILE = ~ / .ssl-key.log

กด Ctrl + X, Y เพื่อบันทึกการเปลี่ยนแปลงของคุณ.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

ปิดหน้าต่างเทอร์มินัลแล้วเปิดอีกอันเพื่อตั้งค่าตัวแปรจากนั้นพิมพ์ข้อความต่อไปนี้เพื่อยืนยันว่าได้รับการตั้งค่าเรียบร้อยแล้ว:

echo $ SSLKEYLOGFILE

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

หลังจากที่คุณดำเนินการคำสั่งคุณจะเห็นผลลัพธ์คล้ายกับภาพด้านบน. /Users/comparitech/.ssl-key.log เป็นเส้นทางแบบเต็มไปยังบันทึกคีย์หลัก SSL ล่วงหน้าของฉัน หมายเหตุ: คุณจะต้องจดบันทึกของคุณซึ่งจะแตกต่างกันเพื่อเข้าสู่ Wireshark.

หลังจากที่ตัวแปรถูกตั้งค่าแล้วคุณสามารถไปยังขั้นตอนถัดไปได้.

เปิดเบราว์เซอร์ของคุณและตรวจสอบไฟล์บันทึก

ก่อนที่คุณจะเปิดใช้ Wireshark และกำหนดค่าให้ถอดรหัส SSL โดยใช้คีย์ pre-master คุณควรเริ่มต้นเบราว์เซอร์ของคุณและยืนยันว่ามีการใช้ไฟล์บันทึก.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

ในการเติมบันทึกเป็นสิ่งสำคัญที่คุณจะต้องไปที่ไซต์ที่เปิดใช้งาน SSL ฉันใช้เซิร์ฟเวอร์ Apache ของตัวเองเพื่อทดสอบ แต่ไซต์ใด ๆ ก็ใช้งานได้ หนึ่งในประโยชน์ที่ใหญ่ที่สุดของการใช้คีย์ที่ใช้ร่วมกันล่วงหน้าเป็นหลัก คุณไม่จำเป็นต้องเข้าถึงเซิร์ฟเวอร์ เพื่อถอดรหัส SSL.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

หลังจากที่คุณเยี่ยมชมเว็บไซต์ที่เปิดใช้งาน SSL ให้ตรวจสอบไฟล์เพื่อดูข้อมูล ใน ของ windows, คุณสามารถใช้ได้ Notepad. ใน ลินุกซ์ หรือ Mac, ใช้คำสั่งต่อไปนี้:

cat ~ / .ssl-log.key

ในระบบปฏิบัติการใด ๆ ไฟล์ของคุณควรมีลักษณะเหมือนของฉัน หลังจากที่คุณยืนยันว่าเบราว์เซอร์ของคุณกำลังบันทึกคีย์ล่วงหน้าหลักในตำแหน่งที่คุณเลือกคุณสามารถกำหนดค่า Wireshark เพื่อใช้คีย์เหล่านั้นเพื่อถอดรหัส SSL.

กำหนดค่า Wireshark เพื่อถอดรหัส SSL

เมื่อเบราว์เซอร์ของคุณบันทึกคีย์ล่วงหน้าหลักแล้วก็ถึงเวลากำหนดค่า Wireshark เพื่อใช้บันทึกเหล่านั้นเพื่อถอดรหัส SSL.
คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

เปิด Wireshark แล้วคลิก แก้ไข, แล้วก็ การตั้งค่า. การตั้งค่า กล่องโต้ตอบจะเปิดขึ้นและด้านซ้ายคุณจะเห็นรายการรายการ ขยายตัว โปรโตคอล, เลื่อนลงแล้วคลิก SSL.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

ในรายการตัวเลือกสำหรับโปรโตคอล SSL คุณจะเห็นรายการ (Pre) -Master-Secret ชื่อไฟล์บันทึก. เรียกดูไฟล์บันทึกที่คุณตั้งค่าในขั้นตอนก่อนหน้าหรือเพียงแค่วางเส้นทาง.

เมื่อคุณตั้งค่าเสร็จแล้ว (Pre) -Master-Secret ชื่อไฟล์บันทึก, คลิก ตกลง และกลับไปที่ Wireshark คุณพร้อมที่จะไปต่อ.

จับเซสชันและถอดรหัส SSL

ขั้นตอนสุดท้ายคือการจับภาพการทดสอบและตรวจสอบให้แน่ใจว่า Wireshark ถอดรหัส SSL ได้สำเร็จ.

  • เริ่มเซสชันการดักจับที่ไม่กรองลดขนาดและเปิดเบราว์เซอร์ของคุณ.
  • เยี่ยมชมไซต์ที่ปลอดภัยเพื่อสร้างข้อมูลและตั้งค่าตัวกรองการแสดงผลแบบ "ssl" เพื่อลดเสียงเซสชัน.
  • คลิกที่เฟรมใด ๆ ที่มีข้อมูลที่เข้ารหัส.

ในกรณีของฉันฉันจะเลือกอันที่มีการรับส่งข้อมูล HTTP ด้วยการเข้ารหัสข้อความ / HTML เนื่องจากฉันต้องการดูซอร์สโค้ดที่เว็บเซิร์ฟเวอร์กำลังส่งไปยังเบราว์เซอร์ของฉัน แต่ทราฟฟิกที่เข้ารหัสใด ๆ ที่ใช้คีย์ลับหลักก่อนจะใช้ได้กับวิธีนี้ ซึ่งรวมถึงข้อมูลทั้งหมดที่ใช้การส่งต่อที่สมบูรณ์แบบ (PFE) ผ่าน Diffie-Hellman หรือการแลกเปลี่ยนคีย์ที่เทียบเท่า.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

เมื่อคุณเลือกเฟรมเข้ารหัสแล้วให้ดูที่ มุมมองแพ็คเก็ตไบต์, และโดยเฉพาะแท็บที่อยู่ใต้มุมมอง คุณควรเห็นรายการสำหรับ ถอดรหัส SSL ข้อมูลอื่น ๆ ในกลุ่ม.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

คุณจะสังเกตเห็นว่าเซสชันของฉันยังคงดูเหมือนว่าเต็มไปด้วยขยะและไม่มี HTML ปรากฏให้เห็น นั่นเป็นเพราะเว็บเซิร์ฟเวอร์ของฉัน (และเซิร์ฟเวอร์ Apache ส่วนใหญ่) ใช้การบีบอัด GZIP ตามค่าเริ่มต้น.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

เมื่อคุณคลิก เนื้อความเอนทิตีที่ไม่ถูกบีบอัด แท็บซึ่งแสดงเฉพาะในกรณีนี้เมื่อเปิดใช้งานการถอดรหัส SSL คุณสามารถดูซอร์สโค้ดของไซต์ได้ ตัวอย่างเช่นนี่คือองค์ประกอบหัวเรื่องของหน้า Apache เริ่มต้นในแบบธรรมดา.

การใช้คีย์ RSA เพื่อถอดรหัส SSL

คุณอาจสังเกตเห็นก่อนหน้านี้ว่า Wireshark มีฟิลด์ที่ให้คุณอัปโหลดคีย์ RSA ของคุณและใช้เพื่อถอดรหัส SSL ในทางปฏิบัติ, การถอดรหัสคีย์ RSA เลิกใช้แล้ว.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

เหตุผลในการถอดรหัส SSL ด้วยคีย์ RSA ไม่ได้ใช้กันอีกต่อไปคือ Perfect Forward Encryption (PFE) ทำให้ล้าสมัย การเจรจาต่อรองกับ Diffie-Hellman จะไม่ใช้คีย์ RSA โดยตรง แต่จะสร้างคีย์แบบครั้งเดียวซึ่งเก็บไว้ใน RAM เท่านั้นซึ่งถูกเข้ารหัสโดยใช้คีย์บนดิสก์.

หากก่อนหน้านี้คุณใช้คีย์ RSA เพื่อถอดรหัสทราฟฟิกและหยุดทำงานคุณสามารถยืนยันได้ว่าเครื่องเป้าหมายใช้การแลกเปลี่ยน Diffie-Hellman โดยเปิดใช้งานการบันทึก SSL.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

หากต้องการเปิดการบันทึกให้คลิก แก้ไข จากเมนูแถบเครื่องมือและเลือก การตั้งค่า. ขยายตัว โปรโตคอล รายการเมนูด้านซ้ายและเลื่อนลงไปที่ SSL. จากที่นี่คุณสามารถคลิก หมวด ปุ่มและกำหนดตำแหน่งของบันทึก SSL ของคุณ.

เมื่อมีการตั้งค่าตำแหน่งการโต้ตอบ SSL ทั้งหมดจะถูกบันทึกไว้ในไฟล์ที่ระบุ.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

จับเซสชันกับโฮสต์ที่เปิดใช้งาน SSL ของคุณจากนั้นตรวจสอบบันทึก โดยเฉพาะอย่างยิ่งคุณควรเลื่อนจนกว่าคุณจะพบเฟรมที่การจับมือ TLS ถูกเจรจา เป็นไปได้ว่าคุณจะเห็นรายการ DHE ที่บอกเล่าเรื่องราวในสตริงตัวเลข.

นั่นหมายถึงเปิดใช้งานการแลกเปลี่ยนคีย์ Diffie-Hellman ในกรณีของฉัน Apache ใช้เฉพาะ Diffie-Hellman พร้อมกับปุ่มรูปไข่ซึ่งเป็นสัญลักษณ์ของสตริง ECDHE.

เลื่อนไปอีกเล็กน้อยแล้วคุณจะเห็นว่าไม่พบความลับหลัก.

คู่มือถอดรหัส SSL: วิธีถอดรหัส SSL ด้วย Wireshark

หากบันทึกของคุณมีลักษณะเช่นนั้นและคุณไม่สามารถถอดรหัสทราฟฟิกโดยใช้คีย์ RSA คุณไม่มีทางเลือกอื่นนอกจากเปลี่ยนเป็นวิธีลับแบบปรีมาสเตอร์ด้านบน.

เนื่องจาก PFE กำลังกลายเป็นแนวปฏิบัติมาตรฐานโดยมีแนวโน้มว่าจะบังคับให้ปัญหา TLSv1.3 การถอดรหัสคีย์ RSA แบบง่ายจึงเลิกใช้แล้วและไม่ควรใช้.

Wireshark ทำให้การรับส่งข้อมูล SSL เป็นไปอย่างง่ายดาย

ฉันชอบวิธีที่ Wireshark จัดการกับการถอดรหัส SSL การเข้ารหัสมีความซับซ้อนและมาตรฐานมีการเปลี่ยนแปลงอย่างต่อเนื่องเพื่อความปลอดภัยมากขึ้น แต่เมื่อตั้งค่า Wireshark และสภาพแวดล้อมของคุณอย่างถูกต้องสิ่งที่คุณต้องทำคือเปลี่ยนแท็บเพื่อดูข้อมูลที่ถอดรหัส มันไม่ง่ายไปกว่านี้อีกแล้ว.

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me
Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

− 2 = 1

map