HackBrowserData原理及免杀分析?
本内容仅供学习与研究使用,请勿用于任何商业或非法用途。因参考或使用本文提及的项目、方法等所产生的任何后果,均由使用者自行承担。
本文仅提及Windows环境下Chrome/Chromium类浏览器
HackBrowserData is a command-line tool for decrypting and exporting browser data (passwords, history, cookies, bookmarks, credit cards, download history, localStorage and extensions) from the browser. It supports the most popular browsers on the market and runs on Windows, macOS and Linux.
不过HackBrowserData似乎还不支持v127.x后的Chrome解密
原理
浏览器数据文件
Windows系统下,
Chrome/Chromium类浏览器默认数据目录
chromeUserDataPath = homeDir + "/AppData/Local/Google/Chrome/User Data/Default/"
chromeBetaUserDataPath = homeDir + "/AppData/Local/Google/Chrome Beta/User Data/Default/"
chromiumUserDataPath = homeDir + "/AppData/Local/Chromium/User Data/Default/"密码、历史记录、Cookies分别以sqlite形式存储在目录下的Login Data 、History、Network\Cookies文件,但Cookies与LoginData被加密,History可直接读取



平时使用1password管理密码,所以浏览器内没有密码数据 临时加了一个测试
数据解密
chrome的代码在https://source.chromium.org/开源
DPAPI是啥?
DPAPI是Windows操作系统内置的数据保护接口,自Windows 2000起作为核心安全组件存在。它提供用户级数据加密,无需开发者自行实现密钥管理,广泛应用于保护用户敏感数据。
DPAPI作用极其广泛,lsass中保存的登录凭据、mstsc凭据、wifi密码、BitLocker恢复密钥等都通过DPAPI来保护数据。
原理
主密钥(Master Key)
每个用户/profile下有一组主密钥文件(位于 %APPDATA%\Microsoft\Protect\{SID})。
主密钥本身不存储明文,而是用用户的登录密码(或TPM)加密后存放。
主密钥有有效期(默认90天),到期后自动轮替,旧密钥仍保留用于解密历史数据。
用户登录密码 → 主密钥的解密钥匙
本地账户:使用用户密码的NTLM哈希派生出的SHA1密钥来解密主密钥。
域账户:使用域控返回的 DK(Domain Key) 来解密主密钥。DK由域控的LsaKey保护,而LsaKey又由域控的机器密钥保护,形成信任链。
TPM/Hello:Win10+ 支持用TPM存储的密钥或Windows Hello生物识别密钥来保护主密钥,实现“密钥与机器绑定”。
如何破解
离线破解
拿到用户主密钥文件 → 用用户密码哈希暴力破解 → 解密主密钥 → 解密数据内存Dump
对lsass.exe dump出已解密的主密钥 → 无需密码,直接使用主密钥即可解密数据域控
拿到域控的LsaKey→ 解密所有域用户的DPAPI数据
v80.x前
Chrome仅使用DPAPI对数据进行加密
v80.x~v126.x
将加密算法改为AES-256-GCM ,同时对密钥套了一层DPAPI,encrypted_key位于Local State中,密文以v10/v11开头
通过 CryptUnprotectData Win32 API对encrypted_key进行解密,得到明文AES加密密钥

v127.x后
Chrome 对解密进行了进一步的ABE(App-Bound-Encryptio)处理,新增了app_bound_encrypted_key,密文以v20开头,同时添加了一系列的防盗措施
https://github.com/moonD4rk/HackBrowserData/issues/431
谷歌已经告诉我们该怎么做了
向 Chrome 进程注入代码,借助Chrome自身进程去调用
IElevator chrome server接口来还原密钥
xaitax/Chrome-App-Bound-Encryption-Decryption
提权/将程序移动至Chrome安装目录,再通过
IElevator::DecryptData来还原密钥 - 需要管理员权限先使用系统
DPAPI解密app_bound_encrypted_key,再使用用户DPAPI二次解密 - 需要管理员权限
还有其他方法,但是不会,看不懂,懒得看,不哔哔了
不对 十分有九分不对劲
ABE图示

