English
 电子信箱
 加入收藏

  威盾防火墙 >> 支持与下载 >> 技术文章 >> 网页传播的木马原理及对策

 

网页传播的木马原理及对策

威盾防火墙 2009-06-22

 
大家在浏览网页的时候,一不小心就会中木马。有的人很疑惑:“我又没有运行一些不不认识的程序,怎么会感染木马呢?”。其实按照现在的木马技术,根本不需要你主动运行它,只需利用操作系统的不安全的地方,通过浏览网页的过程自动注入的。请看下文。

  一、网页木马或病毒传播机理:

  我总结了一下,大概有以下几步骤:

  1、下载木马程序。

  这里使用Microsoft.XMLHTTP对象和ADODB.Stream对象将网站上事先放好的木马可执行文件(exe或dll形式的com组件)下载到本地。Microsoft.XMLHTTP对象负责获取木马文件内容,ADODB.Stream对象负责存盘。这种方法,我们开发Linkworks.net中所用到的Ajax技术已经用到了,我不多说了。

  2、放置木马程序到指定的目录、伪装木马程序为系统文件

  这里调用Scripting.FileSystemObject 组件将下载的木马程序拷贝到指定的目录。

  这两个组件完成的功能一样,都是对文件,文件夹进行拷贝,删除,移动,重命名等操作。

  我挑出了一些方法,大家看一下,一旦在脚本中调用这些方法,就可以在你机器上任意位置埋藏木马。

  //列举驱动器

  IDriveCollection* Drives();

  //判断驱动器是否存在

  VARIANT_BOOL DriveExists([in] BSTR DriveSpec);

  //判断文件是否存在

  VARIANT_BOOL FileExists([in] BSTR FileSpec);

  //判断目录是否存在

  VARIANT_BOOL FolderExists([in] BSTR FolderSpec);

  //获取特殊路径(如系统路径,临时路径。。。)

  IFolder* GetSpecialFolder([in] SpecialFolderConst SpecialFolder);

  //删除文件

  void DeleteFile([in] BSTR FileSpec, [in, optional, defaultvalue(0)] VARIANT_BOOL Force);

  //删除目录

  void DeleteFolder([in] BSTR FolderSpec, [in, optional, defaultvalue(0)] VARIANT_BOOL Force);

  //移动文件

  void MoveFile([in] BSTR Source,[in] BSTR Destination);

  //移动目录

  void MoveFolder([in] BSTR Source, [in] BSTR Destination);

  //拷贝文件

  void CopyFile([in] BSTR Source, [in] BSTR Destination, [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);

  //拷贝目录

  void CopyFolder([in] BSTR Source,[in] BSTR Destination,[in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);

  //创建目录

  IFolder* CreateFolder([in] BSTR Path);

  //创建文本文件

  ITextStream* CreateTextFile([in] BSTR FileName,[in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite, [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode);

  //打开文本文件

  ITextStream* OpenTextFile([in] BSTR FileName,[in, optional, defaultvalue(1)] IOMode IOMode, [in, optional, defaultvalue(0)] Tristate Format);

  //获取标准的输入输出流

  ITextStream* GetStandardStream([in] StandardStreamTypes StandardStreamType,[in, optional, defaultvalue(0)] VARIANT_BOOL Unicode);

3、注入木马,获取计算机的控制权

  对于木马的形式是dll的com组件的,一般木马作者会将这种com组件做成“Shell扩展”、“浏览器插件”、“浏览器辅助对象”、“地址栏挂钩”、“网络协议劫持插件”、“网络协议过滤插件”,“office的Addin程序”等等形式。这里就需要修改注册表的操作了。脚本程序可以通过调用WScript.Shell对象的RegRead、RegWrite、RegDelete方法来实现注册表的操作。

  对于木马形式是exe的,那就有很多方法进行注入了

  1) 调用WScript.Shell对象的Run或Exec方法来直接执行exe程序.

  2) 调用Shell.Application对象的Open或Explore方法来执行exe程序。

  3) 调用WScript.Shell对象的RegRead、RegWrite、RegDelete方法将exe文件设置为开机自动启动。自启动的程序有多种多样,这里暂不扩展。

  4) 调用WScript.Shell对象的CreateShortcut方法创建一个快捷方式,放到开始菜单中的启动目录里。以便下次开机运行。

  5) 调用Scripting.FileSystemObject对象的CreateTextFile方法创建一个批处理文件、vbs文件、js文件等可执行的脚本文件来运行exe。

  二、对策

  首先vb脚本或javascript脚本的运行,虽然可以在IE中被禁用,但这样会导致目前大多数网站的浏览不正确,这显然不是我们所希望的。

  如果我们能阻止脚本程序对本机的文件操作、目录操作、注册表操作、程序运行等进行控制,那自然可以起到阻止木马入侵的功能。

  我们先分析一下以上关键的com对象:

  Scripting.FileSystemObject 是由系统目录中的scrrun.dll实现

  WScript.Shell 是由系统目录中的wshom.ocx实现

  Shell.Application 是由系统目录中的SHELL32.dll实现

  因此我们可以 写一个批处理文件,将这三个不安全的组件进行卸载,批处理文件内容如下:

      regsvr32 /u /s %SystemRoot%\system32\SHELL32.dll
  regsvr32 /u /s %SystemRoot%\system32\wshom.ocx
  regsvr32 /u /s %SystemRoot%\system32\scrrun.dll

  当这几个com组件卸载后,恶意脚本就无法进行文件,注册表操作以及运行程序了,想注入自然不可能了。

  三、影响

  scrrun.dll,wshom.ocx,SHELL32.dll这几个组件基本都是给脚本调用的,我们常见的脚本又大多在网页中,只要我们自己的程序不去调用这些组件,那基本没什么问题了。

  不过我也发现了个别情况,比如Visual Studio .Net 2003开发工具,它创建一个工程时,所使用的工程模板中用到了脚本,并使用了Scripting.FileSystemObject对象,因而会出现创建工程失败的问题。还有Office 2003里,也会用到这个组件,但不影响正常使用。


相关内容: 最新内容:
QQ盗号木马原理[2009-06-22]
借壳explorer的盗密木马Trojan.Hanambot[2009-06-22]
解析木马后门的原理 把它扼杀在摇篮里[2009-06-20]
毒报:木马侵袭搜索查询 恶意网弹[2009-06-20]
黑客技巧之用VB实现木马式隐形运行程序[2009-06-19]
特洛伊木马是如何工作的[2009-06-19]
QQ盗号木马原理[2009-06-22]
借壳explorer的盗密木马Trojan.Hanambot[2009-06-22]
韩实施网络实名制 违规网站最高罚2.4万美元[2009-06-22]
法制“杀毒”五月现效果 挂马威胁依旧潜伏[2009-06-22]
解析木马后门的原理 把它扼杀在摇篮里[2009-06-20]
毒报:木马侵袭搜索查询 恶意网弹[2009-06-20]