时间:2017-11-29 点击: 次 来源:网络 作者:佚名 - 小 + 大
摘要: 近期,国内部分地区出现一批通过U盘传播的病毒样本。 近期,国内部分地区出现一批通过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、勒索软件、挖矿、或者是其他蠕虫,远控木马等。 其实还有一个最简单的方法,开启2345安全卫士,简单粗暴解决你的病毒问题哦! |