翻译:興趣使然的小胃
预估稿费:180RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
一、前言
卡巴斯基实验室近期一直在跟踪某个黑客发起的针对日本和韩国的攻击活动。这个攻击者惯用的是XXMM恶意软件工具包,这个工具包名字源自于pdb文件中包含的工程路径,原始工程的pdb文件路径为“C:Users123documentsvisual studio 2010Projectsxxmm2Releasetest2.pdb”。这次我们遇到的样本没有包含pdb字符串,使用了不同的技术,但是与XXMM恶意软件的某个变种在代码相似度、软件功能、加密算法、数据结构和模块配置上非常接近。
二、整体分析
我们捕获的样本文件名为“srvhost.exe”,与标准系统进程名非常相似。2017年初,我们从某个合作伙伴那里拿到了这个样本。这个样本最令人惊奇的地方在于它的文件大小,超过了100MB,这对恶意软件来说并不常见。根据我们的分析,这个恶意软件是一个木马加载器,用来激活某个后门。我们无法从这个这个加载器中找到pdb字符串,但从内嵌的配置信息来看,攻击者好像将后门模块命名为“wali”。
图1. 配置信息中包含“[wali]”字符串
图2. 恶意软件主体部分中包含“wali.exe”
这个加载器内嵌了wali后门,使用简单的异或算法进行解密,密钥为“x63”(单字节),异或密钥并不固定。之后,加载器将wali后门模块注入到iexplore.exe进程的内存中。
为何这个加载器如此之大?原因在于该样本包含了数量巨大的冗余垃圾数据。通过公开源信息收集以及使用YARA规则搜索我们自有恶意样本库,我们找到了其他20多个类似的样本(带有覆盖层的wali加载器)。去除覆盖数据后,我们总共找到了6个不同的样本,如下所示:
表1. 大小超过100M的wali加载器(包含覆盖数据)样本信息
当wali加载器安装到受害者主机上时,wali释放器就会生成覆盖数据。下图显示了恶意软件组件的结构,以及这些组件之间的相互关系。
图3. Wali模块结构图
Wali dropper1会检查CPU架构。如果为64位CPU,恶意软件从101号资源中解密64位版本的wali加载器,否则,恶意软件从102号资源中解密32位版本的wali加载器。恶意软件使用RC4算法解密资源数据,对应的密钥为“12345”,然后使用LZNT1算法对数据进行解压处理。Dropper1会在当前的临时目录创建一个名为“win${random4 chr}.tmp.bat”的文件,释放原始wali dropper2。最后,它将生成的垃圾数据覆盖到前面生成的文件中,并运行wali dropper2。
Wali dropper2会检查用户账户是否具备管理员权限,然后使用与dropper1相同的算法及密钥解密wali加载器,并将生成的文件释放到如下两个路径中:
%ProgramFiles%Common FilesSystemOle DBsrvhost.exe
%appdata%MicrosoftWindowsStart MenuProgramssrvhost.exe
Dropper2也使用相同函数生成垃圾数据,并将垃圾数据作为生成文件的覆盖层。最后,它会在注册表中“HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun”处创建一个“sunUpdate”表项,以实现恶意软件的本地持久化。
三、垃圾数据生成
Wali dropper1和dropper2使用了一种非常独特的技术,可以将垃圾数据附加到恶意软件的可执行文件,以增大文件体积。我们猜测,攻击者创建一个这么大的文件是想绕过杀毒软件的检测、增加样本的复杂度、躲过基于YARA规则的扫描。用来生成垃圾数据的函数如下所示:
图4. 生成垃圾数据的函数(create_garbage_data)
create_garbage_data函数在1000次循环中生成随机字节。每次迭代中,它将随机生成的字节限定在某个范围,并填充到数据块中,填充的长度也是随机的。create_garbage_data生成的数据会写入到wali加载器的覆盖层中,写入过程重复100次。这样处理后,最终生成100MB左右的垃圾数据,并附加到可执行文件中。
图5. 将垃圾数据添加到覆盖层的循环过程
某个wali加载器样本(MD5: d1e24c3cc0322b22988a1ce366d702e5)的初始大小为1,124,352字节,经过上述过程,生成了一个新的恶意文件(MD5: 8bd0ddeb11518f3eaaddc6fd82627f33),文件大小也增加到105,982,049字节。
由于附加的垃圾数据是动态随机创建的,因此恶意软件的大小可能会有所不同。在实际攻击过程中,我们见过100MB大小的恶意样本,也见过50MB大小的恶意样本。我们观察到的最大的恶意样本大小为200MB,使用了相同的垃圾数据生成算法。目前这种技术并不会对卡巴斯基实验室产品的安全检测造成影响。这些样本被检测为以下类别:
Trojan.Win32.Xxmm
Trojan.Win64.Xxmm
Trojan-Downloader.Win32.Xxmm
Trojan-Downloader.Win64.Xxmm
Trojan-Dropper.Win32.Xxmm
Trojan-Dropper.Win64.Xxmm
四、总结
填充垃圾数据以增大文件大小并不是一个全新的技术。之前的多态病毒和蠕虫就多次使用这种技术,将原始代码与垃圾数据混合在一起,它们有时候会将文件大小增加到数百上千个字节,甚至超过数兆字节。某些软件保护程序也可能将诱饵文件插入到已打包的文件中,使文件大小增加1MB左右。我们也见过恶意软件伪装为电影文件和ISO文件,通过种子文件进行传播,在这种情况下,恶意软件的大小会膨胀到几千兆字节,以增加真实性。
此次攻击活动比较特别的一点在于,攻击者是在有针对性的攻击行动中,在初始感染成功后的攻击阶段,进行垃圾数据填充操作,增加文件大小以逃避安全检测。
虽然这种技术对原始检测方法可能难以奏效,但我们认为在某些情况下,这个恶意软件可能会逃过那些使用YARA规则进行扫描的应急响应人员和取证分析人员的法眼。原因在于YARA规则使用者通常会限制扫描文件的大小,以便提升扫描性能。在这种情况下,大型文件(比如XXMM恶意软件)可能会躲过YARA规则检测,我们建议安全研究人员在创建恶意软件匹配规则时应该考虑到这一点。
五、攻击指示器
样本的SHA256值如下所示:
Wali dropper1:
9b5874a19bf112832d8e7fd1a57a2dda180ed50aa4f61126aa1b7b692e6a6665
Wali dropper2:
da05667cd1d55fa166ae7bd95335bd080fba7b53c62b0fff248ce25c59ede54a
10fca84ae22351356ead529944f85ef5d68de38024d4c5f6058468eb399cbc30
带有覆盖层的Wali加载器:
1f73d3a566ab7274b3248659144f1d092c8a5fc281f69aa71b7e459b72eb6db2
24835916af9b1f77ad52ab62220314feea91d976fdacad6c942468e20c0d9ca1
303c9fabf6cff78414cebee9873040aeb9dcf6d69962bd9e0bbe1a656376ed16
3ffd5d3579bddbfd7136a6969c03673284b1c862129cfafe7a40beea1f56e790
803a5a920684a5ab1013cb73bf8581045820f9fc8130407b8f81475d91ff7704
d2126d012de7c958b1969b875876ac84871271e8466136ffd14245e0442b6fac
d7b661754cae77aa3e77c270974a3fd6bda7548d97609ac174a9ca38ee802596
dc5e8c6488f7d6f4dcfac64f8f0755eb8582df506730a1ced03b7308587cdc41
f4a07e6dcb49cb1d819c63f17a8250f6260a944e6e9a59e822e6118fb1213031
ffd45bde777b112206b698947d9d9635e626d0245eb4cfc1a9365edc36614cbe
Wali加载器:
a24759369d794f1e2414749c5c11ca9099a094637b6d0b7dbde557b2357c9fcd
b55b40c537ca859590433cbe62ade84276f3f90a037d408d5ec54e8a63c4ab31
c48a2077e7d0b447abddebe5e9f7ae9f715d190603f6c35683fff31972cf04a8
725dedcd1653f0d11f502fe8fdf93d712682f77b2a0abe1962928c5333e58cae
cfcbe396dc19cb9477d840e8ad4de511ddadda267e039648693e7173b20286b1
Wali的C2服务器地址:
hXXp://******essel[.]com/mt/php/tmpl/missing.php
hXXp://******essel[.]com/mt/mt-static/images/comment/s.php
hXXp://******hi[.]com/da******/hinshu/ki******/ki******.php
hXXp://******an[.]jp/_module/menu/menug/index.php
hXXp://******etop.co[.]jp/includes/firebug/index.php
hXXp://******etop.co[.]jp/phpmyadmin/themes/pmahomme/sprites.html
hXXp://******usai[.]com/ex-engine/modules/comment/queries/deleteComment.php
hXXp://******1cs[.]net/zy/images/patterns/preview/deleteComments.php
hXXp://******1cs[.]net/zy/images/colorpicker/s.php
超过50MB大小的文件名:
srvhost.exe
propsyse.exe
perfcore.exe
oldb32.exe
oledb32.exe
javaup.exe