作者:平淡
出处:Ctips
在这个万“马”奔腾的时代,网络上充斥着各种各样的木马,不过随着杀毒技术的进步和大家防毒意识的提高,传统木马已渐渐失去市场,而DLL木马则“与时俱进”以其强大的生命力,继续网络中“为非作歹”。因DLL木马的启动方式比较特别,它不象传统的木马,启动时会“傻傻”地在进程列表中暴露自己,而且还可以通过插入系统进程运行自己,具有很强的隐蔽性。本文就和大家一起来揭开DLL木马的神秘面纱。
一、初识DLL木马
首先了解一下DLL文件,DLL(Dynamic Link Library)是系统中的动态链接库文件,DLL文件本身并不能够运行,需要应用程序来调用。当程序运行时,Windows将其装入内存中,并寻找文件中出现的动态链接库文件。对于每个动态链接,Windows都会装入指定的DLL文件并把它映射到相应虚拟地址空间中。DLL木马实际就是把一段实现了木马功能的代码加上一些特殊代码写成DLL文件。DLL文件运行时是插入到应用程序的内存模块当中,所以DLL文件无法删除。
下面以一个实例说明DLL文件的运行,单击“开始→运行”并输入“rundll32.exe netplwiz.dll,UsersRunDll”,回车后会看到一个用户账户设置窗口,打开进程列表发现系统新增一个“rundll32.exe”进程,但是并不会发现DLL之类的进程,“netplwiz.dll,UsersRunDll”就是通过“rundll32.exe”来调用的,如果这是一个DLL木马,那么它启动后新增的进程就是正常的“rundll32.exe”,一般用户也不会将“rundll32.exe”中止或删除,而木马此时却可以在后台悄悄地“作恶”。
小提示
当然除了用“rundll32.exe”作为载体外,DLL木马还可以通过动态嵌入技术,通过任意一个系统进程进行加载。
二、查杀方法
前面介绍了DLL文件自身并不能运行,它必须通过其它程序调用才能“作恶”,主要有以下两种途径:
1.通过Rundl32l.exe启动的木马
木马运行如上所述,系统启动后若发现加载了“rundll32.exe”进程,那很可能就是中招了。不过系统也会调用“rundll32.exe”来加载正常的DLL文件,主要看加载的是什么DLL文件,因为木马大多是通过注册表键值来自启动。首先检查那些常见的自启动键值,如“3721”就是通过DLL文件来启动的,虽然它并不是木马,但是它的自启动和运行方式可以借鉴。它在注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下,新添了一个“CnsMin”的键值,启动命令是“Rundll32.exe E:\WINDOWS\DOWNLO~1\CnsMin.dll,Rundll32”(如图1)。这样每次启动系统后“CnsMin.dll”都会被Rundll32.exe调用,而在进程列表出现的则是Rundl32.exe。此类DLL木马的运行过程大多如此,查杀方法是:首先将“rundll32.exe”进程终止,接着查找注册表各启动键值,从启动命令的路径中找到相应的DLL文件并删除即可。
图1 注册表
2. 嵌入式木马
运用Rundl32l.exe调用的木马,很容易被用户发现并查杀。为了提高“马儿”的成活率,网上出现了动态嵌入式木马,它是将木马代码嵌入到正在运行的进程中。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但实际上,动态嵌入式木马就是通过嵌入进程来“作恶”的。虽然编写这种动态式嵌入木马有一定的技术难度,但是很多“雷锋”式的制马高手将此类木马随意放在网上,初学者下载这种木马后只要按提示选择嵌入进程就可以轻松生成木马,把客户端发送到对方电脑并运行后,动态嵌入式木马就可以在我们的电脑“安家落户”了,这也是众多用户中招的原因。下面以查杀“winlogon.exe”进程木马为例,介绍一下查杀技巧。
①.查看连接
不管是何种类型的木马,它要“作恶”肯定要通过本地端口与外部电脑连接,只要查看本机开放端口和连接情况,一般就可以找出木马客户端。查看端口和连接可用“netstat”命令(格式:nestat –a –o),不过这个命令并不能看到发起连接的进程。这里推荐大家使用“CurrPorts 汉化版”,它是一款免费的网络连接检测工具,除了能够列出所有TCP/IP和UDP连接外,还可以列出打开端口的应用程序,并提供终止程序功能。运行“CurrPorts”后,会发现“winlogon.exe”已被一远程地址连接,打开的端口是6666、6671、6669、6672。“winlogon.exe”是Windows NT的用户登陆程序,这个进程是管理用户登录和退出的,它在用户按下CTRL+ALT+DEL时就激活了,显示安全对话框。正常情况下,这个进程是不会向外发起连接的,若“winlogon.exe”发起连接,则是中了嵌入“winlogon.exe”进程的DLL木马,在“CurrPorts”中选中进程,依次将连接中断(如图2),需要注意的是不要选择“终止打开选中端口的进程”,否则电脑会自动重启。
图2 将连接中断
小知识:端口状态参数含义
LISTENING表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接,只有TCP协议的服务端口才能处于LISTENING状态。
ESTABLISHED的意思是建立连接,表示两台机器正在通信。
TIME_WAIT的意思是结束了这次连接。说明端口曾经有过访问,但访问结束了。
SYN_SENT是本机向其它计算机发出的连接请求,一般这个状态存在的时间很短。
| 本文导航: | ||
| ·初识DLL木马及查杀方法 ·进程管理器跟踪查找木马 |
·修复自启动项目 |
|