木马的清除方法(较详细)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

木马的清除方法(较详细) 请求加精
======================================
近几年,木马活动越来越频繁。针对这些木马的查杀工具和方法也先后登场。反病毒、反黑客软件的反应速度远没有木马出现的速度快,所以,如果自己懂得手工查杀木马的方法,就可以应付自如了。

发现木马

由于木马是基于远程控制的程序,因此,中木马的机器会开有特定的端口。一般一台个人用的系统在开机后最多只有137、138、139三个端口。若上网,会有其他端口,这是本机与网上主机通讯时打开的,如IE一般会打开连续的端口:1025,1026,1027等。

在DOS命令行下用”netstat -na”命令可以看到本机所有打开的端口。如果发现除了以上所说的端口外,还有其他端口被占用(特别是木马常用端口被占用),那可要好好查查了,很有可能中了木马。

查找木马

要使你的系统能显示隐藏文件,因为一些木马文件属性是隐藏的。多数木马都会把自身复制到系统目录下并加入启动项(如果不复制到系统目录下则很容易被发现,不加入启动项在重启后木马就不执行了),启动项一般都是加在注册表中的,具体位置在:HKEY_LOCAL _MACHINE\Software \Microsoft\Windows\CurrentVersion下所有以“run”开头的键值;HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键值;HKEY_USERS\Default\Software\Microsoft\Windows\CurrentVersion下所有以“Run”开头的键值。

不过,也有一些木马不在这些地方加载,它们躲在下面这些地方:

1,在Win.ini中启动

在Win.ini的[windows]字段中有启动命令“load=”和“run=”,在一般情况下“=”后面是空白的,如果有程序,比方说是: run=c:\windows\file.exe或load=c:\windows\file.exe,要小心了,这个file.exe很可能就是木马。

2,在System.ini中启动

System.ini位于Windows的安装目录下,其[boot]字段的shell=Explorer.exe是木马喜欢的隐蔽加载之所,木马通常的做法是将该句变为这样:shell=Explorer. exe window.exe,注意这里的window.exe就是木马程序。

另外,在System.ini中的[386Enh]字段,要注意检查在此段内的“driver=路径\程序名”,这里也有可能被木马所利用。再有,在System.ini中的[mic]、[drivers]、[drivers32]这三个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所。

3,在Autoexec.bat和Config.sys中加载运行

这种加载方式一般都需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行,而且采用这种方式不是很隐蔽,所以这种方法并不多见,但也不能因此而掉以轻心。

4,在Winstart.bat中启动


Winstart.bat是一个特殊性丝毫不亚于Autoexec.bat的批处理文件,也是一个能自动被Windows加载运行的文件。它多数情况下为应用程序及Windows自动生成,在执行了并加载了多数驱动程序之后开始执行。由于Autoexec.bat的功能可以由Winstart.bat代替完成,因此木马完全可以像在Autoexec.bat中那样被加载运行,危险由此而来。

5,启动组

木马隐藏在启动组虽然不是十分隐蔽,但这里的确是自动加载运行的好场所,因此,还是有木马喜欢在这里驻留的。启动组对应的文件夹为:C: \Windows\Start Menu\Programs\StartUp,在注册表中的位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\Shell Folders Startup="C:\windows\start menu\programs\startup"。

6,*.INI

即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖同名文件,这样就可以达到启动木马的目的了。

7,修改文件关联

修改文件关联是木马常用手段(主要是国产木马,老外的木马大都没有这个功能),比方说,正常情况下txt文件的打开方式为Notepad.EXE文件,但一旦中了文件关联木马,则txt文件打开方式就会被修改为用木马程序打开,如著名的冰河就是这样干的。一旦你双击一个txt文件,原本应用Notepad打开该文件的,现在却变成启动木马程序了。请大家注意,不仅仅是txt文件,其他诸如HTM、EXE、ZIP、COM等都是木马的目标。对付这类木马,只能检查HKEY_CLASSES_ROOT\文件类型\shell\open\command主键,查看其键值是否正常。

8,捆绑文件

