【FireEye报告】LATENTBOT:有本事你就来抓我啊

2015-12-16 +5 290819人围观 ,发现 2 个不明物体 系统安全终端安全

FireEye最近捕获了一个代码高度混淆的Bot,命名为LatentBot,从2013年年中就开始活跃。它有能力在不被察觉的情况下监视用户,可以破坏硬盘甚至破坏计算机。

根据我们的动态威胁情报(DTI),可以清晰的看到针对美国,英国,南韩,巴西,阿拉伯联合酋长国,新加坡,加拿大,秘鲁和波兰等国多个行业的活动(主要集中在金融服务,和保险行业)。它实现了多层模糊,独特的分发机制,以及成功感染多个组织确实吸引了我们的眼球。

下面列出LATENTBOT的一些主要特性:

a) 多层混淆
b) 内存中解密用的字符串用后即删
c) 在不同的桌面影藏应用
d) 主引导记录(MBR)清除功能
e) 与赎金锁(Ransomlock)类似的锁定桌面功能
f) 隐藏VNC连接
g) 模块化设计,在受害者机器上可轻松进行更新
h) 十分隐蔽的反弹通信量,APIs,注册表键值以及其他一些动态解密指示
i) 将Pony恶意软件作为其中一个模块窃取信息

概述

隐蔽是它的其中的一个特点,LATENTBOT的恶意代码在内存中的时间十分短暂。大多数的编码数据都在程序资源和注册表之中,一个自定义的加密算法在不同的组建之间共享,当然也包括了对命令和控制(CnC)通信的加密。基于这一点,它的家族二进制文件通常被命名为Trojan.Generic:

www.virustotal.com/en/file/39af310076282129e6a38ec5bf784ff9305b5a1787446f01c06992b359a19c05/analysis/

事实上LATENTBOT本身是没有针对性目标的,虽然在多个行业中发现其可怕的存在,但是它是会选择性的对Windows系统进行感染的,比如在Windows Vista或者Server 2008它就不会运行。LATENBOT同样也会使用拿下的肉鸡服务器作为感染源,简化感染,增加检测难度。

基于被动的DNS信息以及捕获的类似样本,LATENBOT可能是从2013年年中开始活跃的。在2015年中我们观察到多个成功感染的案例。

感染向量

最初使用LATENTBOT感染受害者,就已经包含了多层模糊。如下图所示:感染阶段

步骤1:

恶意邮件包含了一个使用Microsoft Word Intruder[1] (MWI)builder创建的很久之前的Word exploit,然后发送给受害者。

步骤2:

当附加的Word文档被打开,嵌入的恶意执行文件便开始运行。同时向MWISTAT服务器发送提示选择:

1.任务跟踪
2.进入第二阶段:下载二进制文件

在我们的分析中,这个Word文档会下载一个名为LuminosityLink的二进制文件。LuminosityLink是一款功能非常全面的远控软件,能够窃取密码,键盘记录,传输文件,激活麦克风或者网络摄像头。

步骤3:

因为LuminosityLink是一款功能十分全面的远控软件可以完全控制受感染的目标,但是令我们惊讶的是在第二阶段这个远控软件还会从emenike[.]no-ip.info (180.74.89.183)下载另外一个payload。这个新模块便是今天我们的主角LATENTBOT

剖析LATENTBOT

分析集中在第三阶段的LATENTBOT二进制文件lsmm.exe(af15076a22576f270af0111b93fe6e03),另外一个类似的二进制文件aya.exe(1dd0854a73288e833966fde139ffe385)也是我们分析工作的一部分。接下来我们就深入探讨这款十分有趣的恶意软件。

LATENTBOT是经过混淆的.NET二进制文件,其包含了一个编码资源对象。该对象是用来解码第四阶段的payload用的。

第四阶段的payload同样是一个.NET二进制保护,且使用ConfuserEx v0.5.0-10-g6ebeec5进行混淆。

