​【Rootkit系列研究】Windows平台高隐匿、高持久化威胁(二)

2022-04-12 27,314








序言





从西方 APT 组织的攻击历史及已经泄露的网络攻击武器来看,高隐藏、高持久化(Low&Slow)是已经成为区分威胁等级的关键特征,而 Rookit 则是达成此目的重要的技术手段之一。


在之前的文章中,“序章:悬顶的达摩克利斯之剑”,带我们领略了 Rootkit 的前世今生,隐匿于 Rootkit 背后的影子以及针对 Rootkit 的基本检测思想。Windows 平台高隐匿、高持久化威胁”和“Linux平台高隐匿、高持久化威胁”各自从宏观角度讲述Windows 平台和 Linux 平台下,Rootkit 技术原理、应用和发展现状以及攻防角度的总结。Rootkit 检测技术发展现状让我们见识到了防御方对抗 Rootkit 的技术。

 

本文则是在“Windows 平台高隐匿、高持久化威胁”的基础上,结合攻击者在攻击中利用到的技术手段,对 Windows 平台上的 Rootkit 的运行效果及应用方面进行介绍。










Rootkit威胁情报-战火从未停止





2015年4月,安全研究团队发表了关于 Turla 组织的 Rootkit 分析报告。

2016年8月,安全研究团队发布了索伦之眼(ProjectSauron)相关的技术细节。

2018年10月,安全研究人员披露有驱动护体的挖矿病毒 ProtectionX。

2019年4月,安全研究团队发布关于跨平台间谍 Rootkit Scranos 的文章。

2021年10月,安全研究团队披露了 DirtyMoe Rootkit 驱动程序。

2021年12月,安全研究团队披露了方程式组织(Equation Group)的攻击框架DanderSpritz。

2022年1月,安全研究团队披露了紫狐(Purple Fox)僵尸网络通过伪装 Telegram 安装程序释放 Rootkit 的攻击事件。









紫狐-黑产中Rookit技术应用的代表





紫狐是已经持续多年的、以营利为目的的网络黑产组织,他们历来每次出现在视野中,都会变化一种攻击方式或技术。


攻击者控制大量受害终端,通过刷量、推广用户不需要的软件来获利,这会拖慢设备性能,严重影响受害者的正常使用。


其恶意程序使用了 Rootkit 技术,以至于具有很高的隐蔽性,很难被受害者发掘和清除。在紫狐病毒释放器下载最终 Purple Fox Rootkit 载荷之前,我们注意到释放程序会安装一个名为 “Driver.sys” 的驱动程序,用于注销名为 “360FsFlt”的Minifilter,并关闭名为 “ZhuDongFangYu.exe” 的进程,来规避安全软件检测。


“ZhuDongFangYu.exe” 的进程是从驱动启动的,用常规手段是无法关闭的。


驱动服务运行后,通过一个独立的命令行工具进行调用,通过 IO 通讯传递指令,具有四种命令,对应四种功能。



实际运行效果如下:

关闭指定文件过滤器


拷贝文件

 

删除文件

 

结束进程

 

在分析过程中我们发现,该驱动程序为了避免被检测,在文件拷贝和删除文件的过程中没有使用常规的 API 函数,而是通过 IofCallDriver 函数向文件设备发送带有操作的 IRP 数据,以此达到文件操作的目的。


而在关闭进程功能上,更是提供了两种结束进程的方法,来规避检测。而且我们发现,该驱动目前仍是半成品的状态,也就是说,攻击者仍在进行功能的迭代升级。


在完成安全软件进程关闭后,释放文件才会继续下载最后的 Purple Fox Rootkit,经分析,该 Rookit 是基于开源 Rookit 项目“Hidden”修改,具有隐藏注册表项和值、隐藏文件和目录、隐藏进程、保护指定进程等功能。


文件隐藏运行效果:

 


注册表隐藏运行效果:




进程保护运行效果:

 

由此可见,学习开源项目也是攻击者提升攻击能力的有效方式,他们也在不断吸取新的技术,应用与攻击活动之中。







APT组织的高对抗利器



Turla 组织最早可以追溯到2004年,已经超过45个国家受到相关攻击,涉及政府、大使馆、军事、教育、研究和制药公司等多个行业。其攻击使用的技战术一直都有着较高的技术水平,对于国家和行业机密有着极大的威胁。


