欢迎来到天天文库
浏览记录
ID:36970785
大小:29.50 KB
页数:5页
时间:2019-05-16
《windows环境木马进程隐藏技术研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、0 引言随着计算机技术的迅速发展和网络应用的日益普及,恶意代码出现的频率越来越高。目前,隐藏功能已成为很多恶意代码的一个重要特征,分析恶意代码使用的隐藏手段和相关的技术,可以让我们更好地提高防范意识,并据此采取相应的防御和检测措施。特洛伊木马(简称木马)是具有较强隐藏功能的一类恶意代码。它通常伪装成合法程序或隐藏在合法程序中,通过执行恶意代码,为入侵者提供非授权访问系统的后门[1]。本文首先简单介绍了木马实现的常用技术,接着重点分析了Windows环境下木马实现进程隐藏经常使用的技术。1 木马实现常用技
2、术1.1 注册表修改很多木马在实现时都会修改注册表,修改的目的通常是:借助于注册表来实现启动或隐藏。在注册表的多个项目中都包含启动项。启动项的数值可以设置为用户指定的、伴随系统启动或服务启动而自动运行的程序的绝对路径。因此,将启动项的数值设置为木马程序的路径,就可以实现木马的启动。但是,使用注册表编辑器能够很容易地将注册表项的数值删除,为此,很多木马在使用时都加入了时间控制程序段,以监视注册表中相应的数据是否存在,一旦发现被删除则会立即重新写入。1.2 反向连接反向连接就是被攻击者主动连接攻击者的过程,
3、通常是运行木马的服务端进程主动连接客户端控制进程并进行通信的过程,也称为反弹技术[2] [3]。其基本原理是利用防火墙对由内到外的连接疏于防范的弱点来实现由内到外的主动连接。NameLess木马实现时也用到了反向连接,它使用嗅探原理来取得控制端的IP地址,然后实现反向连接。1.3 端口复用端口复用是指在一个端口上建立了多个连接,而不是在一个端口上面开放了多个服务。一种常用的端口复用技术,就是利用系统实际存在的系统的合法端口进行通讯和控制,如21、23、80等,使一个端口除了完成正常的功能外,还可用于木马
4、通信,而不是使用一个新开的端口号[2]。这样的好处就是非常隐蔽,不用自己开端口也不会暴露自己的访问,因为通讯本身就是系统的正常访问。1.4 文件隐藏文件隐藏可以通过修改系统呈现给用户的文件列表,使用户或检测软件无法发现事实上存在的文件,从而达到隐藏目的[4]。目前比较常见的文件隐藏技术通常使用Rootkit来实现,这和后面要介绍的使用Rootkit实现的进程隐藏的基本原理类似,这儿不做介绍。以上木马实现技术通常不是孤立存在的,如端口复用和反向连接技术通常关联在一起。另外,比较成功的木马其实现也往往同时使
5、用多种技术。当然,木马实现的常用技术除了上面列举的几种之外,还包括非常重要的进程隐藏技术,下面重点就本地系统Windows环境下木马常用的进程隐藏技术加以讨论。2 木马进程隐藏常用技术2.1 概述隐藏是木马的一个首要特征。从木马的隐藏方式来看,通常可分为本地隐藏、通信隐藏和协作隐藏。本地隐藏是指为防止本地用户或系统管理人员发现而采取的隐藏手段,主要包括文件隐藏、进程隐藏、网络连接隐藏、内核模块隐藏等[5]。进程隐藏是木马常用的一种隐藏手段。进程隐藏, 就是通过某种手段,使用户不能发现当前运行着的某个特定
6、进程。从隐藏的程度来看,进程隐藏又分为两种:假隐藏和真隐藏。假隐藏, 是指某个程序运行时,与它对应的进程仍然存在, 只不过是消失在任务管理器的进程列表里;而真隐藏, 则是让程序彻底消失,不再以一个进程或者服务的方式运行[6]。下面介绍的常用进程隐藏技术包括系统服务方式、动态嵌入方式和Rootkit方式。2.2 系统服务方式在较早的Windows 9x系统 中,利用RegisterService Process方法,可以把任何程序注册为一个系统服务,它只是以服务的方式在后台工作,而不出现在任务管理器的列表
7、中[6]。因此在Windows 9x系统中,使用这种方式可以很方便地实现进程隐藏。事实上,这种隐藏只是一种“假隐藏”,因为注册为系统服务的程序在运行时还有独立的进程存在,只是不在任务管理器列表中显示而已。对WINNT类的操作系统,如Windows NT/2000/XP等,这种方法已不再有效[7]。通过替换系统服务进程同样可以实现木马进程的隐藏,这时木马是以合法服务的形式运行,从而很好地实现了自身进程的隐藏。NameLess木马就是一个很好的例子。NameLess木马的实质是编写了一个Windows形式的
8、服务,该服务通过系统提供的Rundll32.exe程序来进行安装,安装时替换原有的系统服务,通过修改现有服务组里的服务、把它的ServiceDll指向自己来实现的。2.3 动态嵌入方式动态链接库(Dynamic Link Library,简称DLL) 是Windows操作系统的基础,Windows API中的所有函数都包含在DLL中。DLL不能独立运行,一般都是由进程加载并调用[8]。把DLL加载到进程中将具有很好的隐蔽性:(1)DLL被映
此文档下载收益归作者所有