第四阶段的二进制文件会从%windir%\Microsoft .Net\Framework\v2.050727\打开.NET程序:RegAsm.exe和CvTres.exe,并且在内存中使用进程挖空替换恶意代码。

CvTres.exe进程被替换为一个从二进制资源中提取出来的Visual Basic UPX打包的二进制文件

这个二进制文件在本地以硬编码二进制创建一个名为dlrznz68mkaa.exe(aya.exe的副本)的注册表键

aFwLiiV文件夹和dlrznz68mkaa.exe文件名在资源部分是以硬编码形式出现在Confuser .NET二进制中。下图显示了aya_decrypted.exe资源内容

RegAsm.exe在内存中会被一个shellcode loader替换,该shellcode loader会打开%windir%\system32\svchost.exe并且使用相同的进程挖空技术加载第二个shellcode loader。之后便解码并在内存中执行第五阶段的Delphi文件。

说到这点上,我们来看看新阶段流程:

下图显示了第二个shellcode loader中的解码函数最终解码第五阶段的Delphi文件:

第五阶段Delphi文件:

这是另外一个使用进程挖空技术的启动器,在另外一个名为svchost.exe的实例中执行第六阶段二进制文件。在资源部分这个二进制也是进过加密的,只有在运行时才使用如下图中的函数进行解密:

使用进程资源管理器工具可以看到aya.exe, RegAsm.exe和两个svchost.exe的进程树,此时第六阶段暂停:

第六阶段Delphi文件:

第六阶段被高度混淆,多个编码字符串中可看到其代表着API函数名,CnC IP,POST/GET参数,HTTP headers,进程名等等。这些都是在运行时解密。

首先恶意软件会执行多个验证,如果Windows OS version为6.0(Windows Vista, Windows Server 2008)或者恶意软件的父进程不是svchost.exe或explorer.exe就会自动退出。

耗电到死:

如果LATENTBOT在笔记本上运行,它会通过GetSystemPowerStatus查询电池状态,如果电池状态为低或者警戒值,其会调用SetThreadExecutionState防止系统进入休眠或关闭显示

BOT_Engine是否安装

接下来LATENTBOT通过查询注册表键检测下载的插件是否安装,加密模块中应该包含以下注册表子项:

HKCU\Software\Google\Update\network\secure

找到插件之后,LATENTBOT会继续加载BOT_Engine,但是首先会通过TTP请求验证链接到的CnC服务器还存活着。

LATENTBOT接着验证HTTP响应是否为以下之一:

200: 请求的资源成功
302: 重定向
307: 类似302

如果接受到的响应不是上面3中其中之一,它会在大约20秒钟后再次连接。

假设接收到的响应是其中一种,LATENTBOT会继续生成一个beacon。首先基于受感染的主机信息生成URI,以下为两个例子:

forum?datael=US-20-503634784811&ver=4006&os=2&acs=0&x64=0&gr=load-1.7.1.20&random=wopvrudsks
forum?datael=US-70-347126827175&ver=4006&os=5&acs=0&x64=0&gr=load-1.7.1.20&random=dbvcwhctdn

所有的GET参数都是在运行时解密,比如tgsz0D decodes to &gr.

datael: <locale>-<OS_Version>-<random_number>中的<OS_Version>为以下中的一个:

10 = Windows 2000 (5.0)
20 = Windows XP (5.1)
30 = Windows XP 64-Bit, Windows Server 2003/R (5.2)
40 = Windows Vista, Windows 2008 (6.0)
70 = Windows 7, Windows Server 2008 R2 (6.1)
80 = Windows 8, Windows Server 2012
90 = Windows 8.1, Windows Server 2012 R2

datael使用的random和<random_number>都是动态设置。对于random来说是从缓冲区abcdefghijklmnopqrstuvxyz中随机选择的10个字符,datael从缓冲区0123456789012345678912345678中随机选择12个整数。初始化Delphi的Randomize()并且在每个循环迭代中调用Random()函数

