-
-
[原创]LMCompatibilityLevel 安全隐患
-
发表于: 2022-7-19 17:17 12403
-
NTLM协议用于在客户端和服务器之间建立经过身份验证的通信。客户端必须在连接服务器之前对自身进行身份验证,这将验证客户端是否确实是合法客户端而不是攻击者。
经过身份验证的连接有3个步骤:
1.客户端在服务器端请求身份验证(NTLM身份验证)。
2.服务器使用质询(NTLMSSP_CHANGLISK)进行响应--一个随机的字符序列。
3.客户端使用其密钥加密质询并将其发回。
在身份验证过程中,客户端使用MD4指纹作为其密码的DES密钥(如果使用的是NTLMv1)来加密质询。在任何可能的情况下,在身份验证过程中都不会使用明文密码。唯一使用的版本是hash版本,称为NT hash,它是明文密码的简单hash。
当服务器收到客户端的响应时,可能出现两种情况:
1.当客户端为本地帐户时:
在这种情况下,服务器已经知道该帐户并拥有该帐户秘密的副本。然后,服务器将使用客户端的秘密密钥或带有MD4 hash的秘密密钥发送加密口令验证。在客户端响应之后,服务器将检查他是否使用了正确的密码对其进行身份验证。
本地帐户的hash密码(以加密版本)存储在安全帐户管理器(SAM)数据库中,只有在您配置为SYSTEM时才能通过注册表访问该数据库。请注意,尽管hash是加密存储的,但解密它们所需的信息也存储在SAM中。
2.当客户端为域帐户时:
域帐户的NThash存储在域控制器中。服务器必须使用域控制器(DC)来检查客户端的答案是否有效。服务器和DC之间的通信使用Netlogon服务完成。服务器将向DC发送有关客户端的多个详细信息,并且DC将在名为NTDS.DIT的文件中查找客户端的NT hash。
一旦DC获得hash,它将知道预期的响应,将其与客户端的响应进行比较,并将信息发送给服务器。
NTLM中间人攻击
NTLM中间人攻击使用NTLM基本认证方法作为攻击矢量,因此只要NTLM在使用,它就会有意义。
在这种攻击方法中,攻击者使用中间人技术在客户端和服务器之间转发信息。攻击者设法使自己处于一种客户认为他是服务器,而服务器认为他是客户的方式。
在攻击过程中,攻击者会接触到客户端和服务器之间传输的信息。在客户端与服务器的通信过程中,客户端的密码是没有用的,只有经过hash处理的版本。但是,当理解了认证过程后,很容易发现,偷窃hash值与偷窃密码本身是一样的,因为你可以通过使用它来获得认证。事实上,拥有NT的hash值和拥有明文的密码一样有用。
服务器不知道与他通信的是一个攻击者而不是一个客户,客户也不知道他提供的信息在这次通信中被一个不速之客所利用。最终,攻击者在服务器进行了认证,获得了客户执行任务和访问服务器资源的能力。
NTLM传递hash值
NTLM传递hash值攻击是基于NTLM中间人攻击方法。
当使用一个主模板配置一个新客户的工作区时,所有使用该模板配置的客户都有相同的账户信息。如果这些账户之一被攻破,攻击者设法获取把他的NT hash,那么他就可以开始检查任何他想要的帐户,希望这个账户的模板与他偷取hash的那个账户相同。
攻击者使用这个hash值的另一个选择是利用用户的分组。一旦攻击者掌握了NT的hash值,他就可以把所有的主机作为原始用户所在的组的一部分进行认证。例如,如果拥有被盗hash值的用户在某些组中被设置为管理员,攻击者就可以利用它,在任何他想要的主机中以管理员身份进行认证。回到第一种情况,只要实现了一个主模板,它的分组也会被添加到主机的配置中。
自解压可执行文件
执行流程
动机分析
在执行红队行动时,攻击者有可能会遇到无法使用Mimikatz的情况。这可能是因为几乎所有的杀毒软件或恶意软件都会在Mimikatz进入目标机时检测到它的存在。在这种情况下,攻击者可以进行内部攻击。要进行这种攻击,需要一个由Missing Link Security的Elad Shamir开发的工具。
在接触到Windows安全机制后,你会对NetNTLM很熟悉。这是一个基于口令验证响应的协议,在Windows无法应用基于Kerberos的认证时使用。在这种方法中,服务器向用户发送一个以NTLM哈希值为密钥的8字节口令验证。该哈希值是用户密码的MD4哈希值。有两个版本的NetNTLM。两者都存在漏洞。第一版的NetNTLM已经推出了相当长的时间,目前默认是禁用的。
从一般意义上讲,降级攻击是通过Mimikatz本身进行的。在利用了目标机器后。攻击者可以使用Mimikatz或手动编辑注册表键,如LMCompatibilityLevel的值,如0,1,2,可以使被攻击的设备使用NTLM降级或旧版本与其他SMB服务器互动,并可以导致转向其他用户和服务器。
然而,在演示中描述的这种攻击中,没有使用Mimikatz,而是攻击者通过SSPI从用户模式的应用程序调用本地过程到NTLM认证包。这就计算出了我们前面讨论的登录用户的NetNTLM响应。这种攻击本质上是禁用了NetNTLMv1的预防性控制,然后它继续从当前运行的进程中提取所有非网络登录令牌,并冒充相关用户。对于每个被冒充的用户,NTLM SSP在本地调用NTLMv1对所选口令验证的响应,然后恢复前面讨论的注册表键的原始值。现在,捕获的哈希值可以用你喜欢的工具来破解,如John the Ripper或Hash Cat。
相关资料
资料来源如下地址:为方便理解进行了翻译
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/network-security-lan-manager-authentication-level
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- [原创]物联网安全:基础篇 4099
- 威胁情报小课堂:阻止活跃勒索软件的感染 2165
- [翻译]发现利用 Facebook 和 MS 管理控制台实施的 Kimsuky APT 攻击 7041
- 威胁情报小课堂:LockBit Black 2041
- 威胁情报小课堂:Nitrogen 2067