实现这种触发条件首先要控制端和服务端已通过木马建立连接,然后,控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样,即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。绑定到某一应用程序中,如绑定到系统文件,那么,每一次Windows启动均会启动木马。

9,手工清除木马

如果发现自己的硬盘总是莫明其妙地读盘,软驱灯经常自己亮起,网络连接及鼠标、屏幕出现异常现象,很可能就是因为有木马潜伏在你的机器里面,此时,就应该想办法清除它们了。

当发现可疑文件时,可以试试能不能删除它,因为木马多是以后台方式运行,通过按“Ctrl+Alt+Del”是找不到的,而后台运行的应是系统进程。如果在前台进程里找不到,而又删不了(提示正在被使用),那就应该注意了。

那么,如何清除木马而不误删其他有用文件呢?当你通过上述方法找到可疑程序时,你可以先看看该文件的属性。当看到可疑的

执行文件时间是最近甚至是当前,那八成就有问题了。

首先,查进程。检查进程可以借助第三方软件,如Windows优化大师,利用其“查看进程”功能把可疑进程杀掉,然后,再看看原来怀疑的端口还有没有开放(有时需重启),如果没有了,那说明杀对了,再把该程序删掉,这样,就手工删除了这个木马了。

如果该木马改变了TXT、EXE或ZIP等文件的关联,那应把注册表改过来,如果不会改,那就把注册表改回到以前的,就可以恢复文件关联,可通过在DOS下执行“scanreg/restore”命令来恢复注册表,不过这条命令只能恢复前5天的注册表(这是系统默认的)。此举可轻松恢复被木马改变的注册表键值,简单易用。

=================================
木马的清除方法及DLL后门木马的清除
================================
由于很多新手对安全问题了解不多,所以并不知道自己的计算机中了“木马”该怎么样清除。
虽然现在市面上有很多新版杀毒软件都可以自动清除“木马”,但它们并不能防范新出现的“木马”程序,因此最关键的还是要知道“木马”的工作原理,这样就会很容易发现“木马”。
相信你看了这篇文章之后,就会成为一名查杀“木马”的高手了。

“木马”程序会想尽一切办法隐藏自己,主要途径有:在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False、ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。 当然它也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,,“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。下面具体谈谈“木马”是怎样自动加载的。

在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”

了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的 Explorer 键值改为Explorer=“C:\WINDOWS\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。然后编辑win.ini文件,将[WINDOWS]下面,“run=“木马”程序”或“load=“木马”程序”更改为“run=”和“load=”;编辑system.ini文件,将[BOOT]下面的“shell=‘木马’文件”,更改为:“shell=explorer.exe”;在注册表中,用regedit对注册表进行编辑,先在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索并替换掉“木马”程序,有时候还需注意的是:有的“木马”程序并不是直接将“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下的“木马”键值删除就行了,因为有的“木马”如:BladeRunner“木马”,如果你删除它,“木马”会立即自动加上,你需要的是记下“木马”的名字与目录,然后退回到MS-DOS下,找到此“木马”文件并删除掉。重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了.
================================================
Svchost进程木马
================
在基于NT内核的Windows操作系统家族中,Svchost.exe是一个非常重要的进程。很多病毒、木马驻留系统与这个进程密切相关,因此深入了解该进程是非常有必要的。

Svchost进程概述
==============
微软对“Svchost进程”的定义是:Svchost.exe是从动态链接库(DLL)中运行的服务的通用主机进程名称。
Svchost.exe文件位于“%SystemRoot%\System32”文件夹中。
当系统启动时,Svchost将检查注册表中

的服务部分,以构建需要加载的服务列表。
Svchost的多个实例可以同时运行。
每个Svchost会话可以包含一组服务,以便根据Svchost的启动方式和位置的不同运行不同的服务,这样可以更好地进行控制且更加便于调试。
Svchost组是由注册表[HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT\CurrentVersion\Svchost]项来识别的。
在这个注册表项下的每个值都代表单独的Svchost组,并在我们查看活动进程时作为单独的实例显示。这里的键值均为REG_MULTI_SZ类型的值,并且包含该Svchost组里运行的服务名称。

