消灭害群之“马”(上)
网络通信
来自安全公司最新的报告显示:在扫描过的100多万台上网计算机中,检测到184000个特洛伊木马程序,占所扫描的计算机数量的18%以上。由此可见,特洛依木马有的时候比病毒更加可怕……
一、“马”经
纯粹的木马不是病毒,因为它们本身没有破坏性,完全可以看做基于TCP/UDP协议的通讯软件,不过是被坏人所利用。要想区分各类木马之间的技术差别,首先得了解四个相关的基本概念:
任务:简单地说每一个运行的程序、打开文件夹都是一个任务,我们按“Ctrl+Alt+Del”在任务管理器中就可以看到它们。但有些程序和木马可以通过注册成系统服务等方式,来隐藏自身。
进程:一个正常的Windows印程序,在运行之后都会在系统之中产生一个进程(在WindowsXP中的任务管理器中可以查看到已加载的进程)。每个进程分别对应了一个不同的PID(Progress ID, 进程标志符);每个进程都会被系统分配一段虚拟的内存空间,一切相关的程序操作都会在这个虚拟空间中进行。
笔者建议朋友们平时最好备份一下进程列表,以便随时进行对比查找。
小链接:2004年第19期《电脑报》G7版有进程的详细介绍。
线程:一个进程可以存在一个或多个线程(比如最近出现的震荡波病毒线程数达到1024个),线程之间可以同步执行多种操作,且相互间独立。当一个线程发生错误时,并不一定会导致整个进程的崩溃。
服务:服务指的是执行指定系统功能的程序、例程或进程,主要用来支持其他程序,尤其是底层(接近硬件)的程序。只不过它们在后台运行,所以我们在任务管理器中看不到它,这有点类似于UNIX。
最近出现的盗取工商银行个人网上银行账号和密码的Trojan/PSW.HidWebmon.a,运行后会调用Expl0er.dll,它与设置消息挂钩后,用户对窗口的任何操作都会激活病毒代码。Expl0er.dll和病毒主程序之间会通过一段共享内存空间交换数据。
二、相“马”术
面对无孔不入的木马,只要我们平时细心一些,总会察觉它们露出来的“马脚”。为了实时监视系统,木马都会随机启动,而要实现这一目的,就必须通过以下几个途径。那么我们就来看一下哪里会留下蛛丝“马”迹。
1.注册表启动项
打开注册表编辑器,依次展开[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\],查看里面所有以“Run”开头的项,看其中是否有新增或可疑的键值;也可以通过键值所指向的文件路径来判断,是新安装的软件还是不请自来的木马。
另外,[HKEY LOCAL MACHINE\Software\classes\exefile\shell\open\command\]键值也可用来加载木马,比如把键值修改为“C:\Windows\System\XXX.exe "%1"%”。所以平时最好通过注册表导出功能,备份这些键值以便随时对照。
2.开始菜单启动组
现在大多数木马都不会通过在启动菜单中隐藏,来进行随机启动。但大家也不可掉以轻心,如果发现有新增的项,可以右击它选择属性,再查看文件的创建日期和路径;还可以单击“查找目标”到文件的目录下查看一下,如果文件路径为系统目录就要多加小心了;也可以在注册表中直接查看,它的位置为[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders],键名为“Startup”。
3.Win.ini和System.ini
Win.ini和System.ini,也是木马们喜欢的隐蔽场所。你可以在运行中输入“msconfig”调出系统配置实用程序。检查Win.ini的[Windows]小节下的load和run字段后面有没有什么可疑程序,因为在一般情况下“=”后面是空白的;另外,在System.ini的[boot]小节的Shell=Explorer.exe后面也要进行检查,尤其要看一下文件名是否发生变化,比如变成Shell=Explorer.0ws.exe,就很有可能是木马服务端程序!然后大家可以直接到Windows目录下,查看源文件。
小提示:如果已经无法进入系统,可以用DOS启动盘引导到纯DOS模式,输入“edit win.ini”和“edit system.ini”进行查看和编辑。
4.批处理文件
如果你使用的是Windows9X系统,C盘根目录下“Autoexec.bat”和Windows目录下的“WinStart.bat”两个批处理文件也要特别注意。其中的命令一般由安装的软件自动生成,例如删除某些临时文件等等。在默认情况下,它们会自动被Windows加载。
5.文件关联
另外有些木马可能会挂接在某些程序或文件上,只要大家执行了某个程序或某类文件时就会被激活,所以要经常查看一下可执行文件的关联,例如EXE、COM、REG等。
6.可疑端口
俗话说“病从口入、祸从口出”,木马客户端与服务端之间的通讯和信息的交互都要经过计算机端口来完成。
我们可以通过查看程序监听的端口来进行判断,下面列表中所举为Windows常用协议默认使用的端口(表1)和几种流行木马使用的端口(表2)。查看端口的方法一般有两种(以前电脑报介绍过多次,在此只做简单描述):
(1)netstat命令行:
netstat命令行格式为Netstat [-a] [-e] [-n] [-o] [-s] [-p proto] [-r] [interval],用来显示协议和当前的TCP/IP网络连接,如果无法正常使用,请先安装 TCP/IP 协议。
我们在命令行窗口中输入“netstat -an”会显示出所有的连接和侦听端口。
Active Connections是指当前本机活动连接;Proto是指连接使用的协议名称;Local Address是本地计算机的 IP 地址和连接正在使用的端口号;Foreign Address是连接该端口的远程计算机的 IP 地址和端口号;State则是表明TCP 连接的状态(如图)。
Windows XP所带的netstat命令比以前的版本多了一个-O参数,使用这个参数就可以把端口与进程对应起来。另外还有以下几个特殊参数可选:
-e:显示以太网统计,该参数可以与 -s 选项结合使用。
-n:以数字格式显示地址和端口号。
-s :显示每个协议的统计。默认情况下,显示TCP、UDP、ICMP和IP的统计。
-p:可以用来指定默认的子集。
-r:显示路由表的内容。
(2)网络防火墙状态
初学者可能对命令行形式不太适应,我们还可以在网络防火墙的状态中进行查看。常见的网络防火墙有天网、金山网镖等。从其中可以看到哪些程序正在进行网络访问,以及所连接的IP地址和监听的端口。通过对其文件名和路径的判断,可以分析出是否为木马服务端。

