病毒木马查杀实战第022篇:txt病毒研究

       本系列教程版权归“i春秋”所有,转载请标明出处。

本文配套视频教程,请访问“i春秋”(www.ichunqiu.com)。

前言

反病毒爱好者们很喜欢讨论的一个问题就是,如今什么样的病毒才算得上是主流,或者说什么样的病毒才是厉害的病毒呢?我们之前的课程所讲解的都是Ring3层的病毒,所以有些朋友可能会认为,那么Ring0层的病毒其实才是最厉害的,也是病毒发展的主流;或者有朋友可能认为,采取了五花八门的隐藏技术的病毒才是最难对付的。诚然,大家的观点都很有道理,病毒编写者往往也会用复杂高深的技术来武装自己的恶意程序,使其难以被发现难以被清除。那么是不是说Ring3层的病毒就没有“市场”了呢?我觉得不是,比如前段时间出现的“比特币敲竹杠”病毒,就是一个基于Ring3层的病毒,其特色就在于采用了一定的算法来加密目标计算机中的相应文件,而如果没有密码,那么是不可能实现解密操作的。这就体现出了病毒作者的“创意”,说明即便没有高深的技术,但只要有想法,那么Ring3层的病毒依旧是很可怕的。而我们这次所讨论的txt病毒,所走的也正是创意的路线。

一个奇怪的“txt”文件

在之前的课程中,我曾经讨论过一种U盘病毒。当时在U盘中发现它的时候,我之所以没中圈套,正是因为我发现了它的.exe小尾巴:

图1

这也就说明,尽管它的图标是文件夹的图标,但是它本质上其实就是一个可执行程序,利用图标的更换来将自己伪装成一个文件夹,这种手段还是比较古老的,也是很容易被发现的。相信大家通过那次的课程,也建立起了防范意识。但是如果大家看到了一个这样的文件,会作何感想?

图2

我相信,绝大部分的朋友是不会对这个文件起疑心的,会认为这就是一个文本文档文件,会毫不犹豫地对其双击。可是双击运行后,那么也就中了陷阱,其实这是一个经过伪装的Setup.exe,也就是我们之前讨论过的“熊猫烧香”病毒样本。

“txt病毒”原理

可能大家会有疑惑,为什么一个exe程序的“扩展名”会显示为txt呢?其实,说它是一个“txt病毒”并不准确,严格来讲,它是一种混淆视听的手段。因为对于一个exe程序来说,我们不单单可以把它伪装成txt格式,还可以伪装成诸如jpg、doc、ppt等格式。其实现原理就是采用了“反转字符串”的方法。

我们就拿“熊猫烧香”病毒样本为例:

图3

首先可以使用Resource Hacker将该程序的图标修改为文本文档的图标:

图4

然后我们将这个程序重命名为“readtxt.exe”,此时保持重命名的状态别确定,将光标移到“read”与“txt”的中间,单击鼠标右键,选择“插入Unicode控制字符”中的“RLO”:

图5

这个“RLO”是一个转义字符,只要在一行字符前面加上它,就可以实现文本的反向排列。它是Unicode为了兼容某些文字的阅读习惯而设计的一个转义字符。当我们加入这个字符后,从而也就实现了图2中的效果。

那么利用这个原理,我们就能够实现非常多有创意的,并且颇具迷惑性的文件名称,再将文件的图标修改为对应的假的后缀名的图标,那么我相信,即便是资深反病毒爱好者,也很可能会落入陷阱的。

“RLO”与注册表

其实我们上面所讲的这个“RLO”的原理,还可以运用于其它的方面,比如注册表:

图6

在上图中我们发现了两个名为“Microsoft”的项,而注册表是不允许同名的项存在的。其实第二个“Microsoft”正是我利用转义字符原理生成的。某些病毒程序就有可能利用这一点,来将自己伪装成正常的程序,这是需要大家格外留意的。

其它的字符陷阱

既然讲到了关于字符的陷阱,那么我这里再讲一个例子。有些病毒为了实现网站的劫持,会把想要劫持的网站重定向到自己指定的地址。为了实现这一目的,病毒作者通常的做法是修改Windows系统里位于%SystemRoot%\system32\drivers\etc目录下的hosts文件。而病毒作者是不希望我们找到真实的hosts文件,以进行进一步的解析的,于是病毒作者可以将真实的hosts文件设置为隐藏,再伪造一个hosts文件出来。而伪造的方式,可以使用上述转义字符的方法,或者采用将原始的文件名中的英文字符替换为其它的,容易造成混淆的字符。关于这个最为经典的例子就是     将“kernel32.dll”中“32”前面的“l”改为“1”,从而变成“kerne132.dll”,而后者正是一个恶意的动态链接库程序。而具体到hosts这个例子,我们应当如何达到混淆的效果呢?也很简单,首先我们可以在“记事本”中输入“hosts”这几个字符,然后保存为Unicode的形式。接着使用十六进制编辑工具打开这个文本文档,查看其十六进制代码:

图7

上图红框中的“6f 00”(注意这里是小端显示),也就是Unicode码的0x006f,表示的就是小写英文字母的“o”,那么这里我们将其修改为“3e 04”,也就是Unicode码的0x043e,它表示的是俄文字符的“o”:

图8

保存后,再使用“记事本”打开,可以发现原来的“o”变成了一个怪怪的俄文字符:

图9

不过没关系,我们将上述字符复制粘贴,使其成为一个文件的名称,并拷贝到真实的hosts文件目录中:

图10

可以发现,此时出现了两个“hosts”文件,而其实第二个是我们伪造的,从而也就达到了混淆的效果。

小结

