HACKING SECURE USB DRIVE
======================

เป็นวิธีการ hack พวก USB flash drive ที่ใช้ FIPS 140-2 Certified AES-256 Encryption เช่น Kingston DataTraveler Secure / Blackbox / Elite หรือ SanDisk Cruzer Enterprise - FIPS Edition เพื่อสามารถอ่านข้อมูลที่เข้ารหัสไว้โดยไม่ต้องรู้ password!







หลักการคร่าวๆ ของการ verify passsword บน Secure USB Drive (ทุกยี่ห้อ)
-----------------------------------------------------------------

1) user ใส่ password เพื่อ access ข้อมูลที่เข้ารหัสไว้บน drive
2) password ถูกแปลงจาก ASCII -> WideChar
3) password ที่แปลงแล้วถูก hash ด้วย MD5 แล้วแปลงเป็น เป็น ASCII-HEX และ WideChar ตามลำดับ
4) password ที่ได้จถูกแบ่งเป็น 2 ส่วน ส่วนแรกจะถูกใช้เป็น key สำหรับ step ต่อไป
5) USB drive จะใช้ key ที่ได้จาก 4) มา decrypt ข้อมูลขนาด 32 byte บางอย่างที่อยู่บน drive ด้วย AES-256-ECB algorithm
6) ถ้าผลลัพธ์ที่ได้จาก 5) เท่ากับค่าบางอย่าง แปลว่า password นั้นถูกต้องและ user จะสามารถ access ข้อมูลที่เข้ารหัสไว้ได้ใน private area

ที่นี่ช่องโหว่อยู่ตรงไหน?

ไอ้ค่าบางอย่างในข้อ 6) นั้นบังเอิญเป็นค่าคงที่ๆ 32 byte ไม่เคยเปลี่ยนแปลงเลย ไม่ว่าเราจะใช้ password อะไรก็ตาม (เหมือน hard-coded password) ซึ่งตรงนี้เป็น flaw ของการ verify password/key แต่ไม่ใช่ flaw ของการทำ encryption

และค่าคงที่นี้ก็คือ:

**Hidden Content: To see this hidden content your post count must be 20 or greater.**


เมื่อเราได้ค่าคงที่นี่แล้วก็ไม่จำเป็นต้องรู้ password อีกต่อไปใช่ไหมครับ? เพียงแต่เขียนโปรแกรมให้มันส่งค่านี้ไปเท่านั้นเอง มีคนเขียน PoC Tool แล้วลองไปหาดูเองครับ

จะเห็นได้ว่าอุปกรณ์ security บางอย่างถึงแม้จะใช้ Encryption standard อย่าง AES 256 bits หรือได้การรับรอง FIPS 140-2 ก็ไม่ได้ปลอดภัยเสมอไป ถ้า implement ไม่ถูกวิธี

**Hidden Content: To see this hidden content your post count must be 20 or greater.**


How to fix this issue:
----------

Read:

PKCS #5 v2.0: Password-Based Cryptography Standard