跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

Windows下密码hash——NTLM hash和Net-NTLM hash介绍


cnhackteam7

推荐的帖子

0x00 前言

在Windows系统中,NTLM哈希一般从系统中导出,明文密码可以被Hashcat破解。

Hashcat支持200多种高度优化的哈希算法,其中四种与NTLM哈希相关,分别是NetNTLMv1、NetNTLMv1 ESS、NetNTLMv2和NTLM。

NetNTLM到底是什么?你是怎么得到它的?受byt3bl33d3r的文章启发,本文将结合自己的经历介绍这一部分。

学习链接:

https://byt 3bl 33d 3r . github . io/practical-guide-to-NTLM-relaying-in-2017-aka-get-a-stop-in-under-5-minutes . html

0x01 简介

NTLM哈希和网络NTLM哈希的区别

NTLM散列的加密方法

网络NTLM哈希的破解

0x02 NTLM hash

一般是指保存在Windows系统安全账户管理器中的用户密码哈希。

哈希的生成方法:

将明文密码转换为十六进制格式。

转换为Unicode格式,即在每个字节后加0x00。

用MD4加密Unicode字符串,生成32位十六进制数字字符串。

实际测试:

用户密码是test123。

转换成十六进制的格式是74657374313233。

转换为Unicode格式7400650073007400310032003300

字符串7400650073007400310032003300用MD4加密,结果是C5 a 237 b 7 e 9 D8 e 708d 8436 b 6148 a 25fa 1。

注:

MD4加密可以使用工具HashCalc,如下图所示

2-1.png

下面使用mimikatz导出用户密码的hash,并进行比较验证。结果相同,验证成功,如下图所示。

2-2.png

在渗透测试中,通常可以从Windows系统中的SAM文件和域控制中的NTDS.dit文件中获得所有用户的hash,通过Mimikatz读取lsass.exe进程可以获得登录用户的NTLM hash。

补充:

Windows Vista和Windows Server 2008之前的系统也将使用LM哈希。

本文不介绍LM哈希的生成方法。

Windows从Windows Vista和Windows Server 2008开始取消LM哈希。

但是有些工具的参数需要填充固定格式的LM hash:NT hash,LM hash可以填充0(LM hash可以是任意值),即00000000000000000: NT hash。

0x03 Net-NTLM hash

通常指网络环境下NTLM认证中的哈希。

NTLM认证采用挑战/应答的消息交换方式,流程如下:

向客户端服务器发送一个请求,其中包含明确的登录用户名。服务器会预先存储登录用户名和对应的密码哈希。

收到请求后,服务器生成一个16位的随机数(这个随机数称为Challenge)并以明文形式发送回客户端。使用存储的登录用户密码哈希加密质询以获得质询1。

收到质询后,客户端用登录用户的密码哈希加密质询,获得质询2(这个结果称为响应),并将响应发送给服务器。

服务器接收来自客户端的加密响应,将挑战1与响应进行比较,如果它们相同,则验证成功。

在上面的过程中,登录用户的密码哈希是NTLM哈希,响应包含Net-NTLM哈希。

有关NTLM认证的更多信息,请参考:

http://davenport.sourceforge.net/ntlm.html

在NTLM认证中,NTLM响应分为三个协议:NTLM v1、NTLMv2和NTLM会话v2。不同的协议使用不同格式的质询和加密算法。

因此,Net-NTLM哈希有不同的协议,即Net-NTLM v1哈希和Net-NTLM v2哈希。

实际测试:

服务器:

IP: 192.168.62.139

登录用户名:a

登录密码:test123

客户:

IP: 192.168.62.130

客户端通过命令行远程连接到服务器。该命令如下所示:

净使用量

同时,客户端运行Wireshark来捕获数据包,如下图所示。

2-3.png

前四个数据包对应于NTLM认证的四个步骤。

看第二个包,得到挑战,是c0b5429111f9c5f4,如下图

2-4.png

查看第三个数据包,获取客户端的加密质询,即a9134eee81ca25de,如下图所示

2-5.png

响应数据为a5 f1 c 47844 e 5b 3 b 9 c 67736 a2 e 1916d:010000000669 DAE 86 b A8 BD 301 a 9134 eee 81 ca 25 de 000000020001 e 00570049004 e 0020020020020020020020020031000504100420000

2-6.png

接下来,使用Hashcat破解Net-NTLM散列。

NTLMv2的格式是:

用户名:域:挑战:HMAC-MD5:blob

注:

Challenge是NTLM服务器挑战,domian是从数据包内容(IP或机器名)中获取的

HMAC-MD5对应数据包中的NTProofStr,如下图所示

2-7.png

相应blob数据包中的响应删除了NTProofStr的后半部分。

因此,完整的NTLMv2数据如下:

