นักวิจัยด้านความปลอดภัยได้สาธิตเทคนิคที่ชาญฉลาดซึ่งใช้ประโยชน์จาก MD5 hash collision เพื่อหลีกเลี่ยงระบบตรวจจับ webshell อัตโนมัติ การพิสูจน์แนวคิดนี้เกี่ยวข้องกับไฟล์สองไฟล์ที่มี MD5 hash เหมือนกันแต่มีเนื้อหาที่แตกต่างกันโดยสิ้นเชิง โดยไฟล์หนึ่งปรากฏเป็น webshell ที่เป็นอันตรายและอีกไฟล์หนึ่งดูเหมือนข้อมูลสุ่มธรรมดา
การสาธิตนี้เน้นย้ำถึงจุดอ่อนพื้นฐานในระบบความปลอดภัยที่อาศัย MD5 hashing สำหรับการระบุไฟล์และการ caching ไฟล์ทั้งสองสร้าง MD5 hash เดียวกัน (b719a17ae091ed45fb874c15b2d9663f) แม้จะมีเนื้อหาไบนารีที่แตกต่างกัน โดย webshell มีโค้ด PHP ที่สามารถรันได้ในขณะที่ไฟล์ปกติประกอบด้วยไบต์ที่ดูเหมือนสุ่ม
การเปรียบเทียบไฟล์:
- ไฟล์ทั้งสองไฟล์: มีขนาด 512 ไบต์
- MD5 hash เหมือนกัน:
b719a17ae091ed45fb874c15b2d9663f
- webshell.php: ประกอบด้วยโค้ด PHP ที่สามารถรันได้
<?=eval($_GET[1]);?>
- normal.php: ประกอบด้วยข้อมูลไบนารีแบบสุ่มที่เริ่มต้นด้วยตัวอักษร 'x' ซ้ำๆ
ผลกระทบในโลกจริงมีจำกัดเนื่องจากแนวปฏิบัติด้านความปลอดภัยสมัยใหม่
ชุมชนด้านความปลอดภัยไซเบอร์แสดงปฏิกิริยาที่หลากหลายเกี่ยวกับผลกระทบในทางปฏิบัติของเทคนิคนี้ ผู้เชี่ยวชาญหลายคนชี้ให้เห็นว่าระบบความปลอดภัยสมัยใหม่ส่วนใหญ่ได้เลิกใช้ MD5 hashing แล้วเนื่องจากช่องโหว่ที่ทราบกันดี โซลูชันการสแกนแอนตี้ไวรัสและความปลอดภัยร่วมสมัยส่วนใหญ่ใช้ทางเลือกที่ปลอดภัยกว่าเช่น SHA-256 หรือใช้อัลกอริทึม hashing หลายตัวพร้อมกันเพื่อป้องกันการโจมตีประเภทนี้โดยเฉพาะ
เทคนิคนี้จะมีประสิทธิภาพเฉพาะกับระบบที่ใช้ MD5 สำหรับการ cache ผลการสแกนและอนุญาตให้แทนที่ไฟล์โดยอิงจากการจับคู่ hash เพียงอย่างเดียว สถานการณ์เช่นนี้หายากขึ้นเรื่อยๆ ในโครงสร้างพื้นฐานความปลอดภัยสมัยใหม่ เนื่องจากผู้ขายส่วนใหญ่ได้เลิกใช้ MD5 เมื่อหลายปีก่อนเนื่องจากจุดอ่อนทางการเข้ารหัส
ความท้าทายทางเทคนิคและปัญหาการตรวจจับ
นักวิเคราะห์ด้านความปลอดภัยได้สังเกตข้อจำกัดในทางปฏิบัติหลายประการของแนวทางนี้ ไฟล์ปกติในการสาธิตไม่มีโค้ด PHP ที่ถูกต้อง ทำให้น่าสงสัยสำหรับเครื่องสแกนความปลอดภัยที่มีความสามารถซึ่งวิเคราะห์เนื้อหาไฟล์แทนที่จะอาศัยค่า hash เพียงอย่างเดียว การโจมตีที่ซับซ้อนกว่านี้จะต้องการให้ไฟล์ที่ไม่เป็นอันตรายมีโค้ดที่ถูกต้องและใช้งานได้จริงซึ่งมีจุดประสงค์ที่แท้จริง
ไฟล์ปกตินั้นดูไม่ปกติเท่าไหร่นัก นักวิจัยด้านความปลอดภัยคนหนึ่งสังเกต โดยเน้นว่าลักษณะไบนารีของไฟล์ collision จะกระตุ้นให้เกิดการตรวจสอบเพิ่มเติมจากระบบตรวจจับสมัยใหม่
นอกจากนี้ สถานการณ์การโจมตีต้องการเงื่อนไขที่เฉพาะเจาะจงมาก: ผู้โจมตีต้องสามารถอัปโหลดไฟล์ที่ถูกสแกน มีไฟล์เหล่านั้นถูกรันหลังจากถูกพิจารณาว่าปลอดภัย และพบระบบที่ใช้ MD5 สำหรับการกำหนดว่าจะสแกนไฟล์ใหม่หรือไม่
ความแตกต่างหลักใน Hex Dumps:
- ไบต์ 0x00-0x0F: webshell.php ประกอบด้วยโค้ด PHP ขณะที่ normal.php มีตัวอักษร 'x'
- ไบต์ 0x10-0x2F: รูปแบบข้อมูลแบบสุ่มที่แตกต่างกัน
- ไบต์ 0x30-0x200: เหมือนกันเกือบทั้งหมดโดยมีความแตกต่างเล็กน้อยในตำแหน่งเฉพาะ
ผลกระทบที่กว้างขึ้นสำหรับความปลอดภัยที่อิงตาม Hash
แม้ว่าการสาธิตเฉพาะนี้อาจมีผลกระทบในทางปฏิบัติที่จำกัด แต่มันทำหน้าที่เป็นการเตือนใจที่สำคัญเกี่ยวกับความเสี่ยงที่ยังคงมีอยู่จากการใช้ฟังก์ชันการเข้ารหัสที่เลิกใช้แล้ว เทคนิคนี้แสดงให้เห็นว่าทำไมการย้ายของอุตสาหกรรมความปลอดภัยออกจาก MD5 จึงจำเป็นและยังคงมีความเกี่ยวข้อง
การวิจัยนี้ยังเน้นย้ำถึงความสำคัญของกลยุทธ์ defense-in-depth ระบบความปลอดภัยที่อาศัยการระบุไฟล์ที่อิงตาม hash เพียงอย่างเดียวมีความเสี่ยงต่อการโจมตี collision โดยธรรมชาติ โดยไม่คำนึงถึงอัลกอริทึม hashing ที่เฉพาะเจาะจง แนวทางความปลอดภัยสมัยใหม่มักจะรวมวิธีการตรวจจับหลายแบบ รวมถึงการวิเคราะห์พฤติกรรม การตรวจสอบเนื้อหา และอัลกอริทึม hash หลายตัว
การสาธิตนี้เข้าร่วมกับคอลเลกชันที่เติบโตของการใช้ประโยชน์จาก MD5 collision อย่างสร้างสรรค์ รวมถึงตัวอย่าง PoC||GTFO ที่มีชื่อเสียงซึ่งสร้างไฟล์ที่ทำงานเป็นทั้งเอกสาร PDF และโปรแกรมที่รันได้ในขณะที่รักษาค่า hash ที่เหมือนกัน การวิจัยดังกล่าวยังคงเน้นย้ำถึงความสำคัญอย่างยิ่งของการใช้ฟังก์ชัน cryptographic hash สมัยใหม่ที่ต้านทานการ collision ในแอปพลิเคชันความปลอดภัย
อ้างอิง: Webshell Collision