实际上,Svchost只是作为服务的宿主,本身并不实现什么功能。
如果需要使用Svchost来启动某个DLL形式实现的服务,该DLL的载体Loader指向Svchost,在启动服务的时候由Svchost调用该服务的DLL来实现启动的目的。
使用Svchost启动某个服务的DLL文件是由注册表中的参数来决定的,在需要启动服务的注册表项下都有一个“Parameters”子项,其中的“ServiceDll”键值表明该服务由哪个DLL文件负责,并且这个DLL文件必须导出一个ServiceMain()函数,为处理服务任务提供支持。
提示:不同版本的Windows系统,存在不同数量的Svchost进程。一般来说,Windows 2000有两个Svchost进程,而Windows XP则有四个或四个以上的Svchost进程。
=================
Svchost进程实例讲解
=====================
要想查看在Svchost中运行服务的列表,可以在Windows XP命令提示符窗口中输入“Tasklist /svc”命令后,回车执行(如果使用的是Windows 2000,可用Support Tools提供的Tlist工具查看,命令为“Tlist -s”)。
Tasklist命令显示活动进程的列表,/svc命令开关指定显示每个进程中活动服务的列表。从图中可以看到,Svchost进程启动很多系统服务,如:RpcSs(Remote Procedure Call)、Dhcp(DHCP Client)、Netman(Network Connections)服务等等。

这里我们以RpcSs服务为例,来具体了解一下Svchost进程与服务的关系。
运行Regedit,打开注册表编辑器,依次展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs ]分支,在“Parameters”子项中有个名为“ServiceDll”的键,其值为%SystemRoot%\system32\rpcss.dll”。这表示系统启动RpcSs服务时,调用“%SystemRoot%\system32”目录下的Rpcss.dll动态链接库文件。
接下来,从控制面板中依次双击“管理工具→服务”,打开服务控制台。
在右侧窗格中双击“Remote Procedure Call(RPC)”服务项,打开其属性对话框,可以看到RpcSs服务的可执行文件的路径为“C:\Windows\system32\svchost -k rpcss”,这说明RpcSs服务是依靠Svchost启动的,“-k rpcss”表示此服务包含在Svchost的Rpcss服务组中。

Svchost进程木马分析
==================
从前面的介绍

我们已经知道,在注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current- Version\Svchost]分支中,存放着Svchost启动的组和组内的各项服务,很多木马和病毒正是利用这一点来实现自动加载的。
它们通常的方法有:
? 添加一个新的组,在组里添加服务名;
? 在现有的组里添加服务名或者利用现有组一个未安装的服务;
? 修改现有组里的服务,将它的ServiceDll指向自己的DLL文件。
例如PortLess BackDoor就是一款典型的利用Svchost进程加载的后门工具。那么对于像PortLess BackDoor这样的木马、病毒,该如何检测并清除呢?
以Windows XP为例,首先我们可以利用“进程间谍”这样的进程工具查看Svchost进程中的模块信息,并与之前的模块信息比较,可以发现Svchost进程中有一个可疑的DLL文件“SvchostDLL.dll”。
同时,在“管理工具→服务”列表中会看到一项新的服务“Intranet Services”(显示名称),此服务名称为:Iprip,由Svchost启动,“-k netsvcs”表示此服务包含在Netsvcs服务组中。

提示:在Windows 2000中,系统的Iprip服务侦听由使用Routing Information协议版本1(RIPv1)的路由器发送的路由更新信息,在服务列表中显示的名称为“RIP Listener”。
运行Regedit,打开注册表编辑器,展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP]分支,查看其“Parameters”子项,其中“ServiceDll”键值指向调用的DLL文件路径和全称,这正是后门的DLL文件。知道了这些,就可以动手清除了:在服务列表用右键单击“Intranet Services”服务,从菜单中选择“停止”,然后在上述注册表分支中删除“Iprip”项。
重新启动计算机,再按照“ServiceDll”键值提示的位置删除后门程序主文件即可。

