反病毒教程第10课:详解关键启动位置

互联网 | 编辑: 黄蔚 2009-08-03 00:00:00转载 返回原文

本次课程打算把所有启动位置讲完,以及一些特殊的启动方式,算是比较高级了,学完本课,与反病毒相关的基础也就差不多了,接下来的课程重在实践了,手工杀毒,日志分析等.

组件关联启动

点击此处访问 反病毒教程第1课

(注:本文中的“\”,如有需要体验或者使用,请替换成半角斜线)

今天的课程打算把所有启动位置讲完,以及一些特殊的启动方式,算是比较高级了,学完本课,与反病毒相关的基础也就差不多了,接下来的课程重在实践了,手工杀毒,日志分析等.

一,组件关联启动

上次讲到了勾子挂接启动ShellExecuteHooks,这次来讲讲组件关联启动,注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad

名称任意,值为一CLSID,该CLSID是指向HKEY_CLASSES_ROOT\CLSID下面同名的对象(组件类)的,在 InProcServer32的右边可以看到关联的文件名(通常是DLL文件).系统启动时explorer.exe将自动加载这里的目标组件.这就是某些病毒将自己注入到explorer.exe的办法,多见于一些流氓软件.用了很多清理软件,但还是会弹出广告等,这时就要检查这个位置了,清理方法 ShellExecuteHooks是一样的,最后不要忘了删除关联的文件.

二,结束Winlogon.exe进程

以前我们在讲进程时曾经讲到过Winlogon.exe进程,它管理windows的登陆注销等,如果这个进程被结束,系统将不能正常软关机.也许你会说这个进程根本无法结束,或一结束就蓝屏死机等.用windows任务管理器当然是不行的,我用了冰刃(IceSword)来结束它,不要直接试图去结束这个进程,不然你会死得很惨,结束这个进程是需要技巧的,在此感谢菜新同学(cxwr,雷特反病毒小组成员之一)的指点,方法如下:

首先打开冰刃,点左边的进程.我用的冰刃是花花(FlowerCode)修改版的.(见附件)

冰刃的功能是十分强大的,看一下程序名称这一列,直接显示出了进程所对应的文件路径,其中两个进程的程序名称是特殊的,显示为NT OS Kernel,意为NT操作系统内核.

正式开始前请退出你的安全防护软件,以免引起蓝屏.

先结束所有非系统进程,由于冰刃不显示进程所属用户名,大家可以打开windows任务管理器对照,你可以用任务管理器来结束进程,也可以用冰刃来结束进程,用冰刃结束进程的方法为选要要结束的进程,右键选择结束进程即可.接着结束svchost.exe,services.exe等进程,当进程只剩下图中所示的几个时,就要注意了,一不小心就会死得很惨的.

现在除了任务管理器和冰刃外,还有五个进程,其中最后两个是系统内核进程,是不能被结束的,现在还在剩三个了,按顺序,必须先结束smss.exe,现在可以放心地结束Winlogon.exe了,好了,我们的目的也达到了.(如果你把任务管理器和冰刃关的话,系统中就只剩下三个进程了.).不过此时系统也做不了什么了,不能启动新的进程.(在结束Winlogon.exe前你仍然可以创建新进程,并恢复至正常状态,这需要你对服务非常地了解).如果此时你再结束csrss.exe的话,结果会蓝屏,这个进程是管理进程调度,物理内存与虚拟内存的使用调节等.现在只能按电源键关机了.

正由于 Winlogon.exe这个进程的特殊性及不容易被结束等特性,使得病毒DLL千方百计地注入这个进程,使得一般用户根本无法处理.在冰刃中选择这个进程,右键,模块信息,这里列出了所有加载的模块文件名,如果有病毒模块,可以选中它后点右边的卸徐,如果无法卸徐,可以点强制解除,但可能会引起 winlogon.exe进程崩溃而导致蓝屏.

Winlogon事件通知启动

三,Winlogon事件通知启动

当系统开始启动时,这个进程是比较早运行的,如果有事件通知Winlogon.exe,那么Winlogon.exe就是按接到的通知来处理事件,比如启动一个DLL等.即使在安全模式下,该DLL也会被加载,它的启动比服务更早.如果这个DLL是病毒文件的话...

下面来说说winlogon是如何接收事件通知的.

注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

它下面的每个项都包含一个处理winlogon在切换状态时发出事件的DLL,winlogon.exe会在启动时加载已经注册的DLL,并且会在系统状态切换时调用注册DLL的事件处理函数.

这里说的状态切换包括登陆,注销,关机,锁定桌面,启动屏保等.

项名是任意的,我们来分析它的键,及值.

DLLName设置发出事件的DLL文件名.

Asynchronous设置是否异步处理winlogon事件,默认值为0,表示同步处理.若设置为1,则为异步处理,此时winlogon.exe将启动一个新线程来处理相应事件.

