您当前的位置:首页 > 计算机论文>计算机应用论文

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

2015-05-12 13:49 来源:学术参考网 作者:未知

  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.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页