写给蓝军的滥用DPAPI操纵指南(上) | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

写给蓝军的滥用DPAPI操纵指南(上)

申博_安全工具 申博 146次浏览 已收录 0个评论

我之前谈到过 DPAPI (数据珍爱应用程序编程接口) ,包罗 KeePass 怎样运用 DPAPI 作为其”Windows 用户帐户”症结选项。 近来,我深入研究了 Benjamin Delpy 在 DPAPI 方面所做的一些令人惊叹的事情,并且想要纪录一些关于与 Mimikatz 一同滥用 DPAPI 的操纵纪录。

注重: 在这篇文章中,我存眷的是基于用户的 DPAPI 滥用题目,但在某种程度上,我也盘算深入研究机械的 DPAPI 密钥滥用题目。 若是我能够或许明白这些特定的毛病,我会草拟一个后续的博文。

另一个注重事项: 我没有提出这些滥用原语,也没有编写用于滥用它们的器械。 这些都是本杰明和其他人在本文中援用的作品。 我只是将这些滥用案例和句法纪录下来作为操纵指南。

DPAPI速成课程

我也不会议论太多的 DPAPI 配景,因为其他人已做得更好了:

本杰明的 wiki 示例(这里, 这里及这里以及种种与 DPAPI 相干的推文)

· 巴托斯 · 英格洛特在OPCDE 2017的议题“DPAPI 黑盒子揭秘”

Paula J 在 Black Hat Europe 2017 的议题 “DPAPI 和 DPAPI-NG ”

· “在渗入测试和暗码破解时期的 DPAPI 破绽应用” 作者: Jean-Christophe Delaunay (@Fist0urs @ fist0urs)

