近期,国内部分地区出现一批通过U盘传播的病毒样本。经实验室分析后发现,其背后操作者为境外(之前传出几百人打几千人球迷)某国黑产团伙,目前样本处于“积极传播”期。 在此,再次提醒广大网友,注意自身U盘安全,下文是对该类样本的分析。
感染症状
注册表(HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE)出现可疑启动项
SoftwareMicrosoftWindowsCurrentVersionRun
文件系统CSIDL_COMMON_APPDATA下出现CLSID类型名称(随机)的文件夹
U盘中出现隐藏文件夹(CLSID类型名称),且出现同名文件
计划任务出现CLSID名称的计划任务
实际感染后,U盘症状如下图
详细分析
外壳
目前的样本结构均为两部分组成,即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.进行虚拟机环境检测,通过枚举当前设备信息,如果是虚拟机,则直接退出。
2.将自身写入到CSIDL_COMMON_APPDATA下,同时创建svchost.exe进程
3.在刚创建的svchost.exe进程中分配内存,同时通过栈回溯找到自身基地址,将自身复制进去
4.通过ZwQueueApcThread插入一个APC到刚创建的svchost进程中,以一个Event的触发结束自身进程
5.剩下的代码在svchost进程中继续,先修复自身导入表、重定位表
6.写启动项HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
7.如果当前磁盘不是可移动涉设备且不是通过lnk启动,则删除自身文件
8.获取当前系统信息,包括用户名称,os版本、DigitalProductId、是否处于u盘中等,用以回传”上线”信息
9.创建一个死循环线程(间隔10s),创建注册表自启动、计划任务
10.创建一个死循环线程(间隔10s),通过CRC方式对比当前内存母体与磁盘母体文件是否相同,不同则将内存母体替换磁盘母体(便于实时更新,或者是防止母体文件被篡改)
11.创建一个死循环线程(间隔10s),用以感染U盘,由于创建的lnk文件名称,是原文件路径追加.lnk后缀,这样方便样本判断对应文件名称的lnk文件是否存在,不存在则删除文件,使得普通用户,在删除有问题的lnk时,也删除了自己的原文件(可以此来”恐吓”用户)
12.创建一个update_Guard线程,等候一个NoticeHandler事件,该事件的触发,标志着从控制端获取到了一个URL,样本通过urldownload方式下载执行
13.创建一个守护线程,完成枚举当前进程,寻找满足条件的进程,注入shellcode(如下图),该shellcode用于等待当前进程退出后再次启动母体,保证当前母体不老不死不灭,实在找不到,就创建一个notepad.exe进程尝试
14.执行一个TimeChecker,用以判断第一次获取时间是否大于第二次获取,是则sleep(0xFFFFFFFF),也即不运行了
15.延迟1分钟,创建一个线程,用以回传上线信息,样本自身硬编码了1428个domain:port列表,通过AES-256-ECB方式加密存储,遍历列表,直到有一个connect成功
通过构造上线包,模拟上线,可以看到返回了另外一个加密信息,实际该信息就是12.中更新所使用的URL
使用样本硬编码的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、勒索软件、挖矿、或者是其他蠕虫,远控木马等。