微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell - 在本地设备中存储的 Chrome 91.0.4472.106 cookie 上应用 AES-256-GCM 解密

如何解决PowerShell - 在本地设备中存储的 Chrome 91.0.4472.106 cookie 上应用 AES-256-GCM 解密

我正在编写一个 PowerShell 脚本,用于解密存储在本地计算机中的 Chrome cookie。根据与 Chrome 80+ 版本相关的文档,cookie 的高级加密过程分为两个主要阶段:

  1. 主密钥加密
  2. cookie 加密

1- 生成具有 32 字节随机数据的主密钥。然后使用 Windows DPAPI(“CryptProtectData”)函数对其进行加密。在这个加密密钥的开头插入签名“DPAPI”进行识别。 最后,这个密钥使用 Base64 编码并存储在上面“用户数据”文件夹中的“本地状态”文件中。

2- Chrome 使用 AES-256-GCM 算法和上述主密钥和 12 字节随机 IV 数据对其进行加密。最后,它将签名“v10”插入到加密的cookie中,并将其存储在“Cookies”文件中。

脚本当前为选定的加密 cookie 生成签名 (v10)、IV 和加密数据。

Import-Module PSsqlite

Add-Type -Assembly System.Security
$ExtensionFile = "$($env:LOCALAPPDATA)\Google\Chrome\User Data\Local State"
$jsondata = Get-Content -Raw -Path $ExtensionFile | ConvertFrom-Json

#convert your key from base64 to a char array
$encKey = [System.Convert]::FromBase64String($jsondata.os_crypt.encrypted_key.ToString());

#remove the first 5 elements from the key array
#Write-Host "DPAPIEncryptedKey: $encKey"
$encKey= $encKey[5..$encKey.Length];
$decKey=[System.Security.Cryptography.ProtectedData]::Unprotect($encKey,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser);
$hexdecKey = ($decKey | ForEach-Object ToString X2) -join '' #Convert byte[] to hex
Write-Host "DPAPIDecryptedKey[HEX]: $hexdecKey"
Write-Host ""

$Database = "$($env:LOCALAPPDATA)\Google\Chrome\User Data\Default\Cookies"

$query = "SELECT * FROM cookies"

$encAll = (Invoke-sqliteQuery -DataSource $Database -Query $query | Where-Object {$_.host_key -eq "<host_key_name>" -and $_.name -eq "<field_name>"}).encrypted_value

Write-Host $encAll

[byte[]]$signature = $encAll[0..2]
[byte[]]$iv = $encAll[3..14]
[byte[]]$encData = $encAll[15..($encAll.Length-1-16)]
[byte[]]$auth_tag = $encAll[($encAll.Length-16)..($encAll.Length-1)]
Write-Host "SIGNATURE: $signature"
Write-Host "IV: $iv"
Write-Host "EncData: $encData"
Write-Host "Auth Tag: $auth_tag"

(只需将 替换为适当的)。

下一步应该是使用 AES-256-GCM 算法解密 $encData

根据GCM规范,解密过程如下:

Using GCM to decrypt and verify the authenticity of a packet.

就我而言,我拥有的输入元素:Seq。 [$iv]; 加密数据 [$encData]

因此,在变量 $encAll 中,为 Chrome cookie 加密指定的身份验证标记(图像中的“ICV”)和附加身份验证数据(图像中的“标题”)在哪里/解密过程?

更新:通过@topaco 评论添加了 auth_tag 部分。

是否有带有 AES-256-GCM 解密功能/方法的 PowerShell 模块?

来源:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。