特洛伊木马工作原理分析及清除方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

特洛伊木马工作原理分析及清除方法

1 什么是特洛伊木马

特洛伊木马(Trojan Horse,以下简称木马)的名称取自希腊神话的特洛伊木马记。木马就是指那些内部包含为完成特殊任务而编制的代码的程序,这些特殊功能处于隐藏状态,执行时不为人发觉。特洛伊木马是一种基于远程控制的工具,类似于远端管理软件,其区别是木马具有隐蔽性和非授权性的特点。所谓隐蔽性是指木马的设计者为防止木马被发现,会采用多种手段隐藏木马;非授权性是指一旦控制端与服务端建立连接后,控制端将窃取服务端的密码及大部分操作权限,包括修改文件、修改注册表、重启或关闭服务端操作系统、断开服务端网络连接、控制服务端的鼠标及键盘、监视服务端桌面操作、查看服务端进程等。这些权限并不是服务端赋予的,而是通过木马程序窃取的。

2 木马的工作原理

完整的木马系统由硬件和软件二部分组成。硬件部分是建立木马连接所必须的硬件实体,包括控制端、服务端和数据传输的网络载体(Internet/Intranet);软件部分是实现远程控制所必须的软件程序,包括控制端程序和木马程序。利用木马窃取信息、恶意攻击的整个过程可以分为3个部分,下面详细介绍。

2.1 获取并传播木马

木马可以用C或C++语言编写。木马程序非常小,一般只有3~5KB,以便隐藏和传播。木马的传播方式主要有3种:(1)通过E-MAIL。(2)软件下载。(3)依托病毒传播。200 1年4月赛门铁克防病毒研究中心发现了植入木马程序的新蠕虫病毒(W32.BACTRANS.13 312@MM)。该病毒一旦被执行,木马程序就会修改注册表键值和win.ini文件。当计算机被重启时,该蠕虫会等候3 分钟,然后利用MAPI, 回复所有未读邮件,并将自己作为邮件的附件,使用不同的名称继续传播。

2.2 运行木马

服务端用户在运行木马或捆绑了木马的程序后,木马首先将自身拷贝到WINDOWS的系统文件夹中(C:\WINDOWS或C:\WINDOWS\SYSTEM目录下),然后在注册表、启动组和非启动组中设置好木马触发条件,这样木马的安装就完成了。以后,当木马被触发条件激活时,它就进入内存,并开启事先定义的木马端口,准备与控制端建立连接。

2.2 建立连接,进行控制

建立一个木马连接必须满足2个条件:(1)服务端已安装有木马程序。(2)控制端、服务端都要在线。初次连接时还需要知道服务端的IP地址。IP地址一般通过木马程序的信息反馈机制或扫描固定端口等方式得到。木马连接建立后,控制端端口和木马端口之间将会有一条通道,控制端程序利用该通道与服务端上的木马程序取得联系,并通过木马程序对服务端进行远程控制。

3 用VB6.0编写的木马程序

下面用VB6.0编写的一个木马程序来说明木马程序的工作原理。

(1)用VB建立2个程序:客户端程序Client和服务器端程序Server。

(2)在Client工程中建立一个窗体,加载WinSock控件,称为Win_Client,协议选择TCP。

再加入一个文本框,用于输入服务器的IP地址或服务器名。然后加入一个按钮,按下之后就可以对连接进行初始化。代码如下:

Private Sub cmdConnect_Click()

Win_Client.RemoteHost=Text1.Text

Win_Client.Connect

Timer1.Enabled=True

End Sub

(3)建立连接后就可以使用DataArrival事件处理收到的数据了。

(4)在服务器端Server工程中也建立一个窗体,窗体的visible属性设置为False。加载Win Sock控件,称为Win_Server,协议选择TCP。在Form_Lad事件中加入以下代码:Private Sub Form_Load()

Win_Server.LocalPort=2001 …自定义的端口号

Win_Server.Listen

End Sub

(5)准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答客户端程序的请求,代码如下:

Private Sub Win_Server_ConnectionRquest(ByValrequestID As Long)

If Win_Server.State sckClosed Then

Win_Server.Close …检查控件的State属性是否为关闭的

End If …如果不是,在接受新的连接之前先关闭此连接

Win_Server.Accept requestID

End Sub

(6)这样在客户端程序按下连接按钮后,服务器端程序的ConnectionRequest事件即被触发,执行以上代码。如果不出意外,连接将被建立起来。

(7)建立连接后服务器端的程序通过JDataArrival事件接收客户机端程序发出的指令运行既定程序。DataArrival事件程序如下:

Private Sub Win_Server_DataArrival(ByVal bytesTotal As Long)

Dim strData As String

Dim I As Long

Win_Server.G etData strData …接收数据并存入strData

For i=1 ToLen(strData) …分离strData中的命令

If Mid(strData,I,1)=”@” Then

mKey=Left(strData,i-1 …把命令ID号存入mKey

strData=Right(strData,Len(strData)-i) …把命令参数存入strData

Exit Fof

Ene If

Next i

Select Case Val*mKey)

相关文档
最新文档