友情提醒:对注册表进行修改前,应做好备份工作,以便出现错误时能够及时还原。
==================================================
DLL后门木马的清除
=================
后门!相信这个词语对您来说一定不会陌生,它的危害不然而欲,但随着人们的安全意识逐步增强,又加上杀毒软件的“大力支持”,使传统的后门无法在隐藏自己,任何稍微有点计算机知识的人,都知道“查端口”“看进程”,以便发现一些“蛛丝马迹”。所以,后门的编写者及时调整了思路,把目光放到了动态链接程序库上,也就是说,把后门做成DLL文件,然后由某一个EXE做为载体,或者使用Rundll32.exe来启动,这样就不会有进程,不开端口等特点,也就实现了进程、端口的隐藏。本文以“DLL的原理”“DLL的清除”“DLL的防范”为主题,并展开论述,旨在能让大家对DLL后门“快速上手”,不在恐惧DLL后门。好了,进入我们的主

题。

一,DLL的原理
1,动态链接程序库
动态链接程序库,全称:Dynamic Link Library,简称:DLL,作用在于为应用程序提供扩展功能。应用程序想要调用DLL文件,需要跟其进行“动态链接”;从编程的角度,应用程序需要知道DLL文件导出的API函数方可调用。由此可见,DLL文件本身并不可以运行,需要应用程序调用。正因为DLL文件运行时必须插入到应用程序的内存模块当中,这就说明了:DLL文件无法删除。这是由于Windows内部机制造成的:正在运行的程序不能关闭。所以,DLL后门由此而生!

2,DLL后门原理及特点
把一个实现了后门功能的代码写成一个DLL文件,然后插入到一个EXE文件当中,使其可以执行,这样就不需要占用进程,也就没有相对应的PID号,也就可以在任务管理器中隐藏。DLL文件本身和EXE文件相差不大,但必须使用程序(EXE)调用才能执行DLL文件。DLL文件的执行,需要EXE文件加载,但EXE想要加载DLL文件,需要知道一个DLL文件的入口函数(既DLL文件的导出函数),所以,根据DLL文件的编写标准:EXE必须执行DLL文件中的DLLMain()作为加载的条件(如同EXE的mian())。
做DLL后门基本分为两种:
1)把所有功能都在DLL文件中实现;
2)把DLL做成一个启动文件,在需要的时候启动一个普通的EXE后门。

常见的编写方法:
(1),只有一个DLL文件

这类后门很简单,只把自己做成一个DLL文件,在注册表Run键值或其他可以被系统自动加载的地方,使用Rundll32.exe来自动启动。
Rundll32.exe是什么?
顾名思意,“执行32位的DLL文件”。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。如果看到系统中有多个Rundll32.exe,不必惊慌,这证明用Rundll32.exe启动了多少个的DLL文件。
当然,这些Rundll32.exe执行的DLL文件是什么,我们都可以从系统自动加载的地方找到。

现在,我来介绍一下Rundll32.exe这个文件,意思上边已经说过,功能就是以命令行的方式调用动态链接程序库。系统中还有一个Rundll.exe文件,他的意思是“执行16位的DLL文件”,这里要注意一下。在来看看Rundll32.exe使用的函数原型:
Void CALLBACK FunctionName
(HWND hwnd,
HINSTANCE hinst,
LPTSTR lpCmdLine,
Int nCmdShow);

其命令行下的使用方法为:Rundll32.exe DLLname,Functionname [Arguments]
DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。

(2),替换系统中的DLL文件
这类后门就比上边的先进了一些,它把实现了后门功能的代码做成一个和系统匹配的DLL文件,并把原来

的DLL文件改名。
遇到应用程序请求原来的DLL文件时, DLL后门就启一个转发的作用,把“参数”传递给原来的DLL文件;如果遇到特殊的请求时(比如客户端),DLL后门就开始,启动并运行了。
对于这类后门,把所有操作都在DLL文件中实现最为安全,但需要的编程知识也非常多,也非常不容易编写。
所以,这类后门一般都是把DLL文件做成一个“启动”文件,在遇到特殊的情况下(比如客户端的请求),就启动一个普通的EXE后门;在客户端结束连接之后,把EXE后门停止,然后DLL文件进入“休息”状态,在下次客户端连接之前,都不会启动。
但随着微软的“数字签名”和“文件恢复”的功能出台,这种后门已经逐步衰落。

