转载

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

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年中我们观察到多个成功感染的案例。

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

感染向量

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

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

步骤1:

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

步骤2:

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

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

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

在我们的分析中,这个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用的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第五阶段Delphi文件:

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

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

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

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

第六阶段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防止系统进入休眠或关闭显示

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

BOT_Engine是否安装

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

HKCU/Software/Google/Update/network/secure

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

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

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字符,根据用法(编码/解码)使用不同的查找表

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

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

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

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

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

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

步骤2:XOR modifier

替代数据传递给XOR modifier

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

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

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

在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):

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

CnC应答:

MDVvWVc2K3J5ZGV4ZlNyM0lycjQ5TFhkSnBmZWJTbms1Zkx0aEQzNWxqaFlqVS9XczN4MTNqV1RQOWtHWUF1ZERidzdkR0ZOdjI1UHAzT1pYcktBM2l5OGlWU04zMjByZDExOFNVREdObDk3QjdPNWtQUjhBU05jcjVybXR1Mkg=

解码URI yields:

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

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

下载插件

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

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

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

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

使用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

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

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

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

InjectionHelper

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

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

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

插件描述

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

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

其他可能发送的GET参数;

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

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支持的命令如下表:

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

PONY插件:

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

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

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

VNC插件:

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

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

VNC模块支持的命令:

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

注意:每条命令执行后,都会向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强制重启,这个过程如下图

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

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)

正文到此结束
Loading...