注意:<random_number>存储在以下注册表键(运行时创建)

\HKCU\Software\Adobe\Adobe Acrobat\data

os:Windows OS主要版本,与前文提到的OS_Version使用相同代码
acs:可能的值为1或0. 如果恶意软件在SYSTEM权限下运行就为1
x64:操作系统架构标志识别
ver和gr参数值为硬编码

然后URI进行3步算法加密,下面描述过程。

步骤1:自定义替换例程

使用自定义的硬编码查找表替代有效的URI字符,根据用法(编码/解码)使用不同的查找表

同时这个例程编码/解码一个WORD文件,每个字节根据不同的需要向左或右移动

下图为增加移动位置后的结果

注意:对于编码来说,根据一个参数从三个不同的查找表选择替换例程。对于本例子来说,我们只使用了一个查找表。

步骤2:XOR modifier

替代数据传递给XOR modifier

下表中显示了不同的XOR modifier使用:

在iBanking/TauSpy安卓恶意软件中也使用了相同的XOR modifier算法[2].

步骤3:Base64编码

生成的经过编码的URI再进行base64编码。

整个算法可以这样表示:

加密:

encoded_uri  = base64_encode(substitute (xor_modifier(modifier, plain_text_uri)))

解密:

plain_text_uri = xor_modifier(modifier, substitute(base64_decode(encoded_uri)))

通过将上面的替换和XOR算法应用到原始URI中:

forum?datael=US-20-503634784811&ver=4006&os=2&acs=&x64=0&gr=load-1.7.1.20&random=wopvrudsks

我们下面的编码URI:

Adl7k+v9qQGCaZti0LS9v++uFb6axeFE2twthNT9s3K6/oG0xjQS2Gqk+Udja91kch3nwphGANCtdr83tXSAaLJEi/qmG3xmKKPwR8lFncN9i93yfHRxFQ2EBC

该URI转换为标准的Base64编码为:

QWRsN2srdjlxUUdDYVp0aTBMUzl2Kyt1RmI2YXhlRkUydHd0aE5UOXMzSzYvb0cweGpRUzJHcWsrVWRqYTkxa2NoM253cGhHQU5DdGRyODN0WFNBYUxKRWkvcW1HM3htS0tQd1I4bEZuY045aTkzeWZIUnhGUTJFQkM=

最后用来发送信标(beacon):

CnC应答:

MDVvWVc2K3J5ZGV4ZlNyM0lycjQ5TFhkSnBmZWJTbms1Zkx0aEQzNWxqaFlqVS9XczN4MTNqV1RQOWtHWUF1ZERidzdkR0ZOdjI1UHAzT1pYcktBM2l5OGlWU04zMjByZDExOFNVREdObDk3QjdPNWtQUjhBU05jcjVybXR1Mkg=

解码URI yields:

mod:http://46.165.246.234/m/:Bot_Engine-A35CB08FB078051B27894BCD380EAC43-229376-018701-881384-8;

实际上这是在执行过程中会下载的一个模块名(Bot_Engine, 以及一个特殊的ID)

下载插件

LATENTBOT通过发送不同的beacon下载不同的插件:

模块名先是伪装成一个ZIP文件,实际上是编码的数据,并保存到secure注册表键:

使用XOR modifier解密插件名,[详见XOR modifier表]获得以下模块名:

hdtWD3zyxMpSQB = Bot_Engine
QdW/DoI2F9J = Security
RRrIibQs+WzRVv5B+9iIys+17huxID = Remote_desktop_service
VRWVBM6UtH6F+7UcwkBKPB = Vnc_hide_desktop
zRlBb9ofmNVErtdu = Pony_Stealer

上图底部显示的注册表值根据使用的插件不同,有特定的目的。其可以作为状态值,完整性检查标志或者用于存储二进制文件编码。

下图显示了插件加载的方式:

InjectionHelper

