导语:继续追踪间谍软件——InvisiMole,InvisiMole具有一个模块化的体系结构,通过一个经过封装的DLL开始整个攻击过程,并使用嵌入在其中的另外两个模块来执行。这两个模块都是功能特别强大的后门程序,本文将对其进行分析。
前两天嘶吼已经报道了关于间谍软件InvisiMole被发现的新闻,详细信息你可以点此了解。
InvisiMole出现在ESET于6月7号发布的一份报告中,它至少从2013年以来就一直处于活动状态。然而,直到上个月才在乌克兰和俄罗斯的受感染计算机被发现。
InvisiMole的功能相当强大
它具备多种恶意功能,包括安装后门程序、远程代码执行,并能够将受感染计算机变成一台真正意义上的监控设备,因为它能够录制周围环境的音频。
ESET安全团队指出,InvisiMole具有一个模块化的体系结构,通过一个经过封装的DLL开始整个攻击过程,并使用嵌入在其中的另外两个模块来执行。这两个模块都是功能特别强大的后门程序。
除了强大的功能外,InvisiMole还具有非常好的隐蔽措施。最近ESET安全团队通过努力慢慢地摸清了InvisiMole的传播方式和隐藏过程,不过有些只是初步的判断,细节还有待进一步调查。
安装过程和持久性攻击的实现
要先说明一下,InvisiMole之所以到现在才被发现,是因为它的目前针对性很强,感染率较低,目前只有几十台计算机受到攻击。初步推测,它是一个大型商业组织或政府,处于特别的目的而研发的。
InvisiMole的第一模块便是一个经过封装的DLL,它采用开源的Pascal编译器编译,被放置在Windows文件夹中。攻击时,它会伪装成具有版本信息合法mpr.dll库文件。
经过封装的DLL通过其名称和版本信息构成合法的mpr.dll库
ESET的安全人员目前只发现了一个经过封装的DLL,不过DLL代码中的一些信息表明,DLLL也可能会被攻击者命名为fxsst.dll或winmm.dll。
启动InvisiMole的第一种方法,就是劫持一个DLL,然后与explorer.exe放置在同一个文件夹中,这样,DLL在Windows启动时,就会加载到Explorer的进程中,而不是出现合法的在%windir%\system32文件夹库。
不过,截至目前,InvisiMole总共有两个版本,32位和64位,这意味着强大的攻击功能可以同时在32位和64位两种架构上正常运行。
启动InvisiMole的第二种方法,就是采用其他加载方法和持久性攻击技术。经过封装的DLL导出一个名为GetDataLength的函数,当这个函数被调用时,DLL会检查rundll32.exe进程是否加载了父进程——explorer.exe或svchost.exe,只有这样它才会启动有效载荷。这就意味着其他可能的持久性攻击技术的实现方法,就是通过任务调度或安装在启动注册表项中的方式,具体来说就是将svchost.exe或explorer.exe作为父进程。
但不管InvisiMole是用哪种方法实现的持久性攻击技术,有效载荷在所有方法下的运行结果都是相同的。DLL会将加载存储在其资源中的模块——RC2FM和RC2CL中,最终将合法库加载到explorer.exe进程中,这样做是为了不中断应用程序的正常操作,从而避免被用户发现异常。
导出的DLL函数
编译日期的分析
InvisiMole最初编译日期目前还不得而知,因为幕后的开发者有很强的反侦查能力,他们已经对最新的DLL样本的编译时间戳进行了修改,目前显示的设置时间为零。不过,ESET团队在一个早期版本中,还是发现一个时间戳,上面显示为2013年10月13日,所以,据此推断,InvisiMole的最早出现时间也是这个时候。
最新样本中的时间戳都被设置为了0
对恶意模块的分析
为了让自己不会轻易暴露,InvisiMole对其字符串、内部文件、配置数据和网络通信进行了加密设置,以免被管理员和分析人员捕捉到蛛丝马迹。可见,其幕后的开发者肯定是个高手。虽然RC2FM模块使用了少量的自定义密码,但经过封装的DLL和RC2CL模块共享了一个特定例程,该历程主要是用于解密嵌入在DLL中的其他恶意模块。
为了能够从DLL中将嵌入式模块RC2FM和RC2CL的具体信息发掘出来,ESET安全团队开发了一个脚本,并将其上传到了GitHub,如果感兴趣,你也可以试一下。
样本使用的反编译技术
由上面可以看出InvisiMole是由两个主要模块组成的,RC2FM模块和RC2CL模块,下面我先来介绍一下模块RC2FM。
对RC2FM模块的分析
模块RC2FM虽然很小,但却包含了一个支持15种命令的后门程序,当InvisiMole感染成功后,攻击者就会通过这些命令,在受感染的计算机上执行各种操作。其中,就包括对受害者设备系统的各种篡改,同时它也包含了几个监控命令。
另外,虽然日志选项在整个模块中都可见,但配置日志记录选项却未在分析的样本中看到,这表明它只在恶意软件的执行过程中才能被使用。
网络通信过程的分析
经过分析,RC2FM模块会与样本中硬编码的C&C服务器进行通信,不过,有迹象表明,这种通信方式正在被逐渐用其他方式代替。此外,即使被攻击的计算机上有配置代理,RC2FM模块也能够连接到C&C服务器。如果直接连接不成功,RC2FM模块会尝试使用各种浏览器(Firefox、Pale Moon和Opera)的本地配置代理或代理连接到任何C&C服务器。
RC2FM模块能够监控到用户最近使用过的应用程序,并将它们进行列表。不过,RC2FM模块最擅长查找各种便携式浏览器的可执行文件,比如:
· FirefoxPortable.exe
· OperaPortable.exe
· Run waterfox.exe
· OperaAC.exe
· Palemoon-Portable.exe
如果受害者在配置了代理服务器的情况下,使用了以上这些便携式浏览器,RC2FM模块则可以根据受害者的偏好找到并使用该代理与其C&C服务器进行秘密通信。
C&C通信是由一系列HTTP GET和POST请求组成的,如下图所示。一个PC标识符、一个时间戳外加其他的可选数据,共同最初一个加密的请求。值得注意的是,RC2FM模块与InvisiMole的其他模块不同,它使用了多种加密方法,其中有一种就是简单异或加密的变种。
RC2FM模块发送给C&C服务器的请求示例
在向C&C服务器成功发送请求之后,RC2FM模块会接受其他后门命令,接着盗取其他数据。
RC2FM模块的间谍功能
RC2FM模块除了会列出基本系统信息和对系统进行简单篡改的命令外,也包括一些间谍功能,比如,攻击者能够远程激活受感染计算机上的麦克风并捕获受害者周围的声音。具体过程就是,先让录制的音频内容编码为MP3格式,然后放在合法的lame.dll库,等需要时再由RC2FM模块下载并被攻击者使用。
RC2FM模块窃取受害者隐私的另一种方式是屏幕截图,这也是另一种后门命令。
另外,RC2FM模块还会监控映射到本地系统上的所有固定和可移动的驱动器。只要被感染的设备上出现新的驱动器,它都会将其中的所有文件列出,并先将它们加密存储在一个文件中。只有在接收到发送命令后,这些收集到的数据才会最终被发送给攻击者。
后门命令
以下我列出了RC2FM模块支持的15个命令:
后门解释器功能