针对Neutrino僵尸程序新增加的保护层进行分析

本文讲的是针对Neutrino僵尸程序新增加的保护层进行分析

最新版本的多用途Neutrino僵尸程序已经自带保护层并且Neutrino僵尸程序通过以它命名的利用工具包(Exploit Kit)已经开始进行分发,由于Neutrino属于Kasidet家族,而Kasidet家族又具有多种反调试、反沙箱和反虚拟机的功能,该家族的研发者有可能通过对常见的在线自动化恶意代码分析平台进行过针对性的研究,利用收集各种系统信息的恶意代码提炼出反制在线自动化恶意代码分析平台的方法,并应用到Kasidet家族中,所以最新版本的Neutrino具有很高的防护措施。

分发机制检测

本文中的Neutrino样本是通过在美国使用Neutrino的恶意广告活动中收集的。Neutrino在运行时会首先对运行环境是否是虚拟化,网络流量的正常化和防病毒软件的检测进行排查。如果发现任何可以的检测环境,恶意程序就会立马停止。这种检测技术是通过预登陆当前页面中的大量模糊JavaScript代码完成的,而不是像过去常用的Flash 检测技术。

一旦通过运行环境的检测,Neutrino便会启动一个特制的Flash文件,其中包含Internet Explorer和Flash Player等一系列漏洞利用。最后一步是使用wscript.exe下载和执行经过RC4编码的载荷,以绕过代理网络限制。

感染流程总结如下图所示:

样本分析

通过利用工具包分发的Neutrino样本:b2be7836cd3edf838ca9c409ab92b36d

加载器:349f5eb7c421ed49f9a260d17d4205d3

Neutrino僵尸程序的载荷:6239963eeda5df72995ad83dd4dedb18

这些样本被良好地保护在受控环境中(以避免在受控环境实施感染)。从下图中可以看出,如果样本检测到它正在虚拟机或沙箱中运行时,它便会删除本身的恶意操作组件:

如果分析的环境通过了样本的测试,则样本便会将其复制到%APPDATA%/ Y1ViUVZZXQxx / <random_name> .exe(在本文,我们将其命名为abgrcnq.exe,uu.exe):

随后,样本会对其所运行的文件夹进行隐藏

以便通过计划任务完成本地持久化。

从下图中我们可以看到,样本添加和修改了几个注册表项,比如添加了包括安装日期等一些基本设置信息:

然后,样本会修改一些键,以便让其更好的隐藏在测试系统中。同时注册表中的“隐藏或超级隐藏”功能能够让产生的副本不被用户发现。样本会通过修改以下注册表项,来禁止用户查看这些副本文件:

它还会使用此命令将自己添加到防火墙的白名单中:

与此类似,样本也会将自己的路径添加到Windows Defender的例外文件列表中:

它还会禁止向Microsoft 的SpyNet 社区发送检测报告:

它还会修改终端服务的表项设置,将MaxDisconnectionTime和MaxIdleTime设置为0,受影响表项为:

如果以上这些完全安装过程成功的话,它样本便会开始加载其核心程序,这时我们可以看到一个典型的Neutrino 僵尸网络流量的特点:经过base64编码的“enter”请求报文及“success”响应报文特征。这些响应包会以注释形式嵌入到空白html页面中,议避免让用户发觉:

然后样本会把自身的信息发送出去,以作为下一个请求中的响应,接着,C2C服务器便会像样本发出基于base64编码的请求及响应。解码后的样本如下:

请求报文:

响应报文:

响应报文使用的是截屏命令,不出预料,很快我们就看到样本的恶意程序发送了一张JPG格式的屏幕截图:

从发送的版本号,我们可以得出结论,从发送的JPG格式的屏幕截图中我们发现样本为Neutrino 5.2 

经过仔细分析,我们发现Neutrino 5.2的保护机制总共分三层:

第一层:通过加载器的映像覆盖内存中的PE初始化结构,

详情请点击以下链接:https://www.youtube.com/watch?v%20=%20m_xh33M_CRo。

第二层:防止核心程序在受控环境中(如虚拟机或调试器环境)运行。这是它Neutrino 5.2新增加的一个功能,的确,在我们测试期间,大多数沙箱和虚拟机环境所造成的假象都没有骗过这个新功能的检测。

最后一层是Neutrino程序特有的有效载荷防护。

