前言

反病毒爱好者们很喜欢讨论的一个问题就是,如今什么样的病毒才算得上是主流,或者说什么样的病毒才是厉害的病毒呢?我们之前的课程所讲解的都是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”文件,而其实第二个是我们伪造的,从而也就达到了混淆的效果。

小结

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

病毒木马查杀实战第022篇:txt病毒研究相关推荐

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

    前言 在本系列的导论中,我曾经在"病毒查杀方法"中简单讲解过特征码查杀这种方式.而我也在对于实际病毒的专杀工具编写中,使用过CRC32算法来对目标程序进行指纹匹配,从而进行病毒判定 ...

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

    前言 上次我们已经简介过了病毒特征码提取的基本方法,那么这次我们就通过编程来实现对于病毒的特征码查杀. 定义特征码存储结构 为了简单起见.这次我们使用的是setup.exe以及unpacked.exe ...

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

    前言 众所周知,传统的恶意程序都是由单一文件构成的.从而实现某一种或者几种恶意功能. 而这类的恶意程序为了避免被发现以及被查杀,往往会採用五花八门的自我隐藏技术以及免杀技术,病毒程序的作者非常多时候也 ...

  4. 病毒木马查杀实战第001篇:基本查杀理论与实验环境配置

    前言 <病毒木马查杀>系列以真实的病毒木马(或统称为恶意程序)为研究对象,通过现有的技术手段对其分析,总结出它的恶意行为,进而制定出相应的应对方法(如编写专杀工具),对其彻底查杀.当然,本 ...

  5. 病毒木马查杀实战第009篇:QQ盗号木马之手动查杀

    前言 之前在<病毒木马查杀第002篇:熊猫烧香之手动查杀>中,我在不借助任何工具的情况下,基本实现了对于"熊猫烧香"病毒的查杀.但是毕竟"熊猫烧香" ...

  6. 病毒木马查杀实战第010篇:QQ盗号木马之十六进制代码分析

    前言 按照我的个人习惯,在运用诸如IDA Pro与OllyDBG对病毒进行逆向分析之前,我都会利用一些自动化的工具,通过静态或动态的分析方法(参见<病毒木马查杀第008篇:熊猫烧香之病毒查杀总结 ...

  7. 病毒木马查杀实战第002篇:熊猫烧香之手动查杀

    前言 作为本系列研究的开始,我选择"熊猫烧香"这个病毒为研究对象.之所以选择这一款病毒,主要是因为它具有一定的代表性.一方面它当时造成了极大的影响,使得无论是不是计算机从业人员,都 ...

  8. 病毒木马查杀实战第004篇:熊猫烧香之专杀工具的编写

    前言 如果是非感染型的病毒,完成行为分析之后,就可以开始编写专杀工具了.当然对于我们这次研究的对象--"熊猫烧香"来说,其实通过之前的行为分析,我们并没有得出它的所有恶意行为,毕竟 ...

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

    前言 如果说我们的计算机中安装有杀毒软件,那么当我们有意或无意地下载了一个恶意程序后,杀软一般都会弹出一个对话框提示我们,下载的程序很可能是恶意程序,建议删除之类的,或者杀软就不提示,直接删除了:或者 ...

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

    前言 由于我们的最终目标是编写出针对于这次的U盘病毒的专杀工具,而通过上次的分析我们知道,病毒有可能在不同的计算机中会以不同的名称进行显示,如果真是如此,那么就有必要在此分析出病毒的命名规律等特征,然 ...

最新文章

  1. 【其他】将幕布文章OPML转换为Markdown的方法
  2. Jquery的$命名冲突
  3. usermod命令的一些用法详解
  4. Tomcat服务在Eclipse中能够正常启动,但页面出现404错误的解决方法
  5. 学术墙报模板_【学院动态】水产学院2020年研究生学术年会科研墙报评比活动开始...
  6. 如何使用yunyang tensorflow-yolov3训练自己的数据集并使用 Intel realsense D435 传输视频流应用于实时检测?
  7. R开发(part11)--基于S4的面向对象编程
  8. [转]小白都能看懂的softmax详解
  9. 类的概念、成员函数的定义方式、类的访问控制和封装、类的大小、this指针
  10. 单链表的应用 就地逆置
  11. 雷军晒十多年前的手机:支持无线充电、内置8GB存储
  12. Java MyBatis 占位符
  13. 全球私有云的中国挑战者来了
  14. 计算机用户注册表修改,WindowsServer2012 注册表修改用户的连接数
  15. IOMeter安装以及测试
  16. 在Solaris下自动启动oracle|Sybase
  17. OpenStack配置Cinder出现“You must set cylinders.You can do this from the extra functions menu.”解决办法
  18. 开发网页需要学什么?
  19. 爬取每日必应图片,python爬虫简单入门
  20. 联迅文库系统文库介绍

热门文章

  1. android手机常用浏览器,安卓手机浏览器对比 六款手机浏览器横评
  2. 抖音视频社交产品多闪上架各大应用市场
  3. 西瓜书之误差逆传播公式推导、源码解读及各种易混淆概念
  4. android 自定义控件viewgroup,Android 之 自定义控件 之 ViewGroup
  5. php 获取支付宝账号密码,php支付宝单笔转账到支付宝账户,用户提现业务-Go语言中文社区...
  6. Ordering disordered structures
  7. javamail QQ邮箱发验证码设定有效时间
  8. Linux网络系统之配置域名与主机名映射和常见网络命令
  9. 为浏览器添加Bing搜索引擎
  10. signature=99d87437cab1487c89a59a65cc379430,剖析根据汉字转拼音的JQuery插件源码