一、关于木马
木马,其实质只是一个网络客户/服务程序。网络客户/服务模式的原理是一台主机提供服务(服务器),另一台主机接受服务(客户机)。作为服务器的主机一般会打开一个默认的端口并进行监听 (Listen), 如果有客户机向服务器的这一端口提出连接请求(Connect Request), 服务器上的相应程序就会自动运行,来应答客户机的请求,这个程序称为守护进程。就我们前面所讲的木马来说,被控制端相当于一台服务器,控制端则相当于一台客户机,被控制端为控制端提供服务。
二、发现木马
由于木马是基于远程控制的程序,因此中木马的机器会开有特定的端口。一般一台个人用的系统在开机后最多只有137、138、139三个端口。若上网冲浪会有其他端口,这是本机与网上主机通讯时打开的,IE一般会打开连续的端口:1025,1026,1027……,QQ会打开4000、4001……等端口。
在DOS命令行下用netstat -na命令可以看到本机所有打开的端口。如果发现除了以上所说的端口外,还有其他端口被占用(特别是木马常用端口被占用),那可要好好查查了,你很有可能“中彩”了!比方说木马“冰河”所占用的端口是7626,黑洞2001所占用的端口是2001,网络公牛用的是234444端口……如果发现这些端口被占用了,基本上就可以判定: 你中木马了!
三、查找木马
首先要使你的系统能显示隐藏文件,因为一些木马文件属性是隐藏的。
多数木马都会把自身复制到系统目录下并加入启动项(如果不复制到系统目录下则很容易被发现,不加入启动项在重启后木马就不执行了),启动项一般都是加在注册表中的,具体位置在:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion 下所有以“run”开头的键值; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion 下所有以“run”开头的键值;HKEY_USERS\.Default\Software\Microsoft\Windows\CurrentVersion下所有以“Run”开头的键值。
如木马冰河的启动键值是:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]@="C:\\WINDOWS\\SYSTEM\\KERNEL32.EXE"
广外女生1.51版的启动键值是:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
"Diagnostic Configuration"="C:\\WINDOWS\\SYSTEM\\DIAGCFG.EXE"
蓝色火焰0.5的启动键值是:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"Network Services"="C:\\WINDOWS\\SYSTEM\\tasksvc.exe"
不过,也有一些木马不在这些地方加载,它们躲在下面这些地方:
①在Win.ini中启动
在Win.ini的[windows]字段中有启动命令“load=”和“run=”,在一般情况下“=”后面是空白的,如果有后跟程序,比方说是这个样子:
run=c:\windows\file.exe
load=c:\windows\file.exe
要小心了,这个file.exe很可能是木马。
②在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]这三个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所。
③在Autoexec.bat和Config.sys中加载运行
但这种加载方式一般都需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行,而且采用这种方式不是很隐蔽,所以这种方法并不多见,但也不能因此而掉以轻心哦。
④在Winstart.bat中启动
Winstart.bat是一个特殊性丝毫不亚于Autoexec.bat的批处理文件,也是一个能自动被Windows加载运行的文件。它多数情况下为应用程序及Windows自动生成,在执行了Win.com并加载了多数驱动程序之后开始执行(这一点可通过启动时按F8键再选择逐步跟踪启动过程的启动方式可得知)。由于Autoexec.bat的功能可以由Winstart.bat代替完成,因此木马完全可以像在Autoexec.bat中那样被加载运行,危险由此而来。
⑤启动组
木马隐藏在启动组虽然不是十分隐蔽,但这里的确是自动加载运行的好场所,因此还是有木马喜欢在这里驻留的。启动组对应的文件夹为:C: \Windows\Start Menu\Programs\StartUp,在注册表中的位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders Startup="C:\windows\start menu\programs\startup"。
⑥*.INI
即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖同名文件,这样就可以达到启动木马的目的了。
⑦修改文件关联
修改文件关联是木马常用手段(主要是国产木马,老外的木马大都没有这个功能),比方说正常情况下txt文件的打开方式为Notepad.EXE文件,但一旦中了文件关联木马,则txt文件打开方式就会被修改为用木马程序打开,如著名的国产木马冰河就是这样干的。“冰河”就是通过修改
HKEY_CLASSES_ROOT\txtfile\shell\open\command下的键值,将“C: \Windows\Notepad.exe %1”改为“C:\Windows\System\SYSEXPLR.EXE %1”,这样一旦你双击一个txt文件,原本应用Notepad打开该文件的,现在却变成启动木马程序了,好狠毒哦!请大家注意,不仅仅是txt文件,其他诸如HTM、EXE、ZIP、COM等都是木马的目标。对付这类木马,只能检查HKEY_CLASSES_ROOT\文件类型\shell\open\command 主键,查看其键值是否正常。
⑧捆绑文件
实现这种触发条件首先要控制端和服务端已通过木马建立连接,然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。绑定到某一应用程序中,如绑定到系统文件,那么每一次Windows启动均会启动木马。
当发现可疑文件时,你可以试试能不能删除它,因为木马多是以后台方式运行的,通过按Ctrl+Alt+Del是找不到的,而后台运行的应是系统进程。如果在前台进程里找不到,而又删不了(提示正在被使用)那就应该注意了。
四、手工清除
如果你发现自己的硬盘总是莫明其妙地读盘,软驱灯经常自己亮起,网络连接及鼠标屏幕出现异常现象,很可能就是因为有木马潜伏在你的机器里面,此时就应该想办法清除这些家伙了。
那么如何清除木马而不误删其他有用文件呢?当你通过上述方法找到可疑程序时,你可以先看看该文件的属性。一般系统文件的修改时间应是1999年或1998年而不应该是最近的时间(安装最新的Win2000、 WinXP的系统除外),文件的创建时间应当不会离现在很近。当看到可疑的执行文件时间是最近甚至是当前,那八成就有问题了。
首先查进程,检查进程可以借助第三方软件,如Windows优化大师,利用其“查看进程”功能把可疑进程杀掉后,然后再看看原来怀疑的端口还有没有开放(有时需重启),如果没有了那说明你对了,再把该程序删掉,这样你就手工删除了这匹木马了。
如果该木马改变了TXT、EXE或ZIP等文件的关联,那你应把注册表改过来,如果不会改,那就把注册表改回到以前的就可以恢复文件关联,可通过在DOS下执行scanreg/restore命令来恢复注册表,不过这条命令只能恢复前五天的注册表(这是系统默认的)。此举可轻松恢复被木马改变的注册表键值,简单易用。