对TunnelSnake行动中Moriya Rootkit的分析
2021-05-18 11:01:46 Author: www.4hou.com(查看原文) 阅读量:158 收藏

导语:TunnelSnake活动展示了其幕后团队的成熟,通过利用Windows驱动程序、隐蔽的通信渠道和专属的恶意软件,可以保持相当高的隐身水平不被发现,且能够针对目标环境进行改进和调整。

Rootkit木马是一种系统内核级病毒木马,其进入内核模块后能获取到操作系统高级权限,从而使用各种底层技术隐藏和保护自身,绕开安全软件的检测和查杀。随着Windows多年来的发展完善,想在Windows中成功部署和执行rootkit组件已成为一项艰巨的任务,尤其是微软Driver Signature Enforcement引入后,试图在内核空间中加载运行新代码变得越来越困难,内核补丁保护(PatchGuard)等其他机制也在降低对系统篡改的可能性。

因此,在野Windows Rootkit的数量已大大减少,其中大部分仍处于活动状态的Windows Rootkit通常被用于高阶APT攻击中。在去年的一次调查中,我们发现了一个以前未知的Windows rootkit及其潜在的活动集群,被用于名为“ TunnelSnake”的针对亚洲和非洲数个知名组织的攻击行动中。TunnelSnake要点归纳如下:

· 我们将此新发现的rootkit称为“ Moriya”,使用此rootkit的幕后团队身份未知。Moriya被用于向公共服务器的上部署被动后门,建立隐蔽的C&C通讯渠道,从而对受害者进行静默控制。

· Moriya是在亚洲和非洲数个组织的区域外交网络上发现的,在2019年10月和2020年5月有被检测到,Moriya每次部署后能在目标网络中持续存在数月;

· 从南亚某受害者网络中发现了发现了攻击者使用的横向移动工具集,与APT1以前使用的工具有所关联,根据工具集的检测时间戳,预计Moriya早在2018年就已在网络中立足;

· 我们还发现了与Moriya有大量重叠代码的其他几个工具,包括Moriya的用户模式版以及用于绕过杀毒软件的实用程序。

什么是Moriya Rootkit,它如何工作?

Moriya Rootkit是一种被动后门,攻击者可以利用其检查受感染计算机的所有传入流量,过滤出指定标记的数据包并对其响应。

Moriya具有两个特性,使其特别容易被检测规避。一是数据包检查使用Windows驱动程序在内核模式下进行,攻击者可以在网络堆栈处理数据包之前将驱动程序植入,从而确保不会被安全解决方案检测到;其次,rootkit是等待传入流量,而不是启动与服务器本身的连接,这避免了将C&C地址合并到恶意软件的二进制文件或维护稳定C&C基础设施的需要,通过此举使对攻击者足迹的追踪变得困难。

下图说明了rootkit组件的结构,它由内核模式驱动程序和用户模式代理组成,后者用于部署和控制。下面的部分将细述这些组件。

图1. Moriya Rootkit的体系结构

用户模式代理分析

Moriya Rootkit的用户模式组件有两个目的,一个是在计算机上部署恶意软件的内核模式组件,另一个是利用其创建的隐蔽通信通道来读取从C&C服务器发送到机器上的shell命令并对其做出响应。由于Moriya是部署在可通过互联网访问的服务器上的被动后门,因此它不包含硬编码的C&C地址,仅依靠驱动程序从计算机传入服务器的流量中筛选出相应的数据包。

使用Moriya时,攻击者的首要任务是在目标计算机上保持持久性。为此,用户模式代理的DLL包含一个名为Install的导出函数,该函数创建一个名为“ ZzNetSvc”的服务(描述为“ Network Services Manager”)并启动,接着将用户模式代理程序映像的路径设置为注册表项HKLM\System\CurrentControlSet\Services\ZzNetSvc\Parameters\ServiceDll,这样每当服务被启动时,它就会从ServiceMain导出中被调用。

服务启动后,代理将rootkit的驱动程序加载到系统中。它的二进制文件被封装成DLL的资源部分中的两个驱动程序映像,分别对应于32位和64位体系结构,而实际上只有其中一个被写入磁盘。在我们分析的情况中,代理DLL是为64位系统编译的,,将64位驱动程序放在系统路径中的驱动程序目录中,目录名为MoriyaStreamWatchmen.sys,这就是Moriya名称的由来。

图2.将Moriya驱动程序写入磁盘的代码

代理使用了一种已知的技术,利用VirtualBox驱动程序(VBoxDrv.sys)绕过Windows中的驱动程序签名强制机制(DSE),并加载Moriya的未签名驱动程序。DSE功能是从Vista 64位起的所有Windows版本中引入的,其他APT组织(例如Turla,Lamberts和Equation)中也有使用此类绕过技术。

Moriya的用户模式代理使用名为DSEFIX v1.0的开源代码来绕过安全防护。用户代理将版本1.6.2的嵌入式VBoxDrv.sys映像转储到磁盘上并进行加载,然后使用上述代码将Moriya的未签名驱动程序映射到内核内存空间并从入口点执行。这些操作可以通过在VBoxDrv.sys中的IOCTL实现,该IOCTL允许写入内核地址空间并从中执行代码。在整个过程中,代码用于在内核空间中定位和修改名为g_CiOptions的标志,用此标志控制执行模式。

加载未签名的驱动程序后,代理会注册一个特殊的关键字用作魔术值,并在通过隐蔽通道传入的数据包的第一个字节中搜索该关键字。此值被rootkit用作过滤标记,能阻止系统上除用户模式代理程序外其他应用程序的使用。

图3.使用指定的IOCTL注册数据包魔术值

除了隐秘通信功能,Moriya还能够使用公开通道建立反向Shell会话。为此需要一个特殊的数据包,该数据包由结构为connect