Impersonate是否以登陆用户的权限来处理事件,默认为0.

Lock锁定桌面时发生的事.它的值为上面DLL文件中的导出函数,下面的也是同样道理.

Logoff注销事件

Logon登录事件

Shutdown关机事件

StartScreenSaver启动屏保事件

StartShell:启动explorer.exe时发生的事件

Startup系统开机事件。

StopScreenSaver停止屏保事件

Unlock解除桌面锁定事件

这个地方的加载希望能引起大家的重视.当某一事件发生时,也许病毒也偷偷地在运行了.一般需要关注的是系统开机事件及登陆事件,说到底,我们要关注的不是事件而是DLLName键的值,从而知道病毒文件路径.

四,任务调度启动

开启Task Scheduler服务后,该种启动方式即生效.它是随explorer.exe启动的共享计划任务.注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler

正常情况下,该项下只有两个键,键名为一CLSID,值为描述性文字,可以为空.正常的两个键为:

{438755C2-A8BA-11D1-B96B-00A0C90312E1},Browseui 预加载程序,对应的DLL为%systemroot%\system32\browseui.dll

{8C7461EF-2B13-11d2-BE35-3078302C2030},组件类别缓存程序,对应文件也是%systemroot%\system32\browseui.dll

五,组件安装监控启动

注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components

微软使用该处键值来确认安装的windows组件,在这里,我们可以看到所有安装组件的列表,同样是以CLSID形式出现的.最重要的一个键是 StubPath,它的值是一条命令,如果IsInstalled的值为0,则每次系统启动时都会执行这个命令,如果这个命令是一个木马文件的话...后果可想而知了,它的加载也是早于其他程序的,现在利用这种启动方式的木马或病毒还比较少,但以后应该会多起来,可能会新建一个项,可能是修改已有项的 StubPath值,也有可能是直接替换系统中的文件.

本人E文菜得很,如果上面的你无法理解,请看原文:

Monitoring of the Active Setup Registry Key

What is the Active Setup?

Why monitor this key?

Microsoft uses this key to setup installed Windows components.

You can see a list of the installed components under the key

HKLM\Software\Microsoft\Active Setup\Installed Components

You should launch RegEdit to view it.

As you can see, the registry key of each component has a list of values.

These values are used by Windows to identify a component.

One of these values, StubPath, is very important.

This value includes a command that Windows executes every time it starts if a value called "IsInstalled," is not set to 1 (binary value).

Active Setup is used by new Trojans to install them to the computer.

This is very dangerous because then Windows launches the Trojan before other programs ARE loaded.

屏幕保护启动

六,屏幕保护启动

注册表位置:HKEY_CURRENT_USER\Control Panel\Desktop

键 SCRNSAVE.EXE,值为一SCR文件,如C:\WINDOWS\system32\logon.scr,大家可以在%systemroot% \system32目录下搜索所有扩展名为scr的文件.实际上它和exe文件一样,是一个可执行文件,文件关联为"%1" /S,双击即可立即启动屏幕保护程序.

该项目下一些键的作用:

SCRNSAVE.EXE指定屏幕保护程序的文件路径,默认值为C:\WINDOWS\system32\logon.scr,如果此处的值为一exe文件,应引起高度重视.

ScreenSaveActive如果该值为0,表示禁用屏幕保护.

ScreenSaverIsSecure如果该值为1,表示从屏保状态恢复过来时需要输入密码.

ScreenSaveTimeOut空闲多少时间后启动屏幕保护程序,单位为秒,可设置的范围为0~86400,如果设为0则表示不启动.

七,浏览器加载启动

这个有点特别,只有当启动浏览器时,才会被加载.

这些加载项一般是来自网络,还有一部分是来自捆绑软件,当然也有安全软件的插件.有的未验证的加载项其实也很好用,但是有的则不是了,可能会造成系统不稳定,或者是引起IE遇到问题需要关闭等.

如何来管理这些加载项:

在浏览器上点工具,Internet选项,程序,管理加载项.在这里可以启用或禁用某个加载项.要想完全删除还得靠注册表或第三方工具.

(注意:只有WIN XP SP2以上操作系统才有这个功能)

广义上的浏览器加载项分为好几种,包括ContextMenu(右键快捷菜单),BHO(浏览器辅助对象),Entension,ActiveX,Band,Button(按钮),ToolBar(工具条)等,下面一个个来详细讲下.

1,ContextMenu(右键快捷菜单),注册表路径:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

在这里的项会出现在浏览器右键菜单中,可以将不需要的删除,通常指向本地的一个网页.

2,BHO(浏览器辅助对象,Browser Helper Objects),注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\Explorer\Browser Helper Objects,这里又是一些CLSID.如果被病毒利用,往往很难清理干净.

