木马程序的概念及特点_木马程序的概念

hacker|
179

什么是木马程序?

木马是一种程序,一种特殊的程序,用来监视和监控计算,以便盗取资料.木马程序是隐藏在进程里面的,并且自我伪装起来,一般人是很难发现的.在获取了需要的资料,比如帐号和密码,便以邮件的方式发送到做木马的人的邮箱.

什么是木马?

什么是木马?

特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。

它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。

所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。

所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。

从木马的发展来看,基本上可以分为两个阶段。

最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。

而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。

所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。

参考资料:

回答者:完颜康康 - 探花 十一级 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,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。

木马的概念是什么

什么是木马?

特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。

它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。

所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。

所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。

从木马的发展来看,基本上可以分为两个阶段。

最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。

而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。

所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。

什么是病毒?

病毒是附着于程序或文件中的一段计算机代码,它可在计算机之间传播。它一边传播一边感染计算机。病毒可损坏软件、硬件和文件。

病毒 (n.):以自我复制为明确目的编写的代码。病毒附着于宿主程序,然后试图在计算机之间传播。它可能损坏硬件、软件和信息。

与人体病毒按严重性分类(从 Ebola 病毒到普通的流感病毒)一样,计算机病毒也有轻重之分,轻者仅产生一些干扰,重者彻底摧毁设备。令人欣慰的是,在没有人员操作的情况下,真正的病毒不会传播。必须通过某个人共享文件和发送电子邮件来将它一起移动。

什么是蠕虫?

与病毒相似,蠕虫也是设计用来将自己从一台计算机复制到另一台计算机,但是它自动进行。首先,它控制计算机上可以传输文件或信息的功能。一旦您的系统感染蠕虫,蠕虫即可独自传播。最危险的是,蠕虫可大量复制。例如,蠕虫可向电子邮件地址簿中的所有联系人发送自己的副本,那些联系人的计算机也将执行同样的操作,结果造成多米诺效应(网络通信负担沉重),使商业网络和整个 Internet 的速度减慢。当新的蠕虫爆发时,它们传播的速度非常快。它们堵塞网络并可能导致您(以及其他每个人)等很长的时间才能查看 Internet 上的网页。

蠕虫 (n.):病毒的子类。通常,蠕虫传播无需用户操作,并可通过网络分发它自己的完整副本(可能有改动)。蠕虫会消耗内存或网络带宽,从而可能导致计算机崩溃。

蠕虫的传播不必通过“宿主”程序或文件,因此可潜入您的系统并允许其他人远程控制您的计算机。最近的蠕虫示例包括 Sasser 蠕虫和 Blaster 蠕虫。

什么是特洛伊木马?

在神话传说中,特洛伊木马表面上是“礼物”,但实际上藏匿了袭击特洛伊城的希腊士兵。现在,特洛伊木马是指表面上是有用的软件、实际目的却是危害计算机安全并导致严重破坏的计算机程序。最近的特洛伊木马以电子邮件的形式出现,电子邮件包含的附件声称是 Microsoft 安全更新程序,但实际上是一些试图禁用防病毒软件和防火墙软件的病毒。

特洛伊木马 (n.):一种表面上有用、实际上起破坏作用的计算机程序。

一旦用户禁不起诱惑打开了以为来自合法来源的程序,特洛伊木马便趁机传播。为了更好地保护用户,Microsoft 常通过电子邮件发出安全公告,但这些邮件从不包含附件。在用电子邮件将安全警报发送给客户之前,我们也会在安全网站上公布所有安全警报。

特洛伊木马也可能包含在免费下载软件中。切勿从不信任的来源下载软件。始终从 Microsoft Update 或 Microsoft Office Update 下载 Microsoft 更新程序或修补程序。

蠕虫和其他病毒如何传播?

实际上,所有病毒和许多蠕虫是无法传播的,除非您打开或运行了受感染的程序。

很多最危险的病毒主要通过电子邮件附件(随电子邮件一起发送的文件)传播。通常,可判断电子邮件是否包含附件,因为您将看到表示附件且包括附件名称的回形针图标。有些文件格式(例如,图片、用 Microsoft Word 写的信件或 Excel 电子表格)可能是每天都要通过电子邮件接收的。当打开受感染的文件附件(通常是双击附件图标以打开附件)时,就会启动病毒。

提示:切勿打开附加在电子邮件中的任何内容,除非附件是您期望的文件且您清楚该文件的内容。