一个新的DLL(InjectionHelper,看上图)从第六阶段Delphi文件资源中解码出来,然后通过BTMemoryLoader加载到当前进程中。

InjectionHelper的主要目的是加载svchost.exe并在内存中进行替换(进程挖空技术)。一旦InjectionHelper加载BOT_ENGINE插件,在开始之前,它会多次重新注入到一个新的svchost.exe实例。

插件描述

BOT_ENGINE & SECURITY

BOT_ENGINE主要承担加载剩下的插件。加载技术和之前使用BTMemoryLoader库的方法一样。BOT_ENGINE与SECURITY模块沟通密切,SECURITY模块检测系统是否安装有杀毒软件(使用杀毒软件默认的安装路径列表,见附录1),这份列表使用modifier 0xBB8算法进行加密

如果在系统中检测到杀毒软件,会反弹一个包含GET参数的av=<number>(e.g., Avast will be av=1).

同样他还会通过EnumDisplayDevice检查显卡,通过vidtype参数返回结果:

vidtype=1  for NVidia
vidtype=2   for ATI or Radeon
vidtype=0 for none of the above

BOT_ENGINE是一个类似第六阶段Delphi加载器的Delphi程序,根据stub和新线程完成具体任务。其从资源中提取数据,并使用内嵌在恶意软件中的public key验证签名。

提取public key:

通过CryptImportKey API调用一个key二进制大对象(BLOB),该二进制大对象包含一个用于验证签名的2048-bit RSA public key

以下为BLOB Header,我们看到2048 bits RSA public key

其他可能发送的GET参数;

BOT_ENGINE成功安装之后,所有检查都执行了一遍,插件安装状态连同错误信息发送回CnC服务器。插件的GET参数中可以看到插件名称。

下面为BOT_ENGINE成功安装后的明文beacon:

forum?data=US-20-164346373561&ver=4006&os=2&av=19&acs=&x64=0&gr=engine-1.7.1.20-s&li=load-1.7.1.20&plugins=Bot_Engine-881384-8&errcode=0&bk=0&note=0&dom=1&sockslog=0&vidtype=0&random=deabaotabf

BOT_ENGINE支持的命令如下表:

PONY插件:

该插件为Pony Stealer 2.0的最新版本,支持窃取比特币钱包

它寻找不同的加密货币钱包(类似于VNC插件)。

VNC插件:

VNC插件实际功能比他的名字更强大:

键盘记录器
ICMP请求
主引导记录清除
隐藏VNC远程桌面
控制桌面
拦截鼠标事件

VNC模块支持的命令:

注意:每条命令执行后,都会向CnC返回加密的状态结果。

VNC插件命令: killosanduninstalls

执行该命令之后,会发送以下步骤:

1.恶意MBR清除器会被提取出来,通过VNC插件资源解码,通过InjectionHelper注入到一个新的svchost.exe实例,MBR清除器会\\.\Physicaldrive0覆盖硬盘第一个512 bytes,之后退出注入过程
2.父进程会继续从注册表和文件系统删除恶意软件留下的痕迹
3.恶意进程被终止运行
4.状态信息“kill os function started + uninstall + shutdown mashine from 10 sec …”发送到CnC
5.最后通过 ExitWindowsEx API强制重启,这个过程如下图

MBR Wiper MD5(4d0b14024d4a7ffcff25f2a3ce337af8)从2013年7月开始,在VirusTotal上已经被提交过7次。

运行VNC

通过在系统中运行VNC插件模块,可以轻松看到终端用户。这不同于正常的RDP会话,它会注销终端用户使得活动容易被识别。

加密的VNC插件存储在注册表以下键中:

HKCU\Software\Google\Update\network\secure\

该键存储多个加密注册表子项。二进制文件将会被解码并通过InjectionHelper注入到svchost.exe。

在注入VNC插件之前,LATENTBOT会搜索运行在系统中的以下VNC进程,并结束这些进程以防冲突:

