进入2008年以来,大部分主流病毒技术都进入了驱动级,病毒已经不再一味逃避杀毒软件追杀,而是开始与杀毒软件争抢系统驱动的控制权,在争抢系统驱动控制权后,转而控制杀毒软件,使杀毒软件功能失效。
几乎所有主流的编程技术都被病毒一一应用,包括ROOTKIT技术、内核级HOOK技术、进程注入、文件加密存放等等,可以说,目前一些病毒一旦感染,普通用户根本无能力彻底清除,只能求助专业技术人员。
驱动级病毒简介:驱动级木马病毒不再是传统的在启动项目添加键值,或者隐藏单独进程或后台服务来实现后门功能,因为现在很多检测工具课都检查出来,它将自己伪装成驱动,并注入到system内核(当然安全模式下也可以加载了),但没有病毒的特征,所以杀毒软件对他不敏感,但它可以下载某些木马或者流氓软件。运行以后,释放出两种文件 ,.sys和.dll ,sys文件注册成隐藏的后台服务,并隐藏。 d1l文件替换系统正常的dll文件。堂而皇之的在你眼皮底下运行,当你要访问正常的服务,病毒就通过调用原有的文件来实现你要的服务,而自己则在你不经意的时候实现后门功能。.sys对其所有和注册表进行了保护.就算sys文件被干掉,只要这个系统服务没有被停止,他照样会復活。后门的功能照樣会实现。他就是借用这个方法逃避过一些防火墙或检测工具的检查。
驱动级病毒的表现特征:
1.破坏安全模式
2.结束常见杀毒软件以及反病毒工具进程
3.监控窗口,禁止浏览搜索和病毒有关的网页
4.关闭自动更新以及Windows安全中心
5.屏蔽显示隐藏文件
6.连接指定网站,自动下载大量木马病毒
7.IFEO映像劫持,无法打开常见的安全杀毒软件
8.GHOST文件引导破坏
9.各盘符均有引导启动关联文件,即便重装系统盘也照样发作
10.隐身发作,病毒多无木马进程、启动项
11.在windows/system32/drivers/文件夹中释放*.sys文件,增添系统驱动和服务
12.在安全模式中病毒仍然可以正常启动,并干扰安全类杀毒软件的运行
13.病毒杀掉后重启病毒仍旧存在
14.病毒进程会才用双进程守护、进程注入
驱动级病毒的运行模式:
1、先还原系统所有SSDTHOOK。作用与功能:用来还原系统“SSDTHOOK”,从而达到使部分安全软件的保护功能失效的目的。同时具有躲避安全软件监控的功能和躲避被安全软件查杀的功能。
2、再进行添加安装自己的SSDTHOOK。作用与功能:启动病毒。
驱动级病毒的清理思路:
1、寻找可疑驱动,找到其对应的SYS文件;
2、用DOS、WINPE、安全模式,卸载病毒驱动或找到该文件并删除;
3、启动Windows,进注册表,找到所有该SYS相关项,删除。
病毒驱动的查找方法:病毒驱动是手动查杀的关键和前提,不知道病毒驱动名称和文件是很难进行查杀,病毒驱动的确定需要一定的经验,常见确定病毒驱动的方法有
1.利用杀毒软件提供,杀毒软件虽然无法清除驱动型病毒,但经常能查到*.sys的病毒驱动文件,清除后病毒文件虽然会依旧存在,但提供了病毒文件的名称和路径。
2.在IceSword中,我们在“查看”标签下点击“ssdt”按钮,然后在右侧标有红色的就是非系统驱动了,这里一定要注意,不一定所有红色的就是流氓软件,像Klif.sys就是杀毒软件卡巴斯基的驱动。由于是在系统底层,这些驱动是没办法删除的,更有甚者在安全模式下也无法删除。若你强行在DOS下删除,可能会引起系统故障。
3.使用SREng清除时,SREng会用红色标志非微软官方驱动,大家需要根据自己的计算机知识在剩下的驱动中排除正常软件的驱动。
4.上网查询和中毒计算机症状相同的病毒解决方法,查询所中病毒的名称,病毒运行模式和手动查杀方法。
5.在装有虚拟系统和程序监控软件的计算机运行病毒样本,收集病毒各类信息。
病毒驱动的一般清除办法
方法一:使用WINPE启动电脑(适合遭到严重破坏的电脑)
如果你的系统分区是FAT,进去之后直接删除c:windowssystem32drivers病毒.sys即可。如果你的系 统分区是NTFS,先将c:windowssystem32driverspeter.sys的权限修改下(病毒一般都会将自己的权 限设置为不可删除,包括admin)具体办法:
1打开的我电脑-工具-文件夹选项-“使用简单文件共享”勾去掉
2,找到这个sys的具体路径,右击选安全--高级
3 右点peter.sys-属性-安全-高级-“从父项继承那些……”勾去掉,弹出对话框中点“复制”-确定再将自己的用户权限设置为“完全控制-允许”然后可以直接手工删除了
方法二:在计算机中直接删除(适合清除不太霸道的病毒)
1:右击我的电脑,选属性,点击硬件标签,点开查看项目,选择显示隐藏的设备
2:在“设备管理器”中双击对应的“非即插即用驱动程序”中的病毒程序,在“属性”-“驱动程序”中停止该设备,然后在注册表中删除对应的键值项,删除后回到“设备管理器”中卸载对应的设备重新启 动即可。
3:重启电脑,然后就可以手工删除该驱动了
方法三:使用SREng清除
进到安全模式下(怎么进入遭破坏的安全模式,稍后详细介绍),
运行SREng-在"启动项目->注册表->删除病毒启动项目运行SREng-在"启动项目->服务->"Win32服务应用程序"选中"隐藏已认证的微软服务"然后将下面名称的服务删除(选中有问题的服务后,点“删除服务”,点“设置”按钮即可。 注意弹出的窗口中要点 “NO否”才是确认删除服务)(不能删除的就禁用:启动类型改为disabled,点中修改启动类型,点设置)
运行SREng-在"启动项目->服务->驱动程序"选中"隐藏已认证的微软服务"然后将下面名称的服务删除( 选中有问题的服务后,点“删除服务”,点“设置”按钮即可。 注意弹出的窗口中要点 “NO否”才是确认删除服务)(不能删除的就禁用:启动类型改为disabled,点中修改启动类型,点设置)
搜索注册表中的病毒名称关键字,将相关选项删除(记得删除前要备份)
删除已知的其他病毒文件
清空下临时文件夹C:DOCUME~1WENQIH~1LOCALS~1Temp
修复病毒的其他技巧:
1.如何进入遭到破坏的安全模式?
使用PE引导进入系统,在PE下设定ERD目标计算机的系统路径,在PE系统的程序中打开编辑目标计算机的注册表选项,导入事先准备好的安全模式修复REG文件(该文件的制作可参见我的博客中有关安全模式修复的文章,http://blog.sina.com.cn/Celeron566),重启压F8,直接进入安全模式,如果不慎进入中毒系统,须重复以上步骤。
2.在中毒系统中如何打开SREng和IceSword等软件?
改个名字后即可使用。
3.病毒删除后如何修复不能上网,无法打开杀毒软件,无法进入安全模式,开机报错等病毒遗留症?
运行SREng-在"系统修复->高级修复->拉到高强度修复级别,选择修复。
4.如何在安全模式下显示隐藏文件?
向注册表中导入显示隐藏文件的REG文件,(该文件的制作可参见我的博客中有关显示文件修复的文章,http://blog.sina.com.cn/Celeron566)
PS.补充
1.清除此类驱动级木马,关键是对于隐藏进程的查看于结束和注册表服务项的删除,对于被木马篡改的系统服务,在不确定的状况下,建议搜索相关确定信息或找相同系统机器查看再做恢复。
2.在安全模式下打开硬盘分区,决不能双击,应该右键单击选择资源管理器,删除隐藏文件的病毒和自动运行文件。
3.遇上凶狠霸道的木马病毒的固定杀毒模式,在其他电脑上网查询所中病毒的详细资料和手动查杀方法,进入PE,导入修复安全模式和显示隐藏文件的注册表文件,删除已知的病毒文件和病毒驱动软件,修改硬盘上SREng、冰刃和其他安全软件的名字,重启进入安全模式,利用SREng和冰刃清除系统中的病毒驱动、服务、启动项,清除注册表,重装杀毒软件彻底杀毒,利用SREng修复系统关联,重启后进入系统,再次使用SREng和冰刃清除病毒残留,用杀毒软件做全盘杀毒,修复系统,安装系统补丁,OK。
Rootlit技术简介:
如自然界的规则一样,最流行的病毒,对生物的伤害却是最小的,例如一般的感冒,但是最不流行的病毒,却是最夺命的。Rootkit木马就是信息世界里的AIDS,一旦感染,就难以用一般手段消灭了,因为它和自然界里的同类做的事情一样,破坏了系统自身检测的完整性——抛开术语的描述也许难以理解,但是可以配合AIDS的图片想象一下,由于AIDS破坏了人体免疫系统,导致白细胞对它无能为力,只能眼睁睁看着人体机能被慢慢破坏。计算机系统没有免疫功能,但是它提供了对自身环境的相关检测功能——枚举进程、文件列表、级别权限保护等,大部分杀毒软件和进程工具都依赖于系统自带的检测功能才得以运作,而Rootkit木马要破坏的,正是这些功能。
要了解Rootkit木马的原理,就必须从系统原理说起,我们知道,操作系统是由内核(Kernel)和外壳(Shell)两部分组成的,内核负责一切实际的工作,包括CPU任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。由于内核和外壳负责的任务不同,它们的处理环境也不同,因此处理器提供了多个不同的处理环境,把它们称为运行级别(Ring),Ring让程序指令能访问的计算机资源依次逐级递减,目的在于保护计算机遭受意外损害——内核运行于Ring 0级别,拥有最完全最底层的管理功能,而到了外壳部分,它只能拥有Ring 3级别,这个级别能操作的功能极少,几乎所有指令都需要传递给内核来决定能否执行,一旦发现有可能对系统造成破坏的指令传递(例如超越指定范围的内存读写),内核便返回一个“非法越权”标志,发送这个指令的程序就有可能被终止运行,这就是大部分常见的“非法操作”的由来,这样做的目的是为了保护计算机免遭破坏,如果外壳和内核的运行级别一样,用户一个不经意的点击都有可能破坏整个系统。
由于Ring的存在,除了由系统内核加载的程序以外,由外壳调用执行的一般程序都只能运行在Ring 3级别,也就是说,它们的操作指令全部依赖于内核授权的功能,一般的进程查看工具和杀毒软件也不例外,由于这层机制的存在,我们能看到的进程其实是内核“看到”并通过相关接口指令(还记得API吗?)反馈到应用程序的,这样就不可避免的存在一条数据通道,虽然在一般情况下它是难以被篡改的,但是不能避免意外的发生,Rootkit正是“制造”这种意外的程序。简单的说,Rootkit实质是一种“越权执行”的应用程序,它设法让自己达到和内核一样的运行级别,甚至进入内核空间,这样它就拥有了和内核一样的访问权限,因而可以对内核指令进行修改,最常见的是修改内核枚举进程的API,让它们返回的数据始终“遗漏”Rootkit自身进程的信息,一般的进程工具自然就“看”不到Rootkit了。更高级的Rootkit还篡改更多API,这样,用户就看不到进程(进程API被拦截),看不到文件(文件读写API被拦截),看不到被打开的端口(网络组件Sock API被拦截),更拦截不到相关的网络数据包(网络组件NDISAPI被拦截)了,幸好网络设备的数据指示不受内核控制,否则恐怕Rootkit要让它也不会亮了才好!我们使用的系统是在内核功能支持下运作的,如果内核变得不可信任了,依赖它运行的程序还能信任吗?但即使是Rootkit这一类恐怖的寄生虫,它们也并非所向无敌的,要知道,既然Rootkit是利用内核和Ring0配合的欺骗,那么我们同样也能使用可以“越权”的检查程序,绕过API提供的数据,直接从内核领域里读取进程列表,因为所有进程在这里都不可能把自己隐藏,除非它已经不想运行了。也就是说,内核始终拥有最真实的进程列表和主宰权,只要能读取这个原始的进程列表,再和进程API枚举的进程列表对比,便能发现Rootkit进程,由于这类工具也“越权”了,因而对Rootkit进行查杀也就不再是难事,而Rootkit进程一旦被清除,它隐藏自身的措施也就不复存在,内核就能把它“供”出来了,用户会突然发现那个一直“找不到”的Rootkit程序文件已经老实的呆在文件管理器的视图里了。这类工具现在已经很多,例如IceSword、Patchfinder、gdb等。
驱动级防毒相关介绍:
电脑的所有操作指令是由其大脑CPU发出的,一般CPU指令分为四个优先层级,ring0、ring1、ring2、ring3,应用程序运行在ring3,涉及到操作系统任务调度、内存管理、中断和I/O等等的特权指令只有在Ring0才能执行。对于病毒的活动来说,由于反病毒软件必须保证其在内存阶段即被截获并作出处理,所以普通的用户级程序是无法监控的,只有工作于ring0层(也即系统核心层)的程序才能监控系统活动。使用了“驱动级编程技术”的杀毒软件,将查病毒模块直接移植到ring0系统核心层直接监控病毒,让工作于系统核心态的驱动程序去拦截所有的文件访问。
简单地说,病毒在感染一个文件后,常常会对同类文件进行重复感染,如“新欢乐时光(VBS/KJ)”病毒,会感染所有。exe可执行文件,当病毒在被触发时,病毒会发出感染另一个文件的请求,此时通过“驱动级编程技术”编写的实时监控程序会第一时间根据用户的决定选择不同的处理方案,如清除病毒,禁止访问该文件,删除该文件或简单地忽略。这样就可以有效地阻止病毒的进一步在本机上的传播。有的杀毒软件通过工作在RING0层(系统核心层)的程序监控到病毒后,再调用RING3层(用户层)的查杀病毒模块对病毒进行处理,有的杀毒软件直接在RING0层对病毒进行处理,真正与操作系统层工作在同一层级,解决了RING0与RING3层之间双向通信消耗问题。如果RING0层的程序监控到病毒再调用RING3层的查杀病毒模块的话(技术上通过异步过程调用APC来实现),可能面临着一些十分可怕的事情,用户可能会发现它会在一段时间内工作正常,但时间一长,系统就被挂起了。(我用金山杀的时候就出现過,刚幵始好好的,查了一会系統就挂鸟,占用100%的CPU,安全模式下也一样,好像最后是用WINDOWS清理助手在安全模式下杀掉的.....忘鸟,记不清鸟)就连驱动编程大师WalterOney在其著作《System Programming For Windows95》的配套源码的说明中也声称,其APC例程在某些时候工作会不正常。而微软的工程师声称文件操作请求是不能被中断掉的,你不能在驱动中阻断文件操作并依赖于ring3的反馈来做出响应。这些问题的长期存在会使电脑存在打开杀毒软件病毒监控后病毒仍然发作的可能性。