计算机网络课程设计木马程序设计与实现Word下载.doc
《计算机网络课程设计木马程序设计与实现Word下载.doc》由会员分享,可在线阅读,更多相关《计算机网络课程设计木马程序设计与实现Word下载.doc(41页珍藏版)》请在冰点文库上搜索。
计算机网络
时间
2010-2011学年第二学期18~19周
学生姓名
指导老师
题目
木马程序的设计与实现
主要内容:
(1)查找木马程序主要技术及相应软件;
(2)比较他们的技术及优缺点;
(3)实现一个简单的木马程序;
(4)提交文档;
要求:
(1)按要求编写课程设计报告书,能正确阐述设计结果。
(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。
(3)学会文献检索的基本方法和综合运用文献的能力。
(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
应当提交的文件:
(1)课程设计报告。
(2)课程设计附件(源程序、各类图纸、实验数据、运行截图等)
第38页共38页
《木马程序的设计与实现》
学生姓名:
指导老师:
摘要本文在研究著名木马BO2K技术的基础上设计了一款远程控制木马。
该木马程序能够通过客户端对远程主机进行控制和监视,服务端可以自动连接客户端。
另外该木马程序还包括远程文件操作(文件复制、拷贝、删除、下载、上传等),远程系统控制(重启、屏幕锁定、启动项管理),网络连接控制,远程进程管理和键盘监控等功能。
最后本文实现了这一款木马程序,并对其进行了测试。
测试结果显示该木马程序实现了所有的功能,能够对远程主机进行控制。
关键字客户端/服务端;
BO2K;
远程控制
1引言
随着互联网技术的迅猛发展,网络给人们带来了很多便利,日益发达的网络产品越来越多。
伴随这样的发展,随之而来的是越来越多的帐号与密码,而这些帐号与密码背后伴随的是很多的经济价值。
在这种状况下,很多人想尽一切办法的去找取配套的密码与帐号,所以为了使帐号与密码更加安全,有必要去研究木马的工作原理。
1.1课程设计目的
(1)掌握木马编程的相关理论,理解木马工作的基本原理,学会运用C++进行编程实现。
(2)加深对课本知识的理解,并运用所学理论和方法进行一次综合性的设计训练,同时掌握工程设计的具体步骤和方法,从而培养独立分析问题和解决问题的能力,提高实际应用水平。
(3)以所学知识为基础,针对具体设计问题,充分发挥自己的主观能动性,独立地完成课程设计分配的各项任务,并通过课程设计培养严谨的科学态度和认真的工作作风。
1.2课程设计内容
1.3课程设计要求
2设计原理
2.1木马的背景介绍
《荷马史诗》中所描述的那场特洛伊战争想必很多读者都已经很熟悉了。
传说古希腊士兵藏在木马内进入了特洛伊城,从而占领了敌方城市,取得了战争的胜利。
这与中国的“明修栈道,暗渡陈仓”之计有着异曲同工之妙。
网络社会中的“特洛伊木马”并没有传说中的那样庞大,它们是一段精心编写的程序。
与传说中的木马一样,它们会在用户毫不知情的情况下悄悄地进入用户的计算机,进而反客为主,窃取机密数据,甚至控制系统。
特洛伊木马(Trojan)[1](也叫黑客程序或后门病毒)是指隐藏在正常程序中的一段具有特殊功能的恶意代码,具备破坏和删除文件、发送密码、记录键盘和攻击等功能,会使用户系统被破坏甚至瘫痪。
恶意的木马程序具备计算机病毒的特征,目前很多木马程序为了在更大范围内传播,从而与计算机病毒相结合。
因此,木马程序也可以看做一种伪装潜伏的网络病毒。
1986年出现了世界上第一个计算机木马。
[2]它伪装成Quicksoft公司发布的共享软件PC-Write的2.72版本,一旦用户运行,这个木马程序就会对用户的硬盘进行格式化。
而1989年出现的木马更富有戏剧性,它竟然是通过邮政邮件进行传播的。
木马的制造者将木马程序隐藏在含有治疗AIDS和HIV的药品列表、价格、预防措施等相关信息的软盘中,以传统的邮政信件的形式大量散发。
如果邮件接收者浏览了软盘中的信息,木马程序就会伺机运行。
它虽然不会破坏用户硬盘中的数据,但会将用户的硬盘加密锁死,然后提示受感染的用户花钱消灾。
计算机网络的发展给木马的传播带来了极大的便利,其传播速度和破坏范围都是以往的木马程序所无法比拟的。
木马兼备伪装和传播这两种特征并与TCP/IP网络技术相结合。
木马一般分为客户端(client)和服务端(server)两部分。
对于木马而言,“服务端”和“客户端”的概念与我们平常理解的有所不同。
在一般的网络环境中,“服务器”(server)往往是网络的核心,我们可以通过服务器对“客户端”进行访问和控制,决定是否实施网络服务。
而木马则恰恰相反,客户端是控制端,扮演着“服务器”的角色,是使用各种命令的控制台,而服务端是被控制端。
木马的制造者可以通过网络中的其他计算机任意控制服务端的计算机,并享有服务端的大部分操作权限,利用控制端向服务器端发出请求,服务端收到请求后会根据请求执行相应的动作,其中包括:
查看文件系统,修改、删除、获取文件;
查看系统注册表,修改系统设置;
截取计算机的屏幕显示,并且发给控制端;
查看系统中的进程,启动和停止进程;
控制计算机的键盘、鼠标或其他硬件设备的动作;
以本机为跳板,攻击网络中的其他计算机;
通过网络下载新的病毒文件。
一般情况下,木马在运行后,都会修改系统,以便在下一次系统启动时自动运行该木马程序。
修改系统的方法有下面几种:
利用Autoexec.bat和Config.sys进行加载;
修改注册表;
修改win.ini文件;
感染Windows系统文件,以便进行自动启动并达到自动隐藏的目的。
随着目前国内网络游戏和网上银行的兴起,以盗取网络游戏软件、OICQ、网上银行的登陆密码和账号为目的的木马病毒越来越猖獗。
这些病毒利用操作系统提供的接口,在后台不停地查找这些软件的窗体。
一旦发现登陆窗体的时候就会找到窗体中的用户名和密码的输入框,然后窃取输入的密码和用户名。
还有的木马会拦截计算机的键盘和鼠标的动作,只要键盘和鼠标被点击,病毒就会判断当前正在进行输入的窗体是否是游戏的登陆界面,如果是的话就将键盘输入的数据复制一份。
还有的病毒会直接拦截网络数据包,并窃取数据包中的密码和用户名。
病毒窃取到密码和用户名后会通过网络发送邮件,将窃取到的数据发送到黑客的邮箱内,用以进行盗窃或网络诈骗。
木马病毒的兴起往往伴随着网络犯罪的发展和延伸。
因此,掌握木马病毒的防范技巧和知识就像是为我们的计算机穿上了一层防弹衣,对于阻止网络犯罪的蔓延和侵害有着至关重要的作用。
2.2木马的发展现状
到目前为止,木马的发展已经历了五代[3]:
第一代木马只是实现简单的密码窃取、发送等,在隐藏和通信方面均无特别之处。
第二代木马的典型代表是冰河,它以文件关联方式启动。
通过电子邮件传送信息,在木马技术发展史上开辟了新的篇章。
第三代木马的信息传输方式有所突破采用ICMP协议,增加了查杀的难度。
第四代木马在进程隐藏方面获得了重大突破,采用插入内核的嵌入方式、利用远程插入线程技术、嵌入队DLL线程,或挂接PSAPI等,实现木马程序的隐藏,利用反弹端口技术突破防火墙限制,在WindowsNT/2000下取得了良好的隐藏效果。
第五代木马与病毒紧密结合。
利用操作系统漏洞,直接实现感染传播的目的,而不必像以前的木马那样需要欺骗用户主动激活,例如最近新出现的类似冲击波病毒的术马——噩梦II。
2.3木马的工作原理
木马的运行大致分为六个阶段,本文将结合这六个阶段给大家详细介绍木马的工作原理。
一.配置木马
一般来说一个设计成熟的木马都有木马配置程序,从具体的配置内容看,主要是为了实现以下两方面功能:
(1)木马伪装:
木马配置程序为了在服务端尽可能好的隐藏木马,会采用多种伪装手段,如修改图标,捆绑文件,定制端口,自我销毁等。
(2)信息反馈:
木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址,帐号信息等。
二.传播木马
(1)传播方式:
木马的传播方式主要有三种:
一种是通过E-MAIL[4],控制端将木马程序以附件的形式夹在邮件中发送出去,收信人只要打开附件系统就会感染木马;
另一种是软件下载,一些非正规的网站以提供软件下载为名义,将木马捆绑在软件安装程序上,下载后,只要一运行这些程序,木马就会自动安装;
通过在网页中加入脚本代码,植入木马,也被称为网马。
当然现在的木马传播途径已经远远不止这些,类似通过第三方而已程序下载等等,请大家牢记,病毒技术和网络技术共同发展的,永远不要轻易放弃一个微小的细节。
(2)伪装方式:
鉴于木马的危害性,很多人对木马知识还是有一定了解的,这对木马的传播起了一定的抑制作用,这是木马设计者所不愿见到的,因此他们开发了多种功能来伪装木马,以达到降低用户警觉,欺骗用户的目的。
但不管如何伪装木马由于其工作原理的限制,只要细心是完全可以及时发现和预防的。
(a)修改图标
这种木马主要是通过伪装成大家熟知的压缩包或文挡图标,来迷惑用户,从而消除用户的警觉性。
(b)捆绑文件
这种伪装手段是将木马捆绑到一个安装程序上,当安装程序运行时,木马在用户毫无察觉的情况下,从后台安装到系统中。
至于被捆绑的文件一般是可执行文件(即EXE,COM一类的文件),现在也有通过绑定图片、压缩包等来达到目的的。
(c)出错显示
有一定木马知识的人都知道,如果打开一个文件,没有任何反应,这很可能就是个木马程序,木马的设计者也意识到了这个缺陷,所以已经有木马提供了一个叫做出错显示的功能。
当服务端用户打开木马程序时,会弹出一个错误提示框(当然是假的)。
例如几年前风行的QQ木马等都是利用这种技术实现的。
(d)定制端口
很多老式的木马端口都是固定的,这给判断是否感染了木马带来了方便,只要查一下特定的端口就知道感染了什么木马,所以现在很多新式的木马都加入了定制端口的功能,控制端用户可以在1024---65535之间任选一个端口作为木马端口(一般不选1024以下的端口),这样就给判断所感染木马类型带来了麻烦。
(e)自我销毁
这项功能是为了弥补木马的一个缺陷。
我们知道当服务端用户打开含有木马的文件后,木马会将自己拷贝到WINDOWS的系统文件夹中,一般来说原木马文件和系统文件夹中的木马文件的大小是一样的,那么中了木马的朋友只要在近来收到的信件和下载的软件中找到原木马文件,然后根据原木马的大小去系统文件夹找相同大小的文件,判断一下哪个是木马就行了。
而木马的自我销毁功能是指安装完木马后,原木马文件将自动销毁,这样服务端用户就很难找到木马的来源,在没有查杀木马的工具帮助下,就很难删除木马了。
(f)木马更名
安装到系统文件夹中的木马的文件名一般是固定的,那么查杀木马在系统文件夹中特定的文件,就可以断定中了什么木马。
所以现在有很多木马都允许控制端用户自由定制安装后的木马文件名,这样很难判断所感染的木马类型了。
三.运行木马
服务端用户运行木马程序后,木马就会自动进行安装。
首先将自身拷贝到WINDOWS的系统文件夹中,然后在注册表,启动组,非启动组中设置好木马的触发条件,这样木马的安装就完成了。
安装后就可以启动木马了。
(1)由触发条件激活木马
触发条件是指启动木马的条件,大致出现在下面八个地方:
(a)注册表:
打开HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion下的五个以Run和RunServices主键,在其中寻找可能是启动木马的键值。
(b)WIN.INI:
C:
WINDOWS目录下有一个配置文件win.ini,用文本方式打开,在[windows]字段中有启动命令load=和run=,在一般情况下是空白的,如果有启动程序,可能是木马。
(c)SYSTEM.INI:
WINDOWS目录下有个配置文件system.ini,用文本方式打开,在[386Enh],[mic],[drivers32]中有命令行,在其中寻找木马的启动命令。
(d)Autoexec.bat和Config.sys:
在C盘根目录下的这两个文件也可以启动木马。
但这种加载方式一般都需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行。
(e)*.INI:
即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖这同名文件,这样就可以达到启动木马的目的了。
(f)注册表:
打开HKEY_CLASSES_ROOT文件类型/shellopencommand主键,查看其键值。
举个例子,国产木马“冰河”就是利用这个键值,将“C:
WINDOWSNOTEPAD.EXE%1”该为“C:
WINDOWSSYSTEMSYXXXPLR.EXE%1”,这时你双击一个TXT文件后,原本应用NOTEPAD打开文件的,现在却变成启动木马程序了。
还要说明的是不光是TXT文件,通过修改HTML,EXE,ZIP等文件的启动命令的键值都可以启动木马。
(g)捆绑文件:
实现这种触发条件首先要控制端和服务端已通过木马建立连接,然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。
(h)启动菜单:
在“开始---程序---启动”选项下也可能有木马的触发条件。
(2)木马运行过程
木马被激活后,进入内存,并开启事先定义的木马端口,准备与控制端建立连接。
这时服务端用户可以在MS-DOS方式下,键入netstat-an查看端口状态,一般个人电脑在脱机状态下是不会有端口开放的,如果有端口开放,你就要注意是否感染木马了。
在上网过程中要下载软件,发送信件,网上聊天等必然打开一些端口,下面是一些常用的端口:
(a)1---1024之间的端口:
这些端口叫保留端口,是专给一些对外通讯的程序用的,如FTP使用21,SMTP使用25,POP3使用110等。
只有很少木马会用保留端口作为木马端口。
(b)1025以上的连续端口:
在上网浏览网站时,浏览器会打开多个连续的端口下载文字,图片到本地硬盘上,这些端口都是1025以上的连续端口。
(c)4000端口:
这是OICQ的通讯端口。
四.信息泄露:
一般来说,设计成熟的木马都有一个信息反馈机制。
所谓信息反馈机制是指木马成功安装后会收集一些服务端的软硬件信息,并通过E-MAIL或其他方式告知控制端用户,包括使用的操作系统,系统目录,硬盘分区况,系统口令等,在这些信息中,最重要的是服务端IP,因为只有得到这个参数,控制端才能与服务端建立连接。
五.建立连接:
一个木马连接的建立首先必须满足两个条件:
一是服务端已安装了木马程序;
二是控制端,服务端都要在线。
在此基础上控制端可以通过木马端口与服务端建立连接。
六.远程控制:
木马连接建立后,控制端端口和木马端口之间将会出现一条通道,并通过木马程序对服务端进行远程控制。
下面我们就介绍一下控制端具体能享有哪些控制权限,这远比你想象的要大。
(1)窃取密码:
一切以明文的形式,*形式或缓存在CACHE中的密码都能被木马侦测到,此外很多木马还提供有击键记录功能,它将会记录服务端每次敲击键盘的动作,所以一旦有木马入侵,密码将很容易被窃取。
(2)文件操作:
控制端可藉由远程控制对服务端上的文件进行删除,新建,修改,上传,下载,运行,更改属性等一系列操作,基本涵盖了WINDOWS平台上所有的文件操作功能。
(3)修改注册表:
控制端可任意修改服务端注册表,包括删除,新建或修改主键,子键,键值。
有了这项功能控制端就可以禁止服务端光驱的使用,锁住服务端的注册表,将服务端上木马的触发条件设置得更隐蔽的一系列高级操作。
(4)系统操作:
这项内容包括重启或关闭服务端操作系统,断开服务端网络连接,控制服务端的鼠标,键盘,监视服务端桌面操作,查看服务端进程等,控制端甚至可以随时给服务端发送信息。
3设计步骤
BO2K全名为BackOrifice2000,是一个名为“死牛之祭”的黑客组织发布的。
它是一个可以搜集信息,执行系统命令,重新设置机器,重新定向网络的客户端/服务器应用程序。
BO2K支持多个网络协议,它可以利用TCP或UDP来传送,还可以用XOR加密算法或更高级的3DES加密算法加密。
BO2K程序主要分成三个部分:
1、bo2k.exe:
这是服务器程序,它的作用就是负责执行入侵者所下的命令,这个程序其实就是特洛依木马入侵程序的主体,因为它要偷偷地放入到被入侵者的电脑里面,这样我们才可以透过它执行我们想要的动作。
你可以将它的服务器程序作为电子邮件的附件而发送给对方,它可以正常地运行在安装了Windows95、Windows98和WindowsNT的计算机当中。
2、bo2kgui.exe:
这是BO2Kd的控制程序,其主要作用就是用来控制服务器程序执行我们想要的命令。
当对方执行了该服务器程序后,你就可以使用BO2K的远程控制程序,通过网络连接获得对方系统的完全访问权限。
3、bo2kcfg.exe:
这是服务器设置程序,在使用boserve.exe服务器程序之前,有一些相关的功能必须通过它来进行设置。
如:
使用的TCP/IP端口、程序名称、密码等。
另外,BO2K还支持插件功能,这样你就可以自己编写功能更强的插件来扩展BO2K的功能。
3.1配置BO2K服务器
BO2K服务器的配置相当简单,你只要根据其配置向导进行选择就可以了。
向导会指导用户进行几个设置,包括服务器文件名(可执行文件)、网络协议(TCP或UDP)、端口、密码等。
用鼠标双击BO2K服务器配置程序bo2kcfg.exe文件,出现“BO2K配置向导”,如图3.1
图3.1BO2K配置向导
用鼠标单击“下一个”,出现如图3.2的对话框,要求选择作为BO2K服务器的文件。
选择好后单击“下一个”按钮;
图3.2BO2K配置向导
这时来到“网络类型”选择对话框,如图3.3。
请选择一个网络类型后单击“下一个”按钮;
图3.3BO2K配置向导
这时向导要求输入端口地址,如图3.4。
请在“挑选端口编号”文本输入框中输入,然后单击“下一个”按钮。
图3.4BO2K配置向导
这时向导要求选择“加密类型”,如图3.5。
请选择一种加密类型后,单击“下一个”按钮。
图3.5BO2K配置向导
这时向导要求你输入口令,如图3.6。
在文本输入框中输入口令后,单击“下一个”按钮。
图3.6BO2K配置向导
这时,我们已经可以看到向导提示配置完成,用鼠标单击“完成”按钮,如图3.7。
图3.7BO2K配置向导
这时候出现如图3.8的“BO2K服务器配置”主界面,从这里可以对BO2K服务器文件进行更详细的设置。
图3.8BO2K配置向导
用鼠标单击“打开服务器”按钮,弹出“打开”对话框,选择你要打开的BO2K服务器文件,如图3.9。
图3.9打开服务器文件
选择好以后,单击“打开”按钮,返回到“BO2K服务器配置对话框”,我们可以对服务器文件进行设置,如图3.10。
图3.10BO2K服务器配置
其中的“选项变量”命令包括以下几类:
1、FileTransfer
选项:
FileXferNetType
描述:
列出/更改网络传输协议
FileXferBindStr
文件传输的绑定,默认是RANDOM(随机)
FileXferEncryption
列出/更改加密方法
FileXferAuth
文件传输证明,默认是NULLAUTH(没有证明)
2、TCPIO
DefaultPort
列出/更改TCP传输使用的端口
3、UDPIO
列出/更改UDP传输使用的端口
4、Built-In
LoadXOREncryption
使用/禁止XOR加密,比3DES差劲
LoadNULLAUTHAuthentication
使用/禁止文件证明
LoadUDPIOModule
使用/禁止UDP传输协议
LoadTCPIOModule
使用/禁止传输协议
5、XOR
XORKey
列出/更改XOR加密方式的密码
6、Startup
InitCmdNetType
列出/更改启动时的网络协议
InitCmdEncryption
启动时列出当前的加密值
InitCmdAuth
列出/更改当前的文件证明设置
IdleTimeout(ms)
更改服务端超时断开的时间(毫秒为单位)
7、Stealth
Runatstartup
使用/禁止BO2K在计算机启动是运行
Deleteoriginalfile
删除安装文件(EnableorDisable).
Runtimepathname
更改运行时的路径