重要提示:
=========
在WINNT\system32目录下,有一个dllcache文件夹,里边存放着众多DLL文件(也包括一些重要的EXE文件),在DLL文件被非法修改之后,系统就从这里来恢复被修改的DLL文件。如果要修改某个DLL文件,首先应该把dllcache目录下的同名DLL文件删除或更名,否则系统会自动恢复。

(3),动态嵌入式
这才是DLL后门最常用的方法。其意义是将DLL文件嵌入到正在运行的系统进程当中。在Windows系统中,每个进程都有自己的私有内存空间,但还是有种种方法来进入其进程的私有内存空间,来实现动态嵌入式。由于系统的关键进程是不能终止的,所以这类后门非常隐蔽,查杀也非常困难。
常见的动态嵌入式有:“挂接API”“全局钩子(HOOK)”“远程线程”等。

远程线程技术指的是通过在一个进程中创建远程线程的方法来进入那个进程的内存地址空间。当EXE载体(或Rundll32.exe)在那个被插入的进程里创建了远程线程,并命令它执行某个DLL文件时,我们的DLL后门就挂上去执行了,这里不会产生新的进程,要想让DLL后门停止,只有让这个链接DLL后门的进程终止。但如果和某些系统的关键进程链接,那就不能终止了,如果你终止了系统进程,那Windows也随即被终止!!!

3,DLL后门的启动特性

启动DLL后门的载体EXE是不可缺少的,也是非常重要的,它被称为:Loader。如果没有Loader,那我们的DLL后门如何启动呢?因此,一个好的DLL后门会尽力保护自己的Loader不被查杀。Loader的方式有很多,可以是为我们的DLL后门而专门编写的一个EXE文件;也可以是系统自带的Rundll32.exe,即使停止了Rundll32.exe,DLL后门的主体还是存在的。
3721网络实名就是一个例子,虽然它并不是“真正”的后门。

二,DLL的清除
本节以三款比较有名的DLL后门例,分别为“SvchostDLL.dll”“BITS.dll”“QoServer.dll”。详细讲解其手工清除方法。希望大家在看过这三

款DLL后门的清除方法之后,能够举一反三,灵活运用,在不惧怕DLL后门。
其实,手工清除DLL后门还是比较简单的,无非就是在注册表中做文章。
具体怎么做,请看下文。

1,PortLess BackDoor
这是一款功能非常强大的DLL后门程序,除了可以获得Local System权限的Shell之外,还支持如“检测克隆帐户”“安装终端服务”等一系列功能(具体可以参见程序帮助),适用Windows2000/xp/2003等系统。程序使用svchost.exe来启动,平常不开端口,可以进行反向连接(最大的特点哦),对于有防火墙的主机来说,这个功能在好不过了。

在介绍清除方法之前,我们先来简单的介绍一下svchost.exe这个系统的关键服务:
Svchost只是做为服务的宿主,本身并不实现什么功能,如果需要使用Svchost来启动服务,则某个服务是以DLL形式实现的,该DLL的载体Loader指向svchost,所以,在启动服务的时候由svchost调用该服务的DLL来实现启动的目的。使用svchost启动某个服务的DLL文件是由注册表中的参数来决定的,在需要启动服务的下边都有一个Parameters子键,其中的ServiceDll表明该服务由哪个DLL文件负责,并且这个DLL文件必须导出一个ServiceMain()函数,为处理服务任务提供支持。

我们来看看注册表具体的容......
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs下的Parameters子键,其键值为%SystemRoot%\system32\rpcss.dll。这就说明:启动RpcSs服务时。Svchost调用WINNT\system32目录下的rpcss.dll。

