打造火眼金星 谈谈如何识别驱动木马

打造火眼金星 谈谈如何识别驱动木马 - 电脑安全 - 电脑教程网

打造火眼金星 谈谈如何识别驱动木马

日期:2006-05-04   荐:闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱濠电偛妫欓幐鍝ョ矆婢跺绻嗘い鏍ㄧ箓娴滃綊鏌i鐔稿磳闁哄瞼鍠撶槐鎺楀閻樺磭浜紓鍌欒閸嬫捇鏌涢弴銊ョ仭闁绘挻娲熼弻宥夊煛娴e憡娈繝娈垮枓閸嬫捇姊绘担鍛靛綊顢栭崱娑樼闁搞儺鍓涘畵渚€鎮楅敐搴濈按闁衡偓娴犲鐓曢柍鈺佸枤濞堟瑧绱掓担瑙勫唉婵﹥妞介幊锟犲Χ閸涘拑缍侀弻娑㈠籍閳ь剙煤閺嶎厽鏅濋柕蹇嬪€栭悞鑲┾偓骞垮劚閹冲繘鎮楅鍕拺閻熸瑥瀚崝銈夋煟鎺抽崝搴f閻愬搫鐐婃い鎺嶈兌閸樺憡绻濋姀锝嗙【闁挎洩闄勭粋鎺楀閵忊€虫瀾闂佸搫顦悘婵嬵敂椤撱垺鐓欐い鏃傜摂濞堟棃鏌嶉挊澶樻Ц闁宠楠歌灒闁煎鍊栧В灞解攽閿涘嫬浜奸柛濠冪墪鐓ゆ慨妞诲亾闁诡垰瀚伴、娑㈡倷闂堟稓銈﹂柣搴$畭閸庨亶藝娴兼潙纾跨€光偓閸曨剛鍘卞┑鐘绘涧鐎氼剟宕濋妶鍡愪簻闁挎棁顕у▍宥嗘叏婵犲懏顏犵紒杈ㄥ笒铻i柛鎾茶兌缁愭姊绘担渚敯婵炲懏娲熼獮鎴﹀炊椤掆偓杩濋梺鍛婄洴閸嬪﹤危婵傚憡鍊甸柛顭戝亝缁舵煡鎮楀鐓庣仸閽樻繈鏌ょ喊鍗炲缁炬儳鍚嬫穱濠囨倷妫版繂娈繛瀛樼矋閸庢娊鍩為幋锔藉€烽柤纰卞墯閹茶偐绱撴笟鍥ф灈缂佺粯鍔欓、姘舵晲婢跺﹦顔掗梺鍝勵槹閸ㄥ湱绮i悙鐑樺€垫鐐茬仢閸旀碍銇勯敂鍨祮鐎殿喗鐓¢、妤呭礋椤掑倸寮抽梻浣虹帛濞叉牠宕愰崷顓涘亾濮樼偓瀚�

一提起木马或者病毒,大家都会是一脸憎恶且避而远之的态度。但是现实却是残酷的,在当今这个时代,国内用于家庭和企业的电脑,平均每十台就有至少一台感染过后门,染毒途径除了移动媒介扩散以外,最常见的就是网络途径,如那些被植入木马的网站、网络中爬行的蠕虫、即时聊天系统传输的文件、系统漏洞导致的入侵植马和带毒的电子邮件等。可以说,各种途径都可能使你的计算机受到感染,即使你只是打开了几个网站页面看看当天的时事新闻。

正所谓知己知彼、百战不殆,要想远离木马或病毒的骚扰,当然需要我们对它们有详细的了解,才能让我们战胜这些木马、病毒以及那些恶意的入侵!下面我们就为大家介绍一种历史悠久的木马――驱动木马。

一、 隐藏技术的演变:

要谈驱动木马的识别,就不能不介绍木马、病毒的隐藏技术的演变过程。最初的木马,如同恶意软件或流氓软件那样,使用普通的EXE可运行文件和简单的隐藏技术。较为强大的木马,是直接跳过了第一代木马形态,而采用DLL文件形态和线程注射技术。

