查看: 7001|回复: 35
收起左侧

[分享] [恶意软件分析文章]TDSS

  [复制链接]
星空下的吻
发表于 2011-1-27 19:29:25 | 显示全部楼层 |阅读模式
本帖最后由 星空下的吻 于 2011-1-27 20:11 编辑

本文将从以下章节详细阐述分析过程与该恶意软件的具体技术细节:
TDSS

    * TDSS. Rootkit 技术
          o 一切的开始: TDL-1
          o TDL-2: 这场游戏还在继续
          o TDL-3: 故事是否终结?
   



  TDSS rootkit是在2008年首次出现的。从那时起,它就开始变得比臭名昭著的rootkit Rustock传播的更加广泛。该rootkit的有效恶意感染程度与分析人员分析该恶意程序的难度都与bootkit相类似。bootkit(就像其名字一样)专门感染计算机引导扇区,确保恶意代码能够被操作系统优先载入。TDSS实现了一个感染驱动文件的概念,这个概念指出TDSS能够在操作系统启动的早期就被载入并运行。所以检测并移除TDSS感染是一大挑战。




TDSS: Rootkit技术

一切的开始
: TDL-1

TDSS的第一个版本被卡巴斯基实验室检测到是在200856,被命名为Rootkit.Win32.Clbd.a。这个名称是来源于该恶意软件的驱动文件名:clbdriver.sysDLL文件名:clbdll.dll,该DLL实施了主要的恶意加载。
大橡树也是由小橡子长大的,这句谚语非常的适合TDSS案例,回溯到2008年,在TDSS的第一个版本运用这种rootkit技术还是相对简单的。
有趣的是,自第一个版本以来,某些部分的rootkit代码依旧被保留了下来,并没有发生改变:


1.TDL 标识符;
2.驱动感染工具;
3.使用配置文件;
4.与命令行和控制面板协同工作。




早期的TDSS版本,Rootkit.Win32.Clbd.o,截图为被感染的beep.sys驱动文件代码片段

rootkit最重要的函数功能:

·通过隐藏方式来保护关键的注册表键值;
·通过隐藏方式来保护关键的磁盘上的文件;
·从内核态驱动注入恶意代码到系统进程中;
·隐藏TCP网络端口;
·执行某些功能(结束进程、结束线程、隐匿注入DLL模块等)。


它通过向系统驱动堆栈添加一个恶意的过滤器来隐藏文件。该方法在每个卷中都在循环执行着感染。
这个方法可谓一箭双雕:
一方面,该rootkit隐藏磁盘上的以“tdl”开头的文件,另一方面在尝试打开 \Device\HarddiskVolumeX卷时返回错误
消息。这会导致各种反rootkit工具在需要打开卷进行文件系统结构的底层分析时会发生错误。

虚假错误是恶意软件通过返回错误消息“STATUS_TOO_MANY_SECRETS”来实现的;返回虚假错误系统消息的这种
方法正好突出体现出了当前网络犯罪的一种冷幽默调侃。
另一方面,网络端口同样也通过在 \Device\Tcp驱动堆栈添加恶意过滤器被隐藏。

恶意服务和配置参数相关联的注册表项目都通过挂钩系统函数NtEnumerateKey被隐藏。
这是通过嫁接替换功能函数开始部分的一定数量的字节来重定向到恶意驱动上来实现的。





截图为一已受感染系统:NtEnumerateKey NtFlushInstructionCache功能函数被替换的实例


挂钩系统函数NtFlushInstructionCache是此恶意软件比较有趣的特性。通过调用这个函数,恶意驱动文件可以执行如下附加命令:

·结束一个线程;
·阻止线程执行;
·结束一个当前进程;
·获取当前进程名;
·隐藏一个注入的DLL模块;
·卸载一个驱动文件;
·获取正在运行的进程列表。





函数执行附加的rootkit命令


rootkit利用PsLoadedModuleList列表,以相对简单的方式来排除系统所要加载的模块,PsLoadedModuleList是一个系统已加载的驱动文件列表。


TDL-1有趣的特性就是如上所说的几个方面,现在的反恶意软件技术可以轻松的检测与这种rootkitTDL-2的出现恰好证明了这点。

PS:原文链接:http://www.securelist.com/en/analysis/204792131/TDSS


本文只给出了原文的部分翻译,即重点的TDSS介绍部分,另外本文的翻译是来自卡巴一族,本人只做了部分微调,发出来一是为了与大家贡献好文章,另一方面为后面我将要发的TDL-4的相关译文做好知识上的铺垫。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 3人气 +3 收起 理由
思梦潮 + 1 我是过来学习的
sfzjn + 1 看不懂。。
lhhsaga + 1 这个本来我准备明天发的

