干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

admin 2022年11月7日21:51:04评论90 views字数 2242阅读7分28秒阅读模式

前言

这篇技巧是我在校稿最近刚出版的书《Windows APT Warfare:恶意程式前线战术指南》

干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

正好看到 https://github.com/L3cr0f/DccwBypassUAC

提及的WinSxS 配置错误允许骇客劫持达成UAC 特权提升看到比较有意思的事情所以写一篇作为笔记。

不过这篇技巧目前在Windows 10 上除非出现了配置错误的DACL 可被写入、否则新型的作业系统利用的可能性比较小

如果对UAC 特权提升有兴趣的读者可以参考这篇BypassUAC原理及方法汇总

https://www.anquanke.com/post/id/216808

WinSxS

Windows 为了原生支援WinSxS 多重系统模组功能——即同一个系统中可能会有新旧程式使用到同个系统模组但不同版本号的状况。因此可以见到C:WindowsWinSxS 下有很多不同版本的资源包:

干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

开发者能在编译时期在纯文字的资讯清单*.manifest 记录特定系统模组要从特定系统路径、版本来装载使用。而这边引自上述对岸文章一段描述,其中提及了在资讯清单中还有一个特性可以使用:

在Windows中有些可执行程序没有内置的manifest,假设这个程序叫test.exe,如果攻击者在该可执行程序目录下新建一个test.exe.manifest并在manifest文件中指定file元素,则test.exe执行时会加载file元素中loadFrom属性指定的DLL(loadFrom的dll不能在KnownDlls中)

这是一个我觉得蛮有趣的特性,可以解释为什么系统槽下会有那么多纯文字保存的信息清单*.manifest文件(我以前一直误以为是开发者编译完忘记删掉XD)这描述说明了两点:

除了开发者相当熟悉的嵌入式信息清单,还有导出式信息清单——在同层文件夹中保存与程序名同名的*.manifest文件即可被程序装载器正确识别

无论嵌入或导出式信息清单:使用loadFrom标签可以指示程序装载器在「装载特定DLL模块」时便会被redirect去装载另一个特定的DLL模块

总而言之当程序装载器正在初始化一支静态程序文件、发现其不具嵌入式信息清单时,那么就会同层目录确认是否有同名的*.manifest清单文件进行解析并初始化,以下做个举例:

干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

桌面上现在有一皮卡丘打排球程序(picaball.exe)是一个不具嵌入式信息清单的老旧程序、并且其引入函数表显示出执行阶段会需要使用到DirectX的模块dsound.dll作为游戏引擎声音输出。

因此,在同层资料夹(即桌面)放置一个picaball.exe .manifest 便会在游戏程式被程式装载器初始化时视为导出式资讯清单文件进行读取;而在该资讯清单中第十行可见loadFrom 的属性,其指示了dsound.dll 被装载时将会被redirect 去装载30cm_tw.dll 文件,因此一旦游戏程式被执行便会装载我们的恶意模组30cm_tw.dll 并弹出视窗。

WinSxS重导向

在微软官方文献 Dynamic-Link Library Redirection 提及了若资讯清单中指定要装载特定版本的WinSxS 系统模组、但如果你不希望装载C:WindowsWinSxS 下的那套DLL 模组;那么你也可以创建与程式同名的*.local 资料夹其会被作为该程式应采用的WinSxS 模组之基础路径。

干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

如上图所示系统高权服务dccw.exe 会使用到

C:WindowsWinSxSx86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.1935_none_570899e8c25aaf4a中的GdiPlus.dll

因此我们可以在dccw.exe 同层目录创建dccw.exe.local 资料夹作为新的WinSxS 参考路径、并在其内部创建x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.1935_none_570899e8c25aaf4a 子目录、并在此目录中放入恶意的GdiPlus.dll 便会发现当dccw.exe 被执行起来后就会自动装载dccw.exe.local 子目录中的恶意GdiPlus.dll 模组

DCCW 本地提权

上面讲完了这个有趣的小技巧后便可以回头来提https://github.com/L3cr0f/DccwBypassUAC 这份PoC。

主要就是在Win8.1 以前的Windows 版本可以利用CIA Vault 7 被揭露过的iFileOperation COM 接口来任意「创建资料夹」在C:WindowsSystem32dccw.exe 同层目录中创建C:WindowsSystem32dccw.exe.local 资料夹并投放恶意模组达成本地提权,细节部分大家自己看就好了

干货 | 利用配置错误资讯清单(manifest)实现劫持与提权


推荐阅读:


干货 | Github安全搬运工 2022年第十九期


实战 | 记两次应急响应小记


实战 | 时隔多年再次帮高中母校做渗透测试是什么体验?


干货 | Wordpress网站渗透方法指南


实战 | 当裸聊诈骗遇到黑客,记一次新型的裸聊诈骗渗透经历


2022年零基础+进阶系统化白帽黑客学习 |  11月特别优惠活动


干货 | Twitter渗透技巧搬运工(四)


点赞,转发,在看

作者:Arsenal

文章来源:blog.30cm.tw

如有侵权,请联系删除

干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

原文始发于微信公众号(HACK学习呀):干货 | 利用配置错误资讯清单(manifest)实现劫持与提权

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月7日21:51:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   干货 | 利用配置错误资讯清单(manifest)实现劫持与提权http://cn-sec.com/archives/1395289.html

发表评论

匿名网友 填写信息