“木马”原理及其vb简单实现分析

时间:2022-03-15 11:16:01

“木马”原理及其vb简单实现分析

摘 要:简易介绍“木马”的危害性及种类,了解其从病毒中单独剥离出来的原因,并通过vb程序实现来详细阐述其工作原理。

关键词:木马;VB;注册表;应用程序

中图分类号:TP39文献标识码:A文章编号:1672-3198(2007)12-0259-02

“木马”原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。许多计算机用户特别是新手对安全问题了解不多,所以并不知道自己的计算机中了“木马”之后应该如何清除。关键是得知道“木马”的工作原理,在了解其原理之后,查杀木马也就变得简单易行了。

1 木马分类

(1)远程控制木马。

远程控制木马是数量最多,危害最大,同时知名度也最高的一种木马,它可以让攻击者完全控制被感染的计算机,攻击者可以利用它完成一些甚至连计算机主人本身都不能顺利进行的操作。

(2)密码发送木马。

密码发送型的木马是专门为了盗取被感染计算机上的密码而编写的,木马一旦被执行,就会自动搜索内存,Cache,临时文件夹以及各种敏感密码文件,一旦搜索到有用的密码,木马就会利用免费的电子邮件服务将密码发送到指定的邮箱。

(3)键盘记录木马。

这种特洛伊木马就是记录受害者的键盘敲击并且在LOG文件里查找密码,随着Windows的启动而启动。

(4)DoS攻击木马。

随着DoS攻击越来越广泛的应用,被用作DoS攻击的木马也越来越流行起来。当你入侵了一台机器,给他种上DoS攻击木马,那么日后这台计算机就成为你DoS攻击的最得力助手了。

(5)FTP木马。

这种木马可能是最简单的木马了,其历史悠久,它的惟一功能就是打开21端口,等待用户连接。现在新FTP木马还加上了密码功能,这样,只有攻击者本人才知道正确的密码,从而进人用户计算机。

(6)反弹端口型木马。

反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口。

2 木马的工作原理

(1)木马的隐藏。

下面是一个用vb编辑的木马程序,用于隐藏木马。

程序的具体编制操作如下:

①新建一个工程名命名为Hidden, 在工程hidden中添加模块Modulel,应用程序标题也改为Hidden。

在模块Module1中加入如下声明:

Public Declare Function GetCurrentProcessId Lib “kernel32” () As Long

'获得当前进程ID函数的声明。

Public Declare Function RegisterServiceProcess Lib “kernel32” (ByVal ProcessId As Long, ByVal ServiceFlags As Long) As Long

'在系统中注册当前进程ID函数的声明。

②在Project1中新建一个窗体Form1,设置Form1的属性:

form1.Visible=False

form1.ShowInTaskBar=False

在代码窗口添加如下代码:

Private Declare Function GetDriveType Lib “kernel32” Alias “GetDriveTypeA” (ByVal nDrive As String) As Long

'获得当前驱动器类型函数的声明。

Private Declare Function GetVolumeInformation Lib “kernel32” Alias “GetVolumeInformationA” (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

'获得当前驱动器信息函数的声明:

Private Sub Form_Load()

Dim drive_no As Long, drive_flag As Long

Dim drive_chr As String, drive_disk As String

Dim serial_no As Long, kkk As Long

Dim stemp3 As String, dflag As Boolean

Dim strlabel As String, strtype As String,strc As Long

RegisterServiceProcess GetCurrentProcessId, 1 ' 从系统中取消当前进程:

strlabel = String(255, Chr(0))

strtype = String(255, Chr(0))

stemp3 = “用户c盘序列号” '用户C盘的序列号(十进制),读者可根据自己情况给出。

dflag = False

For drive_no = 0 To 25

drive_disk = Chr(drive_no + 67)

drive_chr = drive_disk & “:/”

drive_flag = GetDriveType(drive_chr)

If drive_flag = 3 Then

kkk = GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype,Len(strtype)) '通过GetVolumeInformation获得磁盘序列号:

Select Case drive_no

Case 0

strc = serial_no

End Select

If serial_no = stemp3 Then

dflag = True

Exit For

End If

End If

Next drive_no

If drive_no = 26 And dflag = False Then '非法用户

GoTo err:

End If

MsgBox (“HI,合法用户!”)

Exit Sub

err:

MsgBox (“错误!你的C:盘ID号是” & strc)

End Sub

Private Sub Form_Unload(Cancel As Integer)

RegisterServiceProcess GetCurrentProcessId, 0 '从系统中取消当前程序的进程:

End Sub

(2)木马的启动。

“木马”的启动方式有很多种,这里我们介绍几种主要的:

①在Win.ini的[windows]字段中有启动命令“load=”和“run=”,在一般情况下 “=”后面是空白的,如果有后跟程序,比方说是这个样子:

run=c:/windows/file.exeload=c:/windows/file.exe

②在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”。

③在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE/ Software/ Microsoft/ Windows/ CurrentVersion/ Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE。

参考文献

[1]孙锋. 网络安全与防黑技术[M]. 北京:机械工业出版社,2004.

[2]齐锋. Visual Basic 6.0程序设计[M]. 北京:中国铁道出版社,2003.

上一篇:恶意软件的治理研究 下一篇:基于J2ME平台的移动电子商务应用研究