1 คะแนน โดย GN⁺ 2024-08-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

TONY HAWK’S PRO STRCPY

ภาพรวม

  • โปรเจกต์ที่เริ่มต้นในปี 2016 เพื่อค้นหาบั๊กใหม่สำหรับการแฮ็ก Xbox
  • เครื่องเกมคอนโซลช่วงต้นทศวรรษ 2000 มีมาตรการลดความเสี่ยงด้านความปลอดภัยน้อย จึงเหมาะสำหรับการเรียนรู้การแฮ็ก
  • วิเคราะห์ไฟล์เซฟของ Tony Hawk’s Pro Skater 4 และค้นพบช่องโหว่บัฟเฟอร์โอเวอร์โฟลว์

Part 1: การเริ่มต้น

  • ค้นพบช่องโหว่ผ่านฟีเจอร์ "Create-A-Park" ของ Tony Hawk’s Pro Skater 4
  • เกิดบัฟเฟอร์โอเวอร์โฟลว์ระหว่างกระบวนการคัดลอกสตริงชื่อช่องว่างของเกมเซฟด้วยฟังก์ชัน strcpy
  • สร้างไฟล์เซฟที่เป็นอันตรายและรันบน Xbox เพื่อให้ได้สิทธิ์ในการรันโค้ด

Part 2: การรันโค้ดระยะไกล

  • สำรวจวิธีแฮ็กคอนโซลผ่านเครือข่ายโดยไม่ต้องใช้เมมโมรีการ์ด
  • ทดลองวิธีส่งไฟล์เซฟในเกม LAN แบบมัลติเพลเยอร์เพื่อแฮ็กคอนโซลฝั่งไคลเอนต์
  • เกิดบัฟเฟอร์โอเวอร์โฟลว์เมื่อคอนโซลไคลเอนต์โหลดไฟล์เซฟที่ส่งมาจากโฮสต์
  • เขียนตัวจัดการข้อความเครือข่ายเพื่อส่งไฟล์เพย์โหลดเสริมไปยังคอนโซลไคลเอนต์

การวิเคราะห์ตัวแปร

  • พบช่องโหว่ลักษณะคล้ายกันในเกมอื่น ๆ เช่น Tony Hawk’s Pro Skater 3, Tony Hawk’s Underground 1 & 2, Tony Hawk’s American Wasteland
  • บางเกมใช้ stack cookie เพื่อป้องกันบัฟเฟอร์โอเวอร์โฟลว์

ผลลัพธ์สุดท้าย

  • เมื่อคอนโซลไคลเอนต์เชื่อมต่อกับคอนโซลโฮสต์ จะมีการส่งไฟล์เซฟที่เป็นอันตรายผ่านเครือข่าย
  • คอนโซลไคลเอนต์รับและรันไฟล์เพย์โหลดปฏิบัติการ
  • การรันโค้ดระยะไกลและการส่งไฟล์แบบอะซิงโครนัสสำเร็จ

สรุปโดย GN⁺

  • บทความนี้กล่าวถึงกระบวนการสำรวจและใช้ประโยชน์จากช่องโหว่ความปลอดภัยของเครื่องเกมคอนโซลรุ่นเก่าอย่าง Xbox
  • คอนโซลรุ่นเก่ามีมาตรการลดความเสี่ยงด้านความปลอดภัยน้อย จึงเหมาะสำหรับการเรียนรู้การแฮ็ก และสามารถได้สิทธิ์รันโค้ดผ่านบั๊กหลากหลายรูปแบบ
  • มีการสำรวจวิธีรันโค้ดระยะไกลผ่านเครือข่าย และนำเสนอวิธีแฮ็กคอนโซลได้โดยไม่ต้องใช้เมมโมรีการ์ด
  • มีการค้นพบและวิเคราะห์ช่องโหว่ในเกมอื่นที่มีฟังก์ชันคล้ายกัน ทำให้เรียนรู้เทคนิคการแฮ็กได้หลากหลาย
  • บทความนี้ให้ข้อมูลที่เป็นประโยชน์แก่ผู้ที่สนใจการแฮ็กและการวิจัยความปลอดภัย และช่วยให้เข้าใจช่องโหว่ของคอนโซลรุ่นเก่าได้ดีขึ้น

