FreeBuf|任意文件移动导致的Windows提权攻击分析( 三 )
\RPC CONTROL\
目录 。C:\Dir\file.txt
C:\Other\stuff.any
。 当然 , 这并不是完全等同的 , 但在很多情况下 , 这种条件足以让我们进行攻击 。 你可以使用和CreateDosDeviceSymlink
分别完成这些步骤 , 但CreateSymlink
工具通过一个方便的命令中实现了这种技术 。 Opportunistic locksoplock是一种可以放置在文件上的锁 , 当其他进程想要访问该文件时 , 它可以被告知—同时延迟这些进程的访问 , 以便锁定进程可以在解除锁之前让文件处于适当的状态 。 oplocks最初是为通过SMB缓存客户端-服务器文件访问而设计的 , 可以通过调用文件句柄上的特定控制代码设置oplock 。
oplock对于利用TOCTOU的bug是很有用的 , 因为你可以通过锁定一个试图打开的文件或目录来轻松地赢得与进程的竞争 。 当然 , 它也有一些限制:你不能细粒度地 “放行 “一个访问(一旦锁被解除 , 所有待定的访问都会发生) , 而且它并不适用于所有类型的访问 , 但它通常非常有效 。SetOpLock
工具可以让你创建这些锁 , 并阻止对文件或目录的访问 , 直到你按回车键释放锁 。 它让你在读、写和放行oplock之间进行选择 。 同样 , James将这一技术与之前的技术相结合 , 创造了一个强大的primitive , 实现一些TOCTOU bug的利用:通过设置一个伪symlink(和之前一样) , 并在最终文件(symlink的目标)上放置一个oplock , 我们可以在打开目标文件时改变symlink(即使目标文件被锁定 , symlink也没有被锁定) , 并使其指向另一个目标文件 。
本文插图
C:\Dir/file.txt
BaitAndSwitch
工具用独占的oplocks实现了这种技术 , 如果你需要读写锁 , 可以使用SetOpLock
和CreateSymlink
C:\ProgramData\Product\Logs
(具有默认/继承访问权的目录)中创建日志文件 。 日志文件由特权(系统)和非特权(用户)进程创建/写入 。
创建日志文件的过程设置了一个明确的ACL , 这样每个用户都可以写入文件 。
本文插图
这就导致了可以被利用来创建具有任意内容任意文件的一个漏洞 。
如果我们删除现有的日志文件 , 并将日志目录变成与C:\Windows\System32
的连接点(由于继承了C:\ProgramData
的访问权限) , 产品X的特权进程将在System32
目录下创建日志 。
本文插图
我们也可以使用symlink技术转移一个特定的日志文件(如some.log
) , 以攻击者选择的名称创建一个任意文件 , 如程序目录中的DLL 。
本文插图
因为特权进程也对日志文件设置了允许写入的ACL , 所以我们也可以根据自己的喜好更改文件的内容 。
这是一个在很多产品上都发现过的bug , 大概是因为它是一个共同需求的简单实现(日志文件可被所有组件—用户和系统组件写入 , 所有组件的通用日志代码) 。 在过去一年多的时间里 , 我们看到了好几个这样的例子 。
Cylance , 作者:Ryan Hanson
Ben Turner在Symantec / Altiris agent中发现了这个bug 。
在McAfee Endpoint Security中 。 (已打补丁)
Mark Barnes的NVIDIA GeForce Experience和Intel Driver & Support Assistant 。
在Pulse Secure VPN客户端中(未打补丁)(碰撞与Matt Bush)
推荐阅读
- 电脑使用技巧|Excel数据处理与分析应用课程:NO2文件管理与打印设置
- 虚拟现实|虚拟任意门?苹果Apple Glass将能跳转至其它位置视图
- 任天堂|FCC文件显示任天堂打造新款Switch游戏机
- 华为手机|华为手机里隐藏着一个扫描仪,以后扫描文件再也不用去打印店了
- 雷科技|小米版“多屏协同”来了!支持拖拽文件等操作,尝鲜方式看这里
- 电脑使用技巧|dos命令assoc图文教程,显示修改文件扩展名关联
- 苹果|科技早报|加拿大否决孟晚舟公开机密文件的请求蚂蚁集团或10月在沪港两地IPO
- 和讯网|孟晚舟请求公开更多机密文件被否 究竟怎么回事?背后的原因曝光
- 财经新闻|“与案件无关”?加拿大法庭否决孟晚舟关于公开更多机密文件的请求,孟晚舟将于9月下旬重返法庭
- 机密文件|孟晚舟请求公开更多机密文件被否 究竟怎么回事?背后的原因曝光