您当前的位置:linuxsea -> 网络与应用 -> 网络安全

骇客学堂:木马后门攻击与防御原理
作者:linuxsea  来源:linux海洋  发布时间:2007-2-16 16:22:49  发布人:admin

减小字体 增大字体

一、 引言


特洛伊木马是 Trojan Horse 的中译,是借自"木马屠城记"中那只木马的名字。古希腊有大军围攻特洛伊城,逾年无法攻下。有人献计制造一只高二丈的大木马假装作战马神,攻击数天后仍然无功,遂留下木马拔营而去。城中得到解围的消息,及得到"木马"这个奇异的战利品,全城饮酒狂欢。到午夜时份,全城军民尽入梦乡,匿于木马中的将士开秘门游绳而下,开启城门及四处纵火,城外伏兵涌入,焚屠特洛伊城。后世称这只木马为"特洛伊木马",现今计算机术语借用其名,意思是"一经进入,后患无穷"。特洛伊木马原则上它和Laplink 、 PCanywhere 等程序一样,只是一种远程管理工具。而且本身不带伤害性,也没有感染力,所以不能称之为病毒 (也有人称之为第二代病毒);但却常常被视之为病毒。原因是如果有人不当的使用,破坏力可以比病毒更强。


二、木马攻击原理


特洛伊木马是一个程序,它驻留在目标计算机里,可以随计算机自动启动并在某一端口进行侦听,在对接收的数据识别后,对目标计算机执行特定的操作。木马,其实质只是一个通过端口进行通信的网络客户/服务程序。


1、基本概念:网络客户/服务模式的原理是一台主机提供服务(服务器),另一台主机接受服务(客户机)。作为服务器的主机一般会打开一个默认的端口并进行监听(Listen), 如果有客户机向服务器的这一端口提出连接请求(Connect Request), 服务器上的相应程序就会自动运行,来应答客户机的请求,这个程序称为守护进程(UNIX的术语,不过已经被移植到了MS系统上)。对于特洛伊木马,被控制端就成为一台服务器,控制端则是一台客户机,G_server.exe是守护进程, G_client是客户端应用程序。


2、程序实现:


可以使用VB或VC的Winsock控件来编写网络客户/服务程序, 实现方法如下:


服务器端:


G_Server.LocalPort=7626(冰河的默认端口,可以改为别的值)


G_Server.Listen(等待连接)


客户端:


G_Client.RemoteHost=ServerIP(设远端地址为服务器地址)


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模拟一个键盘动作。


mouse_event模拟一次鼠标事件


mouse_event(dwFlags,dx,dy,cButtons,dwExtraInfo)dwFlags:


MOUSEEVENTF_ABSOLUTE 指定鼠标坐标系统中的一个绝对位置


MOUSEEVENTF_MOVE 移动鼠标


MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下


MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起


MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下


MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下


dx,dy:MOUSEEVENTF_ABSOLUTE中的鼠标坐标


(2)记录各种口令信息


keylog begin:将击键记录在一个文本文件里,同时还记录执行输入的窗口名


(3)获取系统信息


a.取得计算机名 GetComputerName


b.更改计算机名 SetComputerName


c.当前用户 GetUserName


d.系统路径


Set FileSystem0bject = CreateObject("Scripting.FileSystemObject")(建立文件系统对象)


Set SystemDir = FileSystem0bject.getspecialfolder(1)(取系统目录)


Set SystemDir = FileSystem0bject.getspecialfolder(0)(取Windows安装目录)


e.取得系统版本 GetVersionEx


f.当前显示分辨率


Width = screen.Width\ screen.TwipsPerPixelX


Height= screen.Height \ screen.TwipsPerPixelY


(4)限制系统功能


a.远程关机或重启计算机,使用WinAPI中的如下函数可以实现:


ExitWindowsEx(UINT uFlags,DWORD dwReserved)


当uFlags=EWX_LOGOFF 中止进程,然后注销


=EWX_SHUTDOWN 关掉系统但不关电源


=EWX_REBOOT 重新引导系统


=EWX_FORCE强迫中止没有响应的进程


=EWX_POWERDOWN 关掉系统及关闭电源


b.锁定鼠标,ClipCursor(lpRect As RECT)可以将指针限制到指定区域,或者用ShowCursor(FALSE)把鼠标隐藏起来也可以,RECT是定义的一个矩形。


c.让对方掉线 RasHangUp


d.终止进程 ExitProcess


e.关闭窗口 利用FindWindow函数找到窗口并利用SendMessage函数关闭窗口


(5)远程文件操作


删除文件:File delete


拷贝文件:File copy


共享文件:Export list(列出当前共享的驱动器、目录、权限及共享密码)


(6)注册表操作


在VB中只要Set RegEdit=CreateObject("WScript.Shell")就可以使用以下的注册表功能:


删除键值:RegEdit.RegDelete RegKey


增加键值:RegEdit.Write RegKey,RegValue


获取键值:RegEdit.RegRead (Value)
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
· Linux服务器
· 网络应用
· 网络安全

相关文章

· 骇客学堂:入侵HP打印机的文件系统
· 骇客学堂:当前最流行的几种捆绑器技巧..
· 新手学堂:分享骇客技术的七大秘籍
· 骇客学堂:网络入侵检测初步探测方法
· 骇客学堂:破解密码相关心理学知识
· 骇客学堂:常见端口详解及部分攻击策略..
· 骇客学堂:Windows下的权限设置详解
· 骇客学堂 网络入侵的14种可利用方法
· 骇客学堂:网络入侵的14种可利用方法
· 骇客放灰鸽子 最新蠕虫变种阻址杀毒
· 骇客技术:密码破解相关技术介绍
· 骇客学堂:DDoS攻击的原理及工具介绍
· 让你的密码成为网络骇客的耻辱
· 骇客是如何破解MS SQL SERCVER密码的
· 骇客基本功 浅谈病毒,木马,黑客



© 2006-2008 Linuxsea.net, all rights reserved