再看......
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost,里边存放着Svchost启动的组和组内的各个服务,其中netsvcs组的服务最多。要使用Svchost启动某个服务,则该服务名就会出现在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost下。
这里有四种方法来实现:
1, 添加一个新的组,在组里添加服务名,
2, 在现有组里添加服务名,
3, 直接使用现有组里的一个服务名,但----是本机没有安装的服务,
4, 修改现有组里的现有服务,把它的ServiceDll指向自己的DLL后门,

我测试的PortLess BackDoor使用的第三种方法。
大家看完了上边的原理,一定可以想到我们清除PortLess BackDoor的方法了,
对,就是在注册表的Svchost键下做文章。好,我们现在开始。

后门的Loader把SvchostDLL.dll插入Svchost进程当中,所以,我们先打开Windows优化大师中的Windows进程管理2.5,查看Svchost进程中的模块信息,从中可以看到,SvchostDLL.dll已经插入到Svchost进程中了,在根据“直接使用现有组里的一个服务名,但-----是本机没有安装的服务”的提示,我们可以断定,在“管理工具”—“服务”中会有一项新的服务。此服务名称为:IPRIP,由Svch

ost启动,-k netsvcs表示此服务包含在netsvcs服务组中。

我们把该服务停掉,然后打开注册表编辑器(开始—运行--regedit),来到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP下,查看其Parameters子键。
Program键的键值SvcHostDLL.exe为后门的Loader;ServiceDll的键值C:\WINNT\system32\svchostdll.dll为调用的DLL文件,这正是后门的DLL文件。现在我们删除IPRIP子键(或者用SC来删除),然后在来到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost下,编辑netsvcs服务组,把49 00 70 00 72 00 69 00 70 00 00 00删除,这里对应的就是IPRIP的服务名,
然后退出,重启。重启之后删除WINNT\system32目录下的后门文件即可。

2,BITS.dll
这是榕哥的作品,也是DLL后门,和SvchostDLL.dll原理基本一样,
不过这里使用的是上边介绍的第四种方法,即“修改现有组里的现有服务,把它的ServiceDll指向自己的DLL后门”。换句话说,该后门修改现有的某一个服务,把其原有服务的DLL指向自己(也就是BITS.dll),这样就达到了自动加载的目的;其次,该后门没有自己的Loader,而是使用系统自带的Rundll32.exe来加载。我们还是用Windows 进程管理2.5来查看,我们可以看到bits.dll已经插入到Svchost进程当中。

具体的清除方法,由于该后门是修改现有服务,而我们并不知道具体是修改了哪个服务,所以,在注册表中搜索bits.dll,最后在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasAuto下搜索到了bits.dll,查看Parameters子键下的ServiceDll,其键值为C:\WINNT\system32\bits.dll。
原来,该后门把RasAuto服务原来的DLL文件替换为bits.dll了,这样来实现自动加载。
知道了原因就好办了,现在我们把ServiceDll的键值修改为RasAuto服务原有的DLL文件,即%SystemRoot%\System32\rasauto.dll,退出,重启。
之后删除WINNT\system32目录下的bits.dll即可。

3,NOIR--QUEEN
NOIR--QUEEN(守护者)是一个DLL后门&木马程序,服务端以DLL文件的形式插入到系统的Lsass.exe进程里,由于Lsass.exe是系统的关键进程,所以不能终止。在来介绍清除方法之前,
我先介绍一下Lsass.exe进程:
这是一个本地的安全授权服务,并且它会为使用Winlogon服务的授权用户生成一个进程,如果授权是成功的,Lsass就会产生用户的进入令牌,令牌使用启动初始 的Shell。其他的由用户初始化的进程会继承这个令牌。
从上边的介绍我们就可以看出Lsass对系统的重要性,那具体怎么清除呢?
请看下文。

后门在安装成功后,会在服务中添加一个名为QoSserver的服务,并把QoSserver.dll后门文件插入到Lsass进程当中,使其可以隐藏进程并自动启动。
现在我们打开注册表,来到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

