分享

手工查杀木马病毒7

 菜园子图书馆 2014-01-27
文件无疑是计算机的根本,数据的最终形式,其重要性不言可喻。文件涉及到的东西实在太多了,在这里我们只讲与木马查杀有关的部分,想详细了解的请参阅相关资料。


  与以往一样,我们先了解一些文件相关的基础知识,然后再聊与木马查杀相关的知识。


八、文件基本知识

  首先,我们要明确两个概念“文件格式”、“文件系统格式”与一个机制“文件读写机制”,在此基础上我们再谈论文件的隐藏与查找、保护与删除。


A、文件格式

  文件格式是什么呢?我们都知道一个文件名字的组成一般都是由文件名与扩展名组成的,比如:Explorer.exe 这个是我们经常看到的程序。为什么我们说他是程序呢?因为他的扩展名是“.exe”,这个扩展名表明了他的文件格式,是exe格式的程序文件,而“exe”其实就是“Execute”这个英文单词的缩写,意思是“执行”,即可以执行的文件。


  再比如:“A.bmp”文件,对计算机比较了解的朋友,一眼就可以看出,这是一个图片文件,为什么会是图片呢?因为“.bmp”代表的是一个图片格式,这也是一个英文的缩写“Bitmap”(位图)。


  所以,不同的扩展名代表了不同的格式,什么是格式呢?格式就是什么东西放在什么地方,什么地方又放了什么东西的一种规则。比如EXE文件,他的格式与BMP文件就完全不同,EXE文件开始部分是DOS头,前两个字节是“MZ”;而BMP文件的开始部分是位图文件头,前两个字节是“BM”,你用记本事打开一个EXE文件与BMP文件比较一下,看看最前面的两个字母是不是一个是MZ一个是BM呢?当然了,不同的并不仅仅是开头,全部都是不一样的。 为什么我们要讲这些呢?这是为了告诉你一个事实,那就是“扩展名代表了一个文件的格式,但更改扩展名并不会使文件格式发生改变。张三就是张三,你硬让他改名为李四,也不会改变他是张三的事实”。


  你如果把一个程序的扩展名改成了“.bmp”那么这个程序看起来就和图片一样了,图标也会变成图片一样的图标。但他实质上仍然是一个可以执行的程序。当然了,改了扩展名后,你双击它,就无法执行了,为什么呢?因为Windows会认为这是一个图片,嘿,系统是只认名字不认人的。所以,系统会调用图片浏览程序来打开这个伪装的程序,结果显然是失败的,因为这并不是一个图片。但是,如果我们把BMP的文件关联改成Explorer.exe呢?那系统就会调用Exolorer.exe来打开这个文件,结果呢?就执行了。关于文件关联的情况,请参阅自启动项篇的相关章节。

 

  有朋友可能遇到过,有的木马扩展名并不是exe而是pifscr等等,但同样可以用鼠标双击来执行。现在是不是已经明白他们为什么能够执行了呢?呵,不明白我就再总结一下子:一个文件是否可以通过鼠标双击来执行,与其扩展名并没有必然联系。有联系的是该文件的文件格式与在系统中注册的打开此格式文件所使用的程序,缺一不可。


  如果将exe文件的文件关联改成图片浏览器,那么它也就无法双击执行了。而木马习惯于将自己改成pifscr是因为系统中默认的打开这两种格式文件的程序就是Explorer.exe,exe文件是一样的。


  如果指定了用某一程序来打开或加载某一文件,只要文件格式正确就可以正确打开或加载,与扩展名无关。这就是为什么有些进程中的模块看起来并不是DLL文件,而有些进程看起来并不是EXE文件的原因。扩展名只是告诉系统,这一类的文件需要用某一个程序来打开,如果打开时已经指定了程序,那扩展名就无用了,有用的只是文件格式。


  在Windows系统中,可以执行的文件格式叫做PE格式(Portable Executable File Format/可移植的执行体文件格式),包括了EXEDLL等。而可执行文件意指文件中存的是指令序列或与其有关的东西,是可以放到内存中一条条执行的。与其对应的是数据文件,其中存的并不是可指行的指令,而供查看的数据,包括图片、音乐、文档等。


  某类型的文件格式会有相应的程序去读取它们,而我们自己也可以定义自己的文件格式,比如:我们可以定义.SSS为扩展名的文件格式,并写个程序来读取,这是完全可行的。


  这里我们再顺便说一说扩展名的更改,手动更改一是在DOS下或控制台下更改,另外就是在文件夹的菜单中选择“工具”à“文件夹选择”,在弹出的窗口中,将“隐藏已知文件类型的扩展名”前面的勾去掉,这样,文件夹中的文件就会显示全部的文件名与扩展名,就可以随便的更改了。

 