tvnserver.exe – TightVNC Software
winvnc.exe – UltraVNC Software
vncserver.exe – RealVNC Software
vncservice.exe – RealVNC Software

总结

在这份paper中,我们提出了多种应用在LATENTBOT的插件。它的这种设计使得更新更加便利,之后我们将密切跟踪其他插件的部署。

尽管LATENTBOT经过了高强度的混淆,由于执行多个进程注入,所以在内存中也不太难检测到。

引用

[1] https://www.fireeye.com/blog/threat-research/2015/04/a_new_word_document.html

[2] Original version can be found here: https://github[.]com/strazzere/android-scripts/blob/master/Decoders/TauSpy-iBanking/rollingobfuscation.java

附录

IOCs:
HBI:

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Load  = %AppData%\Roaming\aFwLiiV\dlrznz68mkaa.exe
The binary is a copy of aya.exe
HKCU\Software\Adobe\Adobe Acrobat\data = <random_value>
HKCU\Software\Google\Update\network\secure
With 0 to 5 subkeys representing modules names:
HKCU\Software\Google\Update\network\secure\hdtWD3zyxMpSQB
HKCU\Software\Google\Update\network\secure\QdW/DoI2F9J
HKCU\Software\Google\Update\network\secure\RRrIibQs+WzRVv5B+9iIys+17huxID
HKCU\Software\Google\Update\network\secure\VRWVBM6UtH6F+7UcwkBKPB
HKCU\Software\Google\Update\network\secure\zRlBb9ofmNVErtdu
HKCU\Software\Google\Update\network\update
HKCU\Software\Google\Common\Rlz\Events\Update
HKCU\Software\Google\Common\Rlz\Events\EventsID

NBI:
CnC IPs (Some of them are compromised legitimate websites):

46.165.246.234
209.208.79.114
REMOTESUPPORT.AARIVERSIDE.COM
83.175.125.150
83.175.125.152
OFFICE.ONTIMEDATASOLUTIONS.COM
ESTREAM.HOMELINUX.COM
95.211.230.212
46.165.246.234
37.220.9.229
SBA-VIG.VIG.PL
SBA2-VIG.VIG.PL
ITMANAGER.MASPEX.COM
GATE.SPACESOFT.KR
SUPREMOGW2.NANOSYSTEMS.IT
CMC.COUNTERP.COM
121.78.119.97
136.243.16.249
180.71.39.228
220.76.17.25
195.254.174.74
83.13.163.218
83.238.72.234
155.133.120.21
DATAROAD.IPTIME.ORG
121.67.110.204

LATENTBOT Samples

1dd0854a73288e833966fde139ffe385 aya.exe
af15076a22576f270af0111b93fe6e03 lssm.exe
47f220f6110ecba74a69928c20ce9d3e
5446022c6d14a45fd6ef412a2d6601c5
a11362a8e32b5641e90920729d61b3d4
d349806ea1f2af0f447b2c9e20cb88f0
6ea9d27d23646fc94e05b8c5e921db99
56ba76cf35a1121bf83920003c2af825
2d2484d578bfcd983acb151c89e5a120
08bb5f82dec4957ad9da12239f606a00
4135552b0045e7d67b26167f43b88a30
af15076a22576f270af0111b93fe6e03
4d0b14024d4a7ffcff25f2a3ce337af8

BOT_ENGINE Plugin 1: The list of default installation paths of popular AV

