参考
https://3gstudent.github.io/3gstudent.github.io/渗透技巧-导出Chrome浏览器中保存的密码/
参考Chromium开源代码,找到Chrome做二次加密的方法: 通过Windows API CryptProtectData()实现
参考加密代码: https://github.com/scheib/chromium/blob/eb7e2441dd8878f733e43799ea77c2bab66816d3/chrome/browser/password_manager/password_store_win_unittest.cc#L107
CryptProtectData()的说明可参考:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa380261(v=vs.85).aspx
步骤流程
(1)获得关键信息,对应解密函数为CryptUnprotectData
参考地址:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa380882(v=vs.85).aspx
(2)只有与加密数据的用户具有相同登录凭据的用户才能解密数据
也就是说,只能在当前用户的凭据下解密数据。
获取另一系统下的Chrome密码
如果获得了另一系统下的相关配置文件,能否导出Chrome浏览器中保存的密码呢?
解密需要获得三部分内容:
1.加密密钥(即Master Key文件),位于%appdata%\Microsoft\Protect下对应sid文件夹下的文件
2.数据库文件Login Data
3.用户明文的密码,用于解密加密密钥
由于chromepass程序的设计问题,以上文件需要组成特定格式,子目录格式如下:
\AppData\Local\Google\Chrome\UserData\Default\Login Data
\AppData\Roaming\Microsoft\Protect{sid}}\下保存key文件
{sid}必须同原系统的对应
eg.
\AppData\Local\Google\Chrome\User
Data\Default\Login Data
\AppData\Roaming\Microsoft\Protect\S-1-5-21-3453529135-4164765056-1075703908-1001\329c4147-0011-4ad6-829d-e32dcbd1bbd7
如下图