线程注射的全称是“远程线程注射”(RemoteThread Injection),通常情况下,各个进程的内存空间是不可以相互访问的,这也是为程序能够稳定运行打下基础,这个访问限制让所有进程之间互相独立,这样一来,任何一个非系统关键进程发生崩溃时都不会影响到其他内存空间里的进程执行,从而使NT架构的稳定性远远高于Win9x架构。但是在一些特定的场合里,必须让进程之间可以互相访问和管理,这就是“远程线程”技术的初衷,这个技术实现了进程之间的跨内存空间访问,其核心是产生一个特殊的线程,这个线程能够将一段执行代码连接到另一个进程所处的内存空间里,作为另一个进程的其中一个非核心线程来运行,从而达到交换数据的目的,这个连接的过程被称为“注射”(Injection)。远程线程技术好比一棵寄生在大树上的蔓藤,一旦目标进程被注射,这段新生的线程就成为目标进程的一部分代码了,只要目标进程不被终止,原进程无论是否还在运行都不会再影响到执行结果了。

曾经,线程注射技术成为摆在用户面前的一道难题,因为一旦它加载运行,一般的手段就无法对其造成伤害,但是随着时代变迁,它的“弊端”也开始暴露得越来越明显了,例如在安全模式下,由于载体EXE的启动项无法被调用运行,这些木马自然也就失去了作用。而一部分木马则利用开始浏览器,只要“Windows外壳”Explorer.exe程序被加载,它就随之启动了,虽然它使用这种方法实现了在一般的安全模式里也能保持运行,但是在更进一步的“命令提示符的安全模式”里,由于它的依赖载体Explorer.exe并不会被调用(该模式里使用CMD.EXE作为外壳),在有经验的用户面前,这种保护模式也就被破解了。

二、驱动木马的诞生:

于是木马开发者开始寻求一种更高级更保险的手段来确保自己的“作品”不受破坏,最终他们把眼光投向了系统底层——Ring 0,这里运行着系统核心模块和各种驱动程序模块,而且也只能运行这些以驱动文件为形态的代码。为了达到目的,后门作者们把“作品”编写成符合WDM规范(Windows Driver Model)的驱动程序模块,把自身添加进注册表的驱动程序加载入口,便实现了“无启动项”运行。一般的进程查看器都只能枚举可执行文件EXE的信息,所以通过驱动模块和执行文件结合的后门程序便得以生存下来,由于它运行在Ring 0级别,拥有与系统核心同等级的权限,因此它可以更轻易的把自己隐藏起来,无论是进程信息还是文件体,甚至通讯的端口也能被隐藏起来,在如此强大的隐藏技术面前,无论是任务管理器还是系统配置实用程序,甚至系统自带的注册表工具都失去了效果,这种木马,就是让人闻之色变的Rootkit。

起初,这种技术仅仅为高级的木马所使用,然而到了后期,为了避免自身被用户和恶意软件清理工具卸载,越来越多的恶意软件纷纷加入了这个阵营,到了这个阶段,恶意软件已经彻底成为流氓了,有许多恶意软件甚至结合了多种途径蚕食用户的系统领域,包括驱动形态、线程注射的DLL形态和表面上的EXE——它们只比类似的木马多了一个EXE而已。在多种技术的结合下,这些惹人讨厌的东西越来越难以查杀。

【责编:Chuan】

三、驱动木马的发展:

