木马攻击与防御原理

来源:互联网 发布:网络主播应聘 编辑:程序博客网 时间:2024/05/21 18:33

一、 引言

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

二、木原理

特洛伊木是一个程序,它留在目标计算机里,可以随算机自并在某一端口听,在接收的数据识别后,标计算机行特定的操作。木,其实质只是一个通端口行通信的网/程序。

1、基本概念:/模式的原理是一台主机提供服(),另一台主机接受服()。作器的主机一般会打一个默的端口并(Listen), 如果有客机向服器的一端口提出(Connect Request), 器上的相程序就会自运行,来答客机的求,个程序称护进(UNIX术语,被移植到了MS)于特洛伊木,被控制端就成一台服器,控制端是一台客机,G_server.exe是守护进, G_client是客用程序。

2、程序实现:

可以使用VBVCWinsock控件来/程序, 实现方法如下:

器端:

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)

 

三、特洛伊木马隐身方法

程序会想尽一切藏自己,主要途径有:在任务栏藏自己,是最基本的只要把FormVisible属性设为FalseShowInTaskBar设为False,程序运行就不会出在任务栏中了。在任管理器中形:将程序设为可以装自己。当然它也会悄无声息地启,木会在次用动时端,Windows动时载应用程序的方法,都会用上,如:启动组win.inisystem.ini、注册表等等都是藏身的好地方。

win.ini文件中,在[WINDOWS]下面,“run=”“load=”是可能加程序的途径,一般情况下,它的等号后面什都没有,如果发现后面跟有路径与文件名不是你熟悉的启文件,你的算机就可能中上了。当然你也得看清楚,因好多,如“AOL Trojan,它把自身装成command.exe文件,如果不注意可能不会发现它不是真正的系文件。

system.ini文件中,在[BOOT]下面有个“shell=文件名。正确的文件名应该“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名,那后面跟着的那个程序就是程序,就是你已了。

在注册表中的情况最复杂,通regedit命令打注册表编辑器,在点至:“HKEYLOCALMACHINE/Software/Microsoft/Windows/CurrentVersion/Run”下,键值中有没有自己不熟悉的自文件,展名EXE里切:有的程序生成的文件很像系自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0,它将注册表“HKEYLOCALMACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run”下的 Explorer 键值Explorer=“C:/WINDOWS/expiorer.exe”程序与真正的Explorer只有“i”“l”的差。当然在注册表中有很多地方都可以程序,如:“HKEYCURRENTUSER/Software/Microsoft/Windows/CurrentVersion/Run”“HKEYUSERS/****/Software/Microsoft/Windows/CurrentVersion/Run”的目下都有可能,最好的法就是在“HKEYLOCALMACHINE/Software/Microsoft/Windows/CurrentVersion/Run”下找到程序的文件名,再在整个注册表中搜索即可。

目前,除了上面介身技,更新、更蔽的方法已,那就是-驱动程序及动态链驱动程序及动态链和一般的木不同,它基本上脱了原有的木模式-听端口,而采用替代系功能的方法(改写驱动程序或动态链)。这样做的果是:系中没有增加新的文件(所以不能用描的方法查杀)、不需要打新的端口(所以不能用端口监视的方法查杀)、没有新的程(所以使用看的方法发现不了它,也不能用kill程的方法止它的运行)。在正常运行几乎没有任何的症状,而一旦木的控制端向被控端出特定的信息后,藏的程序就立即始运作。

四、 特洛伊木防御原理

知道了木的攻原理和身方法,我就可以采取措施行防御了。

1.端口

端口描是检查远机器有无木的最好, 端口描的原理非常简单, 描程序尝试连接某个端口, 如果成功, 则说明端口,如果失或超某个特定的时间(), 则说明端口关闭。但驱动程序/动态链接木, 描端口是不起作用的。

2.

接和端口描的原理基本相同,不是在本地机上通netstat -a(或某个第三方程序)看所有的TCP/UDP接,接要比端口描快,但同是无法驱动程序/动态链接木,而且仅仅能在本地使用。

3.检查注册表

上面在讨论的启方式提到,木以通注册表启(好像在大部分的木都是通注册表启的,至少也把注册表作一个自我保的方式),那,我可以通过检查注册表来发现冰河在注册表里留下的痕迹。

4.找文件

找木特定的文件也是一个常用的方法,木的一个特征文件是kernl32.exe,另一个是sysexlpr.exe,只要除了两个文件,就已不起作用了。如果你只是除了sysexlpr.exe而没有做尾工作的,可能会遇到一些麻-就是你的文本文件打不, sysexplr.exe是和文本文件关联,把文本文件跟notepad关联上。

另外,驱动程序/动态链,有一方法可以试试,使用Windows"文件检查",通"始菜"-"程序"-"附件"-"工具"-"信息"-"工具"可以运行"文件检查", 文件检查检测操作系文件的完整性,如果些文件坏,检查器可以将其原,检查可以从安装中解压缩压缩的文件(如驱动程序)。如果你的驱动程序或动态链在你没有升的情况下被改,就有可能是木(或者坏了),提取改动过的文件可以保你的系安全和定。

五、

只要你有一点点的疏忽,就有可能被人安装了木。所以平不要随便从网站上下载软件,不要随便运行件,检查自己的系文件、注册表、端口,常去安全站点看最新的木公告等等,提高自己的网安全意,了解木的常这样对于保自己电脑的安全不无裨益。

 

原创粉丝点击