B、文件系统格式

  文件格式是指文件中的数据存放的规则,什么地方放了什么东西,而什么东西又放在什么地方。而文件系统格式,则是指文件在磁盘中的存放规则,此规则说明的是文件是如何放到磁盘中的,又如何能找到它们。

  我们接触最多的是FAT格式与NTFS格式,最早的系统比如DOSWin3.X用的是FAT16,后来的Win95\Win98\WinMe开始使用FAT32系统,而FAT32只是FAT16的一个增强扩充版本,并无实质上的格式改变。
NTFS最早用于WinNT系列的操作系统,WinNT4以后的操作系统都支持NTFS文件系统,虽然仍然提供了对FAT32文件系统的支持,但NTFS取代FAT32已经是定局了。而当前仍然有不少朋友在用FAT32文件系统,尤其是系统盘使用FAT32文件系统的更加普遍。是因为FAT32NFTS有某些优势么?非也,据我了解,是因为装机人员出于方便DOS下的操作而考虑的,因为DOS是不支持NTFS文件系统的,这无疑是一种很不负责任的做法。

 

  为什么说这是不负责任呢?这就要从NTFS文件系统的优势说起了,当你明白NTFS文件系统的优势后,就会明白,为了图一时的方便,用户牺牲的又是什么。

 

NTFS系统的优势:


l容错性:NTFS可以自动修复磁盘错误而不显示出错信息,在NTFS分区写入文件时,系统会在内存中保留一份拷贝,写完后将写入的与内存中的进行比对,如果发现不一致,就将该扇区标为坏扇区不再使用,以免用户数据丢失。


l安全性:可以设定文件、目录的读写权限,禁止未授权的访问。


l加密:可以对文件进行加密操作。


l文件压缩:对不常用的文件自动压缩以节省磁盘空间,支持单一文件或目录的压缩。


l磁盘限额:对各用户分配可用磁盘空间大小。


l综合索引功能:使文件查找更快速,这个优势用系统自带的搜索文件功能并不明显,可以用狙剑附带的“磁盘文件搜索”功能,NTFS文件系统的30G的分区十几万文件,搜索完成只需几秒钟;而同样大小的分区与同样数目的文件,如果是FAT文件系统,需要的时间则可能是要以几十倍上百倍的计算。


l可恢复性:系统发生意外出现数据错误时,可以自动进行恢复。


l其它等等优势……总之NTFSFAT有着更高的效率更的安全性更高的……

 

 

  除了FATNTFS外,其实我们还经常接触另外的两种文件系统格式,但却不像FATNTFS那么去注意它们罢了,它们就是CDFSCD-ROM\ UDF(DVD-ROM),呵,是不是呢?光盘都接触过吧?不过,我们这下面将只讲FATNTFS,因为他们与我们的主题木马的查杀是最相关的。


  文件格式有特定的程序来识别并读取使用,而文件系统格式则由特定的驱动来识别并读取使用,这就是我们经常听到的FSD(文件系统驱动),而FSD-HOOK就是HOOK这几个驱动了:

 

CDFS格式:Cdfs.sys
UDFS格式:Udfs.sys
FAT格式: Fastfat.sys
NTFS格式:Ntfs.sys

 

 

  我们不用关心,事实上的数据在磁盘中是如何存放的,每种格式的存放方式都不相同,想了解这个的请去查阅相关资料,我们现在只需要明白,文件系统格式与文件系统驱动这个概念就可以了。下面呢,我们就看一看,一个文件是如何读取的,了解了原理上的东西,再看问题就会清晰很多。

 

