16 人签到
    搜索
    Hi~登录注册
    查看: 48|回复: 0
    收起左侧

    Win10 Task Scheduler服务DLL注入漏洞分析

    [复制链接]

    7

    主题

    0

    精华

    56 小时

    在线时间

    新手上路

    Rank: 1

    积分
    23
    发表于 2019-6-1 10:51:39 | 显示全部楼层 |阅读模式
    0x00 前言
    最近我一直在逆向分析某款反病毒解决方案,在逆向过程中,我发现Windows 10 Task Scheduler(计划任务)服务会寻找某个不存在的DLL,因此存在DLL劫持/注入漏洞。如果攻击者可以向PATH环境变量指定的目录中写入恶意DLL,那么就可以利用这种方式实现常驻及本地提权。此外,这种技术也可以用来绕过UAC。
    0x01 DLL劫持
    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这个库,并且导入该库时并没有使用完整路径,如下图所示:
    0x02 官方反馈
    官方反馈如下:
    您好,感谢您与微软安全响应中心(MSRC)联系。如果没有理解错的话,这个漏洞需要攻击者事先将某个恶意文件写入程序启动的目录(这里为下载目录)。根据Windows对程序库的搜索顺序,从程序目录中加载库文件是一种正常的设计理念。根据您的反馈报告,这个漏洞并不满足我们既定的安全服务标准。
    因此,我们会关闭并不再监控这个话题。如果您确信我们对报告内容有所误解,请向secure@microsoft.com提交一份新的邮件,其中包括:
    • 初始报告中提供的相关信息
    • 复现该问题所需的详细步骤
    • 简要描述攻击者如何利用该信息远程攻击其他用户
    • 概念验证(PoC),如视频录像、崩溃报告、屏幕截图或者相关代码示例
    关于安全漏洞的评判标准,请参考“安全漏洞定义”相关内容。
    原文:https://remoteawesomethoughts.blogspot.com/2019/05/windows-10-task-schedulerservice.html







    上一篇:Python爬虫爬企查查数据
    下一篇:【新人报到】
    回复

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 获取账号

    快速回复 返回顶部 返回列表