Documents and Settings\All Users\Application Data\Agnitum
Documents and Settings\All Users\Application Data\avg10
Documents and Settings\All Users\Application Data\avg8
Documents and Settings\All Users\Application Data\avg9
Documents and Settings\All Users\Application Data\Avira
Documents and Settings\All Users\Application Data\Doctor Web
Documents and Settings\All Users\Application Data\ESET
Documents and Settings\All Users\Application Data\f-secure
Documents and Settings\All Users\Application Data\G DATA
Documents and Settings\All Users\Application Data\Kaspersky Lab\
Documents and Settings\All Users\Application Data\McAfee
Documents and Settings\All Users\Application Data\Microsoft\Microsoft Antimalware
Documents and Settings\All Users\Application Data\PC Tools
Documents and Settings\All Users\Application Data\Symantec
Documents and Settings\All Users\Application Data\Trend Micro
Documents and Settings\All Users\AVAST Software
Documents and Settings\NetworkService\Local Settings\Application Data\F-Secure
Program Files\Agnitum
Program Files\Alwil Software
Program Files\AVAST Software
Program Files\AVG
Program Files\Avira
Program Files\BitDefender9
Program Files\Common Files\Doctor Web
Program Files\Common Files\G DATA
Program Files\Common Files\PC Tools
Program Files\DrWeb
Program Files\ESET
Program Files\F-Secure Internet Security
Program Files\FRISK Software
Program Files\Kaspersky Lab
Program Files\McAfee
Program Files\Microsoft Security Essentials
Program Files\Norton AntiVirus
Program Files\Panda Security
Program Files\PC Tools Internet Security
Program Files\Symantec
Program Files\Trend Micro
Program Files\Vba32

VNC Plugin:

Searching for malware analyst tools

 OLLYDBG

 DBG

 W32DSM

 drivers\sice.sys
 drivers\ntice.sys
 drivers\syser.sys
 drivers\winice.sys
 drivers\sice.vxd
 drivers\winice.vxd
 winice.vxd
 vmm32\winice.vxd
 sice.vxd
 hgfs.sys
 vmhgfs.sys
 prleth.sys
 prlfs.sys
 prlmouse.sys
 prlvideo.sys
 prl_pv32.sys
 vpc-s3.sys
 vmsrvc.sys
 vmx86.sys
 vmnet.sys
 \\.\SICE
 \\.\SIWVID
 \\.\NTICE
 \\.\TRW
 \\.\TWX
 \\.\ICEEXT
 \\.\Syser
 \\.\SyserDbgMsg
 \\.\SyserBoot
 SbieDll.dll
 api_log.dll
 dir_watch.dll
 dbghelp.dll
 pstorec.dll
 Sandbox
 honeyq
 vmware
 nepenthes
 snort
 andyd
 c:\analysis
 joeboxcontrol.exe
 wireshark.exe
 regmon.exe
 filemon.exe
 procmon.exe
 SandboxieRpc
 SandboxieDcomLaunch.exe
 VBoxService.exe
 VMwareTray.exe
 VMwareService.exe
 VMwareUser.exe
 xenservice.exe
 sniff_hit.exe
 sysAnalyzer.exe
 procexp.exe
 autoruns.exe
 prl_cc.exe
 LoadOrd.exe
 Diskmon.exe
 RootkitRevealer.exe
 portmon.exe
 Tcpview.exe
 Dbgview.exe
 procdump.exe
 cfp.exe

PONY STEALER Plugin:

List of Bitcoin Wallets and Currencies 1

Bitcoin Currencies:

Bitcoin
Litecoin
Namecoin
Terracoin
PPcoin
Primecoin
Feathercoin
Novacoin
Freicoin
Devoin
Franko
Megacoin
Quarkcoin
Worldcoin
Infinitecoin
Ixcoin
Anoncoin
BBQcoin
Digitalcoin
Mincoin
Goldcoin
Yacoin
Zetacoin
Fastcoin
I0coin
Tagcoin
Bytecoin
Florincoin
Phoenixcoin
Luckycoin
Craftcoin
Junkcoin

Wallets:

Armory wallet
Electrum wallet
Multibit wallet

*原文地址:FireEye,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

相关推荐
发表评论

已有 2 条评论

取消
Loading...

文章目录

    特别推荐

    推荐关注

    官方公众号

    聚焦企业安全

    填写个人信息

    姓名
    电话
    邮箱
    公司
    行业
    职位
    css.php