搜索
查看: 19823|回复: 33
收起左侧

[其他] 可怕的TDSS Rootkit病毒

  [复制链接]
Backstreetboy
发表于 2014-4-17 20:01:21 | 显示全部楼层 |阅读模式
本帖最后由 mengld 于 2014-4-20 21:13 编辑

一直都比较鄙视Windows下的病毒,特别是木马之类没啥技术含量。
今天的经历让我对Rootkit类病毒的看法大为改观。

大概一个月前开始,我的IE在打开后,偶而会莫名其妙被关闭。我开始
以为是垃圾插件在搞鬼,就禁用了一些,但是IE还是会隔三差五被关闭,
而且可恶的是没有什么规律。有一次我打开某个网页时关闭,心想再次
打开它说不定还会关闭一次,果然如此。我想抓它的机会来了,于是立即
把Soft-ICE运行起来,并在ExitProcess这个API上设了个断点,一心
等IE关闭时来触发该断点,没想到我第3次打开该网页时,它却不关闭了,
当时气得我半死。

就这样,我忍了它许久,但是又没有办法。

今天我打开卡饭居然也被关闭了,而且只要打开某一页就一定被关闭。
这次我要报仇。于是我又把Soft-ICE开起来,同样在ExitProcess处设
了个断点。但是当网页关闭时,断点没有触发。想想不可能啊,于是就
用A命令把ExitProcess的首条指令mov edi, edi改成int 3及nop,
再用I3Here on命令让Soft-ICE在执行到int 3指令时中断。令人意外的是,
当我再次打开网页并等待断点发生时,Soft-ICE并没有断在int 3处,而
是停在一条发生异常的指令上,真是不幸中的大幸:

  1   
  2    *265065
  3    +26521C 83 3E 00           cmp byte ptr [esi], 0
  4    +26521F 0F 84 0B 01 00 00  jz 265300
  5    +265225 80 38 00           cmp byte ptr [eax], 0; 此处发生异常, 因为此时EAX=0为空指针
  6   


我赶紧查这段代码的出处,就是要找出这段代码属于什么文件。我猜它应该是一个DLL之类,
因为EXE的地址一定是大于400000的。于是随便猜测它的基地址是260000,用命令D 260000
果然发现前面两个字节为4D 5A。再通过命令D 260000+3C找到PE头的偏移并定位到PE头部,
但是却没有发现它的输出表,没有输出表就无法知道当初编译它时的文件名,再查了一下资源表,
也不存在,本来如果有资源表的话,说不定可以找到一些版权信息之类的东西从而间接知道它的
文件名。我还不死心,结果用Soft-ICE的map32命令及mod命令都无法找到是什么文件载入到
了这段内存中。非常奇怪的事情。

本想试一下用OllyICE载入iexplore.exe,然后在内存窗口中查一下这个260000到底是谁占用
的,但是考虑到这次断点来之不易,不敢轻易从Soft-ICE中退出。心想,先把这段代码存下来再
说。因为我装过icedump,所以可以用以下pagein命令把内存保存到文件中:

  1   
  2    pagein d 260000 13000 \??\d:\virus.img
  3   


接下去,我想到通过堆栈来追溯谁在call这段代码。于是用了以下命令:

  1   
  2    u ebp.4
  3    u ebp.0.4
  4    u ebp.0.0.4
  5    u ebp.0.0.0.4
  6    ...
  7   


结果发现是ntdll.dll调用了它:

  1   
  2    ntdll.dll
  3    +7C94796B FF D6 call esi; ESI=265065
  4   


但是再继续向前回溯,堆栈中却没有内容了,线索断了。
算了,先抄几个特征值下来,看看在OllyICE中载入iexplore后能否找到同样的代码。
我抄了该DLL的入口地址及后面4个字节:

  1   
  2    PE+28      20 16 01 00 00 C0 00 00
  3   


心有不甘地退出Soft-ICE。用OllyICE载入iexplore.exe,然后在内存窗口中搜索
上述8字节特征串,结果还真能找到,但地址变成270000。仔细看了一下,发现在
OllyICE中同样不能找到这段代码所对应的文件。不过,既然我还没有打开具体网页
就能看到这段代码,那就不怕它逃走了。心想,应该可以配合Soft-ICE来抓到它。
于是在Soft-ICE中下断点:

  1   
  2    BPMB 270000 W
  3   

然后在OllyICE中点“重新开始”,结果Soft-ICE断在+8A0684CE:

  1   
  2    *8A068372
  3    +8A0683BD *ntoskrnl!_snwprintf; produce dll name
  4                                  ; e.g. \device\000003fc\5fc894f0\cmd.dll
  5    +8A068405 *ntoskrnl!ZwOpenFile; open "cmd.dll"
  6    +8A068428 *ntoskrnl!ZwCreateSection
  7    +8A068456 *ntoskrnl!ZwMapViewOfSection
  8    +8A06846A *ntoskrnl!RtlImageNtHeader
  9    +8A0684CE rep movsb; copy dll file to specified memory location
10   

通过检查+8A0683BD处的代码,就很轻易地找到了这个DLL的文件名:

  1   
  2    \device\000003fc\5fc894f0\cmd.dll
  3   

开始,我还以为\device是一个文件夹,但是找遍整个硬盘都没有发现。
坏了,难道它是一个虚拟设备?先不管它,先彻底搜索一遍硬盘再说,
于是用010Editor在整个D盘中搜索前面提到的8字节特征串,结果没有
找着什么文件与之匹配。看来问题真的严重了。

