当前位置:文档之家› 木马程序设计

木马程序设计

木马程序设计摘要:在计算机日益普及的时代,信息在网络上的传播已经凸显出不可或缺的重要地位。

在感受网络带来的信息交流与资源共享的益处的同时,各种病毒也在危害着计算机用户,木马程序是其中最为猖獗的一类。

本文通过利用C#编程等方法分析与设计一个简单的木马程序,让人们更进一步了解木马的功能、原理、植入方法以及如何防护与处理木马。

关键词:木马技术;远程控制; .NET类;1 引言1.1 课题背景随着信息技术的飞速发展,计算机和计算机通信网络己经成为当今社会不可缺少的基本组成部分,依托互联网技术的全球信息化浪潮冲击和深刻影响着人类政治、经济、社会的方方面面,对经济发展、国家安全、国民教育和现代管理都起着重要的作用。

随着网络技术和信息化应用范围的不断扩大,网络信息应用领域开始从传统的、小型业务系统逐渐向大型、关键业务系统扩展,如政府部门业务系统、金融业务系统、教育科研系统等等。

但随着网络应用的增加,以计算机信息系统为犯罪对象和犯罪工具的各类新型犯罪活动不断出现。

网络安全风险也不断暴露出来,网络信息安全问题已经成为制约各类网络信息系统实用化和进一步发展的不可忽视因素,对一些关系国民经济的重要信息系统和关系国家安全的网络信息系统,己经到了非解决不可的地步。

其中,利用木马技术入侵、控制和破坏网络信息系统,是造成网络信息安全问题的典型表现之一。

木马是一种基于C/S模式的远程控制技术,能在被监控对象毫无察觉的情况下渗透到对方系统并隐藏在合法程序中的计算机程序。

一旦植入和触发成功,控制端与被控制端之间就能遵照TCP/IP协议进行数据通信,从而使得控制者获取被控制者的相关信息。

它们通常以欺骗为手段,在用户不知情的情况下进行安装,并暗中把所获的机密信息发送给第三者,威胁用户电脑中的数据安全并侵犯个人隐私,严重影响了人们正常工作和生活。

2008年1月至10月,瑞星公司共截获新病毒样本930余万个,其中绝大部分(776万)是盗号木马、后门程序,专门窃取网游账号、网银账号等虚拟财产,具有极其明显的经济利益特征。

时隔两年,不断有新的木马病毒被发现,社会上己经掀起一个木马研究的热潮。

正是在这样的背景下,我的课题主要设计一个简单的木马程序,进一步地了解木马程序的结构和实现原理,加深对相关知识的了解,进而提高对木马的防范水平。

1.2 课程设计目的本课程设计的目的主要有以下几个:(1)加深对socket套接字在编程中的应用理解;(2)加深对服务器端以及客户端编程的应用;(3)掌握.NET类库中的命令空间;(4)进一步熟悉Visual Studio 2008开发工具,掌握相关控件的使用方法。

(5)进一步了解木马的设计原理,提高对木马的防范水平。

(6)通过本次课程设计,提高利用C#编程的能力。

2 程序设计平台2.1开发工具本课程设计使用了Microsoft Visual Studio 2008作为开发工具,使用C#作为开发语言。

Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。

Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 .NET Framework 3.5 加速开发)、对 Web 开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。

Visual Studio 2008 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持 AJAX 的Web 应用程序。

开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的 Web 应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问 应用程序服务和 Microsoft 平台。

2.2开发语言设计使用C#语言。

C# 与C++很相似,还借鉴了Java的许多特点。

但是C# 比C++更安全、比Java更高效,特别适合于Windows环境下的.NET编程。

C# 是一种面向对象的程序设计语言,最初是作为.NET的一部分而开发的。

换句话说,.NET是围绕C# 而开发的。

C# 的面向过程和对象的语法,是基于C++的,但也包含了另外几种程序设计语言的特征(其中最显著的是Delphi、Visual Basic 和Java ),C# 特别强调简易性(如所需符号比C++的少、所需修饰比Java 的少)。

用C# 进行托管代码编程,具有如下优点:完全面向对象的设计、非常强的类型安全、很好地融合了VB 和C++的强大功能、垃圾内存回收、类似于C++的语法和关键字、用委托取代函数指针增强了类型安全、为程序员提供版本处理技术可解决老版本的程序不能在新DLL 下运行的“动态链接库地狱”(DLL hell )问题。

[1]3 主要原理3.1 木马工作原理木马是一类特殊的计算机程序,其作用是在一台计算机上监控被植入木马的计算机的情况。

所以木马的结构是一种典型的客户端/服务器 (C/S)模式。

木马程序一般分为客户端(Clinet)和服务器端(Server),服务器端程序是控制者传到目标计算机的部分,骗取用户执行后,便植入计算机,作为响应程序。

客户端是用来控制目标主机的部分,安装在控制者的计算机,它的作用是连接木马服务器端程序,监视或控制远程计算机。

典型的木马工作原理是:当服务器端在目标计算机上被执行后,木马打开一个默认的端口进行监听,当客户机向服务器端提出连接请求,服务器上的相应程序就会自动运行来应答客户机的请求,服务器端程序与客户端建立连接后,由客户端发出指令,服务器在计算机中执行这些指令,并将数据传送到客户端,以达到控制主机的目的。

