一款正在活跃的U盘感染型病毒分析

2017-11-16 271718人围观 ,发现 14 个不明物体 终端安全

*本文作者:渔村安全;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

前言

近期,国内部分地区出现一批通过U盘传播的病毒样本。经金山毒霸安全实验室分析后发现,其背后操作者为境外(之前传出几百人打几千人球迷)某国黑产团伙,目前样本处于“积极传播”期。 在此,再次提醒广大网友,注意自身U盘安全,下文是对该类样本的分析。

关键字: U盘病毒、感染型、长期存在、传播期

正文

感染症状

注册表(HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE)出现可疑启动项

  • Software\Microsoft\Windows\CurrentVersion\Run

文件系统CSIDL_COMMON_APPDATA下出现CLSID类型名称(随机)的文件夹 

一款正在活跃的U盘感染型病毒分析

U盘中出现隐藏文件夹(CLSID类型名称),且出现同名文件

一款正在活跃的U盘感染型病毒分析

计划任务出现CLSID名称的计划任务

一款正在活跃的U盘感染型病毒分析

实际感染后,U盘症状如下图

一款正在活跃的U盘感染型病毒分析.gif

详细分析

外壳

目前的样本结构均为两部分组成,即loader + 母体。通过历史信息检索,已知该类样本的loader目前经过了两个版本的迭代。第一代使用较为通用的免杀技术,通过三级shellcode启动方式,由于特征太过明显,所以有了第二版的出现,其主要特性: 函数调用通过函数表中转,库函数通过计算导出函数字符串的hash方式获取 启动方式: 通过解密资源文件得到 conf + shellcode + pe,然后shellcode根据conf将pe加载起来,比较有意思的一点在于,这个loader自身对资源的解密循环中,会判断异常触发次数,只有达到8000次异常(主动div 0,在TopUnHandleException中累加),才会进行解密操作。

母体

通过简单跟踪,直接dump出完整PE文件方便分析。母体样本的启动有2种情况: 

带参数运行

  • 这种情况下,代表受害者点击了lnk文件,因为lnk文件的参数如下

%comspec% /c "{CLSID}\CLSID.exe '文件名称'"

所以母体样本首先通过 ShellExecute方式启动explorer.exe,传入文件名启动,使用户感觉不到自身运行的文件已经存在问题。后续的操作与不带参数类型一样,见下文。

不带参数

1.进行虚拟机环境检测,通过枚举当前设备信息,如果是虚拟机,则直接退出。

一款正在活跃的U盘感染型病毒分析

2.将自身写入到CSIDL_COMMON_APPDATA下,同时创建svchost.exe进程 

3.在刚创建的svchost.exe进程中分配内存,同时通过栈回溯找到自身基地址,将自身复制进去

4.通过ZwQueueApcThread插入一个APC到刚创建的svchost进程中,以一个Event的触发结束自身进程

5.剩下的代码在svchost进程中继续,先修复自身导入表、重定位表

6.写启动项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

7.如果当前磁盘不是可移动涉设备且不是通过lnk启动,则删除自身文件

8.获取当前系统信息,包括用户名称,os版本、DigitalProductId、是否处于u盘中等,用以回传”上线”信息

9.创建一个死循环线程(间隔10s),创建注册表自启动、计划任务 

一款正在活跃的U盘感染型病毒分析

10.创建一个死循环线程(间隔10s),通过CRC方式对比当前内存母体与磁盘母体文件是否相同,不同则将内存母体替换磁盘母体(便于实时更新,或者是防止母体文件被篡改)

11.创建一个死循环线程(间隔10s),用以感染U盘,由于创建的lnk文件名称,是原文件路径追加.lnk后缀,这样方便样本判断对应文件名称的lnk文件是否存在,不存在则删除文件,使得普通用户,在删除有问题的lnk时,也删除了自己的原文件(可以此来”恐吓”用户)

一款正在活跃的U盘感染型病毒分析

12.创建一个update_Guard线程,等候一个NoticeHandler事件,该事件的触发,标志着从控制端获取到了一个URL,样本通过urldownload方式下载执行

13.创建一个守护线程,完成枚举当前进程,寻找满足条件的进程,注入shellcode(如下图),该shellcode用于等待当前进程退出后再次启动母体,保证当前母体不老不死不灭,实在找不到,就创建一个notepad.exe进程尝试 

一款正在活跃的U盘感染型病毒分析

14.执行一个TimeChecker,用以判断第一次获取时间是否大于第二次获取,是则sleep(0xFFFFFFFF),也即不运行了 

15.延迟1分钟,创建一个线程,用以回传上线信息,样本自身硬编码了1428个domain:port列表,通过AES-256-ECB方式加密存储,遍历列表,直到有一个connect成功

一款正在活跃的U盘感染型病毒分析

一款正在活跃的U盘感染型病毒分析

通过构造上线包,模拟上线,可以看到返回了另外一个加密信息,实际该信息就是12.中更新所使用的URL

一款正在活跃的U盘感染型病毒分析

使用样本硬编码的AES密钥GD!brWJJBeTgTGSgEFB/quRcfCkBHWgl,对其进行解密,得到如下URL信息,之后触发NoticeHandler,样本开始更新。

上次的事情不是结局饿了么

16.同时创建一个通信线程,主要用于更新(维护)控制端的信息

上次的事情不是结局饿了么

IOC

通过上文的介绍,样本的主要功能分析完毕,可以看到,目前的样本功能仍然处于“感染”阶段,以下是样本中使用的domain:port列表的前10个(从下到上),

v1.pspkgya.ru:2675

v1.schwpxp.ru:2956

v1.ouxtjzd.ru:8658

v1.fpzskbc.ru:9364

v1.benkofx.ru:3333

v1.hpifnad.ru:3721

v1.fasefja.ru:3410

v1.yekfhsh.ru:7372

v1.zgclgdb.ru:8518[已经注册,未使用]

v1.op17.ru:6006  [已经注册,目前不活跃]

v1.eakalra.ru:1281 [已经注册,13年起开始活跃]

用于更新样本(分发)的服务器

38.130.218.117

five12.wasyellowindexhotel.ru

update12.wasyellowindexhotel.ru

部分历史样本

9de070f6864bc64e0fcac70a0c881cfb

26A4EF6B68D005C9C15F74CA181B87F4

0b307d639f9bb0d23c54863afbfe7ad0

6b88d5b9c1f7a80738c1ab6ef098d303

372624d24f257c41b441270877186745

b09160e574ec1af717216b0ea05ea184

9C2A789BE6A3B5643CF0B4204786F3AC

B177C7E7232A44A0D00B37D53A68BC45

总结

U盘病毒是较为常见的病毒类型,其具有很强的传播性,通常潜伏于公共场合,例如网吧、打印店、机房等,在这些地方不建议使用移动设备,如果要使用,尽量开启杀毒软件。

本样本的控制者,最早可追溯到13年就有其活跃踪迹,其长期制作、运营该类型病毒。

当前的样本处于“传播”期,自上月26日起,每日的感染量最少也有几百,可以推测,当感染量达到一定程序,控制端分发的程序将不再可能是“原功能”代码,而可能是DDos、勒索软件、挖矿、或者是其他蠕虫,远控木马等。

*本文作者:渔村安全;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

发表评论

已有 14 条评论

取消
Loading...
css.php