从加载器代码中可知,它是Neutrino僵尸包中的一个完整的集成部分,而并非是一个独立的加密器,而有效载荷和加载器都是用C ++编写的,而且都使用了类似的函数,并且其中一些函数中都包含着相同的字符串,连编译时间戳非常接近,有效载荷为2017.2.16 17:15:43编译的,而加载器是2017.2.16 17:15:52编译的。

加载器分析

混淆技术分析

样本代码包含了多层混淆技术,如下图的几个可见的字符串:

从上图可以看出,这个字符串中包含目录名、一些函数名、准备禁用的与Windows安全功能相关的注册表键值、计划任务中要添加的字符串,不过要提醒一下,这并不是这个字符串的全部信息。

大多数字符串在运行时会被解密,以下是一个加密字符串的加载过程:

首先,通过专用函数将混淆后的字符串写入动态加载的存储器。然后,使用简单的基于XOR算法对其进行解密:

解密后的字符串为:

大多数API调用同样也经过了动态解析处理,如:

跟踪API调用可以理解程序的功能,因此样本的作者不使用某些API,而是自己实现了这些函数功能。

我们通过跟踪API调用的过程,发现Neutrino的开发者不使用某些API就能实现相应的函数功能。如下图所示,开发者通过读取底层线程环境块(Thread Envioroment Block,TEB)结构实现了GetLastError()函数的功能:

功能分析

为了防止恶意程序被多次运行,加载器创建一个具有二进制硬编码的互斥体(mutex):1ViUVZZXQxx。

该加载器的主要功能便是检查运行环境,以确保运行环境为真实环境。与大多数恶意软件不同,Neutrino的环境检查检测会有一个专门的线程来负责,以便让该功能会重复进行:

于是检查便会无限循环下去:

如果在任何时候,加载程序检测到即部署了一些列入黑名单的进程,则终止执行。

如果恶意程序的某个进程被列入到了黑名单中,则立马会被检测到,随即恶意进程也会自动终止。

检查过程如下所示:

1.使用动态加载CreateToolhelp32Snapshot、Process32First、Process32Next函数完成对当前运行列表中的所有进程进行检查。计算每个进程的校验和,与内置黑名单中的进程进行比较。

从下图中我们可以看到,每个函数都在对应校验和下动态加载执行:

2.在当前进程中使用动态加载CreateToolhelp32Snapshot、Module32First、Module32Next函数完成搜索列入黑名单中的模块。类似地,计算每个进程名的校验和并与内置黑名单进行比较。

3.使用IsDebuggerPresent、CheckRemoteDebuggerPresent判断程序是否正被调试

4.使用GetTickCount、Sleep、GetTickCount进行单步执行时间检测。

5.使用QueryDosDevices(如VBoxGuest)检测列入黑名单的虚拟机,判断是否处于虚拟环境中。

6.使用EnumWindows、GetClassName(如procexpl)搜索并隐藏黑名单程序窗口。

在另一个线程中,样本正在执行与恶意程序安装相关的操作,如将任务添加到Windows调度程序,向防火墙等反病毒工具中添加例外选项列表。

最终,样本会通过PE运行来启动有效负载。

首先,样本会将自己重新复制一遍

然后,在复制的地方映射一个新的PE文件:

有效载荷分析

有效载荷就是一个Neutrino僵尸程序,其中的字符串如下图:

结论

Neutrino僵尸程序已经被发现好几年了,随着时间的推移和技术的更新迭代,它的功能也越来越丰富,反检测能力也越来越强,这不能不令人担忧。

原文发布时间为:2017年3月10日

本文作者:xiaohui 

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-09-15 08:12:35

针对Neutrino僵尸程序新增加的保护层进行分析的相关文章

针对Mac系统的恶意木马程序新变种

新华网天津4月8日电(记者张建新.王思北)国家计算机病毒应急处理中心通过对互联网的监测发现,一种针对Mac系统的恶意木马程序新变种Trojan_Flashback.K出现在互联网络中. 该变种利用AppleMacOSXJava存在的漏洞,盗取系统中的敏感信息数据.与此同时,恶意攻击者利用该变种操作受感染操作系统中的某些数据进而控制Mac系统,最终导致系统出现拒绝服务. 专家说,此类恶意木马程序最初假冒AdobeFlashPlayer的插件出现,但该变种是利用了Java的漏洞并且开始针对Mac操作

针对SaaS应用程序的基于Hibernate框架的数据库分片

