通过补丁比对来寻找微软3月补丁修复的ntfs漏洞
背景
微软在3月补丁修复了四个NTFS相关的漏洞,其中有三个检测到了在野利用:
本文我们就通过diff的方式来寻找其中的一个漏洞修复,并尝试做一个poc出来。
比对
可以看到其中一个补丁位于ReadRestartTable
函数:
__int64 __fastcall ReadRestartTable( __int64 Context, __int64 StartContext, __int64 QuadPart, __int64 a4, _DWORD *p_NumberOfBytes){ ...if ( (unsignedint)Feature_1347162426__private_IsEnabledDeviceUsageNoInline() ) { v10 = v9[7]; n40 = 8 * v10 + 32;if ( (unsigned __int16)v10 <= 1u ) n40 = 40;if ( !NtfsCheckRestartTable((unsigned __int16 *)((char *)v9 + n40), *(_DWORD *)(a4 + 64) - v9[2], a8) ) { NtfsAttachCorruptionSimple(Context, 1u, 0x802u, 0xE2001E0391i64, 0); NtfsAttachRepairInfoPriv(Context, 0, 0i64, (struct _LIST_ENTRY *)0xE2001E0391i64);if ( (_BYTE)NtfsStatusDebugFlags ) NtfsStatusTraceAndDebugInternal(Context, 0xC0000032, 0x1E0391u); NtfsRaiseStatusInternal(Context, 0xC0000032, 0, 0, 0x1E0391i64); } }else {if ( !NtfsCheckRestartTable((unsigned __int16 *)((char *)v9 + v9[2]), *(_DWORD *)(a4 + 64) - v9[2], a8) ) { NtfsAttachCorruptionSimple(Context, 1u, 0x802u, 0xE2001E0398i64, 0); NtfsAttachRepairInfoPriv(Context, 0, 0i64, (struct _LIST_ENTRY *)0xE2001E0398i64);if ( (_BYTE)NtfsStatusDebugFlags ) NtfsStatusTraceAndDebugInternal(Context, 0xC0000032, 0x1E0398u); NtfsRaiseStatusInternal(Context, -1073741774, 0, 0, 1967000i64); } v12 = v9[7]; n40 = 8 * v12 + 32;if ( (unsigned __int16)v12 <= 1u ) n40 = 40; } *p_NumberOfBytes = *(_DWORD *)(a4 + 64) - n40;return (__int64)v9 + n40; ...}
poc
跟一下函数调用链,结合Windows源码进行比对,推测这个漏洞可能是出现在vhd文件在挂载后未被正确卸载,再次挂载时出现的问题。
我们使用Windows的磁盘管理工具创建一个ntfs格式的vhd,这里不用很大的vhd,我创建了一个8MB的就可以,创建好后格式化为NTFS:
然后把创建好的vhd进行挂载,直接复制一份vhd文件到我们的虚拟机,此时因为vhd未被卸载就直接复制,就能触发恢复操作。
接着在windbg里给漏洞函数ReadRestartTable
打上断点,挂载后进入到目标函数:
运行到猜测可能有问题的指令,查看这里的内存:
这里rsi+0x0e
的位置即是rcx
(已经被我改成了0xd
,原本是0),我直接在vhd
文件中搜索附近内存找到了这个值:
尝试对其进行修改,最终在0xd
时触发崩溃:
漏洞具体原因需要对NTFS的恢复过程以及NTFS的文件格式进行逆向,我可能会在完成研究后发表在后续文章中,敬请关注。
原文始发于微信公众号(BeFun安全实验室):通过补丁比对来寻找微软3月补丁修复的ntfs漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论