跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

渗透技巧——离线导出铬浏览器中保存的密码

精选回复

发布于

0x00 前言

在上篇文章《渗透技巧——导出Chrome浏览器中保存的密码》 介绍了导出铬浏览器密码的原理和利用方法,文末留下一个问题:如果只获得了用户的ntlm hash,能否导出Chrome浏览器保存的明文密码呢?

该部分的参考资料较少,而想要解答这个问题,需要了解加解密的原理,所以本文尝试对该部分内容做介绍,得出最终结论

0x01 简介

本文将要介绍以下内容:

DPAPI简介及相关概念

DPAPI加解密流程

离线导出原理

离线导出方法

得出最终结论

0x02 DPAPI简介

本节内容参考自如下链接,加入个人理解:

https://msdn.microsoft.com/en-us/library/ms995355.aspx

https://www.passcape.com/index.php?section=docsyscmd=detailsid=28

DPAPI全称数据保护应用程序编程接口

作为Windows操作系统操作系统系统的一个数据保护接口被广泛使用

主要用于保护加密的数据,常见的应用如:

电场刺激电场刺激文件加密

存储无线连接密码

Windows操作系统凭据管理器

微软公司出品的网浏览器

观点

网络电话

Windows CardSpace

Windows操作系统保管库

谷歌浏览器

使用简单,加密使用函数CryptProtectData,解密使用函数CryptUnprotectData即可,系统在后台自动完成其他复杂的加解密操作

CryptProtectData的说明可参考:

https://msdn。微软。com/en-us/library/windows/desktop/aa 380261(v=vs . 85).aspx

CryptUnprotectData的说明可参考:

https://msdn。微软。com/en-us/library/windows/desktop/aa 380882(v=vs . 85).aspx

专有名词

DPAPI blob:

一段密文,可使用万能钥匙对其解密

结构如下图

2-1.png

该图引用自https://www.passcape.com/index.php?section=docsyscmd=detailsid=28

Master Key:

64字节,用于解密DPAPI blob

通过用户登录密码、席德和16字节随机数加密后保存在主密钥文件中

Master Key file:

二进制文件,可使用用户登录密码对其解密,获得万能钥匙

包含以下五个部分:

标题和系统信息

用户的主密钥

本地备份加密密钥

唯一凭证文件标识符

域主密钥备份

位于固定位置:% APPDATA % \ Microsoft \ Protect \ % SID %

例如:

c:\ Users \ a \ AppData \ Roaming \ Microsoft \ Protect \ S-1-5-21-3453529135-4164765056-1075703908-1001

包含文件D1 bbd 7(系统文件,隐藏属性)

无法直接查看

可通过米米卡茨对其解析,命令如下:

mimikatz.exe日志DP API:主密钥/in:' 329 c 4147-0011-4ad 6-829d-e 32 dcb D1 bbd 7 '

输出如下:

米米卡茨(命令行)# DP API:主密钥/in:329 c 4147-0011-4ad 6-829d-e 32 dcbd 1 bbd 7

**万能钥匙* *

dwVersion : 00000002 - 2

SZ guid:{ 329 c 4147-0011-4ad 6-829d-e 32 dcbd 1 bbd 7 }

dwFlags : 00000005 - 5

dwMasterKeyLen : 000000b0 - 176

dwBackupKeyLen : 00000090 - 144

dwCredHistLen : 00000014 - 20

dwDomainKeyLen:0000000-0

[万能钥匙]

**万能钥匙* *

dwVersion : 00000002 - 2

盐:9917 a47f 1949226 E4 E8 C5 b8 a3 AAF 4808

回合数:00000ce4 - 3300

算法散列:0000800 e-32782(CALG _ SHA _ 512)

密码:00006610-26128(CALG _ AES _ 256)

Pb键:cf 2634535384431 da 063 FD 9 a 240 ab 575d 13 DC 1 da ee8 ea 545d 5 c 9 a 0628 fa 5 cc 63 cf 825 B3 b 24642 B3 d 7 Fe 98 a 3703 C1 e 7 CDC 7 e 49132 a 017 e 3 e 45 Fe 34 f 8512 fdb 8 b 224 e 5 c 30 a 754683