早期的驱动木马虽然采取了驱动形态达到隐藏自己避免查杀的目的,但是在安全模式里它仍然被发现了。因为Windows的“安全模式”不仅仅限于加载用户界面和启动项这些区别,它还包括各种驱动的“安全模式”,在安全模式里,为了确保Windows不会由于某个驱动文件的缺陷而崩溃——毕竟一部分人被迫进入安全模式就是因为遇到了某些设备驱动不兼容或存在问题而导致系统不能正常运行,大部分被标记为“不必要”的驱动在“硬件抽象层(HAL)”的干涉下,是不会被加载的,甚至显卡驱动也不能例外。所以此时Windows是相对安全的基于“默认硬件”运行的界面简陋的系统。操作系统厂商此举其实很好理解,想象一下如果你因为安装了某个设备的驱动程序而导致系统蓝屏,然后你来到安全模式里想要修复它,却不幸的发现安全模式也出现了蓝屏——因为这个驱动被系统加载了,如果这样,安全模式还有什么意义。于是,在这样的设计思想下,早期的驱动木马到了安全模式,还是很好清理的,因为那个时候,大部分开发者还处于开发Rootkit的试探阶段,谁也不敢贸然绕过这种安全体系。

硬件抽象层(Hardware Abstraction Layer,HAL)是微软公司为了便于操作系统在不同硬件结构上进行移植而提出的将系统底层与硬件相关的部分独立运作的思想,HAL为系统实现了“硬件无关性”,即在不同的硬件平台上,硬件与操作系统的交互也不会有所差异,这样一来,硬件厂商开发驱动的难度便能大大降低,HAL将硬件的接口细节隐藏起来,并为操作系统提供一个标准硬件交互接口,目前所有的硬件驱动都工作在这个层面上,当外界硬件存在指令请求时,驱动程序响应请求并将指令通过HAL转换为系统核心层能理解的指令交给内核执行,如果未找到相应的驱动程序类型,则将其视为“默认硬件”(Default Hardware)处理,什么叫“默认硬件”呢?最简单的例子就是进入安全模式,这时候大部分驱动程序不会被加载,此时的系统便是工作于“默认硬件”上。

然而在经历了一段时间的试炼以后,开发者的技术熟练了,胆子也大了,他们开始修改驱动模块的运行级别——系统的“默认硬件”是根据驱动模块加载入口声明的启动优先级判断的,对于绝对安全的驱动程序,它的优先级被提高了,于是系统无论在什么模式下都会加载它,例如键盘驱动、鼠标驱动、各种基础的系统设备驱动等,如果某个驱动文件的优先级被人为提高,系统就会将其视为必备驱动加载,而这个优先级的提高方法非常简单,只需要改动注册表的驱动模块分支里的一个数据而已。至此,即使在加载模块最少的“基于命令提示符的安全模式”下,这样驱动木马就可以不受阻碍的横行霸道了,即使是专业的计算机用户查杀也很困难了,更别说那么“菜鸟”们了。

四、识别驱动木马:

大部分驱动木马的驱动模块并不是用来实现入侵行为或者进行浏览器劫持的,而是为真正负责这部分操作的位于用户层的可执行程序本体提供保护功能,因此驱动木马的大部分工作就是拦截相关的系统API调用工作,使得用户无法直接查找到真正的文件本体,或者对它们屡杀不禁,甚至连相关的注册表项目都无法删除,这就是因为它们直接从驱动层拦截了实现这些功能的API。

虽然驱动木马使用的种种手段使得自己可以保全于普通的系统安全检测工具下,但是在基于驱动层的安全检测工具出现后,这个一方独霸的局面被打破了,通过使用国产的几个优秀工具如IceSword和安全巡警专业版(AST Pro),普通用户也能具备发现驱动木马的能力。那么,如何判断系统是否中了木马,以及是中了驱动木马呢?首先用户要具备基础的系统启动项知识,虽然启动项里的东西会随着用户安装的一些软件而增加,但是实际上系统可以只存在最少的两个甚至一个启动项:用于同步的mobsync、输入法指示器internat(Windows 2000)或高级文字服务ctfmon(Windows XP),默认情况下Windows XP还会出现一些MG或IME开头的启动项,这些都是无关紧要的。