如果我们光凭肉眼,是很难阻止这类在字符上做手脚的病毒的,因此我在此也呼吁大家,一定要在计算机中安装杀毒软件,因为杀软并不会依据程序的名称进行杀毒,而是依靠病毒体内的特征码检测等方式来识别病毒的。而对于我们伪装的“熊猫烧香”病毒样本,即便是我们之前所编写的简陋的主动防御系统,也是能够将其制止住的。这也就凸显了杀软的重要性。

时间: 2024-11-07 12:32:40

病毒木马查杀实战第022篇:txt病毒研究的相关文章

病毒木马查杀实战第018篇:病毒特征码查杀之基本原理

本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 前言 在本系列的导论中,我曾经在"病毒查杀方法"中简单讲解过特征码查杀这种方式.而我也在对于实际病毒的专杀工具编写中,使用过CRC32算法来对目标程序进行指纹匹配,从而进行病毒判定.一般来说,类似于MD5以及CRC32这样的算法,在病毒大规模爆发时是可以提高查杀效率的,但是传统的更为常用的方法是采用以静态分析文

病毒木马查杀实战第019篇:病毒特征码查杀之编程实现

       本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 前言 上次我们已经简单介绍过了病毒特征码提取的基本方法,那么这次我们就通过编程来实现对于病毒的特征码查杀. 定义特征码存储结构 为了简单起见,这次我们使用的是setup.exe以及unpacked.exe这两个病毒样本.经过上次的分析,我们对setup.exe样本的特征码提取如下: \x2a\x2a\x2a\xce\

病毒木马查杀实战第026篇:“白加黑”恶意程序研究(上)

前言 众所周知,传统的恶意程序都是由单一文件构成的,从而实现某一种或者几种恶意功能.而这类的恶意程序为了避免被发现以及被查杀,往往会采用五花八门的自我隐藏技术以及免杀技术,病毒程序的作者很多时候也是脑洞大开,为了对抗杀软的查杀也是无所不用其极.我们每天所处理的恶意文件里面,反查杀手段运用得最好的就是脚本木马,关于这类程序,我在之前的<病毒木马查杀实战第025篇:JS下载者脚本木马的分析与防御>这篇博文中也做过简单的论述.可是,不论恶意程序如何进化,杀软厂商总有各种各样的方法来应对现有的以及未知

病毒木马查杀实战第020篇:Ring3层主动防御之基本原理

本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 前言 如果说我们的计算机中安装有杀毒软件,那么当我们有意或无意地下载了一个恶意程序后,杀软一般都会弹出一个对话框提示我们,下载的程序很可能是恶意程序,建议删除之类的,或者杀软就不提示,直接删除了:或者当我们运行了某一个程序,包含有可疑操作,比如创建开机启动项,那么杀软一般也会对此进行提醒:或者当我们在计算机中插入U盘,杀软往往也会

病毒木马查杀实战第017篇:U盘病毒之专杀工具的编写

       本系列教程版权归"i春秋"所有,转载请标明出处. 本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 前言 经过前几次的讨论,我们对于这次的U盘病毒已经有了一定的了解,那么这次我们就依据病毒的行为特征,来编写针对于这次U盘病毒的专杀工具. 专杀工具功能说明 因为这次是一个U盘病毒,所以我打算把这次的专杀工具换一种形式实现.不再像前几次那样需要被动运行,而是当我们的专杀工具执行后,一旦有U盘插入,就能主动检测U盘内容,如果发现病毒,

病毒木马查杀实战第015篇:U盘病毒之脱壳研究

本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 前言 由于我们的最终目标是编写出针对于这次的U盘病毒的专杀工具,而通过上次的分析我们知道,病毒有可能在不同的计算机中会以不同的名称进行显示,如果真是如此,那么就有必要在此分析出病毒的命名规律等特征,然后再进行查杀. 对病毒样本进行脱壳 按照常规,首先是对病毒进行查壳的工作,这里我所使用的是"小生我怕怕"版的PE

病毒木马查杀实战第021篇:Ring3层主动防御之编程实现

本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 前言 我们这次会依据上次的内容,编程实现一个Ring3层的简单的主动防御软件.整个程序使用MFC实现,程序开始监控时,会将DLL程序注入到explorer.exe进程中,这样每当有新的进程创建,程序首先会进行特征码匹配,从而判断目标程序是否为病毒程序,如果是,则进行拦截,反之不拦截.停止监控时,再卸载掉DLL程序.以下就是程序各个

病毒木马查杀实战第016篇:U盘病毒之逆向分析

       本系列教程版权归"i春秋"所有,转载请标明出处.        本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 比对脱壳前后的程序 我们这次所要研究的是经过上次的脱壳操作之后,所获取的无壳病毒样本.其实我们这里可以先进行一下对比,看看有壳与无壳的反汇编代码的区别.首先用IDA Pro载入原始病毒样本: 图1 可以发现此时IDA Pro的Functionwindow是空的,说明很多函数没能解析出来,并且还无法切换到图形模式,而图

病毒木马查杀实战第014篇:U盘病毒之手动查杀

       本系列教程版权归"i春秋"所有,转载请标明出处. 本文配套视频教程,请访问"i春秋"(www.ichunqiu.com). 在U盘中发现病毒 前段时间需要往虚拟机中拷贝点资料,如同往常一样,插上我的U盘,并且在虚拟机的设置中选择连接U盘.奇怪的是这次的连接时间较以往长,并且还出现了"自动播放"窗口: 图1 自动播放窗口 在扫描完后,来到了U盘的打开类型选择窗口: 图2 以前我在虚拟机中使用U盘,都没有出现过"自动播放&qu