概述
现代浏览器通常会存储用户的用户名和密码,以方便快速登录各种在线服务。虽然这个功能提高了用户的便利性,但也存在显著的安全风险,特别是当这些存储的凭证成为恶意攻击者的目标时。本文讨论了windows存储在浏览器中的凭证的安全隐患、潜在漏洞以及提取这些凭证的工具和技术
浏览器(如Chrome、Firefox和Edge)会将用户凭证存储在本地文件中。这些凭证通常使用特定于Windows上的数据保护API(DPAPI)进行加密及解密:利用 DPAPI 在存储之前加密凭据。主密钥存储在本地,可以使用用户的密码解密
DPAPI 原理
DPAPI 的核心概念是利用用户的登录凭证来生成加密密钥。这些密钥被用于加密和解密数据,并且是透明的——应用程序可以使用 DPAPI 轻松地加密和解密数据,而不需要管理密钥。
主要特点
1用户绑定: DPAPI 使用当前登录用户的凭证生成加密密钥,这意味着只有该用户或拥有该用户凭证的攻击者才能解密数据。
1系统级别保护: 除了用户级别的密钥,DPAPI 还支持基于计算机的保护模式,这种模式在服务器环境中尤为重要,尤其是在多个用户或服务账户需要访问相同的加密数据时。
1无缝集成: 应用程序无需管理加密密钥,DPAPI 在后台处理这些细节,这大大简化了加密操作的复杂性。
DPAPI 的使用场景
1浏览器存储的凭证: 浏览器通常使用 DPAPI 来加密用户的登录信息和其他敏感数据,使得这些数据即使在磁盘上也以加密形式存储。
1Windows 密码管理器: Windows 自带的密码管理器使用 DPAPI 来保护存储的凭证。
1加密文件系统 (EFS): DPAPI 也是 Windows 加密文件系统 (EFS) 的核心部分,负责管理加密密钥。
风险分析及利用
在攻防行动中,存储凭证的位置始终是目标,因为它将允许访问其他应用程序或进行横向移动。读取存储在浏览器中的凭证不需要任何形式的提升,并且由于在监控的情况下会生成大量事件,因此防御团队很难检测到。
本地
利用Powershell & Mimikatz 获取
主密钥位于以下路径中,默认情况下不可见,因为它们被归类为受保护的操作系统文件。
Plaintext |
查看文件夹属性,可以看到默认会隐藏
可以通过从 PowerShell 控制台执行以下命令从本机中获取加密密钥:
Plain Text |
加密密钥可以在 Mimikatz dpapi::chrome模块中被提取,以解密“ 登录数据 ”的内容 。
Plaintext |
SharpDPAPI & SharpChrome 获取
SharpDPAPI 是 Mimikatz DPAPI 功能的 C# 端口,可实现基于内存的执行。可以通过执行以下命令来检索主密钥:
Plaintext |
ShaprDPAPI – 用户主密钥
SharpDPAPI – GUID 和解密密钥
SharpChrome 是 SharpDPAPI 的一部分,目标是存储在基于 Chromium 的浏览器(例如 Chrome、Edge 和 Brave)中的敏感信息。该工具将尝试 使用加密函数 BCrypt从本机文件中读取和解密 AES 密钥。API :CryptUnprotectData() 用于解密存储在浏览器中的密码。
Plaintext |
SharpChrome – DPAPI
CredentialKatz 获取
CredentialKatz 工具实现了另一种方法,即直接从 Chrome 或 Edge 的凭据管理器转储凭据。此方法更具隐蔽性,因为它会尝试注入现有浏览器进程并读取凭据,并且不使用 DPAPI 进行解密。还支持通过 minidump 文件离线解析凭据。CredentialKatz 使用 PasswordReuseDetectorImpl 类从凭据管理器中以纯文本形式获取 密码 。
Plaintext |
域环境备份密钥
如果已获得域管理员访问权限,则可以从域控制器检索 DPAPI 备份密钥,以解密域中任何用户的主密钥。备份密钥存储在以下 Active Directory 位置:
Mimikatz 支持通过执行以下命令来远程转储备份密钥:
Plaintext |
导出的备份密钥可以与目标用户的主密钥配合使用,解密加密密钥。
Plaintext |
类似地,此活动可以由 SharpDPAPI 执行。如果未指定 .pvk 文件,则密钥将显示在控制台中。
Plaintext |
DPAPI 域备份密钥
Plaintext |
非AD域
利用 lsassy 可以检索各种信息,包括主密钥。执行以下命令将检索主密钥并将其存储到文件中。
Plaintext |
可以将主密钥文件 与浏览器标志一起导入到 dploot(SharpDPAPI 的 Python 实现)中。该工具将通过 SMB 与目标主机进行身份验证,并将转储存储在 Microsoft Edge 和 Google Chrome 中的凭据和 cookie。dploot 从 “ 本地状态 ”文件中检索 AES 密钥,然后解密存储在“ 登录数据 ”文件中的凭据 。
Plaintext |
也可以 使用 masterkeys标志从 dploot 中获取主密钥。
Plaintext |
可以使用 donpapi 执行类似的操作。
Plaintext |
工具链接
CredentialKatz:https://github.com/Meckazin/ChromeKatz
lsassy:https://github.com/login-securite/lsassy
SharpDPAPI:https://github.com/GhostPack/SharpDPAPI
donpapi:https://github.com/login-securite/DonPAPI
dploot:https://github.com/zblurx/dploot
原文始发于微信公众号(暴暴的皮卡丘):Windows Web浏览器存储凭证攻防探索
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论