最近我一直在逆向分析某款反病毒解决方案,在逆向过程中,我发现Windows 10 Task Scheduler(计划任务)服务会寻找某个不存在的DLL,因此存在DLL劫持/注入漏洞。如果攻击者可以向PATH
环境变量指定的目录中写入恶意DLL,那么就可以利用这种方式实现常驻及本地提权。此外,这种技术也可以用来绕过UAC。
Task Scheduler服务会使用相对名称来加载某个程序库,因此存在DLL劫持风险。当Windows系统上的应用或者服务启动时,为了能正常工作,这些应用或服务会按照一定的顺序来搜索需要使用的DLL文件。如果这些DLL不存在,或者软件代码没有使用安全的方式进行开发(比如DLL没有以完整路径进行调用),那么攻击者有可能利用这些应用来加载并执行恶意DLL文件,从而实现权限提升。
需要加载DLL时,应用程序会按照顺序搜索如下目录:
C:\Windows\System32
C:\Windows\System
C:\Windows
PATH
环境变量指定的目录PATH
环境变量指定的目录Task Scheduler服务会尝试加载不存在的某个DLL。
如下图所示,该服务找不到WptsExtensions.dll
这个库。
攻击者可以精心构造一个DLL来利用这个脆弱点,在加载时执行代码。
然后再分析PATH
环境变量,查看自己是否能在其中某个目录中存放恶意DLL文件。
比如,攻击者具备C:\\python27-x64
目录的写入权限。
重命名该DLL,匹配服务待加载的DLL名称。
当系统重启或者该服务重启时,应用程序就会以NT_AUTHORITY\SYSTEM
权限启动cmd.exe
。
具备正常用户权限的攻击者可以利用这种方法,通过“Task Scheduler”服务以及存在脆弱点的PATH
环境变量,在本地主机上创建一个管理员账户。这种方法也可以用来实现本地驻留以及绕过UAC。
经过逆向分析后,我们可以发现问题在于WPTaskScheduler.dll
代码中会导入WptsExtensions.dll
这个库,并且导入该库时并没有使用完整路径,如下图所示:
官方反馈如下:
您好,感谢您与微软安全响应中心(MSRC)联系。如果没有理解错的话,这个漏洞需要攻击者事先将某个恶意文件写入程序启动的目录(这里为下载目录)。根据Windows对程序库的搜索顺序,从程序目录中加载库文件是一种正常的设计理念。根据您的反馈报告,这个漏洞并不满足我们既定的安全服务标准。
因此,我们会关闭并不再监控这个话题。如果您确信我们对报告内容有所误解,请向secure@microsoft.com
提交一份新的邮件,其中包括:
关于安全漏洞的评判标准,请参考“安全漏洞定义”相关内容。
原文:https://remoteawesomethoughts.blogspot.com/2019/05/windows-10-task-schedulerservice.html
转自先知社区
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.