基于VC的一种简单木马的设计论文.docx
- 文档编号:23346668
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:34
- 大小:436.18KB
基于VC的一种简单木马的设计论文.docx
《基于VC的一种简单木马的设计论文.docx》由会员分享,可在线阅读,更多相关《基于VC的一种简单木马的设计论文.docx(34页珍藏版)》请在冰豆网上搜索。
基于VC的一种简单木马的设计论文
基于VC的一种简单木马的设计
摘要
目前,Internet已经得到非常广泛的使用,但是同时,各种黑客工具和网络攻击手段也层出不穷。
黑客入侵给人们造成的各种损失也越来越大,其中木马就是被广泛使用的黑客工具之一,它对网络安全造成了极大的威胁。
本毕业设计使用VC++6.0为开发平台设计的一个简单的木马程序,主要实现了获取远程被控计算机的基本信息、锁定其鼠标和键盘、注销重启和关闭被控计算机、隐藏并开启其任务栏、向被控计算机发送消息等功能。
本论文从选题背景入手,介绍了与本系统相关的一些理论知识,以及开发工具,随后详细介绍了该木马程序的开发过程,包括服务端/客户端的socket编程,木马服务端和客户端通信的实现,以及实现远程控制的各种具体功能的实现。
最后对系统进行测试,并对所做工作进行总结。
关键词:
木马;远程控制;VC;WindowsSocket
TheDesignoftheTrojanHorseBasedonVisualC
Abstract
WiththepopularizationoftheInternetandthedevelopmentofitsapplication,variouskindsofInternet-attackingmethodsareappeared.TheseInternet-attackinghaveseriouslydamagedthemachinesandtheInternetusers.TheTrojanhorseisoneofthepopulartoolsusedbyhackerandinfluencedthenetworksecuritymoreandmore.
InthisdesignasimpleTrojanhorseisdevelopedwithVisualC++6.0.Theprimaryfunctionincludes:
gettingsysteminformationofthelong-distancecomputer,lockingitsmouseandkeyboard,rebootinglogoutandturnoffthecomputer,hidingtaskbar,sendingmessage,catchingandkillingtheprocessandsoon.
Inthispaper,thebackgroundandthedevelopmenttechnologyisintroducedatfirst,andthenitintroducesthedesignprocessoftheTrojanHorse,includessocketprogrammingoftheserverandclient,communicationbetweentheserverandclientandimplementationthefunctionindetail.
Keywords:
TrojanHorse;Long-distancecontrol;VC;WindowsSocket
目录
论文总页数:
26页
1引言1
2相关技术介绍1
2.1开发环境VC++6.01
2.2套接字Socket编程原理1
2.3木马基本原理3
2.3.1木马定义3
2.3.2木马发展3
2.3.3木马基本组成4
2.3.4C/S客户服务器模式4
2.3.5木马入侵过程5
3系统设计7
3.1系统总体设计7
3.1.1设计目标7
3.1.2功能介绍8
3.2具体功能实现9
3.2.1获取信息功能9
3.2.2清除信息10
3.2.3锁定鼠标和键盘10
3.2.4注销、重启和关机11
3.2.5隐藏并开启任务栏13
3.2.6发送消息16
3.2.7查看进程17
3.2.8木马的伪装20
4系统测试23
结论24
参考文献24
致谢25
声明26
1引言
以Internet为代表的全球性信息化浪潮日益高涨,信息网络技术的应用正日益普及,伴随网络的普及,安全问题日益成为影响网络效能的重要问题。
不管是菜鸟级别的还是高手级别的黑客,都越来越频繁的使用木马进行网络攻击。
黑客使用木马对网络造成的危害越来越大。
最早的特洛伊木马就是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
而远程监控木马虽然从技术划分它属于第一代木马,但是由于其良好的操作界面和容易伪装的特性,现在仍然被广泛使用。
由于大多数人对网络安全的态度都是和消极和被动的,往往等到灾害产生了才想办法解决,完全忽视了预防重于治理的重要性。
本文详细分析了远程监控模式的木马的工作原理和设计方法,对木马技术有详细的认识,能够为预防和治理黑客入侵有极大的帮助。
2相关技术介绍
2.1开发环境VC++6.0
VC自诞生以来,一直是Windows环境下最主要的应用开发系统之一,Visualc++不仅是C++语言的集成开发环境,而且与Win32紧密相连,利用Visualc++开发系统可以完成各种各样的应用程序开发,从底层软件到上层直接面向用户的软件,强大的调试功能为大型复杂软件的开发提供了有效的排错手段。
进入20世纪90年代以来,随着多媒体技术和图形图像技术的不断发展,可视化技术(Visual)得到广泛重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术。
所谓可视化,一般是指软件开发阶段的可视化和计算机图形技术和方法的应用。
可视化编程就是软件开发阶段的可视化。
Visualc++是一款很好的可视化开发工具。
界面友好,缩短了开发时间,便于程序员操作。
开发环境是程序员同VC++的交互界面,通过Visualc++程序员可以直接访问C++源代码编辑器、资源编辑器、使用内部调试器还可以创建项目文件。
本程序中,用VC++6.0中的MFC开发环境,server使用MFC中的单文档模式来实现,client使用MFC中的基本对话框模式。
2.2套接字Socket编程原理
最初由美国伯克利大学在Unix上推出的,当应用程序访问通信协议的操作系统时调用套接字(Socket)。
Socket的出现,使程序员可以方便的访问TCP/IP,从而开发各种网络应用的程序。
套接字存在于通信区域中(即地址族),它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性组合在一起。
它通常只与同一区域的套接字交换数据,Windowssocket只支持一个通信区域:
网际域(AF_IENT),这个域被使用网际协议族通信的进程使用。
套接口有三种类型:
流式套接口、数据报套接口、原始套接口。
流式套接口:
定义了可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。
数据报套接口:
定义了一种无连接的服务,数据通过相互独立的报文传输,是无序的,并且不保证可靠和无差错。
原始套接口:
允许对底层协议IP或ICMP直接访问,主要用于新的网络协议的实现。
面向连接套接口应用时序图如图2-1:
图2-1面向连接套接口应用时序图
图示说明:
服务器端进行的操作为:
1)打开一个通信通道并告知本地主机,它愿意在某一地址和端口上面接收客户请求
2)等待客户请求到达该端口
3)接受到重复服务请求,处理该请求并发送应答信号,接收到并发服务请求,要激活一个新的进程或线程来处理这个客户请求。
新进程(或线程)处理此客户请求,并不需要对其他请求做出应答。
服务完成后,关闭此新进程与客户的通信链路,并终止。
4)返回第二步,等待另一客户请求
5)关闭服务器
客户方进行的操作为:
1)打开一个通信通道,并连接到服务器所在主机的特定端口
2)向服务器发送请求报文,等待并接收应答,继续提出请求
3)请求结束后关闭通信通道并终止
2.3木马基本原理
2.3.1木马定义
特洛伊木马(以下简称木马),英文叫做“Trojanhorse”,其名取自希腊神话中的木马记。
它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。
所谓非授权性,是指一旦控制端与服务端连接后,控制端将享有服务端大部分的操作权限,包括修改文件,修改注册表,控制鼠标,控制键盘等操作,而这些权利并不是服务端授予的,而是通过木马程序窃取的。
通常木马分为两种:
一种是黑客可以通过远程控制的方式来获取信息,木马就是植入被黑者电脑中的服务端程序,而黑客则使用客户端程序。
另一种是木马植入后,自动收集数据然后发送给黑客,使用电子邮件,MSN或者ICQ消息等。
2.3.2木马发展
第一代木马:
伪装型病毒
这种病毒通过伪装成一个合法性程序诱骗用户上当,不具备传染性。
世界上第一个计算机木马是出现在1986年的PC-WRITE木马。
它伪装成共享软件PC-WRITE的2.72版本,一旦用户信以为真运行该木马程序,那么他的下场就是硬盘被格式化。
第二代木马:
AIDS型木马
1989年出现了AIDS木马,它利用电子邮件进行散播:
给他人寄去一封含木马程序的邮件。
该程序运行后,虽然不破坏数据,但它将硬盘加密锁死,然后提示受感染用户花钱消灾。
这一代木马已经具备传播特征。
第三代木马:
网络传播性木马
这一代木马具备了后门(一种可以为计算机系统秘密开启访问入口程序,使攻击者绕过安全程序进入系统)、记录键盘功能、远程控制等功能,利用网络协议进行攻击。
木马技术演变流程分类如图2-2:
图2-2木马技术发展分类
2.3.3木马基本组成
一个完整的木马由硬件、软件部分和具体连接部分组成。
●硬件部分:
建立木马连接所必须的实体。
控制端:
对服务器进行远程控制的一方。
服务端:
被控制端远程控制的一方。
INTERNET:
控制端对被控制端进行远程控制,数据传输的网络载体。
●软件部分:
实现远程控制所必须的软件程序。
控制端程序:
控制端用于远程控制服务端程序。
木马程序:
潜入服务器内部,获取其操作权限的程序。
木马配置程序:
设置木马程序端口,触发条件,木马名称等,使其在服务端藏得更加隐蔽的程序。
●具体连接部分:
通过INTERNET在服务端和控制端之间建立一条木马
通道必须的元素,包括端口和IP。
控制端IP和服务端IP:
及服务端和控制端的网络地址,也是木马进行数据传输的目的地。
控制端端口,木马端口:
及控制端,服务端的数据入口,数据可直达控制端程序或木马程序。
2.3.4C/S客户服务器模式
建立分布式应用程序最常用的范例就是客户机/服务器模式,客户应用程序向服务器应用程序请求服务。
这种方式隐含了在建立客户机/服务器间通讯时的非对称性。
这种模式工作下要求客户机/服务器两端有对称和非对称的协议支持,在对称协议中,每一方都扮演主从角色,在非对称协议中,一方不可改变的成为主机,而另一方则是从机。
但是无论对称协议还是非对称协议,服务被提供时必然存在“客户进程”和“服务进程”。
一个服务程序通常在众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。
这时,服务程序被“唤醒”,并且为客户提供服务,对客户的请求做出适当的反应。
C/S模式工作流程如图2-3:
图2-3客户/服务模式
2.3.5木马入侵过程
要对黑客使用木马入侵进行有效彻底的防护,需要先对入侵流程进行完整详细的了解。
基本上黑客使用木马进行黑客工作的流程很固定,并没有很复杂的地方,具体流程如图2-4:
图2-4木马入侵过程
●选择木马
一般来说若黑客已经有特定目标,例如:
想获取被黑者的某个帐户与密码,则会选择特定型木马,若没确定想从黑客电脑种获取什么样的文件或数据,则会选择综合型木马,即功能比较强大的木马。
确定要使用哪种木马之后,可以从网上查找,但通常黑客需要经过多次测试与尝试之后才可能找到比较满意的木马。
许多黑客也会自己写木马程序,因为自己设计的木马好处很多,最重要的一点就是几乎所有的杀毒软件都找不出来。
●伪装木马
准备好木马以后,为了避免木马被杀毒软件找出来,需要对木马进行各种易容术,以逃避杀毒软件的追杀,达到降低用户警觉,欺骗用户的目的。
不过有些木马是不会被杀毒软件找出来的,或是找出来的效率很低,就不用对木马进行伪装。
常见的木马伪装技术有:
1)修改图标,将服务端程序修改成HTML,TXT,ZIP等各种文件的图标,这种伪装有极大的迷惑性;2)捆绑文件,将木马捆绑在一个安装程序上面,当安装程序运行时,木马在用户毫不知情的情况下,进入系统,被捆绑的文件一般是可执行文件,如EXE,COM一类的文件;3).出错显示,当服务器端用户打开木马程序时,会弹出一个错误提示框,如“文件已破坏,无法打开”之类的信息,然而木马已经在系统种运行;4).定制端口,现在流行的技术是控制端用户可以在1024-65535之间任意选择一个端口作为木马端口,这样就给判断所感染的木马造成困难;5).自我销毁,安装木马后原木马文件将自动销毁,这样服务端就很难找到木马的来源,在没有查杀工具的帮助下,就很难删除木马了;6).木马更名,允许控制端用户自由定制安装后的木马文件名,这样就很难判断所感染的木马类型。
●植入被黑者电脑
将木马植入被黑者电脑是木马成功与否的关键,现在已经发展出各种各样的木马植入技术,这也是木马防护最重要的一道门。
常见的木马植入技术有以下几种:
1).直接植入法,进入被黑者电脑,直接将木马复制进去,对黑客而言这是最好的方式,不用想尽各种方法欺骗被黑者,常见的方式有端口139入侵,漏洞入侵,直接复制;2).电子邮件植入法,利用邮件程序中的漏洞来运行附件中的木马;3).网站钓鱼法,引诱被黑者到设计好的网站,然后乘机植入木马;4).P2P传递法,例如文件加载等,就是利用现在许多人使用的P2P软件来乘机植入木马;5).免费软件与共享软件,许多人都会下载一些免费软件或共享软件来使用,将木马捆绑在某个工具软件中,让不知情的被黑者下载,然后乘机植入木马;6).注册破解程序法,黑客针对不同软件写出所谓破解程序让人下载,木马与破解程序合并后,让不知情的被黑者下载,这样木马就植入被黑者电脑中。
●触发运行木马
当黑客成功将木马植入被黑者电脑中后,及黑客已经进入被黑者电脑以后,通常要设置一些触发条件来触发木马的运行。
常见的触发木马运行的条件如下:
1).让被黑者自己运行,让诱骗被黑者自己运行木马,通常利用电子邮件、网站钓鱼、P2P软件等方式。
2).使用at命令,若黑客经由端口139直接入侵,而且具有最高的权限,被黑者电脑使用WinNT、Win2K或WinXP,则可以利用远程运行命令at来运行放在被黑者电脑中的木马,当然这需要被黑者电脑中的Taskscheduler服务打开。
3).使用net命令,如果木马设计成系统服务方式,那就必须要使用net命令来载入和启动它,黑客必须取得最高权限,才能使用net命令。
例如:
利用使用漏洞入侵,目前许多使用远程缓冲区溢出漏洞成功打开后门后,再使用telnet入侵,然后使用net命令来载入和启动被黑者电脑中的木马。
4).与其他程序一起运行,将木马的运行加入一个特殊的注册表项中,当任何可执行程序运行时,都会一并运行设置在其中的木马。
5).启动与自动运行,当木马已经植入被黑者电脑,只要电脑重新启动就可以运行木马,迫使被黑电脑重新启动的方法如下:
数据包死机漏洞(Win9x,WinNT适用),一般使用工具IPHacker迫使被黑电脑死机,使用AngryIPScanner工具来查看被黑IP,如果不再就说明死机。
●执行黑客任务
木马被植入被黑者电脑并成功运行后,就可以对被黑者电脑进行一系列的非法操作。
只要所选择的木马功能比较完善,控制端一般可以享受以下权限:
1).窃取密码,一切以明文形式,*形式或缓存在cache中的密码都能够被木马侦测到,很多木马还提供按键记录功能。
2).文件操作,控制端可以对服务端上的文件进行删除,新建,修改,上传,下载,运行,修改属性等一系列操作。
3).修改注册表,控制端任意修改注册表,包括删除,新建或修改主键,子键,键值,可以禁止服务端软驱、光驱等操作。
4).系统操作,注销、重启、关闭操作系统,断开服务端网络连接,控制服务端鼠标、键盘、查看服务端进程等,控制端可以随时给服务端发送恐吓信息。
3系统设计
3.1系统总体设计
3.1.1设计目标
本程序利用VC6.0++这一集成开发平台,在Windows环境下开发的一个基于远程控制的简单木马实现。
木马编写采用C/S结构,包括服务端Server和客户端Client。
Client上单击每一个按钮,就向Server端发送一个字母消息,Server端收到对应的字母消息后,用相应的函数进行判断,根据收到的具体字母,Server端调用相应的函数来具体实现每一个功能。
系统客户端和服务端通信如图3-1:
图3-1系统通信
3.1.2功能介绍
程序中将对远程被控主机实现以下操作:
获取远程被控计算机系统基本信息、锁定远程被控计算机的鼠标操作、锁定远程被控计算机的键盘操作、注销重启和关闭被控计算机、隐藏并开启被控计算机的任务栏、向被控计算机发送消息、获取并杀死远程被控计算机的进程。
具体功能如图3-2:
图3-2具体功能图
3.2具体功能实现
3.2.1获取信息功能
当Server先在被控计算机上启动以后,Client输入被控计算机IP如:
192.168.0.5,就可以连接上服务端,Client端单击获取信息按钮,Server端收到Client发过来的消息并响应,然后Server端调用四个API函数:
调用函数GetSystemInfo()来返回当前系统的信息,调用函数GlobalMemoryStatus()来获得当前可用的物理和虚拟内存信息,调用函数GetVersionEx()来返回当前操作系统的版本信息,调用函数GetSystemMetrics()来返回与Windows环境有关的信息。
Server通过调用以上函数,得到系统消息,并返回给Client.Client端收到Server返回的消息并显示在文本框中如图3-3:
图3-3获取消息
客户端源获取消息控件的核心代码如下:
voidCClientDlg:
:
OnGetinformation()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_message.ResetContent();
m_message.SendMessage(LB_SETHORIZONTALEXTENT,0,0);
pThreadInformation=:
:
AfxBeginThread(_GetInformationThread,this);
}
3.2.2清除信息
此功能主要实现客户端文本框中对获取的系统信息和进程信息进行删除。
当Client接收到Server返回的系统信息和进程信息以后,单击Client上面的清除信息按钮就可以清除掉文本框中的信息。
本功能不需要要Server和Client进行通信,client通过调用成员函数CClientDlg:
:
OnClean(){}中的函数CClientDlg:
:
OnClean(){}就可以实现。
Client端获取Server端系统信息并清除的效果如图3-4和3-5:
图3-4获取信息图3-5清除信息
客户端核心代码如下:
voidCClientDlg:
:
OnClean()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_message.ResetContent();
m_message.SendMessage(LB_SETHORIZONTALEXTENT,0,0);
}
3.2.3锁定鼠标和键盘
本功能主要实现锁定远程受控鼠标和键盘的移动,单击,双击等操作,具体实现方式如下:
client端点击“锁定鼠标”或者“锁定键盘”按钮,发送消息到server端。
Server端通过全局变量函数LockOrUnLockKey和LockOrUnLockMouse来判断是操作键盘还是鼠标,然后用相应的钩子(HOOK函数)来拦截Server端的消息来实现鼠标或键盘的锁定。
client通过调用voidCClientDlg:
:
OnLockMouse()函数向server端发送消息,激发server端的锁定鼠标函数响应;通过调用voidCClientDlg:
:
OnUnLockKeyBord()函数激发server端的开启鼠标函数响应;通过调用voidCClientDlg:
:
OnLockKeyBord()函数激发server端锁定键盘函数响应;通过调用voidCClientDlg:
:
OnUnLockKeyBord()函数激发server端开启键盘函数响应。
锁定开启键盘和鼠标的效果图如图3-6:
图3-6锁定鼠标
3.2.4注销、重启和关机
这三个功能都是调用ExitWindowsEx函数实现,所不同的是远程重启和关机所需要的权限较高,需要把程序进程提权。
远程重启和关机的实现比较类似,只是ExitWindowsEx的调用不同(重启EWX_REBOOT,关机EWX_SHUTDOWN)。
服务端添加注销计算机函数LogOff(),重启计算机函数Reboot()和关机函数poweroff()。
核心代码如下:
注销功能是通过以下函数实现:
intCMainFrame:
:
LogOff()//注销
{
ExitWindowsEx(EWX_LOGOFF,0);
return0;
}
重新启动计算机通过以下函数实现:
intCMainFrame:
:
Reboot()//重新启动
{
HANDLEhToken;
TOKEN_PRIVILEGEStkp;
DWORDdwVersion;//版本号
dwVersion=GetVersion();//得到WINDOWSNT或Win32的版本号
if(dwVersion<0x80000000)
{
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;//设置权限
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}
else//WIN系列其它系统
{
ExitWindowsEx(EWX_FORCE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VC 一种 简单 木马 设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)