也许您会问,如果我一直没有养成记录系统启动项的习惯,也没有过检测木马的经验,我该如何去判断一个启动项是否木马呢?这个问题很难用固定的思维回答,但是用户可以采取一个笨而实用的方法来测试,虽然它很烦琐,但是却比较直观。

首先运行“系统配置实用工具”msconfig.exe,在它的“启动”选项卡里面把所有启动项取消,然后重启计算机,你会发现系统任务栏右边的托盘区少了许多东西,这时候,再次运行msconfig,边把当前的启动项名称记录在笔记上并勾上第一个启动项,然后确定重启,通过观察系统启动后托盘区里是否多出了图标就可以判断出这个启动项的大概作用了,如果托盘区出现了图标或者直接就出现了一些窗口界面如QQ的登录对话框,就可以确认这是个正常的启动项,在笔记上对应的启动项名称前打勾。然后再次运行msconfig,取消第一个启动项的勾,勾上第二个启动项,再次重启,直到所有启动项都分别独立开启了一次为止,最后看看你记录下来的笔记里有多少个项目是打了勾的,而剩下那些未被勾选的项目,有80%的几率就是一般的木马。

这个方法最保险,也最烦琐,所以用户需要记住一条规律,如今有许多木马的文件名和启动项名称都是很混乱或者很“系统”的,如看到“48ED0A5E”、“svchost”、“svohost”、“services”、“ssdt”、“ssodl”这样的启动项,那就不必怀疑了,它绝对是木马。

用户的疑问又来了,这方法的结尾说,这只是测试“一般的木马”而已,那我该如何判断系统是否感染了“驱动木马”呢?其实,如果用户的机器已经感染了驱动木马,那么在刚才的测试里它就已经暴露了,细心的用户应该不难发现,他们的机器里有一个甚至多个启动项,即使刚才在msconfig里已经取消,重启后却发现它仍然是选中的状态,如果用户是使用具备实时刷新功能的第三方工具管理启动项,甚至会发现自己刚取消了这个启动项就马上被自动恢复了,而这些始终不肯放弃自启动权利的项目,就是我们要找的驱动木马的用户层本体——不要高兴,它并不是驱动木马的真正危害部分,这个只是驱动木马千方百计要保护的对象而已。这个方法正是利用驱动木马的保护特性,让它自我暴露。

结束语:以上从木马的隐藏技术一直到驱动木马的识别,进行了详尽的叙述,而光发现和识别驱动木马是不够了,如何绞杀这些讨厌的家伙呢,请大家关注我们后续的文章!

标签:

闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶宕濆Δ鍐ㄥ灊闁哄啫鐗婇崐濠氭煢濡警妲搁柣搴弮濮婅櫣绮欑捄銊т紘闂佺ǹ顑囬崑銈呯暦閹达箑惟闁冲搫鍊婚崢浠嬫⒑閸濆嫬鏆欓柛濠呭吹閺侇喖鈽夊▎鎴狀啎闂佸憡渚楅崰姘跺箠閸ヮ剚鐓涢悘鐐插⒔椤偐绱掗悩宕囨创闁轰焦鍔欏畷銊╊敆閸屾粍鏅ㄩ梻鍌氬€烽懗鍫曞磿閸偅鍙忕€广儱顦婵囥亜閺冨洤浜圭憸鐗堟尦濮婄粯鎷呴悷閭﹀殝濠碘槅鍋傜粈浣界亱闂佸憡娲﹂崹浣瑰緞閹邦厽娅㈤梺璺ㄥ櫐閹凤拷

