6 คะแนน โดย kuroneko 2023-08-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • การใช้ logic analyzer ราคาถูกสามารถข้ามการเข้ารหัสดิสก์ทั้งลูกของ BitLocker บนคอมพิวเตอร์ที่มีชิป TPM แยกได้
  • BitLocker จะสร้าง FVEK (Full Volume Encryption Key) ก่อน แล้วเข้ารหัสมันด้วย VMK (Volume Master Key) จากนั้นจึงเก็บไว้บนฮาร์ดดิสก์
    • เมื่อเปิดใช้ TPM, VMK จะถูกเก็บไว้ใน TPM และระหว่างการบูตระบบจะดึง VMK จาก TPM มาใช้ถอดรหัสฮาร์ดดิสก์
    • แต่ในกระบวนการดึง VMK นี้ มีการส่งข้อความในรูปแบบ plaintext
  • เพื่อถอดข้อมูลนี้ ต้องจับคำสั่ง SPI ที่วิ่งระหว่าง CPU กับชิป TPM ด้วย logic analyzer
    • การต่อ logic analyzer เข้ากับชิป TPM โดยตรงทำได้ยากมาก จึงเริ่มจากเชื่อมต่อกับชิปอื่นที่ใช้ SPI bus ร่วมกับ TPM เพื่อจับสัญญาณ
    • ขั้นแรกคือต้องจับ SPI request ที่เข้าใจได้ง่าย แล้วถอดรหัส TIS ซึ่งเป็นอินเทอร์เฟซที่ใช้สื่อความหมายของการสื่อสารตามสเปก TPM
    • ไม่มีวิธีง่าย ๆ ในการถอดรหัส TIS จึงต้องถอดด้วยมือ และจากนั้นจึงรู้ start byte ของสัญญาณ TPM
    • จากนี้จึงเป็นขั้นตอนการจับคำสั่ง TPM2_Unseal ที่ระบุไว้ในสเปก TPM 2.0 เพื่อดึงความลับออกมา
    • ใช้ไบต์ที่ได้จาก TIS เพื่อค้นหาคำสั่ง TPM 2.0 แยกส่วน response แล้วใช้เครื่องมืออย่าง tpmstream-web เพื่อแยก buffer ออกจาก response ของ TPM
  • เมื่อได้คีย์แล้ว ก็สามารถเข้าถึงข้อมูลบนฮาร์ดดิสก์ได้
    • ถอดฮาร์ดดิสก์ออกไปเชื่อมต่อกับระบบอื่น แล้วใช้เครื่องมืออย่าง dislocker เพื่อสำรวจไฟล์ซิสเต็มที่ถูกเข้ารหัส
    • ใช้วิธีดั้งเดิมคือสลับโปรแกรมบางตัวให้เป็น cmd.exe เพื่อสร้าง system shell ที่ใช้งานได้จากหน้าจอล็อกอิน
    • เมื่อได้ cmd ที่มีสิทธิ์ผู้ดูแลระบบแล้ว ก็ทำอะไรก็ได้
  • สรุปคือ หากใช้ TPM แบบกายภาพ BitLocker จะอ่อนแอมาก จึงแนะนำให้ใช้ fTPM ที่รวมอยู่ใน CPU อย่างสมบูรณ์ ซึ่งทำให้การโจมตีลักษณะนี้เป็นไปไม่ได้
  • หากต้องการใช้ BitLocker อย่างปลอดภัยบนระบบที่มี TPM แบบกายภาพ ควรกำหนด PIN หรือรหัสผ่าน

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

 
kuroneko 2023-08-25

นี่เป็นอีกโพสต์หนึ่งในหัวข้อเดียวกัน

ดูเหมือนว่าปัญหานี้จะเกิดขึ้นเพราะมีเพียง Bitlocker เท่านั้นที่แปลกตรงไม่ใช้เซสชันที่เข้ารหัสซึ่ง TPM สร้างไว้เพื่อป้องกันการโจมตีแบบ man-in-the-middle
ว่ากันว่า systemd ไม่มีปัญหาแบบนี้เมื่อใช้ TPM และการเข้ารหัส LUKS

Bitlocker ดูเปราะบางมากทีเดียวในบางสถานการณ์ มากกว่าที่ผมคิดไว้
ทั้งที่เป็นโมดูลความปลอดภัยที่มีคำว่า Trusted อยู่ในชื่อแท้ ๆ เลยนึกว่าจะไม่มีปัญหาแบบนี้เสียอีก...