研究人员发现一起利用Chrome和Windows 系统0 day漏洞的攻击利用链。
2021年4月14日,Kaspersky研究人员检测到针对多个公司的定向攻击活动。进一步分析发现,这些攻击活动都利用谷歌Chrome和微软Windows 的0 day漏洞攻击利用链。研究人员发现并分析了用于沙箱逃逸和获得权限提升的漏洞利用。
该权限提升漏洞利用可以在最新的Windows 10(17763 – RS5, 18362 – 19H1, 18363 – 19H2, 19041 – 20H1, 19042 – 20H2) 版本上工作,并且利用了微软Windows操作系统内核的两个不同漏洞。漏洞CVE编号为CVE-2021-31955和CVE-2021-31956。
远程代码执行漏洞利用
所有的攻击活动都是通过Chrome浏览器执行的。虽然研究人员无法获取漏洞利用的JS代码,但是研究人员根据相关攻击活动的时间轴推测出了利用的漏洞——CVE-2021-21224。此外,研究人员还推测攻击者使用JS文件以及正则测试来开发漏洞利用,并用于攻击活动。
权限提升漏洞利用
CVE-2021-31955
CVE-2021-31955漏洞是ntoskrnl.exe中的一个信息泄露漏洞。该漏洞与Windows操作系统的一个特征SuperFetch有关。SuperFetch是在Windows Vista中引入的,旨在通过预加载常用的应用到内存中来减少软件的加载时间。所以,函数NtQuerySystemInformation 实现了一个非常特殊的系统信息类——SystemSuperfetchInformation。系统信息类包含了多个不同的SuperFetch信息类。漏洞就存在于NtQuerySystemInformation 函数返回的 SuperFetch信息类SuperfetchPrivSourceQuery中包含当前执行的进程的EPROCESS kernel 地址。
CVE-2021-31955 漏洞存在的MemInfo工具源码
CVE-2021-31956
CVE-2021-31956漏洞是 ntfs.sys中的一个堆缓存溢出漏洞。函数NtfsQueryEaUserEaList会处理该文件的一系列扩展属性,并保存提取的值到缓存中。该函数可以通过ntoskrnl syscall系统调用访问,并可以控制输出缓存的大小。如果扩展属性的大小不一致,函数就会计算填充,并把下一个扩展属性保存为32位。有代码会检查输出缓存是否足以满足扩展属性+填充,但是该检查的代码并没有检查可能存在的证书下溢。因此,基于堆的缓存溢出就发生了。
NtfsQueryEaUserEaList函数伪代码
漏洞利用使用CVE-2021-31955漏洞来获取EPROCESS结构的kernel地址,可以使用相同的利用技术来窃取SYSTEM token。但是漏洞利用使用了很少见的“PreviousMode” 技术。
恶意软件模块
除了之前提到的漏洞利用外,完整的攻击链中包含4个恶意软件模块,分别是:
· Stager
· Dropper
· Service
· Remote shell
Stager
Stager模块是用来通知漏洞利用成功的。此外,该模块还会从远处服务器下载和执行复杂的恶意软件释放器模块。每个stager 模块都会有受害者的配置信息,包括C2 URL、session ID、解密下一阶段恶意软件的秘钥等。
研究人员发现所有stager模块样本都使用了相同的URL地址来下载加密的恶意软件释放器模块——hxxps://p{removed}/metrika_upload/index.php。
Dropper
释放器模块是用来安装伪装成合法Windows操作系统文件的可执行文件。其中一个文件 %SYSTEM%\WmiPrvMon.exe 注册为服务,用作第二个可执行文件的启动器。第二个可执行文件具有远程shell功能,可以看做是攻击活动的主要payload。目前还没有发现该模块与其他已知也软件的相似之处。
Remote shell
远程shell模块硬编码了C2服务器的URL。所有客户端与C2服务器之间的通信都是经过认证和加密的。远程shell模块可以下载和上传文件、创建进程、休眠特定时间、将自己从被黑的机器上删除等。
微软已经在6月的微软补丁修复了这两个安全漏洞。
更多技术细节参见:https://securelist.com/puzzlemaker-chrome-zero-day-exploit-chain/102771/
本文翻译自:https://securelist.com/puzzlemaker-chrome-zero-day-exploit-chain/102771/如若转载,请注明原文地址