针对 SaaS 应用程序的基于 Hibernate 框架的数据库分片 SaaS 正在改变设计.构建.部署和操作应用程序的方式.开发一个 SaaS 应用程序与开发一个通用企业应用程序之间的关键区别在于,SaaS 应用程序必须是多租户的.其他关键 SaaS 需求,比如安全性.定制.面向服务的架构(SOA)和集成,也影响 SaaS 应用程序架构. 多租户是指应用程序在单一代码库内寄存多个承租者并共享数据库等架构的能力.有多种设计选项可启用多租户数据架构 - 每个承租者的专用数据库.每个承租者的共享数据

一种恶意木马程序新变种现身互联网 用户做好防御

新华社天津2月24日电(记者 张建新)国家计算机病毒应急处理中心通过对互联网的监测发现,近期出现一种http://www.aliyun.com/zixun/aggregation/38117.html">恶意木马程序新变种Trojan_Servstar.G. 该变种是一种远程控制的恶意木马程序,自身为可执行文件,在文件资源中捆绑可执行程序资源,运行后会通过生成批处理文件的方式进行自删除. 变种运行后,首先会获得受感染操作系统的访问令牌的权限,查找系统中防病毒软件程序的主进程可执行文件,若存

新的恶意木马程序新变种现身互联网

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 新华网天津12月1日电(记者张建新.吴刚)国家计算机病毒应急处理中心通过对互联网的监测发现,近期出现恶意木马程序新变种Trojan_ServStart.PF. 该变种运行后,将其自身复制到受感染操作系统的系统目录下,重命名为可执行文件,其文件名是随机生成的.该变种会打开受感染操作系统的服务控制管理器,创建一个自启动的进程服务.与此同时,该变种

PayPal将推出针对实体零售店的新付款方式

[搜狐IT消息]北京时间10月9日消息,eBay旗下PayPal为减少对电子商务网站在线支付的依赖,即将推出针对实体零售店的新付款方式,PayPal宣称交易速度将因此加快. <华尔街日报>旗下科技博客Digits报道,PayPal表示,这套新服务可以让PayPal应用程序的用户,可用QR码或为每笔交易发送的验证码来结账.目前在零售店发生的多数手机PayPal交易,都是通过储值信用卡和PayPal账户数据进行的. PayPal已不断推出新产品鼓励消费者在店内用他们的服务,比如提供小型商家新设备.

声音文件-Borland C++ 想在程序中增加播放声频

问题描述 Borland C++ 想在程序中增加播放声频 如果操作有误的话就像Windows操作系统一样有个声音提示,具体该怎么操作?最好提供源码,谢谢,声音文件来自于C:windowsMedisWindows xp 错误.wav,我不太会定义,是Borland C++中有关于声频的控件么?

sql server 2005中新增加的try catch学习

server sql server 2005中新增加的try catch,可以很容易捕捉异常了,今天大概学习看了下,归纳下要点如下 基本用法BEGIN TRY     {  sql_statement |  statement_block  }END TRYBEGIN CATCH     {  sql_statement |  statement_block }END CATCH,和普通语言的异常处理用法差不多,但要注意的是,SQL SERVER只捕捉那些不是严重的异常,当比如数据库不能连接等这

MYSQL客户机程序2—增加错误检查

    6.3 客户机程序2-增加错误检查    我们的第二个客户机程序将像第一个客户机程序一样,但是将修改它们,考虑错误出现的可能性."将错误检查作为读者的练习"这样的项目在编程文献中相当常见,这或许是因为检查错误相当令人讨厌.但是,我赞同这种观点,即MySQL客户机程序应该测试错误条件并适当地进行回应.由于某种原因,返回状态值的客户机库的调用做这些事情,而且您要承担忽略它们的后果.您最终还是要试图捕获由于没有错误检查而出现在程序中的错误,这些程序的用户会对程序运行如此不规律感到奇怪

win7系统额外新增加一个硬盘分区的操作方法

  一般情况下,电脑磁盘的分区都是系统设置好了的,每个品牌.型号的电脑会有自己的分区设置,有些电脑是3个磁盘,有些是4个磁盘,即使电脑有自带的磁盘,有些用户还是觉得不够用,想要多设置一个磁盘,那么我们可以给电脑手动增加一个磁盘吗?系统支持这样的操作吗?其实大家不知道,win7旗舰版系统中,支持这样的操作,可以手动给系统增加磁盘.下面小编就来和大家分享如何为自己的win7旗舰版电脑增加一个磁盘分区. win7系统额外新增加一个硬盘分区的操作方法如下: 1.首先,咱们单击打开win7旗舰版电脑的开始