如果收到陌生人发来的带附件的邮件,请立即删除它。不幸的是,有时打开来自熟人的附件也可能不安全。病毒和蠕虫都能从电子邮件程序中窃取信息,然后将自已发送给地址簿中的所有联系人。因此,如果某人发来一封电子邮件,但其中的消息您并不了解,或其中的附件不是您期望的文件,请一定先与发件人联系并确认附件内容,然后再打开文件。

另一些病毒可能通过从 Internet 下载的程序进行传播,或通过从朋友那里借来的或甚至是从商店买来的带病毒计算机磁盘进行传播。这些属于比较少见的病毒感染方式。大多数人是因为打开和运行不认识的电子邮件附件感染病毒。

如何判断你的电脑是否含病毒资料

电脑出故障不只是因为感染病毒才会有的,个人电脑使用过程中出现各种故障现象多是因为电脑本身的软、硬件故障引起的,网络上的多是由于权限设置所致。我们只有充分地了解两者的区别与联系,才能作出正确的判断,在真正病毒来了之时才会及时发现。下面我就简要列出了分别因病毒和软、硬件故障引起的一些常见电脑故障症状分析。

症状 病毒的入侵的可能性 软、硬件故障的可能性

经常死机:病毒打开了许多文件或占用了大量内存;不稳定(如内存质量差,硬件超频性能差等);运行了大容量的软件占用了大量的内存和磁盘空间;使用了一些测试软件(有许多BUG);硬盘空间不够等等;运行网络上的软件时经常死机也许是由于网络速度太慢,所运行的程序太大,或者自己的工作站硬件配置太低。

系统无法启动:病毒修改了硬盘的引导信息,或删除了某些启动文件。如引导型病毒引导文件损坏;硬盘损坏或参数设置不正确;系统文件人为地误删除等。

文件打不开:病毒修改了文件格式;病毒修改了文件链接位置。文件损坏;硬盘损坏;文件快捷方式对应的链接位置发生了变化;原来编辑文件的软件删除了;如果是在局域网中多表现为服务器中文件存放位置发生了变化,而工作站没有及时涮新服器的内容(长时间打开了资源管理器)。

经常报告内存不够:病毒非法占用了大量内存;打开了大量的软件;运行了需内存资源的软件;系统配置不正确;内存本就不够(目前基本内存要求为128M)等。

提示硬盘空间不够:病毒复制了大量的病毒文件(这个遇到过好几例,有时好端端的近10G硬盘安装了一个WIN98或WINNT4.0系统就说没空间了,一安装软件就提示硬盘空间不够。硬盘每个分区容量太小;安装了大量的大容量软件;所有软件都集中安装在一个分区之中;硬盘本身就小;如果是在局域网中系统管理员为每个用户设置了工作站用户的"私人盘"使用空间限制,因查看的是整个网络盘的大小,其实"私人盘"上容量已用完了。

软盘等设备未访问时出读写信号:病毒感染;软盘取走了还在打开曾经在软盘中打开过的文件。

出现大量来历不明的文件:病毒复制文件;可能是一些软件安装中产生的临时文件;也或许是一些软件的配置信息及运行记录。

启动黑屏:病毒感染(记得最深的是98年的4.26,我为CIH付出了好几千元的代价,那天我第一次开机到了Windows画面就死机了,第二次再开机就什么也没有了);显示器故障;显示卡故障;主板故障;超频过度;CPU损坏等等

数据丢失:病毒删除了文件;硬盘扇区损坏;因恢复文件而覆盖原文件;如果是在网络上的文件,也可能是由于其它用户误删除了。

键盘或鼠标无端地锁死:病毒作怪,特别要留意"木马";键盘或鼠标损坏;主板上键盘或鼠标接口损坏;运行了某个键盘或鼠标锁定程序,所运行的程序太大,长时间系统很忙,表现出按键盘或鼠标不起作用。

系统运行速度慢:病毒占用了内存和CPU资源,在后台运行了大量非法操作;硬件配置低;打开的程序太多或太大;系统配置不正确;如果是运行网络上的程序时多数是由于你的机器配置太低造成,也有可能是此时网路上正忙,有许多用户同时打开一个程序;还有一种可能就是你的硬盘空间不够用来运行程序时作临时交换数据用。

系统自动执行操作:病毒在后台执行非法操作;用户在注册表或启动组中设置了有关程序的自动运行;某些软件安装或升级后需自动重启系统。

0条大神的评论

发表评论