本事件中使用的 Rootkit 主要功能是通过 HOOK 一系列系统调用函数,隐藏和保护其用户态组件。然后通过修改 Ntoskrnl.exe 和 Ndis.sys 的内存数据,在 0xc3 处创建一个新的 IDT 条目并重定向所有的被 HOOK 的函数到一个简单的中断句柄(ISR),每个被 HOOK 的函数都有一个唯一的标识符与 ISR 中的派遣函数相对应。


由于能够该方法能够禁用任何主机内的 HOOK 机制,因此传统的针对 Rookit 的监测能力都受到了限制。


Turla Rootkit 还使用了两个虚拟文件系统,一个 NTFS 文件系统和一个 FAT 文件系统,也就是说,受害者主机上有一个承载了文件系统的加密文件,攻击者将其作为工作空间使用。

这里突出了 Turla 组织攻击活动所使用的工具非常具有高对抗性,能够做到从系统层面避免安全软件的检测和查杀。


除了Rootkit部分,还有一点值得注意,Turla在攻击过程中会使用一个名为“VBoxDrv.sys”的驱动程序,该驱动程序存在 CVE-2008-3431 漏洞,攻击者能够利用该漏洞完成权限提升。

这里就要说到一个概念“VulnDriver”,也就是带有漏洞的驱动程序,比较常见的VulnDriver 还有 GDRV.sys (CVE-2018-19320),Novell (CVE-2013-3956), CPU-Z (CVE-2017-15302), ASUS (CVE-2018-18537)。


挖矿木马常用的矿机所使用的 WinRing0.sys 也是一个非常常见的 VulnDriver,这个驱动是一个名为 NZXT CAM 的计算机硬件性能监控产品内的一个便于程序访问 Windows 内核的组件。

这个看起来不大的驱动程序上存在着多达11个 CVE 漏洞,其中 CVE-2020-13516 可以越权直接从 USB 和 PCI 设备查询信息;CVE-2020-13515 可以越权将数据写入 I/O 总线,可能会更改 PCI 配置信息或特定于供应商的数据寄存器,帮助其他程序完成提权;CVE-2020-13518 可以越权直接访问 rdmsr,任意读取 MSR 内数据;CVE-2020-13519 可以越权直接访问 writemsr,向 MSR 内写入数据。


因此,利用这个驱动程序做很多事情,其利用成本低,很受以营利为目的网络攻击者欢迎。

在前段时间 Log4j 曝出存在 RCE 漏洞的时候,该漏洞被大量的黑产攻击者利用,这个驱动程序也连带着出现在了大众的视野之中。



这些 VulnDriver 带着官方的签名,而且本身没有什么恶意行为,因此很多安全厂商都不会告警。

 

在不久前被曝光的方程式组织的后渗透框架 DanderSpritz 中,也存在 VulnDriver 的利用,在其名为 DoubleFeature 的插件中,存在名为 hidsvc.sys 的驱动程序,该驱动程序存在 CVE-2017-0005 漏洞,能够让攻击者通过用户层代码指定名称和参数来调用内核功能。


说到这,我们来简单了解一些方程式这个组织吧。

方程式组织被称为世界上最尖端的网络攻击组织之一,和恶名昭彰的震网(Stuxnet)和火焰(Flame)有着很深的联系。

震网是一个全球性质的工业病毒,是世界上首个网络“超级破坏性武器”,曾被用来攻击伊朗核设施,手法极其阴险。

同时,我国的工业设施也受到了一定的影响。

因此他们的存在,是国家机密和关键基础设施巨大的威胁。


在这次被曝光的项目中存在一个远程访问工具,其下有一个名为 MSNDSRV.sys 的驱动程序。




该驱动程序曾在2015年的 EquationDrug 组件中被提到,可以隐藏用户侧组件,另外可以在注册表遍历所有网卡,调用 NdisRegisterProtocol 函数注册一个 NDIS 流量监听器,可以接收到受害主机所有流量,实现通讯流量监控。


在两个庞大的项目中,这个驱动程序显得微不足道,和之前提到的 Rootkit 程序相比,方程式组织的 Rootkit 技术没有核心组件的地位,只是整个项目下某一个插件下的一个组件,是一个“随取随用”的地位。

但就是这样一个看起来不值一提的组件,在两个程序中都出现了。


