网络安全公司ESET在本周四(6月7日)发布的一份最新报告中指出,其安全团队在上个月发现了一种针对性极强的间谍软件,至少自2013年以来就一直处于活动状态。然而,直到安装在乌克兰和俄罗斯的受感染计算机上的ESET产品发现它之前,该间谍软件从未被分析或检测到。
间谍软件被命名为“InvisiMole”,ESET安全团队对它的评价是“有效”且“功能强大”。
它具备多种恶意功能,包括安装后门程序、远程代码执行,并能够将受感染计算机变成一台真正意义上的监控设备——能够录制周围环境的音频。
ESET安全团队指出,InvisiMole具有一个模块化的体系结构,通过一个包装器DLL开始它的旅程,并使用嵌入在其资源中的另外两个模块来执行活动。这两个模块都是功能丰富的后门程序,这使它能够收集尽可能多的关于目标的信息。
另外,它还采取了额外的措施来避免引起被侵害用户的注意,使其能够在受感染计算机中驻留更长的时间。ESET安全团队表示,InvisiMole是如何传播到受感染计算机上的还有待进一步的调查。所有感染媒介都是有可能的,包括通过物理访问计算机来进行安装。
安装和持久性
InvisiMole的第一部分是一个包装器DLL。它是采用开源的Pascal编译器编译的,被放置在Windows文件夹中,伪装成具有伪造版本信息资源的合法mpr.dll库文件。
图1 – 包装器DLL伪装成合法的mpr.dll库,包括名称和版本信息
ESET安全团队表示,虽然目前他们并没有发现名称不同的包装器DLL,但DLL代码中的一些提示表明,包装器DLL也可能会被命名为fxsst.dll或winmm.dll。
InvisiMole的第一种启动方法是劫持一个DLL,放置在与explorer.exe的同一个文件夹中的,包装器DLL在Windows启动期间加载到Windows Explorer进程中,而不是位于%windir%system32文件夹中的合法库。
InvisiMole目前已经被发现存在两个版本(32位和64位),这意味着这种持久性实现技术在两种架构上都能正常运作。
作为DLL劫持的替代方法,采用其他加载和持久性实现方法也是可能的。包装器DLL导出一个名为GetDataLength的函数,当调用这个函数时,DLL会检查rundll32.exe进程是否加载了explorer.exe或svchost.exe作为其父进程,只有这样它才会启动有效载荷。这暗示了其他可能的持久性实现方法——通过调度任务(即将svchost.exe作为父进程)或通过安装在启动注册表项中(explorer.exe作为父进程)。
无论实现持久性的方法如何,实际有效载荷的行为在所有情况下都是相同的。包装器DLL将加载存储在其资源中的模块(名为RC2FM和RC2CL),最终将合法库加载到explorer.exe进程中,以便不中断应用程序的正常操作,从而保持隐蔽性。
图2 – 包装器DLL的导出函数
技术分析
InvisiMole编译的确切日期目前是未知的,因为其开发者对最新的包装器DLL样本PE时间戳进行了篡改,手动设置为零值。ESET安全团队表示,他们在一个早期版本中发现的时间戳显示为2013年10月13日,而后续更新版本的编译日期肯定会晚于这个日期。
加密和解密
为了提高其自身的隐匿性,InvisiMole通过对其字符串、内部文件、配置数据和网络通信进行加密来保护自己免受管理员和分析人员的监视。虽然RC2FM模块使用了少量的自定义密码,但包装器DLL和RC2CL模块共享了一个特定例程,特别是用于解密嵌入在包装器DLL中的其他恶意软件模块。
ESET的恶意软件研究GitHub存储库提供了一个能够使用此例程从包装DLL中提取嵌入式模块RC2FM和RC2CL的脚本。
图4 – 样本间使用的加密程序(反编译和反汇编)
模块RC2FM
第一个较小的模块RC2FM包含一个支持15种命令的后门程序,能够在接收攻击者指示的情况下在受感染计算机上执行的。该模块旨在对系统进行各种更改,但也提供了一系列监视命令。
日志选项在整个文件中实现,但日志文件的名称未在分析的示例中配置,这表明它只在恶意软件的开发过程中使用。
网络通信
RC2FM模块与样本中硬编码的C&C服务器进行通信,或由攻击者进行更新。此外,即使受感染计算机上配置有代理,它也能够连接到C&C服务器。如果直接连接不成功,它会尝试使用各种浏览器(Firefox、Pale Moon和Opera)的本地配置代理或代理连接到任何C&C服务器。
RC2FM模块能够检查最近执行的应用程序列表,尤其是会针对便携式浏览器可执行文件进行查找:
l FirefoxPortable.exe
l OperaPortable.exe
l Run waterfox.exe
l OperaAC.exe
l Palemoon-Portable.exe
如果受害者在配置了代理服务器的情况下使用这些便携式浏览器的其中之一,RC2FM模块则可以根据受害者的偏好找到并使用该代理与其C&C服务器进行通信。
C&C通信由一系列HTTP GET和POST请求组成,如图5所示。加密的请求包括一个PC标识符和时间戳以及可选的其他数据。值得注意的是,与其他InvisiMole组件不同,RC2FM模块使用多种加密方法(简单异或加密例程的变体)。
图5 – RC2FM模块发送到C&C服务器的请求示例
在向C&C服务器成功注册受害者之后,RC2FM模块会下载其他数据,这些数据将在本地计算机上解释为后门命令。
功能
RC2FM模块支持列出基本系统信息和对系统进行简单更改的命令,但也包括一些间谍软件功能。当攻击者需要时,它能够远程激活受感染计算机上的麦克风并捕获声音。使用合法的lame.dll库将音频录制内容编码为MP3格式,该内容由RC2FM模块下载并滥用。
RC2FM模块窃取受害者隐私的另一种方式是屏幕截图,这是另一种后门命令。
RC2FM模块还会监视映射到本地系统上的所有固定和可移动驱动器。无论何时插入新的驱动器,它都会实现驱动器上所有文件的列表,并将其加密存储在一个文件中。
当接收到适当的命令时,所有这些收集到的数据最终都会被发送给攻击者。
后门命令
RC2FM模块支持的15个命令,如下所列。后门解释器功能如图6所示。
图6 – 后门解释器功能
模块RC2CL
RC2CL模块也是一个具有广泛间谍功能的后门程序。它由包装器DLL启动,并与RC2FM模块同时启动。它的功能更复杂,并提供了收集尽可能多的有关受感染计算机数据的功能,而不是用于更改系统。
有趣的是,RC2CL模块中有一个选项可以关闭它的后门功能并充当代理。在这种情况下,RC2CL模块会关闭Windows防火墙,并实现一个服务器,在客户端与C&C服务器之间或两个客户端之间传输通信。
网络通信
RC2CL模块通过TCP套接字与C&C服务器进行通信。从客户端发送的消息模仿HTTP协议,但请注意图7示例中无效的“HIDE” HTTP谓词。
这些请求包括被泄露的PC标识符、请求类型以及要发送给攻击者的加密数据,即后门命令的结果或用于请求进一步指示的请求。
图7 – RC2CL模块发送到C&C服务器的请求示例
功能
根据收到的命令,RC2CL模块可以在受感染计算机上执行各种操作。常见的后门程序通常支持诸如文件系统操作、文件执行、注册表键操作或远程shell激活之类的命令。然而,RC2CL模块不仅支持所有这些命令,甚至更多——它的84条命令为攻击者提供了他们需要的一切,以更密切地监视他们的目标。
RC2CL模块可以检查被感染的计算机并提供各种数据,从活动进程列表、运行服务列表、加载驱动程序或可用驱动器到网络信息,包括IP转发表和internet连接速度。
RC2CL模块使得InvisiMole能够在受感染计算机扫描启用的无线网络,并记录诸如可用Wi-Fi接入点的SSID和MAC地址等信息。然后,可以将这些数据与公共数据库进行比较,让攻击者跟踪受害者的地理位置。
其他命令可以提供有关受感染计算机的用户、他们的帐户和以前的会话信息。
系统上安装了哪些应用程序?哪些应用程序是在系统启动或用户登录时自动执行的?哪些程序被特定用户使用?如果攻击者对这些敢兴趣,他们只需要发送一条命令即可完成。
攻击者可以指示RC2CL模块搜索受害者最近使用的文档或其他感兴趣的文件。同时,RC2CL模块也可以监视特定目录和可移动设备,报告任何更改或者窃取攻击者选定的文件。
另外,RC2CL模块还可以启用或禁用用户帐户控制(User Account Control,AC),甚至是绕过UAC并在没有管理员权限的情况下使用安全位置的文件。如果RC2CL模块在自动升级的explorer.exe进程下运行,它可以实现一个提升的COM对象,并使用它在需要管理员权限的位置删除或移动文件。
更令人不安的是,它可以远程激活受感染计算机的摄像头和麦克风,通过拍摄和录制声音来窥探受害者,并可以通过屏幕截图来实施监控。InvisiMole的特别之处在于,不仅可以进行通常的“全屏显示”屏幕截图,而且可以分别捕获每一个窗口,这有助于攻击者获得更多信息,即使是在窗口重叠的情况下。
此外,其中一个后门命令用于替换具有以下名称的驱动程序的内容:
l blbdrive.sys
l compbatt.sys
l secdrv.sys
ESET安全团队表示,他们还没有观察到攻击者实际使用这个命令,但可以推测这样做是为了在32位系统上实现额外的持久性。
虽然RC2CL模块可以干扰系统(例如注销用户、终止进程或关闭系统),但它主要提供被动操作。只要有可能,它就会试图隐藏自己的活动。
例如,RC2CL模块会嗅出系统中有趣的地方,读取最近的文档,甚至修改一些文件。这些都将在系统上留下痕迹,并可能引起受害者的怀疑,因为每次这样的活动都会更改最后访问或修改文件的时间。为了防止这种情况发生,RC2CL模块总是会恢复原始的文件访问或修改时间,以便受害者不会注意到它的的操作。
InvisiMole开发者试图进行秘密行动的另一个例子是他们处理留在磁盘上的痕迹的方式。RC2CL模块会收集大量的敏感数据,这些数据被暂时存储在文件中,并会在成功上传至C&C服务器后被删除。然而,即使是被删除的文件,也可以由经验丰富的系统管理员恢复,这有助于在受害者意识到被攻击后对攻击行为进行进一步调查。这是可能的,因为即使删除了文件,一些数据仍然存在于磁盘上。为了防止这种情况发生,InvisiMole可以安全删除所有文件,它首先用0或随机字节覆盖文件中的数据,然后删除文件。
内部存储
后门配置和收集的数据会被存储在工作目录和工作注册表项这两者中的其中之一,而后门命令集的很大一部分被专门用于处理这些存储位置及其内容。
工作目录的位置由远程服务器的指令决定。该目录被用作文件的临时存储,其中包含有关被受感染计算机的数据,这些文件共享一个通用的命名规则、加密算法和结构。它们通过在InvisiMole组件中使用简单异或加密例程的变体进行加密。文件的类型可以从位于文件开头的4字节控制序列中派生出来。
除了作为收集数据的仓库外,工作目录还包含合法的WinRAR.exe应用程序副本,它被用于压缩将要泄露的数据。
工作注册表项用于存储配置数据,以及工作目录中的文件列表。数据使用在InvisiMole二进制文件中实现的Zlib例程进行打包,并使用与内部文件相同的密码进行加密。
后门命令
RC2CL模块提供了80多条利用工作目录和注册表键来存储其中间结果和配置数据的命令。后门解释器的功能如图8所示。
大约三分之一的命令专门用于读取和更新存储在注册表中的配置数据,下表列出了其余命令:
图8 – 后门解释器功能
结论
InvisiMole是装备齐全的间谍软件,它的丰富功能可以与其他在实际攻击活动中发现的间谍工具相抗衡。
ESET安全团队表示,他们并不清楚InvisiMole开发者会决定使用两个具有重叠功能的模块。可能有人会认为较小的RC2FM模块被用作初始侦察工具,而较大的RC2CL模块仅用于攻击者感兴趣的目标。然而,情况并非如此——两个模块都是同时启动的。另一种可能的解释是,这些模块可能是由不同的开发者完成的,然后捆绑在一起为恶意软件运营者提供更复杂的功能。
虽然InvisiMole只使用了少数几种技术来逃避检测和分析,然而由于它只针对了极少数高价值目标进行部署,因此这使得它保持长达5年的时间不被发现。
妥协指标(IoCs)
在GitHub上可以找到完整和全面的IoC、C&C服务器列表以及注册表项和值。
文章原文链接:https://www.anquanke.com/post/id/147386