1 ความคิดเห็น

 
GN⁺ 2024-08-08
ความเห็นบน Hacker News
  • โมดูลัสของกุญแจสาธารณะของ habibi ต่างจากกุญแจสาธารณะ Microsoft RSA เพียง 4 ไบต์

    • กุญแจของ MS เป็นกุญแจ RSA 2048 บิต
    • ถ้าเปลี่ยนค่า exponent เป็น 3 ก็สามารถหากุญแจที่คล้ายกันได้ง่าย
    • แต่เพย์โหลดที่ใช้กุญแจ habibi ไม่ได้เปลี่ยน exponent ของรูทีนตรวจสอบลายเซ็น RSA
    • ดูเหมือนว่ายังคงตรวจสอบด้วย exponent 65537 อยู่
    • จึงยังไม่แน่ชัดว่าสิ่งนี้ทำได้อย่างไร
  • จำนวนเต็ม 2048 บิตอาจถูกแยกตัวประกอบได้อย่างค่อนข้างง่าย

    • โค้ดอาจทำงานโดยสุ่มเปลี่ยน 4 ไบต์แล้วลองแยกตัวประกอบ
    • ผลลัพธ์อาจได้โมดูลัสสาธารณะที่มีตัวประกอบขนาดเล็กจำนวนมาก
    • โดยทั่วไปโมดูลัส RSA จะมีตัวประกอบเฉพาะสองตัว แต่ในทางคณิตศาสตร์ก็ไม่ได้มีปัญหาถ้าจะมีมากกว่านั้น
  • การซอฟต์ม็อด Xbox 360 เคยทำได้ผ่านชื่อสวนในเกม Tony Hawk

    • ใช้ ROP chain 24 เซกเมนต์
    • คำอธิบายฟังก์ชันของไฮเปอร์ไวเซอร์แบบกระชับและความเห็นเกี่ยวกับบอตเน็ต x360 ชวนให้นึกถึงความหลังของ Xbox 360
  • น่าจะใช้ strncpy แทน strcpy

    • Tony Hawk มีชื่อเสียงเรื่องสนับสนุนอุปกรณ์ป้องกันความปลอดภัย
    • น่าเสียดายที่มีเอ็กซ์พลอยต์สำหรับม็อด THUG PRO
    • ม็อดนี้มีมานานกว่า 10 ปีแล้ว และผู้พัฒนาดั้งเดิมก็หายไปแล้ว
    • ตอนนี้ม็อดใช้งานไม่ได้ และไม่มีใครอยากใช้เพราะเสี่ยงต่อเอ็กซ์พลอยต์แบบยกระดับสิทธิ์เต็มรูปแบบ
    • หวังว่าบทความนี้จะไปถึงคนที่สนใจแพตช์ม็อด
  • Tony Hawk เป็นนักสเก็ตอาชีพ ไม่ใช่นักวิเคราะห์ความปลอดภัย

    • ช่วงปลายยุค 90 และต้นยุค 2000 เขาใช้เวลาไปกับการทำให้ซีรีส์เกมออกมาดูเป็นธรรมชาติ แทนที่จะไปตรวจสอบโค้ด
  • สงสัยว่ากุญแจส่วนตัวของ habibi รั่วไหลออกมาเมื่อไร ที่ไหน และอย่างไร

    • OP สามารถแพตช์ความต่าง 4 ไบต์ระหว่างกุญแจของ MS กับกุญแจ habibi เพื่อรันไฟล์ปฏิบัติการที่ไม่ได้ลงลายเซ็นได้
    • นั่นหมายความว่าเขาได้กุญแจส่วนตัวมาอยู่ในมือแล้ว
  • ตอนทำ PSX decompiling เคยเจอกรณีคล้ายกันเยอะ

    • memmove จะถูกลิงก์ผ่านไลบรารี SDK แต่ strcpy มาจาก BIOS
    • จนถึงปี 1997 เวอร์ชันถัดมาของ SDK ยังสามารถแพตช์เป็นเวอร์ชันไลบรารีได้
  • เคยอ่านการวิเคราะห์เอ็กซ์พลอยต์แบบนี้มาหลายครั้งแล้ว และหวังว่าจะได้อ่านอีกเป็นร้อยครั้งต่อจากนี้

    • เป็นบทความที่ยอดเยี่ยม
  • เป็นตัวอย่างที่ดีของกรอบความคิดด้านความปลอดภัยที่ผิดพลาดในการพัฒนาคอนโซล

    • แนวคิดแบบ "เราต้องพาร์สเฉพาะข้อมูลที่เราเก็บไว้เท่านั้น" เป็นแนวคิดที่ผิด
    • คอนโซลไม่ควรมองผู้ใช้เป็นศัตรู
    • แต่ถ้าจะทำแบบนั้น เกมก็ต้องมีกรอบความคิดด้านความปลอดภัยให้สอดคล้องกัน
  • ลองจินตนาการถึงปลั๊กอิน VSCode ที่ตั้งชื่อทริกและให้คะแนนคอมโบจากการกดคีย์ต่อเนื่อง

    • Tony Hawk's Pro-grammer