-
-
[原创]Win7 Wininit.exe任意加载/执行(漏洞)
-
发表于:
2022-4-7 00:19
10873
-
[原创]Win7 Wininit.exe任意加载/执行(漏洞)
a.Windows关机时,将调用NtShutdownSystem Native API来执行关机动作。
b.在WinXp时代,用户执行"关机"后,将由winlogon.exe调用NtShutdownSystem API;但是到了Win7时代,winlogon.exe不再司此职,而是交由Wininit.exe调用NtShutdownSystem API。
c.进入win10后,虽然Wininit.exe中仍保留WinInitShutdown及PerformSystemRestore函数,但关机时不会由WinInitShutdown调用NtShutdownSystem Native API。因此该任意加载/执行漏洞不适用于win10。
在Win7上,给nt!NtShutdownSystem下断点后,当用户点击"开始"菜单--"关机"后会得到下列函数调用栈:
上述调用堆栈并没有体现和wininit的联系,我们切换到wininit进程,查看更具体的调用堆栈:
逆向WinInitShutdown实现,发现它会调用内部函数:PerformSystemRestore
逆向该PerformSystemRestore函数,还原得到如下示意代码(完整代码见附件wininit.idb):
这段函数流程为:
1.检查注册表HKLM\SYSTEM\CurrentControlSet\Control\WinInit下是否有DWORD键RestoreInProgress;
2.如果RestoreInProgress存在,且值为1。则继续搜索是否存在字符串键RestoreModule和RestoreFunction;
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课