一、 引言 特洛伊木马是 Trojan Horse 的中译,是借自"木马屠城记"中那只木马的名字。古希腊有大军围攻特洛伊城,逾年无法攻下。有人献计制造一只高二丈的大木马假装作战马神,攻击数天后仍然无功,遂留下木马拔营而去。城中得到解围的消息,及得到"木马"这个奇异的战利品,全城饮酒狂欢。到午夜时份,全城军民尽入梦乡,匿于木马中的将士开秘门游绳而下,开启城门及四处纵火,城外伏兵涌入,焚屠特洛伊城。后世称这只木马为"特洛伊木马",现今计算机术语借用其名,意思是"一经进入,后患无穷"。特洛伊木马原则上它和Laplink 、 PCanywhere 等程序一样,只是一种远程管理工具。而且本身不带伤害性,也没有感染力,所以不能称之为病毒 (也有人称之为第二代病毒);但却常常被视之为病毒。原因是如果有人不当的使用,破坏力可以比病毒更强。 以下部分内容可能插入了我个人的一些见解,如有错误,请指正!…… 二、木马攻击原理 特洛伊木马是一个程序,它驻留在目标计算机里,可以随计算机自动启动并在某一端口进行侦听,在对接收的数据识别后,对目标计算机执行特定的操作。木马,其实质只是一个通过端口进行通信的网络客户/服务程序。 1、基本概念:网络客户/服务模式的原理是一台主机提供服务(服务器),另一台主机接受服务(客户机)。作为服务器的主机一般会打开一个默认的端口并进行监听(Listen), 如果有客户机向服务器的这一端口提出连接请求(Connect Request), 服务器上的相应程序就会自动运行,来应答客户机的请求,这个程序称为守护进程(UNIX的术语,不过已经被移植到了MS系统上)。对于特洛伊木马,被控制端就成为一台服务器,控制端则是一台客户机,G_server.exe是守护进程, G_client是客户端应用程序。 在这里,我顺便举几个例子,比如我们在使用什么冰河,或者是黑洞2004等这些黑客工具的时候,是不是要生成一个服务端呀?原理就如上面! 2、程序实现: 可以使用VB或VC的Winsock控件来编写网络客户/服务程序, 实现方法如下: 服务器端: G_Server.LocalPort=7626(冰河的默认端口,可以改为别的值) G_Server.Listen(等待连接) 个人见解:上面那个就不用我解析了,这是VB里面的Winsock编程里面的基础部分!不懂的可以把VB里面Winsock编程部分看一下!…… 客户端: G_Client.RemoteHost=ServerIP(设远端地址为服务器地址) 个人见解:上面那个是默认的服务器地址,而反弹式木马服务端程序会直接会向你所设置的那个WEB服务器里面写入一个文件,来告诉你(客户端),他的一些基本情况!(敏感信息!) G_Client.RemotePort=7626 (设远程端口为冰河的默认端口) (在这里可以分配一个本地端口给G_Client, 如果不分配, 计算机将会自动分配一个) G_Client.Connect (调用Winsock控件的连接方法) 一旦服务端接到客户端的连接请求ConnectionRequest,就接受连接 Private Sub G_Server_ConnectionRequest(ByVal requestID As Long) G_Server.Accept requestID End Sub 客户端用G_Client.SendData发送命令,而服务器在G_Server_DateArrive事件中接受并执行命令(几乎所有的木马功能都在这个事件处理程序中实现) 如果客户断开连接,则关闭连接并重新监听端口 Private Sub G_Server_Close() G_Server.Close (关闭连接) G_Server.Listen (再次监听) End Sub 客户端上传一个命令,服务端解释并执行命令。 3、实现木马的控制功能 由于Win98开放了所有的权限给用户,因此,以用户权限运行的木马程序几乎可以控制一切,下面仅对木马的主要功能进行简单的概述, 主要是使用Windows API函数。 (1)远程监控(控制对方鼠标、键盘,并监视对方屏幕) keybd_event 模拟一个键盘动作。
|