· “告诉我暗码我就能够统治天下”( “弗朗西斯科 · 毕加索(@dfirfpi),跟进文章在这里,以及他的”ReVaulting” 议题

· 伊泰 · 格雷迪 在@BsidesTLV的议题“在域状况中珍爱浏览器的隐秘”

· “解密 DPAPI 数据”作者: Jean-Michel Picod 和 Elie Bursztein

· @_rastamouse 宣布的很棒的博文跳转收集支解,个中包罗了关于运用 Mimikatz 解密加密的DPAPI RDP 凭据块

我确信我已遗漏了一些现有的事情,然则以上这些资本是我相识 DPAPI 的事情道理及其滥用的潜伏可能性的参考。

DPAPI供应了一组简朴的 API,能够运用绑定到特定用户或体系的隐式加密密钥轻松地加密(CryptProtectData())和解密(CryptUnprotectData())不透明的数据”块”。 这使得应用程序能够珍爱用户数据,而没须要忧郁密钥治理之类的题目。 有许多器械都在运用 DPAPI,但我只存眷 Chrome cookies / login Data、 Windows 凭据治理器/ Vault (比方生存的 IE/Edge登录和文件同享/RDP 暗码)和长途桌面衔接治理器的.rdg后缀的文件。

在较高的级别上,关于用户场景,运用用户的暗码来派生特定于用户的”主密钥”。 这些密钥位于 C:\Users\<USER>\AppData\Roaming\Microsoft\Protect\<SID>\<GUID>,个中 <SID>是用户的平安标识符,GUID 是主密钥的称号。 一个用户能够有多个主密钥。 这个主密钥须要运用用户的暗码或域备份密钥(请参阅 Chrome,场景4)举行解密,然后用于解密任何 DPAPI 数据块。

因而,若是我们试图解密用户的已加密的 DPAPI 数据块(好比 Chrome cookie 值) ,我们须要取得特定用户的主密钥。

Chrome

Chrome运用 DPAPI 存储了我们体贴的两个重要信息: cookie 值和生存的登录数据:

· Cookie 文件地位:%localappdata%\Google\Chrome\User Data\Default\Cookies

· 生存的登录数据地位: %localappdata%\Google\Chrome\User Data\Default\Login Data

%localappdata%在大多数体系上映射到了” C:\Users\<USER>\AppData\Local “。 另外,本节中的任何 Mimikatz 敕令都能够用于”Cookie”文件或”Login Data”文件。

Chrome 将其 cookie 存储在 SQLite 数据库中,cookie 值自身作为加密的 DPAPI 数据块加以珍爱。 荣幸的是,Benjamin 在 Mimikatz 中完成了 Chrome SQLite 数据库的剖析! 要列出以后用户可用的 Cookies,能够运转以下 Mimikatz 敕令:

mimikatz dpapi::chrome /in:”%localappdata%\Google\Chrome\User Data\Default\Cookies”

写给蓝军的滥用DPAPI操纵指南(上)

但是,现实的 cookie 值运用了用户的主密钥举行加密的 DPAPI,而主密钥又遭到用户暗码(或域备份密钥)的珍爱; 在实验检索这些 cookie (或登录数据)值时,我们可能会碰到两种状况。

场景1: 在目的用户的高低文中实行代码

这多是最简朴的状况。 若是你有一个 Beacon或许Mimikatz或许是其他代码正在你的目的用户的高低文中运转,只需将 /unprotect 标记添加到 dpapi: : chrome 敕令中:

写给蓝军的滥用DPAPI操纵指南(上)

这只是指导 Mimikatz 运用 CryptUnprotectData API 为我们解密这些值。 因为我们在用户的高低文中实行代码,以是他们的密钥将被隐式地用于解密。

注重: 有时候你会碰到一个题目,就是当 Cookies 数据库被 Chrome 运用时会没法翻开。 在这类状况下,只需将 cookies / login Data 文件复制到以后操纵地位,并运用新途径运转 dpapi: : chrome 敕令。

场景2: 目的用户以后登录的盘算机上的治理接见

若是你不想将信标注入到其他用户的高低文中,或许你的跳板机上以后登录了多个用户,那末你有几个选项能够实行。

若是在由分歧用户具有的给定数据库上运转 /unprotect ,则在试图挪用 CryptUnprotectData ()时会涌现毛病。 Mimikatz 的新版本现实大将辨认所需的 masterkey 的 GUID (一旦 Mimikatz 在 Cobalt Strike 中更新,它将在输出中显示出来) 鄙人面的 mimikatz.exe 示例中,所需主密钥的 GUID 为{ b8854128-023c-433d-aac9-232b4bca414c } :

写给蓝军的滥用DPAPI操纵指南(上)

我们能够推断出图中圈出的是 harmj0y的基于 Chrome Cookies文件夹的地位的主密钥。 我们还能够经由历程列出用户文件夹(C:\Users\<USER>\AppData\Roaming\Microsoft\Protect\<SID>\<GUID>)中的主密钥 GUID来跟踪任何用户的密钥。 请参阅Seatbelt 局部,相识怎样为一切用户轻松做到这一点。

因而,我们须要以某种体式格局猎取这个特定的 harmj0y 的主密钥。 一种挑选是运转 sekurlsa: : DPAPI 从以后登录到体系的用户的内存中提取一切 DPAPI 密钥(偶然也会涌如今 sekurlsa: : msv 中) :

写给蓝军的滥用DPAPI操纵指南(上)

病毒下载器利用搜索引擎广告推广,推装超过30款软件

腾讯安全御见威胁情报中心发现一病毒团伙通过伪装多款知名软件的官方下载站传播病毒下载器,其传播渠道是通过购买搜索引擎广告来获得流量,被病毒团伙使用的关键字包括谷歌浏览器、flash player等知名软件。病毒下载器运行后会联网获取推广配置文件,根据配置文件的定义静默推装超过30款软件,此外还会通过锁定浏览器主页及添加网址收藏夹等获得收益。 根据腾讯安图高级威胁追溯系统统计,该病毒五月初开始活跃,每天中招下载的用户近万,累计已有数十万用户电脑被感染。 传播趋势 以flash player为例,在某搜索引擎里搜索关键字“flash player”,搜索结果第一条展示的就是伪装的flash player官方下载页面(带有广告字样) 通过搜索引擎

注重: 若是你没有经由历程 Beacon 运用 mimimikatz,那末你能够应用 Mimikatz 的 DPAPI 缓存(请参阅本文末端的 Cache 局部) 因为 Beacon 的功课架构,每一个 mimikatz 敕令都将在一个新的历程中运转,因而 mimimikatz 敕令之间不会保存状况。 现在还没有一种要领能够经由历程 GUI 发送多个 mimikatz 敕令,只管能够经由历程攻击者脚正本完成。

将GUID  { b8854128-023c-433d-aac9-232b4bca414c }匹配到的DPAPI 密钥提取出来,我们须要的 SHA1主密钥是 f35cfc2b44aedd7… (能够运用完全的主密钥或 SHA1版本)。 能够手动为 DPAPIChrome 模块指定此选项,能够实行以下敕令:

beacon> mimikatz dpapi::chrome /in:”C:\Users\harmj0y\AppData\Local\Google\Chrome\User Data\Default\Cookies” /masterkey:f35cfc2b44aedd7…

写给蓝军的滥用DPAPI操纵指南(上)

场景3: 目的用户在以后未登录的盘算机上的治理接见

若是目的用户以后没有登录到体系,你须要晓得他们的明文暗码或 NTLM 散列。 若是你晓得它们的明文暗码,你能够运用 spawnas/runas 来天生一个新的署理作为特定的用户运转,然后在目的用户的高低文中运转

beacon> mimikatz dpapi::chrome /in:”%localappdata%\Google\Chrome\User Data\Default\Cookies” /unprotect

或许,也能够运转 

dpapi::masterkey /in:<MASTERKEY_LOCATON> /sid:<USER_SID> /password:<USER_PLAINTEXT> /protected

(用于古代操纵体系) :

写给蓝军的滥用DPAPI操纵指南(上)

若是你只要一个用户的散列,则能够运用 Mimikatz 的 sekurlsa:: pth 发生一个新历程(或运用 Beacon 的 pth 包装器猎取模仿令牌)。 然则,因为 Mimikatz 在新的登录会话中运用的登录范例是9(比方:NewCredentials/netonly)作为凭据,以是这些凭据不会在当地主机上运用,因而仅仅运用 / unprotect 将会失利,并会涌现雷同的 NTE_BAD_KEY_STATE毛病。

然则,因为这些凭据将在收集上运用,我们能够运用 Mimikatz 应用 MS-BKRP  (BackupKey Remote Protocol)为我们检索密钥,因为密钥属于以后用户。 Benjamin 在他的 wiki 上细致纪录了这个历程(在本文的”Credential Manager and Windows Vaults”局部的末了有更多细节) 完成这个 RPC 挪用的代码位于 kull_m_rpc_bkrp.c文件中。 我们所须要做的就是指定主密钥的地位并供应 / rpc 参数标记:

beacon> mimikatz @dpapi::masterkey /in:”C:\Users\dfm.a\AppData\Roaming\Microsoft\Protect\S-1–5–21–883232822–274137685–4173207997–1110\ca748af3–8b95–40ae-8134-cb9534762688" /rpc

写给蓝军的滥用DPAPI操纵指南(上)

注重: 模块前的@前缀是须要的,因而 Beacon 强迫 Mimikatz 运用模仿线程令牌来模仿新的 Mimikatz 历程。

From here, we can take this masterkey and manually specify it to decrypt what blobs we want (syntax is in scenario 2.)

从这里,我们能够运用这个主密钥并手动指定它来解密我们想要的数据块(在场景2中提到的)。

场景4: 进步域接见权限(即 DPAPI 天主情势)

这是最风趣的一个场景;

一个挑选是应用 DCSync 同步一个目的用户的散列并反复场景3。 然则有一个更好的设施!

写给蓝军的滥用DPAPI操纵指南(上)

域用户主密钥也运用域局限的备份 DPAPI 密钥举行珍爱。 这就是现实运用 /rpc 敕令对每一个用户密钥举行解密的要领,也是体系结构的一局部。 那末,为何欠好好应用这个备份密钥呢? ;)(假定我们已拿到域治理权限或一致权限) :