a:192 . 168 . 62 . 139:c0b 5429111 F9 C5 f 4:a5f1c 47844 e 5b 3b 9 c6f 67736 a2 e 1916d:010100000000000669 da e86 ba 8 BD 301 a 9134 eee 81 ca 25 de 00000000002001 e 00570049004 e 002d 00310

为了便于测试,创建了一个新的字典文件,字典内容是test123。

Hashcat参数如下:

hashcat-m 5600 a:192 . 168 . 62 . 139:c0b 5429111 F9 C5 f 4:a5f1c 47844 e 5b 3 B9 c6f 67736 a2 e 1916d:01010000000000000669 da e86 ba 8 BD 301 a 9134 eee 81 ca 25 de 000000000201 e 000570 0490000

描述:

-m: hash-type,5600对应NetNTLMv2,详细参数请参考表格:https://hashcat.net/wiki/doku.php?

-o:输出文件

字典文件是/tmp/password.list。

-force代表强制,测试系统不支持英特尔OpenCL。

成功破解了登录的明文密码,输出如下

2-8.png

在渗透测试中,通常有以下两种利用方法

1、使用中间人攻击的方式来获取Net-NTLM hash,常用工具为Responder和Inveigh

响应者:

用python编写,可从以下网址获得参考资料:

https://github.com/lgandx/Responder

因威格:

由powershell编写,可从以下网址获得参考资料:

https://github.com/Kevin-Robertson/Inveigh

实际测试:

测试环境同上。使用以下参数在同一网段中的测试主机上运行Inveigh:

导入模块。\Inveigh.psd1

invoke-Inveigh-console输出Y

当客户端通过命令行远程连接到服务器时,Inveigh会捕获Net-NTLMv2哈希,如下图所示

3-1.png

NTLMv2哈希是a:win-fvjlpitscfe:a 944 cf 357 e 0938 da:C1 bb 2 CD 038d 3 a 6 fa 53 FD 360 D7 CBA 9 c:010100000000937115 D1 b 8 c 8 BD 301033605 ACA 1 a 1c 000000002001 e 05700001。004 e002d 003100550041004200430047004200470049005500330001001 e00570049004 e002d 003100550042004300470042004700420047004700420047047049050300433004040400004001 e05770000040401。

Hashcat参数如下:

hashcat-m 5600 a:WIN-FVJLPTISCFE:a 944 cf 357 e 0938 da:C1 bb 2 CD 038d 3 aa 6 fa 53 FD 360d 7 CBA 9 c:01010000000000937115 D1 BC 8 BD 301033605 ACA 1 ACA 1c 000000000002001 e 0057 0049004 e 002d 0003100

成功破解了登录的明文密码,输出如下

3-2.png

2、通过多种方式强制目标客户端向伪造的服务器发起SMB连接,在伪造的服务器上捕获数据包,获得Net-NTLM hash

对于SMB协议,当客户端连接到服务器时,默认情况下,它首先尝试使用本机器的用户名和密码哈希登录。

实际测试:

客户:192.168.62.139

服务器IP: 192.168.62.130

在服务器上运行Wireshark来捕获数据包。

客户服务尝试连接到服务器。为了演示方便,通过界面操作,地址栏直接输入\\192.168.62.130,弹出框提示用户名和密码不正确,如下图所示。

4-1.png

此时,服务器的Wireshark已经捕获了数据包,并用以下内容组装了Net-NTLMv2哈希:

a:WIN-FVJLPTISCFE:a 05179 df 44d 8d CD 35:43589 a 30 AEA 29 cf 24 FBD 9 c 01 a 85 E4 b 7 e:01010000000000 EB 8e 1d 9 BF 08 ed 301 ca 089448 cceba 800000002001 e 00570049004 e 002d 0031 055000410041

Hashcat参数如下:

hashcat-m 5600 a:WIN-FVJLPTISCFE:a 05179 df 44 D8 CD 35:43589 a 30 AEA 29 cf 24 FBD 9 c 01 a 85 E4 b 7 e:01010000000000 EB 8e 1d 9 BF 08 ed 301 ca 000000002001 e 00057 0049004 e 002d 0031000 e

成功破解了客户端当前用户的明文密码,输出如下

4-2.png

实际利用举例:

发送钓鱼邮件时,用户在打开邮件时会偷偷访问伪造的服务器。服务器可以通过捕获数据包获得目标当前用户的Net-NTLM哈希,并进一步破解还原明文密码。

0x04 小结

介绍了NTLM哈希和Net-NTLM哈希的区别,演示了NTLM哈希的加密方法和Net-NTLMv2哈希的破解方法。如果您不能破解明文密码,您可以使用Pass-The-Hash来进一步利用NTLM散列。Net-NTLM哈希怎么样?

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...