神秘的头像rootkit的C&C通讯API,SDK和雅虎群组

由ESET Win32/Rootkit.Avatar 2013年2月开始,当这个rootkit的一些广告的泄露俄罗斯网络犯罪的论坛(http://pastebin.com/maPY7SS8)的恶意软件检测的神秘故事此信息产生了一些恶意软件研究界的热烈讨论,但“阿凡达”的rootkit的样本并没有发现和公布,到现在为止。在这个博客中,我们提出了一个在的Win32/Rootkit.Avatar系列,里面有一些令人惊讶的功能,目前可出售或出租在犯罪软件市场的深入分析。

在三月ESET检测到两个不同的C&C和汇编时间戳滴管:

Win32/Rootkit.Avatar两次使用驱动程序感染技术:一是在滴管,绕过检测臀部,和第二rootkit驱动系统重新启动后幸存。该感染技术被在其的能力的限制(由用于内核-模式的模块的的的程式码签署政策),,并Win32/Rootkit.Avatar的工作原理只有基于x86的系统中。我们已经进行了详细分析,若干年前的rootkit如何TDL3家庭也感染系统的驱动程序,重新启动后生存(TDL3:Rootkit的万恶的?)。

前64位版本的Microsoft Windows变得如此普遍,使用系统驱动程序感染操作系统的技巧真的很流行的Rootkit。但需要绕过代码签名策略带来了新一代Bootkits的。有关的复杂的,bootkit将家族Win32/Gapz的的更多细节被提出了一个几个星期前在我们的的研究白皮书中“ 的心灵的Gapz:中最复杂的的,bootkit将以往任何时候都的分析吗?“。

的滴管

第一个层次的的滴管实现LZMA算法减压的第二个层次滴管和恶意的驱动程序模块。的第二个的电平滴管和驱动程序在每一个实例顷独特的的,因为成为第一个的的滴管会产生级别随机的名字,代表整个产品的互斥锁/的事件和会强制执行的修改直接在这个机体的模块的的。的在成为第一个电平滴管中使用的的最有趣的的一招是一个的反调试的的的的基础上的KUSER_SHARED_DATA.InterruptTime的系统的结构的的时间比较,从的技术的第一个的电平滴管会修改的RtlDispatchException()例程里面的KiUserExceptionDispatcher()的身体。接下来的步骤会引发一个异常,,,,并将控制权传递到异常-即异常处理程序:

当前时间收集从KUSER_SHARED_DATA.InterruptTime的系统结构,并在接下来的步骤执行。这间非-标准的的一招可以检测到仿真或调试功能的滴管执行的在的第一阶段。

的第二个电平滴管也有为公知的的的虚拟机软件的支票。但是,这些检查工作是基于上的标准的的的,已经-知名的的的招数。在的代码为VM检查之前执行后,它将被解密由“异或”运算基于结果放入加密使用的关键的“的探险家”的。

在接下来的步骤中的操作系统版本和当前用户的权限级别进行检查。的第二个电平滴管使用的不断升级的特权的的两种方式:

  1. MS11-080漏洞的开发
  2. COM高程(UAC白名单)

系统感染过程的滴管工程在下面的图:

MS11-080漏洞,该漏洞使用相同的开发代码,Metasploit的轻微变化框架作为一个公共漏洞的一个版本]核取为AFD.SYS的后,滴管使用了以下的的的的剥削的代码:

下图给出的代码,通过发送一个特定的IOCTL代码= 0x000120BB 触发AFDJoinLeaf指针覆盖:

的出可持续利用此漏洞的程式码的最有趣的的的一部分,是后,剥削所采取的步骤。经过一个成功的的剥削内核-模式的shellcode将被执行,,用于加载恶意的驱动程序。

的阿凡达的rootkit驱动程序是不是存储上的坚硬的的驱动器,并只能从一个内存区域的负载。下面的程序加载恶意驱动程序调用图:

升级特权的的另一种的方式来是,以使用一个比较老的基于在的COM高程(UAC白名单中)上的的技术。后成功的升级的,在系统目录(“ %“WINDIR%\ SYSTEM32”\的驱动程序“)则被选中时,搜索用于在后头的司机的感染。成功后感染的的GsDriverEntry()例程被修改,以执行下面的的恶意的的代码存根(stub)。修改后的GsDriverEntry()例程代码看起来像这样:

的恶意的的代码存根(stub)的的主要任务之一,是将其自身附加到第二个的电平滴管过程中,,并在内存中,读取“阿凡达”的的rootkit驱动程序的身体“。该恶意的的代码存根(stub),,作为在的下面的的身影中呈列:

