网络课程设计 实验总报告.docx
- 文档编号:23227032
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:28
- 大小:341.73KB
网络课程设计 实验总报告.docx
《网络课程设计 实验总报告.docx》由会员分享,可在线阅读,更多相关《网络课程设计 实验总报告.docx(28页珍藏版)》请在冰豆网上搜索。
网络课程设计实验总报告
课程:
网络信息处理课程设计
课题:
黑客攻击的原理研究及编程实现
目录
1.概要设计
1.1引言·······································第1页
1.2总体设计···································第2页
1.3设计控制部分·······························第4页
1.4数据结构设计要求···························第6页
2.详细设计
2.1引言·······································第9页
2.2设计原理与方法·····························第9页
2.3程序系统结构·······························第11页
2.4程序设计流程图·····························第12页
2.5各个模块介绍·······························第12页
3.分析测试
3.1引言·······································第18页
3.2数据测试分析·······························第23页
4.结束语··········································第26页
概要设计说明书
1.引言
1.1编写目的:
木马有很多种类,例如网游木马、网银木马、下载类、代理类、FTP木马、通信软件类等等。
我们使用的是FTP木马,故而之对此作以介绍。
希望通过概要设计的说明能够总体了解FTP木马的运行环境、攻击方式以及该软件功能操作。
1.2木马背景及定义:
“木马”与计算机网络中常常要用到的远程控制软件有些相似,但由于远程控制软件是“善意”的控制,因此通常不具有隐蔽性;“木马”则完全相反,木马要达到的是“偷窃”性的远程控制,如果没有很强的隐蔽性的话,那就是“毫无价值”的。
它是指通过一段特定的程序(木马程序)来控制另一台计算机。
木马通常有两个可执行程序:
一个是客户端,即控制端;另一个是服务端,即被控制端。
植入被种者电脑的是“服务器”部分,而所谓的“黑客”正是利用“控制器”进入运行了“服务器”的电脑。
运行了木马程序的“服务器”以后,被种者的电脑就会有一个或几个端口被打开,使黑客可以利用这些打开的端口进入电脑系统,安全和个人隐私也就全无保障了!
木马的设计者为了防止木马被发现,而采用多种手段隐藏木马。
木马的服务一旦运行并被控制端连接,其控制端将享有服务端的大部分操作权限,例如给计算机增加口令,浏览、移动、复制、删除文件,修改注册表,更改计算机配置等。
一个完整的特洛伊木马套装程序含了两部分:
服务端(服务器部分)和客户端(控制器部分)。
植入对方电脑的是服务端,而黑客正是利用客户端进入运行了服务端的电脑。
运行了木马程序的服务端以后,会产生一个有着容易迷惑用户的名称的进程,暗中打开端口,向指定地点发送数据(如网络游戏的密码,即时通信软件密码和用户上网密码等),黑客甚至可以利用这些打开的端口进入电脑系统。
特洛伊木马程序不能自动操作,一个特洛伊木马程序是包含或者安装一个存心不良的程序的,它可能看起来是有用或者有趣的计划(或者至少无害)对一不怀疑的用户来说,但是实际上有害当它被运行。
特洛伊木马不会自动运行,它是暗含在某些用户感兴趣的文档中,用户下载时附带的。
当用户运行文档程序时,特洛伊木马才会运行,信息或文档才会被破坏和遗失。
特洛伊木马和后门不一样,后门指隐藏在程序中的秘密功能,通常是程序设计者为了能在日后随意进入系统而设置的。
1.3FTP型木马的原理:
FTP型木马打开被控制计算机的21号端口(FTP所使用的默认端口),使每一个人都可以用一个FTP客户端程序来不用密码连接到受控制端计算机,并且可以进行最高权限的上传和下载,窃取受害者的机密文件。
现在新FTP木马还加上了密码功能,这样,只有攻击者本人才知道正确的密码,从而进入对方计算机。
1.4木马使用的架构介绍:
我们采用的是C/S架构:
这种为普通的服务器、客户端的传统架构,一般我们都是采用客户端作控制端,服务器端作被控制端。
在编程实现的时候,如果采用反向连接的技术,那么客户端(也就是控制端)要采用Socket编程的服务器端的方法,而服务端(也就是被控制端)采用Socket编程的客户端的方法。
而整个软件用VB编程实现。
2.总体设计:
2.1需求规定:
把服务端软件(木马)植入到对方的电脑,在客户端进行连接,如果连接成功
可进行例如关机、注销、重启、文件下载的相关操作。
2.2运行环境:
a.软件环境:
windowsXP
b.硬件环境:
在联网环境下的计算机
2.3概念和处理流程:
本系统采用C/S工作模式,由服务端程序、客户端程序和中转服务器三部分构拓扑结构如图4.1所示:
客户端(控制端)程序运行在本地主机系统上,这些程序主要负责向被控端程序发送控制指令,并对被控端返回的取证结果进行证据处理,以友好的图形界面形式显示给控制者。
服务端(被控端)程序是安装在被控的计算机上,主要负责接收并处理客户端程序发来的各种控制命令、完成服务端程序的加载,完成服务端启动、隐藏和进程的隐藏,并返回结果。
中转服务器是拥有固定的IP地址,它在整个木马系统中充当中转功能,为服务端提供最新的客户端IP地址和端口信息,不管客户端的地址如何变化,都能使服务端正确连接到客户端。
系统逻辑模型图
3.设计控制部分:
远程计算机控制指的是基于一定的物理网络(例如INTERNET网或者企业、校园的局域网络),通过一定的网络协议(例如TCP/IP协议),对分布在网络上的计算机实现远程控制、协同工作。
这种控制是通过对基于网络通讯的标准通讯协议和对目标机的操作系统响应方式的准确控制来实现的。
3.1控制协议及技术:
3.1.1IP协议
IP协议是TCP/IP协议族中最为核心的协议。
所有的TCP、UDP、ICMP、IGMP数据报都以口数据报格式传输。
IP提供不可靠、无连接的数据报传送服务[15]。
不可靠(unreliable)的意思是它不能保证口数据报能够成功地到达目的地。
IP仅提供最好的传输服务。
如果发生某种错误时,如某个路由器暂时用完了缓冲区,口有一个简单的错误处理算法:
丢弃该数据报,然后发送ICMP消息报给信源端。
任何要求的可靠性必须由上层来提供(如TCP)。
无连接(connectionless)这个术语的意思是m并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。
这也说明,口数据报可以不按发送顺序接收。
如果一个信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。
IP协议对于网络通信具有非常重要的意义,网络中的计算机通过安装IP软件,使许许多多的局域网构成了一个庞大而又严密的通信系统,从而使Internet看起来好像是真实存在的。
实际上,它仅仅是利用IP协议就把全世界上所有愿意接入Internet的电脑连接了起来。
3.1.2TCP协议
TCP协议位于传输层,它使用网络层(口)为用户提供一种面向连接的、可靠的字节流服务[16]。
TCP是在RFC793中正式定义的。
随着时间的推移,检测出了各种各样的错误和不一致,并且在一些领域对TCP的要求也有所变化。
这些说明和一些错误的解决方法详细地记载在RFCll22中。
在RFCl323中给出了对TCP的一些功能扩展。
面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接:
这一过程和打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。
在一个TCP连接中,仅有两方进行彼此通信。
广播和多播不能用于TCP。
TCP通过下列方式来提供可靠性:
应用数据被分割成TCP认为最适合发送的数据块。
这和UDP完全不同。
由
TCP传递给口的信息单位称为报文段或者段(segment)。
1、当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。
如果不能及时收到一个确认,重发这个报文段。
这涉及TCP协议中自适应的超时及重传策略。
2、当TCP收到发自TCP连接另一端的数据,它将发送确认消息。
3、TCP将保持它首部和数据的校验和。
这是一个端到端的检验和,目的是检测
数据在传输过程中的任何变化。
如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
4、既然TCP报文段作为口数据报来传输,而口数据报的到达可能会失序,因此
TCP报文段的到达也可能会失序。
如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
5、既然口数据报会发生重复,TCP的接收端必须丢弃重复的数据。
6、TCP还能提供流量控制。
TCP连接的每一方都有固定大小的缓冲空间。
TCP的接收端只允许另一端发送接受端缓冲区所能接纳的数据。
这将防止较快主机致使较慢主机的缓冲区溢出。
另外,TCP对字节流的内容不作任何解释。
TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。
对字节流的解释由TCP连接双方的应用层解释。
要实现TCP协议的功能,需要完成的机制包括:
连接管理(如何建立和关闭连接)、滑动窗口机制、拥塞控制机制、定时器管理。
3.1.3套接字(Sockets)技术
套接字是支持TCP/lP协议的网络通信的基木操作单元,是网络通信的基石;它是不同主机间进行双向通信的端点,构成了单个主机及整个网络间的编程界面;很多常用的软件如FTP,Telnet等都是在Sockets上来完成的。
套接字可以根据通信的类型分类,不同的套接字之间照样可以通信;一般应用于程序的套接字可分为两类:
1、流套接字:
建立在TCP/IP传输层上,提供双向的无记录边界的数据流服务,其传输数据有序、无重复,适用于处理大量数据;面向连接,通信双方进行数据交换之前,必须建立一条路径来确定双方通信的路由,保证双方都是活动的、可彼此响应的。
2、数据报套接字:
数据报套接字是无连接的,直接建立在IP层上,可支持双向数据流动,但不能保证数据传输的可靠性、有序性及无重复性。
3.2运行控制
我们写的这个软件界面比较简单,如图所示的是客户端界面,当连接成功时可以对服务端进行以下操作,关机、注销、重启和文件的拷贝。
4.数据结构设计要求:
首先使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。
在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服务器的IP地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:
PrivateSubcmdConnect_Click()
IfLen(Text1.Text)=0AndLen(Text2.Text)=0Then
MsgBox("请输入主机名或主机IP地址。
")
ExitSub
Else
IfLen(Text1.Text)>0Then
tcpClient.RemoteHost=Text1.Text
Else
tcpClient.RemoteHost=Text2.Text
EndIf
EndIf
tcpClient.Connect
Timer1.Enabled=True
EndSub
连接建立之后就可以使用DataArrival事件处理所收到的数据了。
在服务器端systry工程也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择TCP,在Form_Load事件中加入如下代码:
PrivateSubForm_Load()
tcpServer.LocalPort=1999
tcpServer.Listen
EndSub
准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答户端程序的请求,代码如下:
PrivateSubtcpServer_ConnectionRequest
(ByValrequestIDAsLong)
IftcpServer.State<>sckClosedThen
tcpServer.Close‘检查控件的State属性是否为关闭的。
EndIf ’如果不是,在接受新的连接之前先关闭此连接。
tcpServer.AcceptrequestID
EndSub
这样在客户端程序按下了连接按钮后,服务器端程序的ConnectionRequest事件被触发,执行了以上的代码。
如果不出意外,连接就被建立起来了。
建立连接后服务器端的程序通过DataArrival事件接收客户机端程序所发的指令运行既定的程序。
如:
把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端接收后用TreeView控件以树状的形式显示出来,浏览服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。
DataArrival事件程序如下:
PrivateSubtcpServer_DataArrival
(ByValbytesTotalAsLong)
DimstrDataAsString
DimiAsLong
DimmKeyAsString
tcpServer.GetDatastrData
‘接收数据并存入strData
Fori=1ToLen(strData)
‘分离strData中的命令
IfMid(strData,i,1)="@"Then
mKey=Left(strData,i-1)
‘把命令ID号存入mKey
‘把命令参数存入strData
strData=Right(strData,Len(strData)-i)
ExitFor
EndIf
Nexti
SelectCaseVal(mKey)
Case1
‘驱动器名、目录名、文件名
Case2
强制关闭服务器端的计算机
Case3
强制重启服务器端的计算机
Case4
屏蔽任务栏窗口;
Case5
屏蔽开始菜单;
Case6
按照客户机端传过来的文件名或目录名,而删除它;
EndSelect
EndSub
客户机端用tcpClient.SendData发命令。
命令包括命令ID和命令参数,它们用符号“@”隔开。
另外,当客户机端断开与服务器端的来接后,服务器端应用tcpServer_Close事件,来继续准备接收客户机端的请求,其代码如下:
PrivateSubtcpServer_Close()
tcpServer.Close
tcpServer.Listen
EndSub
这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。
至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。
详细设计说明书
1、引言
实验设计分为两个部分,分别是客户端和服务端。
其中客户端是向服务端发送各种命令,服务端接收到客户端的请求之后,执行相应的命令。
设计目的:
实现客户端与服务端的连接,并实现关机,注销,重启,关闭和打开相应的应用程序。
2、设计原理和方法
首先应该建立两个应用程序,一个作为服务器,一个作为客户端,通过Winsock控件来实现双机的点对点通信。
Winsock控件是VB5.0的新增功能,它解决了以往应用VB编程时网络中应用程序之间无法实现点对点通信的难题。
利用Winsock控件可以与远程计算机建立连接,并通过用户数据报文协议(UDP)或传输控制协议(TCP)进行数据交换。
这两种协议都可以用来创建客户与服务器应用程序。
1)在使用Winsock控件时,首先需要考虑使用什么协议
TCP协议控件是基于连接的协议,可以将它同电话系统相比。
在开始数据传输之前,用户必须先建立连接,适用于传送大容量、需要安全性保证的数据文件。
UDP协议是一种无连接协议,两台计算机之间的传输类似于传递邮件。
消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。
另外,单次传输的最大数据量取决于具体的网络。
但本设计中要实现收发数据时,应用程序需要得到客户端或者服务器的确认信息,而且点对点通信要求通信质量高,所以选择TCP协议,即客户端和服务器加入的控件协议均设置为sckTCPProtocol。
TCP协议是一个面向连接、全双工、可靠的、按序传送的传输层协议,允许创建和维护与远程计算机的连接,连接的计算机可彼此进行数据传输。
如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort属性),然后调用Connect方法。
如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。
当客户计算机需要连接时就会发生ConnectionRequest事件,为完成连接,可在ConnectionRequest事件中调用Accept方法。
建立连接后,任何一方都可以通过SendData发送和接收数据,并借助GetData把自己的数据分离出来。
传送数据时,需要先设定客户机的LocalPort属性,服务器则只需要把RemoteHost属性设定为客户机以太网的地址,并设定与客户机LocalPort属性相同的端口地址,借助SendData方法开始发送消息。
客户机则在GetData事件中通过DataArrival事件分离出发送的信息。
2)Winsock控件的工作原理:
客户端向服务器端发出连接请求,服务器端则不停地监听客户端的请求,当两者的协议沟通时,客户端和服务器端之间就建立了连接,这时客户端和服务器端就可以实现双向数据传输。
一个连接的生存周期包括以下几步:
1.服务器应用程序监听一个特殊的窗口。
2.客户程序请求和服务器程序建立连接。
3.服务器程序接受连接。
4.数据在客户程序和服务器程序之间传送。
5.服务器响应客户端的请求。
3)Winsock控件的主要方法:
Listen:
将其设置为聆听模式,才有可能接收另一方的连接请求;
SendData:
将数据传送给远程计算机,一般传送字符串数据时,只要将字符串当成自变量传送即可,如果是二进制数据的话,传输数据就必须以字节数组的方式储存;
GetData:
截取目前的数据块,将其存储在参数所定的变量中;
4)Winsock控件的编程参数:
1.LocalHostName属性:
返回本地计算机的IP地址,格式是IP地址加点字符串(xxx.xxx.xxx.xxx),在设计时是只读的,而且是不可用的。
2.LocalPort属性:
返回或者设置所用到的本地端口。
在设计时是可读/可写的,而且是可用的。
对用户说,该属性用来指定发送数据的本地端口。
如果应用程序不需要特定端口,则指定0为端口号。
在这种情况下,控件将选择一个随机端口。
在建立起连接之后,这就是用于TCP连接的本地端口。
3.Protocol属性:
返回或设置Winsock控件所使用的协议,本设计中选用TCP协议,Protocol值为0。
4.RemoteHostIP属性:
返回远程计算机的IP地址。
5.RemotePort属性:
返回或设置要连接的远程端口号。
Port为要连接的端口,只要不是特定的端口,都可以,但是要确保客户端和服务器的端口设置一致。
5)Winsock控件的主要事件:
1.connectionrequest:
请求连接时产生
2.connect:
接受连接时产生
3.close:
关闭连接时产生
4.dataArrival:
发送数据产生
5.error:
请求连接失败时产生
6)用Winsock控件设计应用程序
VB6.0通过Winsock控件提供传输服务原语,传输服务原语包括:
LISTEN、CONNECT、SEND、RECEIEV和DISCONNECT。
7)窗体设计思路
服务器端设计为隐藏,即背后运行模式,包含一个winsock控件,控件属性独立设置,但应遵从TCP协议,同时打开侦听端口,等待客户端发起连接,根据客户端发送的命令执行对应的操作。
客户端窗体要连接到服务器,还应在界面上有一个输入IP地址的文本框,同时还需一个现实连接是否成功的文本提示框;另外还要添加五个命令按钮,分别实现关机、注销、重启、打开应用程序和关闭应用程序。
3、程序系统的结构
4、程序设计流程图
5各个模块的介绍
5.1服务端的设计部分:
首先,新建一工程,名为Server,新建一个窗体,Name为frmServer,在窗体中加入一个winsock控件,Name设为sckServer,协议设为默认的TCP/IP协议。
5.1.1frmServer窗体模块设计:
PrivateSubFORM_Load()
WithMe
.sckServer.LocalPort=4000‘端口号
.sckServer.Listen‘开始监听
Me.Hide‘在背后运行
EndSub
5.1.2接受客户端的连接请求设计:
PrivateSubsckServer_ConnectionRequest(ByValrequestIDAsLong)
WithMe
If.sckServer.State<>sckClosedThen.sckServer.Close
.sckServer.Accept(requestID)
EndWith
EndSub
5.1.3在frmServer中添加sckServer的DataArrial事件设计:
PrivateSubsckServer_DataArrival(ByValbytesTotalAsLong)
DimstrDataAsString
WithMe
.sckServer.GetDatastrData
SelectCasestrData
5.1.3.1实现关机模块:
C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络课程设计 实验总报告 网络 课程设计 实验 报告