写给蓝军的滥用DPAPI操纵指南(上)

语法是 lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export。 这个.pvk 私钥能够用来解密任何域用户主密钥,并且这个备份密钥不会转变!

写给蓝军的滥用DPAPI操纵指南(上)

并且,这在 Mimikatz的完成已有一段时间了!

写给蓝军的滥用DPAPI操纵指南(上)

写给蓝军的滥用DPAPI操纵指南(上)

因而,让我们下载 harmj0y 的 主密钥文件(b8854128-023c-433d-aac9-232b4bca414c)和 Chrome cookies 数据库,以及 .pvk私钥。

写给蓝军的滥用DPAPI操纵指南(上)

旁注: 备份密钥检索

虽然 MS-BKRP 看起来确切支撑基于 RPC 的备份密钥的长途检索(拜见3.1.4.1.3 BACKUPKEY_RETRIEVE_BACKUP_KEY_GUID 章节) ,而 Mimikatz 确切完成了这个 RPC 挪用,但 lsadump::backupkeys 要领运用 LsaOpenPolicy/LsaRetrievePrivateData API 挪用(而不是 MS-BKRP)来检索 G$BCKUPKEY_PREFERRED LSA 密钥的值

我想更好地明白这个逻辑,以是我将 Benjamin 的长途备份密钥检索逻辑移植到 C# 中。项目(SharpDPAPI)在 GhostPack存储库中。 默许状况下,DPAPI 备份密钥将从以后的域控制器文件中检索,并以 base64字符串的情势输出,然则这类行动能够修正:

写给蓝军的滥用DPAPI操纵指南(上)

一旦猎取了用户的主密钥或域备份密钥,就没须要在目的主机上实行解密敕令。 你能够下载任何找到的用户主密钥文件(拜见本文背面的 Seatbelt 局部) ,然后锁定 DPAPI 容器(好比 Cookies) ,或许 a)运用域备份密钥来解密用户的主密钥(然后用它来解密你的目的数据块) 或许 b)若是你从内存中提取了主密钥,你能够直接运用它。

因而,让我们运用 Mimikatz 经由历程运用域备份密钥来解密 harmj0y 的主密钥,然后运用该主密钥来解密 Chrome cookies 数据库:

· mimikatz # dpapi::masterkey /in:b8854128–023c-433d-aac9–232b4bca414c /pvk:ntds_capi_0_32d021e7-ab1c-4877-af06–80473ca3e4d8.pvk

· mimikatz # dpapi::chrome /in:Cookies /masterkey:f35cfc2b44aedd7… 

写给蓝军的滥用DPAPI操纵指南(上)写给蓝军的滥用DPAPI操纵指南(上)

若是我们生存这个.pvk 密钥,我们就能够或许根据须要下载 主密钥 /DPAPI 数据块并离线解密!

原文地点: https://www.4hou.com/system/18615.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明写给蓝军的滥用DPAPI操纵指南(上)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址