2024年5月7日发(作者:禾映寒)
windows口令破解GetHashes
(1)Windows系统下的Hash密码格式
Windows系统下的Hash密码格式为:用户名称:RID:LM-Hash值:NT-Hash值
例如:
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569
C23AA724774CE6CC:::表示
用户名称为:Administrator
RID为:500
LM-Hash值为:C8825DB10F2590EAAAD3B435B51404EE
NT-Hash值为:683020925C5D8569C23AA724774CE6CC
(2)Windows下LM-Hash值生成原理
"WELCOME" -> 57454C434F4D4500
如果明文口令经过大写变换后的二进制字符串不足14字节,则需要在其后添加
0x00补足14字节。然后切割成两组7字节的数据,分别经str_to_key()函数处
理得到两组8字节数据:
57454C434F4D45 -str_to_key(-> 56A25288347A348A
00 -str_to_key(-> 0000
56A25288347A348A -对4B47532140232425进行标准DES加密->
C23413A8A1E7665F
0000 -对4B47532140232425进行标准DES加密->
AAD3B435B51404EE
将加密后的这两组数据简单拼接,就得到了最后的LM Hash。
LM Hash: C23413A8A1E7665FAAD3B435B51404EE
Windows下NTLM Hash生成原理
IBM设计的LM Hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自
己的挑战响应机制,NTLM Hash便应运而生。假设明文口令是"123456",首先转
换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节
"123456" -> 31。
从ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协
议时就没考虑过big-endian序,ntoh*(、hton*(函数不宜用在SMB报文解码中。
0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x?变成0x00?。
此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字
节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源
有多少字节,MD4固定产生128-bit的哈希值,16字节
31-进行标准MD4单向哈希->32ED87BDB5FDC5E9
CBA88547376818D4,就得到了最后的NTLM Hash
NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4
使用GetHashes获取Windows系统的Hash密码值
(1)GetHashes命令使用格式
GetHashes [System key file] Or GetHashes $Local
一般使用"GetHashes $Local"来获取系统的Hash密码值,该命令仅在system权限
下才能执行成功。通常根据个人爱好,可以将""工具软件命名为其他
名称。
(2)使用GetHashes获取系统Hash值实例
2024年5月7日发(作者:禾映寒)
windows口令破解GetHashes
(1)Windows系统下的Hash密码格式
Windows系统下的Hash密码格式为:用户名称:RID:LM-Hash值:NT-Hash值
例如:
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569
C23AA724774CE6CC:::表示
用户名称为:Administrator
RID为:500
LM-Hash值为:C8825DB10F2590EAAAD3B435B51404EE
NT-Hash值为:683020925C5D8569C23AA724774CE6CC
(2)Windows下LM-Hash值生成原理
"WELCOME" -> 57454C434F4D4500
如果明文口令经过大写变换后的二进制字符串不足14字节,则需要在其后添加
0x00补足14字节。然后切割成两组7字节的数据,分别经str_to_key()函数处
理得到两组8字节数据:
57454C434F4D45 -str_to_key(-> 56A25288347A348A
00 -str_to_key(-> 0000
56A25288347A348A -对4B47532140232425进行标准DES加密->
C23413A8A1E7665F
0000 -对4B47532140232425进行标准DES加密->
AAD3B435B51404EE
将加密后的这两组数据简单拼接,就得到了最后的LM Hash。
LM Hash: C23413A8A1E7665FAAD3B435B51404EE
Windows下NTLM Hash生成原理
IBM设计的LM Hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自
己的挑战响应机制,NTLM Hash便应运而生。假设明文口令是"123456",首先转
换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节
"123456" -> 31。
从ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协
议时就没考虑过big-endian序,ntoh*(、hton*(函数不宜用在SMB报文解码中。
0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x?变成0x00?。
此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字
节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源
有多少字节,MD4固定产生128-bit的哈希值,16字节
31-进行标准MD4单向哈希->32ED87BDB5FDC5E9
CBA88547376818D4,就得到了最后的NTLM Hash
NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4
使用GetHashes获取Windows系统的Hash密码值
(1)GetHashes命令使用格式
GetHashes [System key file] Or GetHashes $Local
一般使用"GetHashes $Local"来获取系统的Hash密码值,该命令仅在system权限
下才能执行成功。通常根据个人爱好,可以将""工具软件命名为其他
名称。
(2)使用GetHashes获取系统Hash值实例