经过一个成功的的的感染中,修改后的的驱动程序将将本身复制到的%的TEMP%目录中,并尝试将自身加载使用标准的的的系统技术(服务控制管理器或ZwLoadDriver() )。

所以“阿凡达”rootkit驱动是不是存储在硬盘驱动器,将加载方法中使用相同的代码为MS11-080利用驱动程序执行(调用图以上load_avatar_driver程序)。

加载头像rootkit驱动系统驱动程序感染的方法是有效的绕过安全软件,并加载其它内核模式从“可信”(恶意软件),系统驱动模块。

阿凡达rootkit驱动

头像头像rootkit驱动成功加载后,执行感染系统的驱动程序,重启后生存的算法。在为了以履行其的的的感染,“阿凡达随机选择了一个驱动程序,并会检查它的的的名字反对因为每一个的Windows版本的而异的一个黑名单中,。

一个受感染的的系统的驱动程序的的执行流为看起来像这样:

1。切入点,以下存根代码执行:

2。然后,的GUID_DEVINTERFACE_DISK回调例行程序被安装到系统驱动程序加载从隐藏的文件存储的头像rootkit驱动。这是相同的技术使用TDL3,TDL4(TDL:征服的x64的演变和Olmasco(MaxSS / SST)。

3。原来的代码在内存中恢复:

头像rootkit驱动能够感染几个系统驱动程序,而不改变原来的驱动程序的文件大小。

的阿凡达的rootkit驱动程序实现了一个有趣的的的的的技术来检测是否存在的一个虚拟的的机器环境中。驱动模块调用MmMapIoSpace函数()例程从驱动器读取BIOS数据地址0xF0000和检查一些特定的字符串:

  • Parallels的软件
  • 虚拟机
  • VirtualBox的
  • QEMU的BIOS
  • VMware的
  • Bochs的

额外的检查也发现了KVM和Hyper-V的基础上使用CPUID指令招数已经知道。

隐藏的文件系统是用来存储用户模式的有效载荷模块与其它的文件。一个自定义的对称加密的文件进行加密。这里是隐藏的文件系统进行通信的例程调用图:

文件存储在隐藏的文件系统的属性看起来像这样:

在受感染的机器上,额外的的的用户-模式下性和内核模式的模块可以被下载和执行,的隐藏的的文件存储,它们存储在的。Win32/Rootkit.Avatar不存储恶意的组件用在任何标准的的NTFS的存储中,,惟为受感染的的系统驱动程序的除外。加密隐藏的文件存储和感染系统驱动程序相结合,使其更难使用典型取证到调查感染Win32/Rootkit.Avatar的方法。

用户模式的有效载荷使用代码注入的KeInitializeApc()例程来初始化用户模式的APC对象和日程安排执行这个线程注入系统进程的地址空间。

Win32/Rootkit.Avatar有效载荷

从样品中的有效载荷的版本目前的研究的Win32/Rootkit.Avatar的样本不具有许多有趣的功能。它的主要功能是:

  • 指挥中心通信
  • 解析配置信息
  • 读取/写入隐藏文件存储
  • 沟通rootkit驱动
  • 安装额外的的用户-mode和内核-模式的的模块的

的当然,这意味着的最初的感染可以是的起点一个各种的恶意的活动,根据已部署的模块上的,。在我们的的情况下中的有效载荷的组件avcmd.dll已于注入进入的svchost.exe的的系统的过程其中了开始性的沟通带有C&C + +的IP的地址存储在配置文件中中。这个配置文件中具有以下结构:

  • 僵尸网络的名称
  • 指挥中心网址
  • 自定义加密算法的1024位密钥
  • 公钥RSA-1024
  • 为后续的代码注入的过程的姓名

的解密的的配置信息从两个不同的的滴管的例子都在这里显示:

并在这里:

为了保护与指挥中心的通信,自定义的加密算法,输出base64编码。所有网络通信都是从用户模式和使用WININET API标准功能。

Win32/Rootkit.Avatar有一个额外的的的与的C&C的,如果沟通中的其他方法器工作不正常的的方式。该的有效载荷会尝试,,以搜索对于在雅虎的组使用特殊的的参数的邮件的。

搜索序列是基于以下参数(在我们的案例中17BTN1和17NET1):

字符串连接后,生成的字节序列是一个1024位的密钥从配置文件中使用自定义算法加密。

BTN1键= 6mQ98EXP3v7TKMdk704uOUzGqvikuoHt98n8IPp4K19
a3qyZ96LoOc54sb3g9eJVyAs7VmPxQjkkM9R960ev275K24PQ550K1
9fNk8305jRDUTb4cEut4579Zg9i32qU
NET1键= E623J5XKJ9NF4bseM5J2nkwhs1K2766DUOMUDSee3c
7xu06Q9QayV61U4fm5H89ppuNgLt9M5D2XTCLcd0aS3m9CO1aZg9h9
o2zb2EIC437IU3X1P3ec07481E0j2Tdr

加密后得到的字符串编码一个base64算法,在这之后,所有字母转换为大写字母和一些符号将被过滤掉。用于僵尸网络的BTN1的一个例子看起来像这样:

SymFilter(大写(的Base64(加密(17BTN1))))= EZTFDHWP

EZTFDHWP用于后续的搜索请求雅虎组。如果的搜索请求是成功的,的下一个的的的的的的步骤是要请检查该组号码,并中读取群组的描述数据。

本组的描述被就是带有一个RSA的的算法和一个1024-bit的的的的私密金钥加密的。这是可能的存储在配置文件中中的公开金钥将此数据与进行解密。我们假设这个信息是将被发现在加密的消息用于为一个僵尸网络的将控制权返回,而不一个活跃的的的C&C

我们发现这个功能后,我们开始到雅虎群组网站上搜索可能的消息。只有一组被发现与的相应和相关参数的设置(11BTN1 = EFS9KHRF)。该搜索请求看起来像这样:

http://groups.yahoo.com/search?query=EFS9KHRF&sort=relevance

一个加密的的的消息是目前的的这一年龄组的描述:

我们分别为能够解密此消息,使用的已知的的RSA从的配置信息中的-1024个公开金钥。的BTN1僵尸网络的密钥从成功解密此消息:

dZ8FsJ4z0 :: http://www.avatarbut.info http://www.avatarsbut.info

,此信息看起来很类似的的向C&Cs的发现在的BTN1僵尸网络的配置信息中。这篇博客文章作者的犯罪嫌疑人,这雅虎组被创建来测试这个通信功能,因为它包含了相同的信息在BTN1配置文件已经存在。

阿凡达的使用计划,,以维持经由雅虎对邮件分组的的僵尸网络控制中提供一个极好的的的天坑可以尝试的的保护,防止通过,,因为有关C&C的域的的信息是使用一个非对称的的算法,基于上的RSA的计划的进行了加密的的。在倒车过程中,研究人员只能提取公钥解密消息:此键不能使用加密新的消息来创建假组。

头像运行时库

Win32/Rootkit.Avatar具有一个特殊的的的API,用于开发的阿凡达的rootkit的源代码的额外的组件,而不。此的发展的过程是基于周围的阿凡达运行时库,用于开发其中允许与“阿凡达”的rootkit驱动程序的沟通的的额外的使用者模式(user-mode)组件的一个特殊的的SDK。头像运行时库的API函数如下:

  • aTakeProcessToken() -分配从一个进程的进程令牌
  • aExecute() -在远程进程的背景下,执行自定义模块
  • aLoadDriver() -从隐藏的文件系统的负载驱动程序
  • aLoadFileFromAvatarDisk() -的读取文件从隐藏的的文件系统
  • aSaveFileOrAttrToAvatarDisk() -隐藏文件系统写入文件到
  • aSendReport() – C&C发送特定的报告

为有效载荷用户模式进程注入的存储结构看起来像这样:

经过分析后的阿凡达运行时库SDK中,它似乎像一个开发项目由一个真正的熟练的的系统的开发人员或开发人员。我们认为,的恶意软件开发人员曾任职于它的不超过一半的一年少,因为许多的的内核-模式的技术需要冗长的的的的测试,,以确保的稳定性。

结论

Win32/Rootkit.Avatar是一个有趣的的的的rootkit家庭使用许多的用于绕过检测由的安全性软件的有趣的技术。的rootkit复杂头像或Gapz的水平,可用于长期感染,由系统执行的攻击。阿凡达不标准的文件系统中存储​​的文件和其驱动程序感染的技术使得它更难为典型的法医方法用于事故调查成功。

阿凡达也有其他方法来恢复僵尸网络控制指挥中心取下来或因其他原因被打乱C&C。对于清洗的必要首先停用头像rootkit驱动和用户模式的有效载荷,然后才可以清理或恢复受感染的系统驱动程序。

 

 

神秘的头像rootkit的C&C通讯API,SDK和雅虎群组:等您发表观点!

发表评论


快捷键:Ctrl+Enter