[备份键]

**万能钥匙* *

dwVersion : 00000002 - 2

盐:57 fb6 f 4228 e9 ca 7d 686 C7 f 174 f 1691 b 0

回合数:00000ce4 - 3300

算法散列:0000800 e-32782(CALG _ SHA _ 512)

密码:00006610-26128(CALG _ AES _ 256)

Pb键:1 AE 34 b 8395375465871 a 999 c 0d 04365 cc 5089 CAD 4 bea 139344 ECB 8 f 9 cf 0 da 1 Abe 5d 7 b 096 e 9594506 a0d 8 c 772469 B1 f 81118d 608823 e 2 be 33020 a 86 bb 6d 190d 61865d 270 e 299 dfec 9 ACA 011

[credhist]

**信用记录信息* *

dwVersion : 00000003 - 3

guid:{ 58680 BC 7-055 e-4728-ab96-c 34d 64 c 565 f 2 }

0x03 DPAPI解密思路

1、使用用户登录密码解密Master Key file,获得Master Key

固定位置:% appdata % \ Microsoft \ protect \ % sid %通常有多个主密钥文件。

这是为了安全起见,系统会每90天自动生成一个新的主密钥(旧的不会被删除)

% appdata % \ Microsoft \ protect \ % sid %下有一个首选的固定文件,它包含最后一个主密钥文件的名称和创建时间。文件结构如下:

typedef struct _ tagPreferredMasterKey

{

GUID guidMasterKey

FILETIME ftCreated

} PREFERREDMASTERKEY,* PPREFERREDMASTERKEY

2、使用Master Key解密DPAPI blob,获得明文

0x04 离线导出Chrome浏览器中保存的密码

1、获得DPAPI blob

DPAPI blob位于SQLite数据库文件登录数据的密码部分,如下图所示

3-1.png

使用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()

2、解密Master Key获得明文

使用工具Windows密码恢复,下载地址:

https://www.passcape.com/index.php?section=downloadscategory=28

选择utils-DP API解码器和分析师-解密DP API数据blob。

将DPAPI blob文件设置为指向存储DP API blob的文件test.txt,如下图所示

3-2.png

设置主密钥文件指向要破解的主密钥文件,如下图所示

3-3.png

接下来,输入用户登录密码。

获取明文,如下所示

3-4.png

解密成功

使用ChromePass验证结果。

ChromePass下载地址:

http://www.nirsoft.net/utils/chromepass.html

参数描述:

/外部

该命令如下所示:

ChromePass.exe/外部c:\1\2\3\ test123

如下图

3-5.png

0x05 最终结论

1、无法自动定位Master Key file

如果用户sid文件夹包含多个主密钥文件,在尝试用Windows密码恢复解密时需要逐个测试,也可以通过读取文件首选的前16个字节来获取对应的主密钥文件。

使用ChromePass时不存在这个问题,只需填写文件上级目录的路径即可。

2、无法使用用户登录密码的NTLM hash解密Master Key

DPAPI的当前版本在设计时就考虑到了这一隐患,并使用SHA1算法(NTLM哈希使用MD4加密)。

因此,用户登录密码的NTLM哈希不能用于解密主密钥。

3、DPAPI很安全,符合密码安全性的要求

以上测试是基于目标系统的访问权限,也就是说目标系统已经变得不安全。

对于没有访问权限的Windows系统,目前使用DPAPI不会造成密码破解的问题。

0x06 小结

通过分析DPAPI的加解密过程,得出Chrome浏览器保存的明文密码不能使用用户的ntlm哈希导出的结论。

0x07 补充

导出离线Chrome浏览器中保存的密码,也可以通过lsass进程提取主密钥进行解密,无需获取用户的明文密码。详情请咨询《渗透技巧——利用Masterkey离线导出Chrome浏览器中保存的密码》。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。