CRACK NTLM
CRACK NTLM
จากบทเรียนที่แล้วเราได้ทราบถึงขั้นตอนการทำงานของ LMHash ไปแล้ว และในบทเรียนนี้เราจะได้เรียนรู้เกี่ยวกับเป็น NTLM และ NTLMv2 กันบ้าง
NTHash
สำหรับ LM นั้นเป็น Format ของการเก็บ password ใน Windows ก่อนรุ่น Windows Me แต่หลังจากนั้นก็เป็น NTLM โดยเก็บใน SAM Database file ใน Windows ทั่วไป ซึ่งสามารถถูกดึงออกมาได้ด้วย Mimikatz ซึ่งบน Domain Controller (Windows Active Directory Server) ที่มีการเก็บ username, password ใน NTDS file ก็ใช้ NTLM เช่นกัน โดยปกติ Microsoft จะเรียกมันว่า “NTHash” โดย Algorithm ในการสร้าง hash คือ
MD4(UTF-16-LE(password))
โดยการ crack NTHash นั้นจะใช้คำสั่งเป็น
john --format=nt hash.txt
hashcat -m 1000 -a 3 hash.txt
NTLMv1
ส่วน NTLM นั้นจะแตกต่างกับ NTHash ตรงที่ NTLM นั้นเป็น protocol ที่ใช้ NTHash ในการติดต่อคุยกัน (challenge/response) ระหว่าง server และ client โดยหากเป็น NTLMv1 จะใช้ได้ทั้ง NTHash และ LM Hash ขึ้นอยู่กับ configuration ของ Windows Server
โดยการทำ Challenge จะเป็นการ random ค่า 8 ตัวอักษรจาก Server แล้วส่งไปให้กับทาง Client
โดยการทำ Response ฝั่ง Client จะเป็นดังนี้
โดยการทำ Challenge จะเป็นการ random ค่า 8 ตัวอักษรจาก Server แล้วส่งไปให้กับทาง Client
โดยการทำ Response ฝั่ง Client จะเป็นดังนี้
- Pad ส่วนของ LM Hash หรือ NTHash ด้วย NULL byte (0,\0) ให้เป็น 21 bytes
- แบ่ง 21 bytes ให้เป็น string 3 ชุด ชุดละ 7 byte
- แปลงแต่ละชุดให้กลายเป็น 64bit DES key โดยการ add parity bit เข้าไปต่อท้าย (เหมือนๆกับตอนที่เราทำของ LMHash)
- ทำการเข้ารหัส 8 byte ที่เป็น Challenge จาก Server ด้วย key แต่ละอัน ทำให้มี encrypt string 3 ชุด โดยชุดละ 8 byte
- เอาทั้งหมดมาต่อกันกลายเป็น 24 byte แล้วส่งกลับไปให้ Server
- เมื่อ Server ได้รับก็จะเอา password ที่มีในการถอดรหัสด้วยกระบวนการที่คล้ายๆกัน
โดยหากเป็นการ crack ตัว Hash ที่เราอาจจะดักจับมาได้ด้วยกระบวนต่างๆเช่น การใช้ Responsder ในการปลอมเป็น Server เป็นต้น สามารถทำได้โดย
john --format=netntlm hash.txt
hashcat -m 5500 -a 3 hash.txt
NTLMv2
ส่วน NTLMv2 ก็จะคล้ายคลึงกับ NTLMv1 ซึ่งตัว NTLMv2 นั้นสร้างมาเพื่อการเพิ่มความแข็งแกร่งของกระบวนการแลกเปลี่ยนให้มันมั่นคงมากขึ้น โดย NTLMv2 จะคล้ายคลึงกับ NTLMv1 แต่แตกต่างกันที่
- NTLMv2 จะมีการส่ง response 2 แบบกลับไปยัง Server
- เปลี่ยนจาก DES กลายเป็นใช้ HMAC-MD5 แทน
- 1 ใน response กลับไปยัง Server มีชื่อเรียกว่า variable length client challenge ซึ่งสร้างจาก (1) เวลาขณะนั้นในลักษณะ NT Time format, (2) 8-byte random value, (3) domain name และ (4) ค่ามาตรฐานบางอย่าง
โดยเขียนสรุป Algorithm ของ NTLMv2 ได้เป็น
SC = 8-byte server challenge, random
CC = 8-byte client challenge, random
CC* = (X, time, CC2, domain name)
v2-Hash = HMAC-MD5(NT-Hash, user name, domain name)
LMv2 = HMAC-MD5(v2-Hash, SC, CC)
NTv2 = HMAC-MD5(v2-Hash, SC, CC*)
response = LMv2 | CC | NTv2 | CC*
วิธีการ Crack NTLMv2
หากเราได้ hash ของ NTLMv2 มาจะ crack ได้โดยการใช้คำสั่งเป็น
john --format=netntlmv2 hash.txt
hashcat -m 5600 -a 3 hash.txt
หากเราต้องการใช้ wordlist ในการ crack ให้ใช้คำสั่ง
john --wordlist=/path/of/wordlists.txt --format=netntlmv2 hash.txt
hashcat-m 5600 -a 3 hash.txt /path/of/wordlists.txt
Comments
Post a Comment