足以说明,Rookit 是方程式组织在攻击组件开发的过程中非常常用的技术,而对于这类常用的组件,攻击者也不会花太多心思进行二次开发。

然而就算是这样,安全厂商仍旧鲜有捕获到方程式组织的活动痕迹,该组织的高隐匿技术之强,可想而知。







检测-这是一场与攻击者的军备竞赛




业界对反 Rootkit 软件使用的技术进行了分类。签名的检测(Signature-based detection)、文件完整性监测(File integrity monitoring)、Rootkit Hook 检测(Rootkit hooking detection)、交叉视图分析(Cross-view analysis)以及基于网络的检测(Network-based detection)。


基于签名的检测就是匹配 Rootkit 软件字节特征,缺点是无法匹配新的 Rootkit,而且特征容易更改,对于已安装 Rootkit 的系统再实施检测不理想。


文件完整性监测,该方法计算关键的、不变的操作系统文件的哈希,并将其与存储在数据库中的已知值进行比较。这项技术对于在磁盘上修改系统二进制文件的 Rootkit 很有效,但 Rootkit 的作者很快使用 hooking 或 DKOM 技术,以此篡改执行结果,使得检测效果不理想。


Rootkit Hook 检测,SSDT、IAT 和 IDT 都有一组用于每个服务或中断的函数指针,它们都在内存中的特定范围内。当rootkit修改Hook指向恶意服务或中断例程时,函数指针所指向的位置几乎总是位于特定内存地址范围之外。在这期间还发展了 Inline Hook形式,来规避这些关键表的检测,后来发展了 FSD Hook、FSD Inline Hook。


交叉视图分析,交叉视图分析涉及从“用户”或“API”视图查看系统,并将其与低级视图进行比较,交叉视图方法可以检测基于 DKOM 和系统例程补丁的 Rootkit,不能检测基于HOOK 的 Rootkit。


基于网络的检测,理论上,Rootkit 可能会试图隐藏其网络通信,以逃避操作系统或用户的检测,但是从系统外部还是能看到流量的,这方面成了C2隐藏通信和网络检测的较量。


Windows 也引进了一些防御技术,PatchGuard 和 DSE。PatchGuard 用于内核完整性检测,守护容易被 HOOK 的地方。DSE 用于检测驱动签名,限制未签名驱动加载。上文提到的 Turla 则绕过了这种限制,通过引入 VulnDriver 间接绕过。通过修改内存中的特殊变量就能关闭DSE功能,此时,加载第二个未签名的恶意驱动,直接 HOOK PatchGuard 告警的关键函数,在下一个内核完整性校验过程中不让异常表现出来,从而完成了 PatchGuard 功能的绕过。







总结



说了这么多,其实只想说明一个问题,那就是 Rootkit 技术一直都没有过时,它一直都是攻击者青睐的攻击技术。虽然他的热度被各式各样的新型网络威胁所掩盖,但在那些网络攻击的事件中,我们又常常能见到它的影子。

在我们忙于研究处理其他网络威胁技术的时候,它也在以某种的方式存在,并不断成长着。在安全厂商不断提升己方检测能力的同时,攻击者也在不断提升对抗能力,传统的检测方式不断的承受着一轮又一轮的攻击。

对于高对抗的 Rookit 技术的检测,对于传统的检测技术是一个很大的挑战,安全厂商还有很多的工作要去完成。







参考链接




1 .
https://decoded.avast.io/martinchlumecky/dirtymoe-rootkit-driver/
2. https://blog.talosintelligence.com/2020/12/vuln-spotlight-NZXT-CAM-.html

3. https://blog.minerva-labs.com/malicious-telegram-installer-drops-purple-fox-rootkit

4. https://www.lastline.com/labsblog/dissecting-turla-rootkit-malware-using-dynamic-analysis/

5. https://mp.weixin.qq.com/s/a1LgQqmkGFYYq7JQLQKmMQ
6. 《Eset-Turla-Outlook-Backdoor》

7. 
https://securelist.com/operation-tunnelsnake-and-moriya-rootkit/101831/
8. https://unit42.paloaltonetworks.com/acidbox-rare-malware/


本文作者:Further_eye

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/176838.html

Tags:
评论  (0)
快来写下你的想法吧!

Further_eye

文章数:319 积分: 2105

深信服科技旗下安全实验室,致力于网络安全攻防技术的研究和积累,深度洞察未知网络安全威胁,解读前沿安全技术。

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号