C、文件读写机制

  在了解这个之前呢,我们仍然需要先聊一些必要的基础知识,(咳,没办法,任何东西都不是孤立存在的,都需要一些知识为根基),文件读写离不开缓存管理,我们先看看缓存管理方面的。

  从宏观上来说,计算机的数据流是由磁盘流向内存再流向CPU的各寄存器,而CPU是执行速度最快的,汇编语言之所以被认为是效率最高的语言,很大原因在于使用汇编语言可以直接操作CPU的寄存器,可以最大限度的抛开内存与磁盘的读取去利用寄存器。速度其次的,就是内存了,尽力的自内存中读写数据,而抛开磁盘操作,是无法直接使用寄存器时要努力做到的。而速度最慢的,就是磁盘了,直接自磁盘中读数据,是速度最慢的。

  不知大家明白上面说的不?总之,系统在努力的保证更多的操作都是直接操作的内存而非磁盘,以此来提高系统的整体效率。

  但是文件是保存在磁盘上面的,避开磁盘读写显然是不可能,只能是尽力的减少读写磁盘的次数。那么,系统又是如何来尽量多的读写内存而不是磁盘的呢?这就是我们接下来要讲的三个概念“缓存”、“智能预读”与“延迟写”。

  缓存是什么呢?缓存的用途是将频繁被操作的数据的一个子集保存在物理内存中,这样我们的频繁操作就可以直接操作内存,而不是频繁的读取磁盘了。但系统又如何知道我们要操作哪些数据呢?这就涉及到智能预读的概念了,“智能”?明白了么?是通过一种科学的计算,来决定哪一部分应该被事先读取,并保存在内存中。当我们打开一个很大的文件或频繁的对某一文件进行操作时,系统会预选读取一部分放到内存中,预先读取哪些是通过计算得来的(这种计算的命中率显然决定了性能)。以后我们的读写操作就都是在读取内存,而非速度低下的磁盘。

 

  当打开某一大的文件时,第一次会很慢,但关闭后再打开时会快很多,有这体会么?

  如果有100本很长的小说,其中10本是我们经常阅读的,那么在对这10本进行操作时,其速度要比操作另外90本明显快上很多,这都是预读捣的鬼。

  延迟写又是什么呢?比如我们修改一个文件,看着其中的一个字母“A”非常的不爽,就将它改成了“B”,改完后感觉仍然不够好,就再改成“C”………这种修改如果系统每次都将修改的结果存到磁盘上,那么我们的磁盘岂不是时时刻刻都在狂转?所以,系统采用了一种延迟写的方法,我们所有的修改都存在了缓存中,当完成一定的积累后,系统再一次性的将所有修改写入磁盘,而这种写是在后台进行的,我们并没有更多的感觉。

  这里需要注意的地方是,这种延迟写与前面自启动项篇中注册表HIVE文件的延迟写并不是完全相同的。当然了,原理与机制是相同的,都是为了减少读写磁盘的次数也都是利用了缓存机制。但注册表HIVE文件的延迟写是由一个专门的注册表文件操作线程负责的,每5秒触发并写入一次。而文件的延迟写是由缓存管理器的延迟写出器在一个系统辅线程上每秒钟一次的来执行的,而且,执行并不等于写入,执行一次意指计算一次,计算什么呢?计算是否需要写入磁盘写入多少又写入哪些。

  我们抛开缓存管理只谈文件读写,那么其机制就是这样的,系统得到文件读写请求后将请求发送给相关的服务处理程序,服务处理程序则交给文件系统驱动,文件系统驱动进行安全检查,看我们是否有权力进行所要求的操作,如果通过,则首选自缓存中取数据给我们,只有当缓存中没有时,才会自磁盘中定位到数据据在的位置去取数据。

  汗,唠叨了半天只是让大家明白了有这么一个缓存的存在。这一段实在是很难写,因为文件系统是系统中很复杂的一块,涉及到的关联东西很多,写多了篇幅过长且会很杂乱,写少了又很不清楚,也不知道大家能否看明白,实在不明白就翻翻相关资料吧。
 
2、文件的隐藏、查找、保护与删除

  文件的隐藏与保护的方式很多,我们下面对当前主流的一些隐藏及保护的方法进行一下讲解,在说之前,先要明白文件夹是什么,对系统来说文件夹其实只是一个具有特殊属性的文件而已。所以,文件的保护与隐藏同样适用于文件夹,当然了,操作起来由于文件夹的特殊性,会有所不同。我们讲解的顺序是由简到难的,首先讲的就是利用系统本身的功能来隐藏文件或文件夹(为了讲解方便,后面所指的文件也包括文件夹,隐藏也包括保护)。

A、    利用系统本身的功能隐藏文件

  文件本身的属性中,就有“隐藏属性”,当然们勾选了文件的隐藏属性,并设置系统选项为“不显示隐藏文件”时,具有隐藏属性的文件,将不会再显示在文件夹中。

  在文件上面按鼠标右键,选择“属性”,在属性设置的最下面勾选“隐藏”,就可以设置此文件为隐藏文件。然后在文件夹上方的菜单里,依次选择“工具”à“文件夹选项”,在“高级设置”里,将选项改为“不显示隐藏的文件和文件夹”,点击“应用”或“确定”,就可以完成设置,然后你就会发现,你刚才设置为隐藏属性的文件,已经不见了。

  这个设置起来很简单,而简单也就意味着,这种隐藏几乎是没有用的,因为其它人也可以通过这种方法来选择“显示所有文件和文件夹”将你隐藏的文件重新显示出来。有没有办法加强这种方法的效果呢?答案是肯定的,有木马就用的这种方法的增强版,而效果看起来还不错,至少有很多人就拿它无可奈何。如何增强呢?
 
  我们需要在注册表中进行设置,设置的键为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL。选中此键后,再在右侧的设置窗口中,将“CheckedValue”这一项的值改为“0”,就完成了增强版的文件隐藏设置。会有什么效果呢?
 
  我们再打开0文件夹选项设置窗口,然后选中“显示所有文件与文件夹”,选“确定”,去文件夹中看看,刚才我们设置为隐藏的文件能看到不?是不是仍然看不到?这是咋回事?再次打开文件夹选项设置窗口,骇然发现,我们刚刚设置成的“显示所有文件与文件夹”又被自动的设置成了“不显示隐藏的文件和文件夹”。

  呵,记得当年好像是“橙色八月”这个木马最先用的这种方式来隐藏文件,很有创意是不?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多