针对插入式木马的清除方法

目前网络上最猖獗的病毒估计非木马程序莫数了 , 现在的木马攻击性越来越强 , 在进程隐藏方面 , 很少采用独立的EXE可执行文件形式 , 而是改为内核嵌入方式、远程线程插入技术、挂接PSAPI等 , 这些木马也是目前最难对付的 。现在教你查找和清除线程插入式木马 。
一、通过自动运行机制查木马
一说到查找木马 , 许多人马上就会想到通过木马的启动项来寻找“蛛丝马迹” , 具体的地方一般有以下几处:
(1)注册表启动项
在“开始/运行”中输入“regedit.exe”打开注册表编辑器 , 依次展开[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion]和[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion]查看下面所有以Run开头的项 , 其下是否有新增的和可疑的键值 , 也可以通过键值所指向的文件路径来判断 , 是新安装的软件还是木马程序 。另外[HKEY_LOCAL_MACHINESoftwareclassesexefileshellopencommand]键值也可能用来加载木马 , 比如把键值修改为“X:windowssystemABC.exe %1%” 。
(2)系统服务
有些木马是通过添加服务项来实现自启动的 , 大家可以打开注册表编辑器 , 在[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunservices]下查找可疑键值 , 并在[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices]下查看的可疑主键 。然后禁用或删除木马添加的服务项:在“运行”中输入“Services.msc”打开服务设置窗口 , 里面显示了系统中所有的服务项及其状态、启动类型和登录性质等信息 。找到木马所启动的服务 , 双击打开它 , 把启动类型改为“已禁用” , 确定后退出 。也可以通过注册表进行修改 , 依次展开“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices服务显示名称”键 , 在右边窗格中找到二进制值“Start” , 修改它的数值数 , “2”表示自动 , “3”表示手动 , 而“4”表示已禁用 。当然最好直接删除整个主键 , 平时可以通过注册表导出功能 , 备份这些键值以便随时对照 。
(3)开始菜单启动组
现在的木马大多不再通过启动菜单进行随机启动 , 但是也不可掉以轻心 。如果发现在“开始/程序/启动”中有新增的项 , 可以右击它选择“查找目标”到文件的目录下查看一下 , 如果文件路径为系统目录就要多加小心了 。也可以在注册表中直接查看 , 它的位置为[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders]键名为Startup 。
【针对插入式木马的清除方法】(4)系统INI文件Win.ini和System.ini
系统INI文件Win.ini和System.ini里也是木马喜欢隐蔽的场所 。选择“开始/运行” , 输入“msconfig”调出系统配置实用程序 , 检查Win.ini的[Windows]小节下的load和run字段后面有没有什么可疑程序 , 一般情况下“=”后面是空白的;还有在System.ini的[boot]小节中的Shell=Explorer.exe后面也要进行检查 。
(5)批处理文件
如果你使用的是Win9X系统 , C盘根目录下“AUTOEXEC.BAT”和WINDOWS目录下的“WinStart.bat”两个批处理文件也要看一下 , 里面的命令一般由安装的软件自动生成 , 在系统默认会将它们自动加载 。在批处理文件语句前加上“echo off” , 启动时就只显示命令的执行结果 , 而不显示命令的本身;如果再在前面加一个“@”字符就不会出现任何提示 , 以前的很多木马都通过此方法运行 。
二、通过文件对比查木马
新出现的木马主程序成功加载后 , 会将自身作为线程插入到系统进程中 , 然后删除系统目录中的病毒文件和病毒在注册表中的启动项 , 以使反病毒软件和用户难以查觉 , 然后它会监视用户是否在进行关机和重启等操作 , 如果有 , 它就在系统关闭之前重新创建病毒文件和注册表启动项 。下面的几招可以让它现出原形(下面均以Win XP系统为例):
(1)对照备份的常用进程
大家平时可以先备份一份进程列表 , 以便随时进行对比查找可疑进程 。方法如下:开机后在进行其他操作之前即开始备份 , 这样可以防止其他程序加载进程 。在运行中输入“cmd” , 然后输入“tasklist /svc >X:processlist.txt”(提示:不包括引号 , 参数前要留空格 , 后面为文件保存路径)回车 。这个命令可以显示应用程序和本地或远程系统上运行的相关任务/进程的列表 。输入“tasklist /?”可以显示该命令的其它参数 。
(2)对照备份的系统DLL文件列表
对于没有独立进程的DLL木马怎么办吗?既然木马打的是DLL文件的主意 , 我们可以从这些文件下手 , 一般系统DLL文件都保存在system32文件夹下 , 我们可以对该目录下的DLL文件名等信息作一个列表 , 打开命令行窗口 , 利用CD命令进入system32目录 , 然后输入“dir *.dll>X:listdll.txt”敲回车 , 这样所有的DLL文件名都被记录到listdll.txt文件中 。日后如果怀疑有木马侵入 , 可以再利用上面的方法备份一份文件列表“listdll2.txt” , 然后利用“UltraEdit”等文本编辑工具进行对比;或者在命令行窗口进入文件保存目录 , 输入“fc listdll.txt listdll2.txt” , 这样就可以轻松发现那些发生更改和新增的DLL文件 , 进而判断是否为木马文件 。
(3)对照已加载模块
频繁安装软件会使system32目录中的文件发生较大变化 , 这时可以利用对照已加载模块的方法来缩小查找范围 。在“开始/运行”中输入“msinfo32.exe”打开 “系统信息” , 展开“软件环境/加载的模块” , 然后选择“文件/导出”把它备份成文本文件 , 需要时再备份一个进行对比即可 。
(4)查看可疑端口
所有的木马只要进行连接 , 接收/发送数据则必然会打开端口 , DLL木马也不例外 , 这里我们使用netstat命令查看开启的端口 。我们在命令行窗口中输入“netstat -an”显示出显示所有的连接和侦听端口 。Proto是指连接使用的协议名称 , Local Address是本地计算机的IP地址和连接正在使用的端口号 , Foreign Address是连接该端口的远程计算机的IP地址和端口号 , State则是表明TCP连接的状态 。Windows XP所带的netstat命令比以前的版本多了一个-O参数 , 使用这个参数就可以把端口与进程对应起来 。输入“netstat /?”可以显示该命令的其它参数 。接着我们可以通过分析所打开的端口 , 将范围缩小到具体的进程上 , 然后使用进程分析软件 , 例如卡卡助手和瑞星个人防火墙 。