Cracking NTLMv2 Authentication
[email protected]
- in Microsoft Knowledge Base -
NTLM version 2
Microsoft has developed an enhancement, called NTLM version 2, that significantly improves both the authentication and session security mechanisms. For NTLMv2, the key space for passwordderived keys is 128 bits. This makes a brute force search infeasible, even with hardware accelerators, if the password is strong enough.
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
Windows authentications for network logons
LAN
Manager (LM) challenge/response
NT challenge/response
Windows
(also known as NTLM version 1)
NTLM
version 2 challenge/response
Kerberos
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
Agenda
1.
2. 3. 4. 5.
6.
LM authentication mechanism Demonstration (1) NTLM v2 authentication algorithm Sniffing SMB traffic on port 139 Sniffing SMB traffic on port 445 Demonstration (2)
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Agenda
1.
2. 3. 4. 5.
6.
LM authentication mechanism Demonstration (1) NTLM v2 authentication algorithm Sniffing SMB traffic on port 139 Sniffing SMB traffic on port 445 Demonstration (2)
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Challenge/Response sequence
Request to connect
Respond with a challenge code Send an encrypted password Reply with the result of authentication
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
LM challenge/response
uppercase(password[1..7])
as KEY
-1-
magic word
DES
LM_hash[1..8]
uppercase(password[8..14])
as KEY
magic word
DES
LM_hash[9..16]
0000000000
LM_hash[17..21]
magic word is KGS!@#$%
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
LM challenge/response
LM_hash[1..7]
as KEY
-2-
challenge code
DES
LM_hash[8..14]
as KEY
LM_response[1..8]
challenge code
DES
LM_hash[15..21]
as KEY
LM_response[9..16]
0000000000
LM_response[17..24]
Cracking NTLMv2 Authentication
challenge code
Feb 8, Windows Security 2002 Breifings
DES
Password Less than 8 Characters
uppercase(password[8..14]) 00000000000000
as KEY
magic word
DES
LM_hash[8..14]
as KEY
LM_hash[9..16] AAD3B435B51404EE
AAD3B435B514
LM_response[9..16]
challenge code
DES
as KEY
LM_hash[15..21] 04EE0000000000
challenge code
Feb 8, Windows Security 2002 Breifings
DES
LM_response[17..24]
Cracking NTLMv2 Authentication
BeatLM demonstration
check the password less than 8 1000 authentication data in our office
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Weakness of LM & NTLMv1
See: Hacking Exposed Windows 2000 Microsoft Knowledge Base: Q147706 L0phtcrack documentation
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Agenda
1.
2. 3. 4. 5.
6.
LM authentication mechanism Demonstration (1) NTLM v2 authentication algorithm Sniffing SMB traffic on port 139 Sniffing SMB traffic on port 445 Demonstration (2)
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
NTLM 2 Authentication
unicode(password) MD4
unicode( uppercase(account name) +domain_or_hostname)
as KEY HMAC_MD5 as KEY NTLMv2 Response
server_challenge +client_challenge
Feb 8, Windows Security 2002 Breifings
HMAC_MD5
Cracking NTLMv2 Authentication
- algorithm & how to enable
NTLMv2 more info
HMAC: RFC2104 MD5: RFC1321 MD4: RFC1320 Microsoft Knowledge Base: Q239869
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
LM, NTLMv1, NTLMv2
LM Password case sensitive Hash key length No 56bit + 56bit NTLMv1 Yes MD4 NTLMv2 Yes MD4
Password hash algorithm DES (ECB mode)
Hash value length
C/R key length C/R algorithm
64bit + 64bit
56bit + 56bit + 16bit DES (ECB mode)
128bit
56bit + 56bit + 16bit DES (ECB mode)
128bit
128bit HMAC_MD5
C/R value length
64bit + 64bit + 64bit
64bit + 64bit + 64bit
Cracking NTLMv2 Authentication
128bit
Feb 8, Windows Security 2002 Breifings
Agenda
1.
2. 3. 4. 5.
6.
LM authentication mechanism Demonstration (1) NTLM v2 authentication algorithm Sniffing SMB traffic on port 139 Sniffing SMB traffic on port 445 Demonstration (2)
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Authentication sequence
- NetBT (NetBIOS over TCP/IP) SMB_COM_NEGOTIATE request SMB_COM_NEGOTIATE response SMB_COM_SESSION_SETUP_ANDX request SMB_COM_SESSION_SETUP_ANDX response
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Extra SMB commands
- NetBT (NetBIOS over TCP/IP) SMB_COM_NEGOTIATE request SMB_COM_NEGOTIATE response SMB_COM_XXX request SMB_COM_XXX response SMB_COM_SESSION_SETUP_ANDX request SMB_COM_SESSION_SETUP_ANDX response
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
NT/2000
Authentication packet header
Ethernet IP TCP
FF534D42
SMB block size
SMB command
SMB mark: 0xFF, 0x53, 0x4D, 0x42 S M B
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
SMB general header structure
SMB command SMB mark FF534D42
Flags
Error code
Some fields
WordCount ByteCount Buffer ParameterWords
- variable length -
- variable length Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_NEGOTIATE request over NetBT
SMB command: 0x72 WordCount: 0x00
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_NEGOTIATE response over NetBT
SMB command: 0x72 Flags
Server response bit: on
WordCount: 0x11 Buffer contains
Server challenge code: 8 bytes
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Server challenge code
SMB command SMB mark FF534D4272 WordCount 11 Flags 8X
ByteCount
Server challenge code
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
SMB_COM_SESSION_SETUP_ANDX request over NetBT
SMB command: 0x73 WordCount: 0x0D Buffer contains
Encrypted password: 16 bytes Client challenge code: 8 bytes Account name Domain/Workgroup/Host name
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Encrypted password
SMB mark SMB command ByteCount FF534D4273 WordCount 0D
Length
Client challenge code
Encrypted password Account & Domain/Host name
If client challenge code = 0x0000000000000000 then DS client
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
2nd encrypted password
-1-
NT/2000 transmits two types encrypted password 2nd client challenge code has variable length
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
2nd encrypted password
FF534D4273
-2-
2nd length
0D
2nd encrypted password 2nd client challenge code, account & domain/host name
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_SESSION_SETUP_ANDX response over NetBT
SMB command: 0x73 Error code WordCount: 0x03
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
- correct password
Error code
0xC000006F
0xC0000070 0xC0000071 0xC0000072 0xC0000193 0xC0000224
The user is not allowed to log on at this time. The user is not allowed to log on from this workstation. The password of this user has expired. Account currently disabled.
This user account has expired.
The users password must be changed before logging on the first time.
Cracking NTLMv2 Authentication
Feb 8, Windows Security 2002 Breifings
Requisite information
Account name Domain/Workgroup/Host name Server challenge code Client challenge code Encrypted password The result of authentication
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB protocol
Please check out: ftp.microsoft.com/developr/drg/cifs DCE/RPC over SMB (ISBN 1-57870-150-3) www.samba.org/cifs/docs/what-is-smb.html
- specifications -
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Win 98/ME file sharing
98/ME file sharing
98/ME with DS Client
- encrypted password -
SMB_COM_NEGOTIATE request
SMB_COM_NEGOTIATE response
SMB_COM_SESSION_SETUP_ANDX request SMB_COM_SESSION_SETUP_ANDX response
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Agenda
1.
2. 3. 4. 5.
6.
LM authentication mechanism Demonstration (1) NTLM v2 authentication algorithm Sniffing SMB traffic on port 139 Sniffing SMB traffic on port 445 Demonstration (2)
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Authentication sequence
- MS-DS (Direct SMB Hosting Service) SMB_COM_NEGOTIATE request
2000
SMB_COM_NEGOTIATE response SMB_COM_SESSION_SETUP_ANDX request
2000
SMB_COM_SESSION_SETUP_ANDX response
SMB_COM_SESSION_SETUP_ANDX request SMB_COM_SESSION_SETUP_ANDX response
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
- MS-DS (Direct SMB Hosting Service) -
Challenge/Response
Request to authenticate with NTLMSSP
Respond with a challenge code in NTLMSSP
Send an encrypted password in NTLMSSP Reply with the result of authentication
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
1st SMB_COM_SESSION_SETUP_ANDX request over MS-DS
WordCount: 0x0C Buffer contains
SecurityBlob
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_SESSION_SETUP_ANDX
- WordCount
Type 3 has
OS name, LM type, Domain name
Type 4 has
SecurityBlob, OS name, LM type, Domain name
Type 12 has
SecurityBlob, OS name, LM type
Type 13 has
Password, Account name, Domain name, OS name, LM type
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_SESSION_SETUP_ANDX command - Type 12 (0x0C)
SMB mark SMB command
ByteCount
FF534D4273 WordCount 0C
SecurityBlob length SecurityBlob
- variable length -
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
NTLMSSP 1 in SecurityBlob
4E544C4D53535000 01000000 0000000000000000 0000000000000000
NTLMSSP mark: 8-byte ASCII string 1: 4-byte little-endian Unknown flags: 4bytes (If any) Domain/Workgroup name length: 2-byte littleendian * 2 (If any) Domain/Workgroup name offset: 4-byte littleendian (If any) Host name length: 2-byte little-endian * 2 (If any) Host name offset: 4byte little-endian (If any) Host name & Domain/Workgroup name
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
1st SMB_COM_SESSION_SETUP_ANDX response over MS-DS
WordCount: 0x04 Buffer contains
SecurityBlob
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_SESSION_SETUP_ANDX command - Type 4 (0x04)
SMB command SMB mark FF534D4273 WordCount 04
SecurityBlob length
8X
- variable length -
SecurityBlob
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
NTLMSSP 2 in SecurityBlob
4E544C4D53535000 02000000 30000000 0000000000000000
Feb 8, Windows Security 2002 Breifings
NTLMSSP mark: 8-byte ASCII string 2: 4-byte little-endian Host name length: 2-byte little-endian * 2 Host name offset: 4-byte little-endian Unknown flags: 4bytes Server challenge code: 8bytes 8-byte zero Host & Domain name length: 2-byte little-endian Host & Domain name offset: 4-byte little-endian Host name & Domain name
Cracking NTLMv2 Authentication
2nd SMB_COM_SESSION_SETUP_ANDX request over MS-DS
WordCount: 0x0C Buffer contains
SecurityBlob
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
SMB_COM_SESSION_SETUP_ANDX command - Type 12 (0x0C)
SMB mark SMB command
FF534D4273 WordCount 0C ByteCount
SecurityBlob length SecurityBlob
- variable length -
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
NTLMSSP 3 in SecurityBlob
4E544C4D53535000 03000000
40000000
NTLMSSP mark: 8-byte ASCII string 3: 4-byte little-endian LM response length & offset NT response length & offset Domain/Host name length & offset Account name length & offset Host name length & offset Unknown data length & offset Unknown flags: 4bytes Domain/Host name, Account name, Host name, LM response, NT response & Unknown data
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
NTLMv2 LM/NT response
LM response is constructed with
1st encrypted password: 16 bytes 1st client challenge code: 8 bytes
NT response is constructed with
2nd encrypted password: 16 bytes 2nd client challenge code: variable length
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
2nd SMB_COM_SESSION_SETUP_ANDX response over MS-DS
Error code WordCount: 0x04
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Requisite information
Account name Domain/Workgroup/Host name Server challenge code Client challenge code Encrypted password The result of authentication
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
NTLMSSP structure
also used in NTLM authentication of IIS DCOM NT Terminal Server 2000 Terminal Service NNTP Service
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Agenda
1.
2. 3. 4. 5.
6.
LM authentication mechanism Demonstration (1) NTLM v2 authentication algorithm Sniffing SMB traffic on port 139 Sniffing SMB traffic on port 445 Demonstration (2)
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Demonstration
Cracking NTLMv2 challenge/response
send a password using NTLMv2 authentication capture the encrypted password using ScoopLM send the encrypted password to our system in Japan using pscp recover the password from the encrypted string using Sixteen-Beat
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication
Sixteen-Beat
16 nodes Beowulf type cluster
1 server & 15 diskless clients
CPU: Athlon 1.4GHz RAM: SD-RAM 512MB NIC: 100Base-TX HD: 80GB (server only)
Linux kernel 2.4.2.2 mpich-1.2.2 100Base-TX Switch
Feb 8, Windows Security 2002 Breifings Cracking NTLMv2 Authentication
NTLMv2 challenge/response cracking performance
16CPU - about 4 million trials/sec
4 5 6 7 8 numeric numeric numeric numeric numeric & & & & & alphabet characters: alphabet characters: alphabet characters: alphabet characters: alphabet characters:
1CPU - about 0.25 million trials/sec
< 5 seconds < 4 minutes < 4 hours about 10 days about 21 months
gcc version 3.0.1 with O2 option
4 numeric & alphabet characters: < 1 minute 5 numeric & alphabet characters: < 1 hour 6 numeric & alphabet characters: about 63 hours MD4 & MD5: OpenSSL toolkit libcrypto.a HMAC: RFC 2104 sample code
Cracking NTLMv2 Authentication
Feb 8, Windows Security 2002 Breifings
Conclusion
For NTLMv2, the key space for password-derived keys is 128 bits. This makes a brute force search infeasible, even with hardware accelerators, if the password is strong enough.
from Microsoft Knowledge Base
Feb 8, Windows Security 2002 Breifings
Cracking NTLMv2 Authentication