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

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

[hide=20]
Hex dump ASCII
00 00 00 00|B5 D3 68 DC|8A 4D A5 B1|FD 2E 68 84| ....h?M.h
4D F2 0D 52|1E 2B F9 CD|00 00 00 00|00 00 00 00| M.R+........
[/hide]

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

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

[hide=20]
More info:

http://www.syss.de/fileadmin/ressources/04...Flash_Drive.pdf[/hide]

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

Read:

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