请问一下木马和病毒有什么区别?为什么一个叫木马一个叫病毒?
木马病毒的名称来自于希腊神化《木马屠城记》中那只有名的木马,因此又被叫做“特洛伊木马”。完整的木马病毒程序一般由两个部分组成,一个是服务器程序,一个是控制程序,被病毒感染的计算机会自动运行服务器程序。如果你的计算机被安放了木马,就如同你的家被人偷偷的装上了后门一样,将变得毫无秘密可言。拥有控制程序的人随时可以检查你的文件,做系统管理员才能做的工作(例如格式化磁盘),你的计算机上的所有文件、程序,以及在你使用到的所有帐号、密码都会被别人轻松的窃走。 中华人民共和国计算机信息系统安全保护条例》中,将计算机病毒(以下简称为病毒)明确定义为:编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。 从以上定义中我们可以看出: 病毒是一种特殊计算机程序 病毒通常寄生在别的程序中 病毒具有恶意 病毒具有自我复制的功能
采纳哦
什么是病毒,什么是木马,病毒与木马有什么区别!!
木马不是病毒
木马与病毒、蠕虫、后门程序并列从属于恶意程序范畴
区别:
计算机病毒具有如下几个特征:感染性、隐藏性、潜伏性、可触发性、衍生性、破坏性
病毒是最早出现的计算机恶意程序
所以我们以病毒为标杆,拿其他类型的恶意程序来对比一下就知道有什么区别了
首先是您关心的木马:
木马并不具有感染性,木马并不会使那些正常的文件变成木马,但病毒可以感染正常文件使其成为病毒或者病毒传播的介质
木马不具有隐藏性和潜伏性,木马程序都是我们看得到的,并没有把自己隐藏起来,也不像病毒那样通过系统中断或者其他的一些什么机制来定期发作,木马只是伪装成一个你想要使用的正常程序,甚至具有正常程序的一切功能,当你使用这些正常的功能的同时,木马的行为也就同时发作了。
木马没有破坏性,纯粹的木马旨在**用户资料,取得用户的信息,并不会破坏用户的系统。
从上面几点就能很清楚的看出木马和病毒的区别了
蠕虫不感染、不隐藏、不破坏计算机,它是通过阻塞网络或者恶意侵占用户资源来造成系统运行的不稳定甚至崩溃
后门程序则本身是正常程序,或出于某种恶意的设计或出于疏忽大意,这些正常程序中留有可能被利用来破坏计算机的漏洞,就成为了后门程序……前些时间被炒的沸沸扬扬的暴风影音后门事件就是暴风影音处于商业利益诱导留的一个后门,最终被黑客利用制造了极大的破坏。
虽说有区别,不过这些区别只是理论定义上的。木马制造者可不会因为定义上说木马不破坏计算机,他就不制造破坏计算机的木马。而且事实上现在确实有这种木马了,这种木马其实是木马和病毒的混合体,同样的,也有蠕虫与病毒的混合体。还有后门、木马、病毒形成一个自动下载发作的程序链协同作战的。所以这些区别仅仅做个了解即可,他们之间的界限正在慢慢模糊~
至于代表事件
传统的计算机病毒分类是根据感染型态来区分,以下为各类型简介:
开机型米开朗基罗病毒,潜伏一年,"硬"是要得(这个没看懂)
文件型(1)非常驻型
Datacrime II 资料杀手-低阶格式化硬盘,高度破坏资料
(2)常驻型
Friday 13th黑色(13号)星期五-"亮"出底细
复合型Flip 翻转-下午4:00 屏幕倒立表演准时开始
隐形飞机型FRODO VIRUS(福禄多病毒)-"毒"钟文件配置表
千面人PE_MARBURG -掀起全球"战争游戏"
文件宏Taiwan NO.1 文件宏病毒-数学能力大考验
特洛伊木马病毒 VS.计算机蠕虫" Explorezip探险虫" 具有「开机后再生」、「即刻连锁破坏」能力
黑客型病毒Nimda 走后门、发黑色信件、瘫痪网络
认识计算机病毒与黑客
2.1开机型病毒 (Boot Strap Sector Virus):
开机型病毒是藏匿在磁盘片或硬盘的第一个扇区。因为DOS的架构设计, 使得病毒可以在每次开机时, 在操作系统还没被加载之前就被加载到内存中, 这个特性使得病毒可以针对DOS的各类中断 (Interrupt) 得到完全的控制, 并且拥有更大的能力进行传染与破坏。 @实例
Michelangelo米开朗基罗病毒-潜伏一年,"硬"是要得
发病日: 3月6日
发现日:1991.3
产地:瑞典(也有一说为台湾)
病征:米开朗基罗是一只典型的开机型病毒,最擅长侵入计算机硬盘机的硬盘分割区(Partition Table)和开机区(Boot Sector),以及软盘的开机区(Boot Sector),而且它会常驻在计算机系统的内存中,虎视眈眈地伺机再感染你所使用的软盘磁盘。米开朗基罗病毒感染的途径,事实上只有一种,那就是使用不当的磁盘开机,如果该磁盘正好感染了米开朗基罗,于是,不管是不是成功的开机,可怕的米开朗基罗病毒都已借机进入了你的计算机系统中的硬盘,平常看起来计算机都颇正常的,一到3月6日使用者一开机若出现黑画面,那表示硬盘资料已经跟你说 Bye Bye 了。
历史意义:文件宏病毒发迹前,连续数年蝉联破坏力最强的毒王宝座
Top
2.2文件型病毒 (File Infector Virus):
文件型病毒通常寄生在可执行文件(如 *.COM, *.EXE等)中。当这些文件被执行时, 病毒的程序就跟着被执行。文件型的病毒依传染方式的不同, 又分成非常驻型以及常驻型两种 :
(1) 非常驻型病毒(Non-memory Resident Virus) :
非常驻型病毒将自己寄生在 *.COM, *.EXE或是 *.SYS的文件中。当这些中毒的程序被执行时,就会尝试去传染给另一个或多个文件。
@实例:
Datacrime II 资料杀手-低阶格式化硬盘,高度破坏资料
发病日:10月12日起至12月31日
发现日:1989.3
产地:荷兰
病征:每年10月12日到12月31号之间,除了星期一之外DATA CRIME II 会在屏幕上显示:*DATA CRIME II VIRUS*
然后低阶格式化硬盘第0号磁柱 (CYLINDER0从HEAD 0~HEAD 8)FORMAT后,会听到BEEP一声当机,从此一蹶不振。
历史意义:虽然声称为杀手,但它已经快绝迹了
(2) 常驻型病毒(Memory Resident Virus) :
常驻型病毒躲在内存中,其行为就好象是寄生在各类的低阶功能一般(如 Interrupts),由于这个原因, 常驻型病毒往往对磁盘造成更大的伤害。一旦常驻型病毒进入了内存中, 只要执行文件被执行, 它就对其进行感染的动作, 其效果非常显着。将它赶出内存的唯一方式就是冷开机(完全关掉电源之后再开机)。
@实例:
Friday 13th黑色(13号)星期五-"亮"出底细
发病日: 每逢13号星期五
发现日:1987
产地:南非
病征:十三号星期五来临时,黑色星期五病毒会将任何一支你想执行的中毒文件删除。该病毒感染速度相当快,其发病的唯一征兆是A:磁盘驱动器的灯会一直亮着。十三号星期五病毒登记有案的变种病毒,如:Edge、Friday 13th-540C、Friday 13th-978、Friday13th-B、Friday 13th-C、Friday 13th-D、Friday 13th-NZ、QFresh、Virus-B等...。其感染的本质几乎大同小异,其中Friday 13th-C病毒,当它进行感染文件时,屏幕上会显示一行客套语:"We hope we haven''t inconvenienced you"
历史意义:为13号星期五的传说添加更多黑色成分
Top
2.3复合型病毒 (Multi-Partite Virus):
复合型病毒兼具开机型病毒以及文件型病毒的特性。它们可以传染 *.COM, *.EXE 文件,也可以传染磁盘的开机系统区(Boot Sector)。由于这个特性, 使得这种病毒具有相当程度的传染力。一旦发病,其破坏的程度将会非常可观!
@实例:
Flip 翻转-下午4:00 屏幕倒立表演准时开始
发病日:每月2日
发现日:1990.7
产地:瑞士(也有一说为西德)
病征:每个月 2 号,如果使用被寄生的磁盘或硬盘开机时,则在16 时至16时59分之间,屏幕会呈水平翻动。
历史意义:第一只使具有特异功能的病毒
Top
2.4隐型飞机式病毒 (Stealth Virus):
隐型飞机式病毒又称作中断截取者(Interrupt Interceptors)。顾名思义, 它通过控制DOS的中断向量,把所有受其感染的文件"假还原",再把"看似跟原来一模一样"的文件丢回给 DOS。
@实例
FRODO 福禄多 -"毒"钟文件配置表
别 名:4096
发现日:1990.1
发病日:9月22日-12月31日
产地:以色列
病征:4096病毒最喜欢感染.COM, .EXE和.OVL文件,顾名思义被感染的文件长度都会增加4,096 bytes。它会感染资料文件和执行文件(包括:COM、.EXE)和.OVL等覆盖文件。当执行被感染的文件时,会发现速度慢很多,因为FAT (文件配置表) 已经被破坏了。此外,9月22日-12月31日会导致系统当机。
历史意义:即使你用DIR 指令检查感染文件,其长度、日期都没有改变,果真是伪装秀的始祖。
Top
2.5千面人病毒 (Polymorphic/Mutation Virus):
千面人病毒可怕的地方, 在于每当它们繁殖一次, 就会以不同的病毒码传染到别的地方去。每一个中毒的文件中, 所含的病毒码都不一样, 对于扫描固定病毒码的防毒软件来说,无疑是一个严重的考验!有些高竿的千面人病毒,几乎无法找到相同的病毒码。
@实例
PE_MARBURG -掀起全球"战争游戏"
发病日:不一定(中毒后的3个月)
发现日:1998.8
产地:英国
病征:Marburg 病毒在被感染三个月后才会发作,若感染 Marburg 病毒的应用软件执行的时间刚好和最初感染的时间一样 (例如,中毒时间是9月15日上午11点,若该应用程序在12月15日上午11点再次被执行),则 Marburg 病毒就会在屏幕上显示一堆的 "X"。如附图。
历史意义:专挑盛行的计算机光盘游戏下毒,1998年最受欢迎的 MGM/EA「战争游戏」,因其中有一个文件意外地感染 Marburg 病毒,而在8 月迅速扩散。
感染 PE_ Marburg 病毒后的 3 个月,即会在桌面上出现一堆任意排序的 "X" 符号
2.6宏病毒 (Macro Virus):
宏病毒主要是利用软件本身所提供的宏能力来设计病毒, 所以凡是具有写宏能力的软件都有宏病毒存在的可能, 如Word、 Excel 、AmiPro 等等。
@实例:
Taiwan NO.1 文件宏病毒- 数学能力大考验
发病日:每月13日
发现日:1996.2
产地:台湾
病征:出现连计算机都难以计算的数学乘法题目,并要求输入正确答案,一旦答错,则立即自动开启20个文件文件,并继续出下一道题目。一直到耗尽系统资源为止。
历史意义:1.台湾本土地一只文件宏病毒。2. 1996年年度杀手,1997年三月踢下米开朗基罗,登上毒王宝座。3. 被列入ICSA(国际计算机安全协会)「In The Wild」病毒数据库。(凡难以驯服、恶性重大者皆会列入此黑名单)
2.7特洛伊木马病毒 VS.计算机蠕虫
特洛依木马( Trojan )和计算机蠕虫( Worm )之间,有某种程度上的依附关系,有愈来愈多的病毒同时结合这两种病毒型态的破坏力,达到双倍的破坏能力。
特洛伊木马程序的伪装术
特洛依木马( Trojan )病毒是近年崛起的新品种,为帮助各位读者了解这类病毒的真面目,我们先来看一段「木马屠城记」的小故事:
话说风流的特洛伊王子,在遇上美丽的有夫之妇希腊皇后后,竟无法自拔的将其诱拐回特洛伊国,此举竟引发了为期十年的特洛依大战。然而,这场历经九年的大战,为何在最后一年会竟终结在一只木马上呢?原来,眼见特洛伊城久攻不下,于是希腊人便特制了一匹巨大的木马,打算来个"木马屠城计"!希腊人在木马中精心安排了一批视死如归的勇士,借故战败撤退,以便诱敌上勾。果然,被敌军撤退喜讯给弄得神智不清的特洛伊人哪知是计,当晚便把木马拉进城中,打算来个欢天喜地的庆功宴。哪知道,就在大家兴高采烈喝酒欢庆之际,木马中的精锐诸将,早已暗中打开城门,一举来个里应外合的大抢攻。顿时之间,一个美丽的城市就变成了一堆瓦砾、焦土,而从此消失在历史中。
后来我们对于那些会将自己伪装成某种应用程序来吸引使用者下载或执行,并进而破坏使用者计算机资料、造成使用者不便或窃取重要信息的程序,我们便称之为「特洛伊木马型」或「特洛伊型」病毒。
特洛伊木马程序不像传统的计算机病毒一样会感染其它文件,特洛伊木马程序通常都会以一些特殊的方式进入使用者的计算机系统中,然后伺机执行其恶意行为,例如格式化碟、删除文件、窃取密码等。
计算机蠕虫在网络中匍匐前进
计算机蠕虫大家过去可能比较陌生,不过近年来应该常常听到,顾名思义计算机蠕虫指的是某些恶性程序代码会像蠕虫般在计算机网络中爬行,从一台计算机爬到另外一台计算机,方法有很多种例如透过局域网络或是 E-mail.最著名的计算机蠕虫案例就是" ILOVEYOU-爱情虫 "。例如:" MELISSA-梅莉莎" 便是结合"计算机病毒"及"计算机蠕虫"的两项特性。该恶性程序不但会感染 Word 的 Normal.dot(此为计算机病毒特性),而且会通过 Outlook E-mail 大量散播(此为计算机蠕虫特性)。
事实上,在真实世界中单一型态的恶性程序其实愈来愈少了,许多恶性程序不但具有传统病毒的特性,更结合了"特洛伊木马程序"、"计算机蠕虫"型态来造成更大的影响力。一个耳熟能详的案例是"探险虫"(ExploreZip)。探险虫会覆盖掉在局域网络上远程计算机中的重要文件(此为特洛伊木马程序特性),并且会透过局域网络将自己安装到远程计算机上(此为计算机蠕虫特性)。
@实例:
" Explorezip探险虫" 具有「开机后再生」、「即刻连锁破坏」能力
发病日: 不一定
发现日:1999.6.14
产地:以色列
病征:通过电子邮件系统传播的特洛依病毒,与梅莉莎不同之处是这只病毒除了会传播之外,还具有破坏性。计算机受到感染后,其它使用者寄电子邮件给已受到感染的用户。该受到感染的计算机会利用Microsoft的MAPI功能在使用者不知情的状况下,自动将这个病毒"zipped_files.exe"以电子邮件的附件的方式寄给送信给这部计算机的用户。对方收到的信件内容如下:Hi !I received your email and I shall send you a reply ASAP.Till then, take a look at the attached zipped docs.问候语也有可能是Bye, Sincerely, All或是Salutation等。当使用者在不知情的情况下执行TROJ_EXPLOREZIP时,这只病毒会出现如下的假信息"Cannot open file: it does not appear to be a valid archive. If this file is part of a ZIP format backup set, insert the last disk of the backup set and try again. Please press F1 for help."一旦使用者执行了这个病毒,它会存取使用者的C:到Z:磁盘驱动器,寻找以下扩展名的文件,并将所找到的文件以0来填空。造成使用者资料的损失。.c (c source code files).cpp (c++ source code files).h (program header files).asm (assembly source code).doc (Microsoft Word).xls (Microsoft Excel).ppt (Microsoft PowerPoint)
历史意义:
开机后再生,即刻连锁破坏--传统病毒:立刻关机,重新开机,停止它正进行的破坏行动--探险虫:不似传统病毒,一旦重新开机,即寻找网络上的下个受害者
2.8 黑客型病毒
-走后门、发黑色信件、瘫痪网络
自从 2001七月 CodeRed红色警戒利用 IIS 漏洞,揭开黑客与病毒并肩作战的攻击模式以来,CodeRed 在病毒史上的地位,就如同第一只病毒 Brain 一样,具有难以抹灭的历史意义。
如同网络安全专家预料的,CodeRed 将会成为计算机病毒、计算机蠕虫和黑客"三管齐下"的开山鼻祖,日后的病毒将以其为样本,变本加厉地在网络上展开新型态的攻击行为。果不其然,在造成全球 26.2 亿美金的损失后, 不到 2 个月同样攻击 IIS 漏洞的Nimda 病毒,其破坏指数却远高于 CodeRed。 Nimda 反传统的攻击模式,不仅考验着 MIS 人员的应变能力,更使得传统的防毒软件面临更高的挑战。
继红色代码之后,出现一只全新攻击模式的新病毒,透过相当罕见的多重感染管道在网络上大量散播,包含: 电子邮件、网络资源共享、微软IIS服务器的安全漏洞等等。由于 Nimda 的感染管道相当多,病毒入口多,相对的清除工作也相当费事。尤其是下载微软的 Patch,无法自动执行,必须每一台计算机逐一执行,容易失去抢救的时效。
每一台中了Nimda 的计算机,都会自动扫描网络上符合身份的受害目标,因此常造成网络带宽被占据,形成无限循环的 DoS阻断式攻击。另外,若该台计算机先前曾遭受 CodeRed 植入后门程序,那么两相挂勾的结果,将导致黑客为所欲为地进入受害者计算机,进而以此为中继站对其它计算机发动攻势。
类似Nimda威胁网络安全的新型态病毒,将会是 MIS 人员最大的挑战。"
实例:Nimda
发现日:2001.9
发病日:随时随地
产地:不详
病征:通过eMail、网络芳邻、程序安全漏洞,以每 15 秒一次的攻击频率,袭击数以万计的计算机,在 24 小时内窜升为全球感染率第一的病毒
历史意义:
计算机病毒与黑客并肩挑衅,首创猛爆型感染先例,不需通过潜伏期一台计算机一台计算机感染,瞬间让网络上的计算机几乎零时差地被病毒攻击
认识计算机病毒与黑客
防止计算机黑客的入侵方式,最熟悉的就是装置「防火墙 」(Firewall),这是一套专门放在 Internet 大门口 (Gateway) 的身份认证系统,其目的是用来隔离 Internet 外面的计算机与企业内部的局域网络,任何不受欢迎的使用者都无法通过防火墙而进入内部网络。有如机场入境关口的海关人员,必须核对身份一样,身份不合者,则谢绝进入。否则,一旦让恐怖份子进入国境破坏治安,要再发布通缉令逮捕,可就大费周章了。
一般而言,计算机黑客想要轻易的破解防火墙并入侵企业内部主机并不是件容易的事,所以黑客们通常就会用采用另一种迂回战术,直接窃取使用者的帐号及密码,如此一来便可以名正言顺的进入企业内部。而 CodeRed、Nimda即是利用微软公司的 IIS网页服务器操作系统漏洞,大肆为所欲为。
--宽带大开方便之门
CodeRed 能在短时间内造成亚洲、美国等地 36 万计算机主机受害的事件,其中之一的关键因素是宽带网络(Broadband)的"always-on" (固接,即二十四小时联机)特性特性所打开的方便之门。
宽带上网,主要是指 Cable modem 与 xDSL这两种技术,它们的共同特性,不单在于所提供的带宽远较传统的电话拨接为大,同时也让二十四小时固接上网变得更加便宜。事实上,这两种技术的在本质上就是持续联机的,在线路两端的计算机随时可以互相沟通。
当 CodeRed 在 Internet 寻找下一部服务器作为攻击发起中心时,前提必须在该计算机联机状态方可产生作用,而无任何保护措施的宽还用户,"雀屏中选"的机率便大幅提升了。
当我们期望Broadband(宽带网络)能让我们外出时仍可随时连上家用计算机,甚至利用一根小手指头遥控家中的电饭锅煮饭、咖啡炉煮咖啡时,同样的,黑客和计算机病毒也有可能随时入侵到我们家中。计算机病毒可能让我们的马桶不停地冲水,黑客可能下达指令炸掉家里的微波炉、让冰箱变成烤箱、甚至可能利用家用监视摄影机来监视我们的一举一动。唯有以安全为后盾,有效地阻止黑客与病毒的觊觎,才能开启宽带网络的美丽新世界。
计算机及网络家电镇日处于always-on的状态,也使得计算机黑客有更多入侵的机会。在以往拨接上网的时代,家庭用户对黑客而言就像是一个移动的目标,非常难以锁定,如果黑客想攻击的目标没有拨接上网络,那幺再厉害的黑客也是一筹莫展,只能苦苦等候。相对的,宽带上网所提供的二十四小时固接服务却让黑客有随时上下其手的机会,而较大的带宽不但提供家庭用户更宽广的进出渠道,也同时让黑客进出更加的快速便捷。过去我们认为计算机防毒与防止黑客是两回事(见表一),然而 CodeRed却改写了这个的定律,过去黑客植入后门程序必须一台计算机、一台计算机地大费周章的慢慢入侵,但CodeRed却以病毒大规模感染的手法,瞬间即可植入后门程序,更加暴露了网络安全的严重问题
什么是木马?
特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。
它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。
所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。
从木马的发展来看,基本上可以分为两个阶段。
最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。
而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。
所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。
参考资料:
http://bbs.51ww.com/365000/ShowPost.aspx回答者:完颜康康 - 探花 十一级 9-18 12:40
--------------------------------------------------------------------------------
DLL 木马揭秘
相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物。什么是“DLL木马”呢?它与一般的木马有什么不同?
一、从DLL技术说起
要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。
时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。
DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。
二、应用程序接口API
上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。
三、DLL与木马
DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。
四、DLL的运行
虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。
五、DLL木马技术分析
到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。
1.木马的主体
千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。
如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。
DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。
2.动态嵌入技术
Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-
远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策——它和Explorer.exe挂在一起了,你确定要关闭Windows吗?
3.木马的启动
有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。
启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。
Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。
注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。
有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。
4.其它
到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……
六、DLL木马的发现和查杀
经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。
http://zhidao.baidu.com/q?word=%B5%E7%C4%D4%B2%A1%B6%BE%CA%C7%CA%B2%C3%B4&ct=17&pn=0&tn=ikaslist&rn=10
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!