我接下去用Google搜索了“cmd.dll 病毒”,发现有一些文章提到了这很可能
是Rootkit类的病毒,它的病毒代码并不是以文件的形式存在,而是存放在空的
扇区上,而且这病毒还会修改主引导区。当电脑启动时,位于主引导区的病毒代码
先运行,然后它修改int 13h中断,接下去当Windows加载某个系统文件时,
病毒会在内存中修改该系统文件,再接下去,病毒会虚拟出一个设备,该设备中
存放与病毒相关的一些文件,其中有一个就是cmd.dll,但该设备在资源管理器
中是看不到的,这样一来,不仅硬盘上找不到病毒代码(因为它不是文件),而且
在内存中也找不着(因为该设备隐藏了),太狠了。有一个较详细的分析在以下链接中:
http://www.securelist.com/en/analysis/204792157/TDSS_TDL_4

根据Google的搜索结果,我还是不太相信我中了这种毒。于是重新用WinPE光
盘启动电脑,这样可以保证内存中无毒。然后用光盘中自带的工具WinHex打开
整个D盘,在硬盘扇区中搜索前面提到的8字节特征串,16G硬盘搜索了10分钟,
结果找到9处,其中有3处在虚拟内存文件pagefile.sys中,1处在我前面保存的
virus.img中,2处在OllyICE的udd\iexplore.udd及udd\iexplore.bak中,
另外3处在空闲扇区中,这3处的其中2处除了8字节匹配外,其余内容不是该dll的,
排除这2处后,只剩下唯一的一处就是这cmd.dll躲藏之所。我把它从硬盘扇区中
全部复制到文件中,经比较确实与我前面用Soft-ICE抓到的内容一样。因此这空闲
扇区上躲藏的内容其实就是虚拟设备中的文件:

  1   
  2    \device\000003fc\5fc894f0\cmd.dll
  3   


现在的问题是,我还是找不到是谁把这空闲扇区中的内容映射成虚拟设备中的文件。
想想,就算把这块内容全部填成0都无用。因为病毒肯定有办法再找块空扇区写入
这段代码。先试试吧。我把最前面的两个字节4D 5A改成44 55,然后重新用硬盘
启动电脑。

结果用Soft-ICE在*8A068372设断点,双击找开IE,一调试,病毒又复活了。
后来发现,其实不仅是IE运行时会激活cmd.dll,运行任何一个软件都会载入
cmd.dll并调用它里面的一个API。我用Soft-ICE在跟踪*8A068372这个函数时
发现,病毒似乎调用了系统内核的一个inject功能,每当一个进程开始运行时,
病毒都会自动注入cmd.dll。

既然这病毒是Rootkit类病毒,它会修改主引导区,那我检查一下主引区吧。但是
我用010Editor打开主引导区发现,主引导代码是完全正常的,并没有被改过。
太奇怪了。

算了,先杀毒吧。从网上下载了卡巴斯基的专杀工具tdsskiller,果真它报告说有
这种病毒,我先不杀,而是用保存到隔离区(Quarantine)功能把虚拟设备中的病
毒拷出来,然后再杀,重新启动后,再用Soft-ICE调试,病毒没了。而且地址
*8A068372中的代码也不见了。

后来,我想到,很可能当时我用010Editor查看主引导区时,因为病毒一直在内存
中监视着我,所以它会把修改之前的正常主引导区拿给我看。这招在DOS病毒中也
是有的。
ly910326
发表于 2014-4-17 20:12:09 | 显示全部楼层
考虑过,您的计算机是怎么着到的吗?
因为您是原创,rootkit来自何方?
steven_lzs
发表于 2014-4-17 20:22:11 | 显示全部楼层
知道病毒的历害了吧。
九尾野狐
发表于 2014-4-17 20:22:46 | 显示全部楼层
16G硬盘搜索了10分钟

16G……
raccoon
发表于 2014-4-17 20:56:00 | 显示全部楼层
2011.1.25的详尽分析更别说现在修改主引导记录的病毒基本杀软都能防和杀楼主你确定你这是技术原创?
Backstreetboy
 楼主| 发表于 2014-4-17 21:38:59 | 显示全部楼层
raccoon 发表于 2014-4-17 20:56
2011.1.25的详尽分析更别说现在修改主引导记录的病毒基本杀软都能防和杀楼主你确定你这是技术 ...

折腾一番不还是没能干掉   有什么技术好谈
Backstreetboy
 楼主| 发表于 2014-4-17 21:40:23 | 显示全部楼层
ly910326 发表于 2014-4-17 20:12
考虑过,您的计算机是怎么着到的吗?
因为您是原创,rootkit来自何方?

好像是下象棋软件弄来的毒  
SUNKESS
发表于 2014-4-17 23:01:19 | 显示全部楼层
这么厉害的病毒?

有样本吗?上传病毒样本区撒,我也想玩
circlele
发表于 2014-4-17 23:12:15 | 显示全部楼层
好日志,最后是干干净了么
ly910326
发表于 2014-4-18 09:53:25 | 显示全部楼层
Backstreetboy 发表于 2014-4-17 21:40
好像是下象棋软件弄来的毒

那个软件以前是收费的
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2019-11-20 22:14 , Processed in 0.084014 second(s), 18 queries .

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