飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1712|回复: 3

[病毒分析] LMCompatibilityLevel 安全隐患

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2022-7-19 17:30:14 | 显示全部楼层 |阅读模式
    本帖最后由 梦幻的彼岸 于 2022-7-19 19:23 编辑

    资料
    NTLM的工作原理:
    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值的用户在某些组中被设置为管理员,攻击者就可以利用它,在任何他想要的主机中以管理员身份进行认证。回到第一种情况,只要实现了一个主模板,它的分组也会被添加到主机的配置中。
    样本
    自解压可执行文件
    1.jpg

    执行流程
    2.jpg
    3.jpg




    1. 运行后,通过批处理文件执行regedit /s nl.reg将如下信息导入注册表
    2. reg文件信息

    3. REGEDIT4

    4. [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa]
    5. "LMCompatibilityLevel"=dword:00000001
    6. 导入此注册表文件后会让客户端设备使用LM和NTLM身份验证,并且如果服务器支持,它们使用NTLMv2会话安全。域控制器接受LM、NTLM和NTLMv2身份验证。
    复制代码

    动机分析
    在执行红队行动时,攻击者有可能会遇到无法使用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
    LAN Manager身份验证级别设置决定了网络登录使用哪种口令验证(challenge)/响应认证协议。这一选择会影响客户端使用的认证协议级别、计算机协商的会话安全级别以及服务器接受的认证级别。下表确定了策略设置,描述了该设置,如果你选择使用注册表来控制该设置而不是策略设置,则确定了相应注册表设置中使用的安全级别。

    环境描述注册表安全级别
    发送 LM 和 NTLM响应客户端设备使用LM和NTLM身份验证,并且从不使用NTLMv2会话安全性。域控制器接受LM、NTLM和NTLMv2身份验证。0
    发送 LM & NTLM – useNTLMv2session security if negotiated客户端设备使用LM和NTLM身份验证,如果服务器支持,则使用NTLMv2会话安全。域控制器接受LM、NTLM和NTLMv2身份验证。1
    仅发送NTLM响应客户端设备使用NTLMv1身份验证,如果服务器支持,则使用NTLMv2会话安全。域控制器接受LM、NTLM和NTLMv2身份验证。2
    仅发送NTLMv2响应客户端设备使用NTLMv2身份验证,如果服务器支持,则使用NTLMv2会话安全。域控制器接受LM、NTLM和NTLMv2身份验证。3
    仅发送NTLMv2响应。拒绝LM客户端设备使用NTLMv2身份验证,如果服务器支持,则使用NTLMv2会话安全。域控制器拒绝接受LM身份验证,并且只接受NTLM和NTLMv2身份验证。4
    仅发送NTLMv2响应。拒绝LM和NTLM客户端设备使用NTLMv2身份验证,如果服务器支持,则使用NTLMv2会话安全。域控制器拒绝接受LM和NTLM身份验证,并且只接受NTLMv2身份验证。5
    风险
    必须将LAN Manager认证级别设置为只发送NTLMv2响应,并拒绝LM和NTLM。
    查找 ID版本规则 ID告警级别
    V-73691WN16-SO-000380SV-88355r1_rule
    Kerberos v5认证协议是默认的,用于认证登录到域账户的用户。NTLM的安全性较低,在以后的Windows版本中被保留下来,以便与运行早期Windows版本的客户和服务器或仍然使用它的应用程序兼容。它也被用来验证运行较晚版本的独立计算机的登录。
    手工验证
    1. 如果下面的注册表值不存在或没有按指定的方式配置,则存在安全风险
    2. 符合要求的示例:
    3. Registry Hive: HKEY_LOCAL_MACHINE
    4. Registry Path: \SYSTEM\CurrentControlSet\Control\Lsa\
    5. Value Name: LmCompatibilityLevel
    6. Value Type: REG_DWORD
    7. Value: 0x00000005 (5)
    8. 级别5对应于“仅发送NTLMv2响应。拒绝LM和NTLM。“。是最令人向往的状态。
    9. 级别3(“仅发送NTLMv2响应”)是继续与NETID DC交互所需的最低级别。但请注意,如果您使用级别3而不是级别5,您将继续在您的域中允许NTLMv1,并且您的域的帐户仍将面临风险。
    复制代码

    在微软NTLM中发现的两个漏洞CVE 2019-1166和CVE-2019-1338,允许攻击者绕过MIC保护并修改NTLM消息流与签名要求。
    Windows NTLM 安全功能绕过漏洞
    CVE-2019-1338
    Microsoft Windows中存在一个安全功能绕过漏洞,当客户端也发送LMv2响应时,中间人攻击者能够成功绕过NTLMv2保护。成功利用此漏洞的攻击者可能获得降级NTLM安全功能的能力。
    Windows NTLM篡改漏洞
    CVE-2019-1166
    当中间人攻击者能够成功绕过NTLM MIC(消息完整性检查)保护时,Microsoft Windows中存在篡改漏洞。成功利用此漏洞的攻击者可能获得降级NTLM安全功能的能力。
    安全事件
    网络环境:一家总部位于美国东海岸的金融服务公司,拥有数百台服务器和工作站。
    预期:IT部门需要临时员工来处理激增的工作。这种“专家”可以根据需要在短期和特定任务的基础上列入工资单。
    问题:Netsurion的EventTracker在两台服务器上检测到特定注册表项的修改,其中一台服务器托管了后端MS SQL,另一台服务器托管了基于Web的前端应用程序。这个特定的键HKLM\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel。这被称为有史以来最容易被误解的Windows安全设置。该设置将在下次重新启动时生效。
    发现:一名由IT部门雇用并提供管理员权限的合同员工对提前终止合同感到不满,并安装了恶意软件来窃听前端和后端系统之间的流量。这位前员工想要对他的雇主认为的错误进行“惩罚”。
    修复:将注册表项设置恢复到其所需的级别(即5)。
    存在隐患的解决方案
    问题:Windows XP SP2、Vista、Windows 7客户端无法连接到Netware CIFS
    原因:这与NTLM的版本有关。Windows XP SP2之前的微软操作系统使用NTLM版本1。然而,Windows XP SP2、Vista和Windows 7客户端默认使用NTLM版本2。
    Netware 6.5 CIFS无法通过NTLM版本2协议进行通信。
    解决:
    • 打开 "regedit"
    • 到 "HKEY_LOCAL_MACHINE" -->"SYSTEM" -->"CurrentControlSet" -->"Control" -->"Lsa"
    • 在右边的窗格中,将 "LmCompatibiltyLevel "改为 "1"


    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    10 小时前
  • 签到天数: 1394 天

    [LV.10]以坛为家III

    发表于 2022-7-20 09:58:25 | 显示全部楼层
    感谢分享安全文章。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    8 小时前
  • 签到天数: 511 天

    [LV.9]以坛为家II

    发表于 2022-7-20 18:38:25 | 显示全部楼层
    过来学习,多谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表