查看全部评分

星空下的吻
 楼主| 发表于 2011-1-27 19:51:59 | 显示全部楼层
TDL-2: 这场游戏还在继续
rootkit技术正在不断发生变革,rootkit技术同时也在适应新的变革。TDL-2TDSS),一种恶意程序的变种在2009年早期随之出现。
值得注意的是TDL-2有着若干个变种,每个变种都被修改过程序功能。基于这个原因,不同来源的描述可能
有所不同。
为了防止恶意驱动被分析,犯罪分子即采用入口点模糊处理与代码高强度加密等技术手段加密rootkit主体代码。他们从哈姆雷特(Hamlet中添加随机词语到恶意文件中试图迷惑恶意软件分析师。






恶意程序包含随机词语的截图片段


虽然rootkit的功能相对前一个版本没有改变,但是反分析的技术有了大幅度的提高并且试图隐匿rootkit的变化。
恶意驱动挂钩如下所示的大量系统内核函数:

·IofCallDriver
·IofCompleteRequest
·NtFlushInstructionCache
·NtEnumerateKey
·NtSaveKey (某些版本中挂钩)
·NtSaveKeyEx (某些版本中挂钩)
·NtQueryValueKey (某些版本中挂钩)
·NtSaveKey (某些版本中挂钩)
·NtSaveKeyEx (某些版本中挂钩)
·NtQueryValueKey (某些版本中挂钩)





已被挂钩操作系统函数截图片段

尝试恢复以上提到的被挂钩的内核函数都是可行的。但是该rootkit使用若干个系统线程来检查挂钩的状态,如果发现挂钩当前被恢复,那么将会重新挂钩。与此同时,该rootkit也会检查系统注册表中恶意服务的注册表项目是否被删除,如果被删除也会重新注册。

就如同该rootkit的第一个版本一样,TDL-2通过挂钩NtEnumerateKey函数来隐藏rootkit的配置数据与它的关键注册表键值。

两个新的系统内核函数进入了我们的视野:NtSaveKey NtSaveKeyEx,通过挂钩这两个系统内核函数能够防止一些rootkit工具通过检测系统注册表中的异常情况来主动发现活跃在系统中的恶意软件。

挂钩NtFlushInstructionCache系统内核函数是为了确保恶意程序组件能够与系统内核进行通信。

该恶意软件通过挂钩系统内核函数 IofCallDriver IofCompleteRequest 以便于让恶意驱动可以过滤系统的 IRP 数据包。这将帮助该恶意软件隐藏rootkit文件并且限制访问它们。在Windows系统下,I/O系统是统一接口的基础与操作系统的核心。I/O管理器链接应用程序与各种设备的各种系统组件。大多数I/O请求构建特殊的IRP数据包表格(输入/输出请求数据包)。因此,通过挂钩以上提到的函数后将会允许一个进程过滤大量的IRP数据包,例如打开文件操作。
拦截IofCallDrive 函数能够筛选出将要被系统处理的数据包,挂钩 IofCompleteRequest 函数就能够取消掉一个正常的IRP作,例如一个文件的打开操作。挂钩 IofCallDriver 函数实现目的使用的是一种非传统的方式,应该说是一种技术创新。该挂钩监视着执行堆栈,如果它发现一个不在该rootkit内置白名单的驱动在堆栈中并且尝试读取某个文件时,该rootkit会返回一个虚假的读取成功状态给不在白名单中的驱动。事实上,这个驱动并没有真正读取文件成功。当系统函数 IofCompleteRequest 被挂钩时,rootkit会返回错误信息“STATUS_SECRET_TOO_LONG”并且拦截操作。

rootkit同时也通过使用系统注册表键值 ServiceGroupOrder 耍花招。该注册表键值负责处理驱动加载的权限。rootkit发现一个驱动被给予最高权限,例如某驱动被授予 “System reserved”权限时,对这项服务的登记记录将会被修改使得该服务启动的更晚,这是另一种抵抗反rootkit技术的方式。


该恶意功能目前仍旧足够复杂,能够抵抗大多数反病毒产品并且仍然有效http://www.anti-malware-test.com/?q=node/180因为它能够帮助rootkit持续存在于被感染的系统中且无法被检测到。然而,位于该恶意软件身后的犯罪分子不愿满足于他们的成就。他们的孜孜追求促成了TDL-32009年秋的出现。
rootkit是迄今为止最复杂,最强大,最有意思的rootkit



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
星空下的吻
 楼主| 发表于 2011-1-27 20:04:05 | 显示全部楼层
本帖最后由 星空下的吻 于 2011-1-27 20:06 编辑

TDL-3:故事是否终结?
这个恶意程序的最新版采用了最先进的病毒编写技术。除了继续开发rootkit,作者也在持续改进恶意程序的自我保护能力,bug修复与有效感染能力、迅速响应反病毒软件公司开发的新的检测技术。
为了确保rootkit在操作系统内站稳脚跟,犯罪分子使用一种流行的感染方式:感染系统文件。这个方法的目的在于感染微型端口/端口的磁盘驱动程序。通过感染该系统文件能够在操作系统启动后几乎立即载入该rootkit
rootkit最近的变种会随机选择一个系统某个重要的驱动进行感染。不过,我们先开始研究该rootkit早期的版本是如何感染atapi.sys驱动文件的。为了防止被反rootkit工具检测到,该rootkit会首先检测这个文件的大小,然后进行感染,感染后的文件与原文件大小不发生变化。
恶意感染代码会替换被感染的文件的资源字段中的一些字节,这些字节包含引导该rootkit主体部分的引导代码,并且修改驱动文件的入口点指向该rootkit主体部分引导代码。




atapi.sys驱动文件在被感染前的入口点信息



atapi.sys驱动文件在被感染后的入口点信息受感染的驱动会优先加载存放位于磁盘最后扇区内的rootkti主体部分到内存中执行,并且将控制权交给它。

位于磁盘上的rootkit主体部分,该主体部分被命名为“TDL3”然而,以上这些并不是该rootkit所要做的全部内容。TDL-3使用自身的加密文件系统来加密自身的配置数据与用户态DLL模块。所以,TDL-3不需要FAT或者NTFS文件系统的支持就能够操作数据。



位于磁盘最后扇区位置上的rootkit配置数据解密后的实例计算机世界中的任何一个rootkit的最主要的目的都是阻止被发现或者隐藏关键的恶意数据。为了实现这点,TDL-3伪装成一个为系统设备提供服务的对象。



磁盘设备堆栈

该驱动的所有函数功能都是为了做一件事情:恶意的挂钩大量的系统内核函数,以下是恶意驱动的挂钩函数代码:




上图所示的方法表示rootkit会过滤掉试图
访问存放该rootkit重要数据的磁盘扇区。如果有程序
读取该受感染的驱动(在这个案例是atapi.sys)的话,rootkit会返回一个干净的驱动文件所包含的内容(也就是说访问这个驱动文件时,对于访问者来说能够获得一个被感染前的驱动文件),这是为了不被发现而做的巧妙设计。


TDL-3
是一个非常复杂的恶意软件。设计这个恶意软件的作者非常关注反病毒软件公司的举动并且迅速更新此rootkit的更新。截止到目前为止,该rootkit的当前版本已经变种了3273次。我们预计该rootkit的功能将在不久的将来被改进,以更好地对付反rootkit技术。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1经验 +10 收起 理由
Johnkay.Young + 10 感谢提供分享

查看全部评分

lhhsaga
发表于 2011-1-27 20:09:39 | 显示全部楼层
这个技术贴,你比我快
星空下的吻
 楼主| 发表于 2011-1-27 20:12:08 | 显示全部楼层
回复 4楼 lhhsaga 的帖子

不知你是不是发这篇,我还有一个TDL-4的还没发
lhhsaga
发表于 2011-1-27 20:13:50 | 显示全部楼层
星空下的吻 发表于 2011-1-27 20:12
回复 4楼 lhhsaga 的帖子

不知你是不是发这篇,我还有一个TDL-4的还没发

我就是写关于病毒的,其中Rootkit是第一个
星空下的吻
 楼主| 发表于 2011-1-27 20:15:15 | 显示全部楼层
回复 6楼 lhhsaga 的帖子

和这个卡巴斯基实验室的不一样吧??
lhhsaga
发表于 2011-1-27 20:16:56 | 显示全部楼层
星空下的吻 发表于 2011-1-27 20:15
回复 6楼 lhhsaga 的帖子

和这个卡巴斯基实验室的不一样吧??

是不一样,但是你这个要深层一些,我写最多是帮助小白的
星空下的吻
 楼主| 发表于 2011-1-27 20:20:00 | 显示全部楼层
回复 8楼 lhhsaga 的帖子

明天我捧场,这个东西排版不易啊!!!
lhhsaga
发表于 2011-1-27 20:21:13 | 显示全部楼层
星空下的吻 发表于 2011-1-27 20:20
回复 8楼 lhhsaga 的帖子

明天我捧场,这个东西排版不易啊!!!

我看看怎么发再说吧
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-5 23:56 , Processed in 0.151544 second(s), 19 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表