火眼金精 从技术角度浅析流氓软件
2008-02-23 07:32:14来源:互联网 阅读 ()
早期,流氓软件在没有被正式定性为恶意程序时,流氓软件使用的技术比较简单,往往是修改主页,使用户只要一登陆浏览器,就自动跳转到流氓软件提供的广告网址,或者安装到系统中后,私下收集用户的信息发送出去。而后来,随着利益的驱动和流氓软件正式作为恶意程序被反病毒厂商绞杀,流氓软件采用的技术也越来越先进,如今已经形成了与杀毒软件对抗的态势,魔道之争真正进入白热化。
了解了它们使用的技术,会对它们有一个更加清晰的认识,以下便是流氓软件使用的经典技术。
秘密潜入-流氓软件的隐藏技术
隐藏是流氓软件的天性,也是病毒的一个特征,任何流氓软件都希望在用户的电脑中隐藏起来不被发现,由于隐藏的目的,衍生出隐藏的技术。
首先是隐藏窗口。我们知道,在Windows操作系统下,所有的程序执行时都是以窗口的形式出现的,每个窗口都有不同的属性,流氓软件的目的就是不想为人所知,因此它们在运行的过程会将自己的程序窗口的属性设为“不可见”,这样用户就看不到程序的窗口了。
但是,我们知道,每个程序运行时虽然用户看到的是窗口,但是对于系统来说,其实是执行了一个进程,对于稍微专业的用户来说,虽然窗口不能看见,但是程序产生的进程却是很容易通过系统的任务管理器看到,从而使流氓软件暴露。因此便出现了隐藏进程技术。
隐藏进程其实是调用了微软的一个未公开函数,将流氓软件本身注册为服务,这样系统的任务管理器就无法显示这类程序的进程了,从而达到了隐藏自己的目的。
于一些细心的用户来说,电脑出现了新的文件会引起他们的怀疑,因此流氓软件作者又采用了隐藏文件技术。它们在安装时会将自身拷贝到系统目录,然后将文件的属性设置为隐藏,这样,用户如果采用的是默认系统设置,则就无法看到他们。
但是,这些都是初级的隐藏技术,对电脑熟悉的用户,只要利用系统提供的工具就可以找到这些流氓软件的蛛丝马迹,或者安装一个防火墙软件,只要有程序访问网络,立刻就会报警,从而能够暴露流氓软件的行踪。
我中有你-流氓软件的线程插入技术
为了更好地隐藏自己,流氓软件开始大量采用线程插入技术。
上面讲到,一个程序进入系统中,会首先产生文件,该文件运行时,会产生窗口,在内存中产生进程。进程说白了就是一个被激活了的程序文件。而进程又会产生许多线程。
线程是Windows系统为程序提供的并行处理机制,它允许一个程序在同一时间建立不同的线程,完成不同的操作。另外,由于Windows操作系统为了提高软件的复用性,减少重复开发的开销,采用了动态链接库机制,即将一些公用的程序放在DLL文件中,程序不用包括这些代码,只要在运行时对这些DLL文件直接进行调用就可以完成各种功能,因此每一个可执行程序除了自身的程序体外,还包括许多外部的模块。如果我们用一些内存查看工具的话,能看到每一个应用程序都包含了大量的DLL动态链接库文件。
而流氓软件正是利用了这一点。他们的可执行程序并不是EXE形式的,而是DLL形式,这类文件一般是存在于系统中,
而流氓则是将DLL文件载入内存,然后通过“线程插入”的方式,插入到某个进程的地址空间。一般地,如果流氓软件想控制浏览器,则它们往往会将自己注入到浏览器(explorer.exe)的进程空间,只要浏览器运行,就会自动调用该流氓软件。
由于浏览器程序本身会调用大量的DLL文件,因此即使用户用第三方进程查看工具,也分辨不清哪个DLL是流氓软件。面且,采用线程注入技术的流氓软件由于已经并入了正常程序的内存空间,即使是防火墙程序也不会拦截,从而可以在用户电脑自由出入。
销声匿迹-流氓软件的RootKit技术
线程插入对于普通用户来说,或者对于用户的手工清除来说,是很难处理的,
但是这些招数对于杀毒软件来说,是非常简单的,为了能够躲避杀毒软件的追杀,流氓软件的研制者又引入了RootKit技术。
本来RootKit是LINUX的概念,指能够以透明的方式隐藏于系统,并获得LINUX系统最高权限的一组程序集。而后来被病毒制作者借鉴,病毒的RootKit技术指的是那些能够绕过操作系统的API调用,直接利用更底层的调用,然后接管系统的高级API调用,当有程序试图查找它们时,便返回假信息,从而得以隐藏自己的技术。由于目前的杀毒软件都是直接调用系统API来进行病毒扫描的,因此采用这种技术的病毒,都能够轻松躲避杀毒软件的追杀,因为如此,所以目前的流氓软件开始越来越多地采用这种方式来保护自己。
不过,杀毒软件也开始绕过API调用,通过更加底层的应用,来对抗这种技术。
借尸还魂-流氓软件的碎片技术
流氓软件之所以要流氓,那是因为巨大的利益,而为了巨大的利益,流氓就变得更流氓。目前流氓软件大多数还会采用一项流行的技术,那就是碎片技术。这种技术的思想其实很简单,就是在进入用户系统时,就产生多个或相同,或不同的碎片文件,这些文件除了分布在系统目录、一些盘符的根目录下,它们还会隐藏在其它软件的目录、临时文件夹、甚至回收站里。
这些文件之间互相保护,一旦一个文件被删除了,另一些碎片就会重新将这个文件恢复。只要系统中存在有这样的碎片文件,这些碎片文件只要有一个能够激活,在用户连接网络的时候,就能够连通网络进行升级,从而重新还原成一个完整的流氓软件体系,而且一旦升级,这些新升级的流氓软件还会将这些碎片文件删除,然后产生新的碎片文件,从而能够在一定程度上躲过了反病毒软件的查杀。
有的流氓软件多达数十个碎片文件,这对于手动清除的用户来说,几乎是不可能完成的任务,而即便是杀毒软件也未必能够将数十种碎片文件都一一识别,因此会产生杀不干净的问题,即使是只有一个碎片,流氓软件就有可能通过升级和下载借尸还魂,继续为恶。
以上便是目前流氓软件用得最多的技术,当然,随着同各种反病毒软件的对抗,它们会采用越来越多的底层技术,有些流氓已经开始采用写固件的方式,通过BIOS来进行传播了。而随着流氓软件的发展,手工清除越来越不可能,人们将会越来越依赖于专业的流氓软件清除工具。
链接:流氓软件的8大症状
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash