วันนี้เราจะมาทำความเข้าใจเกี่ยวกับรูปแบบการเก็บ password ของ Windows โดยแต่ก่อนจนถึงปัจจุบันก็มีพัฒนาการมาเรื่อยๆครับ ซึ่งจะเริ่มจาก

LM (Lan Manager) hash

โดย LM นั้นเป็นรูปแบบดั้งเดิมในการเก็บ password ของ Windows ตั้งแต่ยุค 1980 ซึ่งในช่วงนั้นยังมีจำนวน charset ที่ยังจำกัดอยู่(16-bits characters) ซึ่งทำให้การ crack password นั้นทำได้ง่ายมากโดยดึงจาก SAM database บน Windows หรือว่า NTDS บน Domain Controller (Active Directory) ได้เลย

โดยขั้นตอนการเปลี่ยน password อยู่ในรูปแบบ LM hash คือ

  1. เปลี่ยนอักษรทั้งหมดเป็นตัวใหญ่
  2. หากตัวอักษรไม่ครบ 14 ตัวอักษรก็จะเติมตัวอักษรทั้งหมดให้เต็มด้วย NULL characters
  3. แบ่งเป็น 2 กลุ่ม กลุ่มละ 7 ตัวอักษร
  4. สร้าง DES key จาก character 7 ตัวทั้ง 2 กลุ่ม ก็จะได้ DES key 2 ชุด (ชุดละ 64 bit)
  5. นำ DES key ไปเข้ารหัส static string “KGS!@#$%” ด้วย DES (ECB)
  6. นำ encrypted strings ทั้ง 2 อันมาต่อกัน ก็จะได้เป็น LM Hash

เช่น สมมติ password เป็น password

  1. password => password000000
  2. PASSWORD000000
  3. PASSWOR, D000000
  4. นำ PASSWOR ซึ่งเป็น 56bit ไปแปลงเป็น 64bit โดยการใส่ parity bit เข้าไปต่อท้ายทุกๆ byte
    • DES Key ที่ได้จะเป็น
      • 0101000000100000010101000110101000110101101110100011110110100100111000001000001101110000101000011111010101010101
      • 0100010000011000000011000000011000000011100000011100000001100000000100000000010011010000101111100001001101010110
  5. นำ DES Key ไปเข้ารหัส string “KGS!@#$%” โดยใช้ Algorithm ECB จะได้เป็น 
    • e52cac67419a9a22
    • 4a3b108f3fa6cb6d
  6. ผลลัพธ์จะได้เป็น e52cac67419a9a224a3b108f3fa6cb6d

ตัวอย่าง source code สำหรับการเข้ารหัส LM Hash

วันนี้เอาเริ่มต้นแค่นี้ก่อน เดี๋ยวมาต่อกันเรื่อง NTLM และ NTLMv2 ต่ออีกทีครับ

ส่วนวิธีการ crack นั้นในที่นี้จะใช้ John-The-Ripper, Hashcat ครับ โดยใช้คำสั่งเป็น

[ต่อตอน 2 ทางนี้ครับ]

Source::