\Services\QoSserver,直接删除QoSserver键,然后重启。
重启之后,我们在来到服务列表中,会看到QoSserver服务还在,但没有启动,类别是自动,我们把他修改为“已禁用”;然后往上看,会发现一个服务名为AppCPI的服务,其可执行程序指向QoSserver.exe(原因后边我会说到),
我们再次打开注册表,来到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AppCPI,删除AppCPI键,重启,再删除QoSserver,最后删除WINNT\system32目录下的后门文件。

本人和这个后门“搏斗”了3个多小时,重启N次。
原因在于即使删除了QoSserver服务,后门还是在运行,而且服务列表中的QoSserver服务又“死灰复燃”。
后来才知道原因:在我删除了QoSserver服务并重启之后,插入到Lsass进程当中的QoSserver.dll文件又恢复了QoSserver服务,并且生成了另外一个服务,
即AppCPI,所以我们必须在到注册表中删除AppCPI服务才算是把该后门清除。
由此可以看出,现在的后门的保护措施,真是一环扣环。

注意:在删除QoSserver服务并重启之后,恢复的QoSserver的启动类别要修改为“已禁用”,否则即便删除了AppCPI服务,QoSserver服务又运行了。

三,DLL的防范
看了上边的例子,我想大家对清除DLL后门的方法有了一定的了解,但在现实中,DLL后门并不会使用默认的文件名,所以你也就不能肯定是否中了DLL后门。
对于DLL后门,system32目录下是个好地方,大多数后门也是如此,所以这里要非常注意。

下面我来具体介绍一下怎么发现DLL后门,希望对大家有所帮助。

1,安装好系统和所有的应用程序之后,备份system32目录下的EXE和DLL文件:打开CMD,来到WINNT\system32目录下,
执行:dir *.exe>exe.txt & dir *.dll>dll.txt,
这样,就会把所有的EXE和DLL文件备份到exe.txt和dll.txt文件中;
日后,如发现异常,可以使用相同的命令再次备份EXE和DLL文件(这里我们假设是exe0.txt和dll0.txt),
并使用:fc exe.txt exe0.txt>exedll.txt & fc dll.txt dll0.txt>exedll.txt,其意思为使用FC命令比较两次的EXE文件和DLL文件,并将比较结果保存到exedll.txt文件中。
通过这种方法,我们就可以发现多出来的EXE和DLL文件,并通过文件大小,创建时间来判断是否是DLL后门。

2,使用内存/模块工具来查看进程调用的DLL文件,比如Windows优化大师中的Windows 进程管理 2.5。这样,可以发现进程到底调用了什么DLL文件,在结合上边用FC命令比较出来的结果,又能进一步来确定是否中了DLL后门。
如果没有优化大师,可以使用TaskList,这个小工具也可以显示进程调用的DLL文件,而且还有源代码,方便修改。

3,普通后门连接需要打开特定的端口,DLL后门也不例外,不管它怎

么隐藏,连接的时候都需要打开端口。我们可以用netstat –an来查看所有TCP/UDP端口的连接,以发现非法连接。大家平时要对自己打开的端口心中有数,并对netstat –an中的state属性有所了解。
当然,也可以使用Fport来显示端口对应的进程,这样,系统有什么不明的连接和端口,都可以尽收眼底。

4,定期检查系统自动加载的地方,比如:注册表,Winstart.bat,Autoexec.bat,win.ini,system.ini,wininit.ini,Autorun.inf,Config.sys等。
其次是对服务进行管理,对系统默认的服务要有所了解,在发现有问题的服务时,可以使用Windows 2000 Server Resource Kit中的SC来删除。

以上这些地方都可以用来加载DLL后门的Loader,如果我们把DLL后门Loader删除了,试问?DLL后门还怎么运行?!

通过使用上边的方法,我想大多数DLL后门都可以“现形”,如果我们平时多做一些备份,那对查找DLL后门会启到事半功倍的效果。

本文详细的介绍了DLL后门的一些知识。其实,从上文中不难看出,DLL后门并没有想象的这么可怕,清除起来也比较简单。
在文章中的开头我以说到:旨在能让大家对DLL后门“快速上手”,所以,希望这篇拙文能对大家有所帮助,文中如有错误,还请大家多多包涵,谢谢!

相关文档
最新文档