比如我这里的第一个是 {00000000-12C9-4305-82F9-43058F20E8D2},利用查找功能,找到这个CLSID的位置 HKEY_CLASSES_ROOT\CLSID\{00000000-12C9-4305-82F9-43058F20E8D2},选中 InprocServer32,右边就可以看到真正加载的文件了,我这里的值为X:\Program Files\Tencent\QQDownload\QQIEHelper02.dll

3,ActiveX,当我们浏览到特定的网页时,浏览器自动下载插件并提示用户安装.ActiveX安装必须经过用户的同意及确认(会下载到%systemroot%\Downloaded Program Files目录,并注册).但也可以通过其他方式安装.

注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility

和BHO类似,也是一些CLSID,其下有一名为Compatibility的键,当它的值为400时表示禁用该ActiveX.

浏览器用久了,插件安装卸载的次数多了,这里很容易产生一些无效的CLSID,无法在HKEY_CLASSES_ROOT\CLSID下找对应的,这些是可以删除的.

4,ToolBar(工具条),注册表路径,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Toolbar,还是CLSID,不多讲...

hosts文件

八,hosts文件

大家都用过ping命令吧,没有的话现在看也来得及.

该命令用于检查网络是否能够连通,分析判定网络故障,该命令只有在安装了TCP/IP协议后才可以使用.Ping命令的主要作用是通过发送数据包并接收应答信息来检测两台计算机之间的网络是否连通.当网络出现故障的时候,可以用这个命令来预测故障和确定故障地点.命令成功只是说明当前主机与目的主机之间存在一条连通的路径.如果不成功,则考虑:网线是否连通,网卡设置是否正确,IP地址是否可用等.

打开CMD窗口(开始,运行,输入CMD),输入ping 127.0.0.1

回车后如图

图中红色标记的三个位置分别为发送的数据包数,接收到的数据包数,丢失的数据包数,127.0.0.1代表本机IP地址,最后一行表示数据包返回的速度,分别为最快,最慢,平均.

可能有的人不知道什么是IP地址,这里简单的解释一下,它是每个连接在Internet上的主机分配的一个32位地址(IPv6使用128位地址),4个字节,例如1110110010001110010100011011000000001,这就是本机IP地址,但是很难记,为了方便使用,每8位(一个字节)用点号分隔,并转化为大家都习惯的十进制,于是上面的IP地址就是127.0.0.1.

每台电脑可以有多个IP地址,多台电脑也可能只有一个IP地址(比如同一局域网内的外网IP地址都是相同的)

大家在浏览器地址栏中输入以下地址:http://220.181.37.55(可以不输入前面的http://,只要输入220.181.37.55就可以了,后面的也是一样的),打开的应该是百度吧,但是这种IP地址还是很难让人记住,于是又出现了域名,我们访问百度只要输入http://www.baidu.com就行了,这下好记多了.将某个域名关联到某个IP地址称为域名解析(由专门的DNS服务器负责解析).要想知道某个域名的IP地址,可以使用ping命令,如ping www.baidu.com

hosts文件的作用也是将IP地址与域名建立一种映射关系,我们在访问一个域名时,windows会首先检hosts文件中是否有映射关系,如果有,就直接使用这里的映射关系,如果没有,则向DNS服务器提出请求.也就是说Hosts的请求级别比DNS高.

hosts文件位于%systemroot%\system32\drivers\etc\hosts,请大家用记事本打开这个文件.

前几行文字都是以#号开头的,我们不必管它,这是注释符,系统忽略这一行中#号后面的内容.所以真正有用的第一行的内容应该是:

127.0.0.1      localhost

它的意思是将主机localhost与127.0.0.1建立映射关系.如果你的系统有web服务,那么就可以通过http://localhost这个地址来访问.如果没有这个服务,当然是打不开网页了.病毒常常会利用这个文件来访问一些恶意地址从而下载病毒或者屏蔽掉安全软件,反病毒网站.IP地址与域名之间可以用空格或TAB符来分隔.

我们来做个实验,将百度映射到google.在后面增加一行并保存:

203.208.35.101 www.baidu.com

关闭浏览器,重新打开,输入www.baidu.com,出现的不再是百度的页面,而是google的页面(如果出现乱码请刷新一下).(关闭浏览器重新打开的目的是清除hosts文件的缓存).如果被映射到一个病毒网站的话,嘿嘿.

如果要屏蔽掉百度,只要将上面一行改为127.0.0.1 www.baidu.com

这个功能主要是用于屏蔽恶意网址的.

还嫌百度域名过长输入麻烦?

还有招呢,通过输入bd(百度的拼音缩写)来访问百度,在hosts文件名增加一行:

220.181.37.55 bd

点击此处访问 反病毒教程第1课

(注:本文中的“\”,如有需要体验或者使用,请替换成半角斜线)

返回原文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