(如图3.1)图3.1木马服务器端与客户端的通信 木马客户端 木马服务端指令 结果 TCP/IP 连接这是木马程序的基本工作原理,其中还包括木马的种植,隐藏,通信等。

下面分别就相关技术原理展开论述。

3.2木马种植原理特洛伊木马大都采用客户机/服务器模式:客户端程序是在你自己的PC机上运行.服务器端程序是安装在目标主机上运行。

如果你不能把服务器端程序植入目标主机,那么你的特洛伊木马程序功能再完善,也没有办法启动木马的功能。

通常特洛伊木马的植入技术有以下几种:[2]⑴通过网上邻居(即共享入侵)要求:对方打开139端口且有共享的可写目录.用法:直接将木马放入即可.⑵通过IPC$要求:双方均需打开IPC$且需要有对方的一个普通用户的帐号(具有写权限)用法:先用NET命令连上对方电脑 net use \\IP\IPC$ "密码" /user:用户名再用COPY命令将木马复制到对方电脑net copy本地木马路径远程木马路径+木马名字⑶通过网页植入要求:对方IE需要是IE未打补丁版本用法1:利用IE的IFRAME漏洞入侵.用法2:利用IE的DEBUG代码入侵.用法3:通过JS,VBS代码入侵用法4:通过ActiveX或Java程序入侵.⑷通过OE入侵.要求:对方OE未打补丁.用法:与③中的用法1,3,4相同.⑸通过WORD/EXCEL/ACCESS入侵要求:对方未对宏的运行做限制.用法1:编写恶意的宏,夹杂木马,运行office文档便植入主机中.用法2:通过OFFICE的帮助文件漏洞入侵.⑹通过Unicode漏洞入侵要求:对方有Unicode漏洞用法(举例):_blank>http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe? +COPY+本地木马路径+远程路径+木马名⑺通过FTP入侵要求:对方的FTP可以匿名登陆而且可写入用法:直接将木马传上去即可.⑻通过TELNET入侵要求:具有对方的一个具有写权限的账号用法:用TELNET命令将木马传上去.⑼ EXE合并木马要求:无(但用于合并木马的EXE文件体积应该尽量小,而且应该是比较熟悉的程序.)用法:用EXE文件合并器将两个EXE合并即可.⑽ winrar木马入侵要求:对方安装了Winrar用法:将压缩包设置为自解压格式,并设置自动运行的选项,再将RAR图标更改.⑾文件夹惯性点击法要求:无用法:将一个木马伪装成文件夹的图标,再将其放于几层目录中.3.3木马隐藏原理(1)木马的启动隐藏方式①本地文件伪装最常用的文件隐藏是将木马病毒伪装成本地文件。

木马病毒将可执行文件伪装成图片或文本---在程序中把图标改成WINDOWS的默认图片图标,再把文件名改为.JPG.EXE。

由于WINDOWS默认设置是不显示已知的文件后缀名,文件将会显示为.JPG,不注意的人点击这个图标就在无意间启动了木马程序。

②通过修改系统配置来实现木马的启动隐藏利用配置文件的特殊作用,木马很容易就能在大家的计算机中运行。

像Autoexec.bat和Config.sys。

特别是系统配置文件MSCONFIG.SY中的系统启动项---system.ini,window.ini是众多木马的隐藏地。

Windows安装目录下的system.ini的[boot]字段中,正常情况下为boot=“Explorer.exe”,如果后面有其他的程序,如这样的内容,boot=“Explorer.exe file.exe”,这里的file.exe,可能就是木马服务端程序。

另外,在System.ini中的[386enh]字段,要注意检查在此段内的driver=路径\程序名。

这里也有可能被木马所利用。

再有System.ini中的[drivers],[drivers32],[mci]这3个字段,也是起到加载驱动程序的作用,因此也是增添木马程序的好场所。

[2](2)进程隐藏进程隐藏有两种情况,一种隐藏是木马程序的进程仍然存在,只是不在进程列表里;采用APIHOOK技术拦截有关系统函数的调用实现运行时的隐藏,替换系统服务等方法导致无法发现木马的运行痕迹。

另外一种方法是木马不以一个进程或者服务的方式工作。

将木马核心代码以线程或DLL的方式插入到远程进程中,由于远程进程是合法的用户程序,用户又很难发现被插入的线程或DLL,从而达到木马隐藏的目的。

在Windows系统中常见的真隐藏方式有:注册表DLL插入、特洛伊DLL、动态嵌入技术、CreateProcess插入和调试程序插入等。

3.4木马通信原理如图3.2所示,对于客户端来说要与服务器端建立连接必须知道服务器端的端口IP地址,由于客户端端口是人事先设定的,为己知项,所以最重要的是如何获得服务器端的IP地址。

获得服务器端的IP地址的方法丰要有两种:信息反馈和IP扫描。

所谓信息反馈是指木马成功安装后会收集一些服务端的软硬件信息,并通过E-MAIL,IRC 或ICQ 的方式告知控制端用户。

相关主题