闂傚倸鍊峰ù鍥х暦閸偅鍙忛柡澶嬪殮濞差亝鏅濋柛灞剧☉娴犻亶姊洪崫鍕偍闁搞劌婀辩划濠氭偄閸忕厧浠梺鍛婄箓鐎氥劑宕戦妸鈺傜厱闁挎棁顕ч獮鎰版煕鐎n偅宕岄柡浣瑰姈閹柨鈹戦崼鐔告闂傚倷绀佸﹢閬嶅疾椤愶箑绐楅柟鎹愬煐椤洟鏌熼悜姗嗘畷闁稿鍔欓弻鐔革紣娴e搫濡介梺浼欑到閻栫厧顫忓ú顏勬嵍妞ゆ挆鍐潥缂傚倷鑳剁划顖滄崲閸岀偞鍋╅柣鎴eГ閺呮悂鏌eΟ鍝勬毐濞存粌缍婂娲川婵犲嫭鍣у銈忓瘜閸ㄥ爼宕洪埀顒併亜閹搭厼澧繛璇х畵閹繝寮撮姀锛勫幍闂佸湱鈷堥崢濂告倶閿熺姵鍊垫慨妯煎亾鐎氾拷

闂傚倸鍊搁崐椋庢濮橆兗缂氶柤濮愬€栫€氬鏌i弮鍌氬付缂佲偓婢舵劕绠规繛锝庡墮婵″ジ鏌涘顒傜Ш妤犵偞鐗曡彁妞ゆ巻鍋撻柣蹇d邯閺屾稑鈻庤箛鏇狀啋闂佸搫鐬奸崰鏍嵁閹达箑绠涙い鎾跺Т濞懷囨⒒娴e懙褰掓晝閵娿儮鏋嶉柡鍥╁У瀹曞弶绻涢幋娆忕仼缂佺嫏鍥ㄧ厵闁圭⒈鍘奸獮鏍煕閹捐埖鏆慨濠勫劋鐎电厧鈻庤箛鏇熜掗梻浣规偠閸斿矂鎮ユ總鍛婂仒妞ゆ梻鈷堥崥瀣熆鐠虹尨鍔熸い鏃€甯″娲川婵犲倸顫戦柣蹇撶箲閻熲晠宕洪埀顒併亜閹烘埊鏀婚悗姘炬嫹

缂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏇炲€堕埀顒€鍟村畷鍗烆渻閵忥紕鈯曠紒妤冨枛閸┾偓妞ゆ帒瀚畵渚€骞栫划鐟扮伋闁哄啫鐗嗗婵囥亜閹捐泛顎屾俊鍙夋尦濮婄粯鎷呴搹骞库偓濠囨煕閹惧绠撻柣婊冾煼瀹曠ǹ螖閳ь剟鎮為崹顐犱簻闁硅揪绲剧涵鍫曟煟椤撶喓鎳勬い銊e劦閹瑩鍩℃担宄邦棜闂備浇宕甸崰鎰垝瀹€鍕厐闁挎繂顦粻鏍喐韫囨洖鍨濇繛鍡楃簿濞戙垺顥堟繛鎴炵懆绾偓闂備線鈧偛鑻晶鍓х磽瀹ュ懏顥㈢€规洏鍨介獮鍡涒€栭濠勭М闁轰焦鎹囬弫鎾绘晸閿燂拷

闂傚倸鍊搁崐宄懊归崶顒夋晪闁哄稁鍘奸崹鍌毭归崗鍏肩稇缂佺姷濮烽埀顒€绠嶉崕閬嵥囨导鏉戝惞闁圭儤顨嗛悡鏇㈡煃閳轰礁鏆熼柍顖涙礋閺屾稓鈧綆浜跺Ο鈧悗娈垮枛閻栫厧鐣烽悡搴樻婵☆垯璀﹂悗鎶芥⒒娴e憡鍟為柟鍝ュ厴瀹曪繝宕樺顔界稁濠电偛妯婃禍婊呯棯瑜旈幃褰掑箒閹烘垵顥庨梺闈涚返妫颁胶鐩庨梻浣告惈濞层垽宕濆畝鍕嚑婵炴垯鍨洪ˉ鍡楊熆閼搁潧濮堥柛濠勬暬閺屻劌鈹戦崱娑扁偓妤侇殽閻愮摲鎴炵┍婵犲嫭瀚氱憸搴b偓姘炬嫹