在其他情况下,代理尝试从驱动程序读取传入的TCP有效负载,一旦接收到带有魔术值和shell命令的指定包,就会检索有效负载,用ReadFile API函数在相应条件下完成数据读取,也就是说,读取仅在内核模式的缓冲区中填充来自moriya相关包的数据时才完成。

在收到传入的数据包事件时,代理将创建一个新的cmd.exe进程,并使用命名管道重定向其I / O。一个管道用于从隐蔽通道读取检索到的shell命令,另一个管道用于在执行后将shell的输出(从stdout和stderr流获得)写回。

通道上传递的所有流量都使用简单的加密方案进行编码。每个发送的字节都有其有效负载,后跟魔法值,与值0x05进行XOR运算,然后取反。按照相同的逻辑,要解码传入流量的有效负载,应首先将其每个字节取反,然后与0x05进行异或。

图4.用于分组编码的代码

内核模式驱动程序分析

Moriya Rootkit的驱动程序组件利用Windows Filtering Platform(WFP)来促进主机与C&C服务器之间的密道通道。WFP提供了一个内核空间API,该API允许驱动程序代码截取传输中的数据包,并通过Windows TCP / IP网络堆栈干预其处理。这样就可以编写一个驱动程序,可根据开发人员的标准过滤出不同的数据包流,并指定它们供特定的用户模式应用程序使用。

驱动程序使用过滤引擎获取与Moriya相关流量。这是一种根据规则来检查流量的内核模式机制,可以对数据包的多个层面(即数据链路,IP和传输)的各个字段检验,并安排相应的处理程序来处理匹配数据包。此类处理程序称为调出函数。

就Moriya而言,过滤引擎配置为拦截从远程地址通过IPv4发送的TCP数据包。具有这些标准的每个数据包将由一个调出函数进行检查,检查其前六个字节是否对应于先前注册的魔术值,如果是,则将数据包内容复制到一个特殊的缓冲区中,以便以后由用户模式代理读取。然后将屏蔽匹配的数据包,使其对系统隐藏,而其他常规的数据包按网络堆栈的预期进行处理。

为了返回服务器的响应,调出函数会在全局变量中保存一个特殊的值,用于标识接收到的TCP流,该值称为flowHandle,取自数据包的相应FWPS_INCOMING_METADATA_VALUES0结构。当用户通过驱动程序向服务器发出响应时,驱动程序将使用FwpsAllocateNetBufferAndNetBufferList0函数制作一个新数据包,并使用函数FwpsStreamInjectAsync0根据保存的flowHandle向服务器插入响应数据和目标服务器。

图5.代码创建一个新包,将其指定为传入TCP包的流,并将从用户空间写入的数据注入其中

目标服务器如何被初始感染的?

如前所述,Moriya通常被部署在面向公众的服务器上。在其中一个案例中,攻击者使用了China Chopper Webshell初始感染了某组织的邮件服务器,再在其中部署其他工具,这其中就包括Moriya。

攻击者的手法是先入侵网络中易受攻击的Web服务器。例如Moriya的一个名为IISSpy的较旧变体就以IIS Web服务器为目标,可能是利用CVE-2017-7269进行了部署。

后利用工具集

在某南亚受害组织中我们发现了攻击者使用的部分工具集,包含横向移动工具和一些开源恶意软件,工具概述如下。

网络发现:自构建程序,用于扫描内部网络,检测易受攻击的服务,包括HTTP扫描器和DCOM扫描器。

· HTTP扫描器:命令行工具,可通过横幅广告抓取来发现Web服务器。此举通过向给定地址发出格式错误的HTTP数据包来完成,包中不包含任何标头,并且请求中包含多个空字节。

· DCOM扫描程序:另一个命令行实用程序,它尝试连接到TCP端口135(RPC)上的远程主机,并使用DCOM IOxidResolver接口解析分配给远程系统上所有可用网络接口的地址。

横向移动:用于传播到目标网络中其他主机的工具,包括BOUNCER和自定义PSExec。

· BOUNCER:Mandiant在2013年关于APT1的报告中首次提及的恶意软件。该工具是另一个被动后门,它等待特定端口上的传入连接,并提供各种功能,可用于控制远程主机及横向移动。

· 自定义PSExec:可以在受感染的计算机上远程执行命令。与原始PSExec工具一样,此工具由两个组件组成——名为tmp的客户端和名为pv.tmp的服务。为了使用该工具,攻击者必须通过命令行指定参数来执行。

渗透:用于与远程主机建立连接,对远程主机进行文件系统操作,比如文件上传、下载等,包括Earthworm、Termite、TRAN等工具。

· Earthworm/Termite:入侵Intranet网络的命令行实用程序,支持多平台,可以部署在各种体系结构上。Earthworm用于在受感染主机之间创建隧道并传输数据,Termite可以在受影响的主机之间下载和上传文件,还提供了一种生成远程shell来控制目标机器的方法。

· TRAN:用于在受感染主机之间传输数据。此工具作加载器运行,其中包含了一个使用RC4算法加密的微型web服务器。

行动目标

我们的遥测数据显示,这些攻击行动具有高度针对性,在全世界仅针对的受害组织不到10名,包括东南亚和非洲的两个大型区域外交组织。

结论

TunnelSnake活动展示了其幕后团队的成熟,通过利用Windows驱动程序、隐蔽的通信渠道和专属的恶意软件,可以保持相当高的隐身水平不被发现,且能够针对目标环境进行改进和调整。

更多信息请参见:https://securelist.com/operation-tunnelsnake-and-moriya-rootkit/101831/

本文翻译自:https://securelist.com/operation-tunnelsnake-and-moriya-rootkit/101831/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/n7k7
如有侵权请联系:admin#unsafe.sh