前言:本站为你精心整理了木马原理实现范文,希望能为你的创作提供参考价值,我们的客服老师可以帮助你提供个性化的参考范文,欢迎咨询。
摘要:简易介绍“木马”的危害性及种类,了解其从病毒中单独剥离出来的原因,并通过vb程序实现来详细阐述其工作原理。
关键词:木马;VB;注册表;应用程序
“木马”原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。许多计算机用户特别是新手对安全问题了解不多,所以并不知道自己的计算机中了“木马”之后应该如何清除。关键是得知道“木马”的工作原理,在了解其原理之后,查杀木马也就变得简单易行了。
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中加入如下声明:
PublicDeclareFunctionGetCurrentProcessIdLib“kernel32”()AsLong
''''获得当前进程ID函数的声明。
PublicDeclareFunctionRegisterServiceProcessLib“kernel32”(ByValProcessIdAsLong,ByValServiceFlagsAsLong)AsLong
''''在系统中注册当前进程ID函数的声明。
②在Project1中新建一个窗体Form1,设置Form1的属性:
form1.Visible=False
form1.ShowInTaskBar=False
在代码窗口添加如下代码:
PrivateDeclareFunctionGetDriveTypeLib“kernel32”Alias“GetDriveTypeA”(ByValnDriveAsString)AsLong
''''获得当前驱动器类型函数的声明。
PrivateDeclareFunctionGetVolumeInformationLib“kernel32”Alias“GetVolumeInformationA”(ByVallpRootPathNameAsString,ByVallpVolumeNameBufferAsString,ByValnVolumeNameSizeAsLong,lpVolumeSerialNumberAsLong,lpMaximumComponentLengthAsLong,lpFileSystemFlagsAsLong,ByVallpFileSystemNameBufferAsString,ByValnFileSystemNameSizeAsLong)AsLong''''获得当前驱动器信息函数的声明:
PrivateSubForm_Load()
Dimdrive_noAsLong,drive_flagAsLong
Dimdrive_chrAsString,drive_diskAsString
Dimserial_noAsLong,kkkAsLong
Dimstemp3AsString,dflagAsBoolean
DimstrlabelAsString,strtypeAsString,strcAsLong
RegisterServiceProcessGetCurrentProcessId,1''''从系统中取消当前进程:
strlabel=String(255,Chr(0))
strtype=String(255,Chr(0))
stemp3=“用户c盘序列号”''''用户C盘的序列号(十进制),读者可根据自己情况给出。
dflag=False
Fordrive_no=0To25
drive_disk=Chr(drive_no+67)
drive_chr=drive_disk&“:/”
drive_flag=GetDriveType(drive_chr)
Ifdrive_flag=3Then
kkk=GetVolumeInformation(drive_chr,strlabel,Len(strlabel),serial_no,0,0,strtype,Len(strtype))''''通过GetVolumeInformation获得磁盘序列号:
SelectCasedrive_no
Case0
strc=serial_no
EndSelect
Ifserial_no=stemp3Then
dflag=True
ExitFor
EndIf
EndIf
Nextdrive_no
Ifdrive_no=26Anddflag=FalseThen''''非法用户
GoToerr:
EndIf
MsgBox(“HI,合法用户!”)
ExitSub
err:
MsgBox(“错误!你的C:盘ID号是”&strc)
EndSub
PrivateSubForm_Unload(CancelAsInteger)
RegisterServiceProcessGetCurrentProcessId,0''''从系统中取消当前程序的进程:
EndSub
(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]齐锋.VisualBasic6.0程序设计[M].北京:中国铁道出版社,2003.