查看文章
 
关于"NTFS格式分区"的硬连接问题及相关
2006-12-26 13:17

     NTFS格式是微软针对个人用户设计的一种硬盘分区格式,比起FAT32格式,它有很多的新鲜功能,例如对文件的加密、用户及用户组的权限分配等.尽管NTFS在很大程度上加强了操作系统的安全性和稳定性,但它的一些特性也不可避免的给系统带来了某些安全隐患,比如下面我们要说的"硬连接".也许硬连接本身没什么恶意功能吧,但如果恶意攻击者把硬连接和windows的文件锁定功能结合起来,就能制作出无论是普通模式还是安全模式都可以实现自启动且无法删除的恶意程序.

    先简单的说下硬连接和windows的文件锁定功能

通常一个硬盘分区可分为硬盘数据内容域和文件列表域,其中文件列表域记录系统中文件的一些相关信息(如文件的权限、属性等内容)和该文件所指向的数据区域的位置.所谓建立硬连接就是在文件列表域中加入一个与某个已经存在的文件相关信息保持一致的且所指向数据区域位置相同的记录,如名为a.txt的文本文件,其内容为"hi,i am a".那么它的实际数据内容"hi,i am a"存储在硬盘数据内容域中,而它的一些相关信息以及a.txt的内容在硬盘数据域中所存储的位置则放在文件列表域中.

   如今要建立一个a.txt的硬连接,名为b.txt,则b.txt的文件内容也是"hi,i am a",如果a.txt的文件内容发生了改变,那么b.txt的文件内容也会发生改变.

    windows下建立NTFS的硬连接的方法是通过调用API函数CreateHardLink来实现(在VC++6.0的头文件中包括<windows.h>便可以使用).函数格式为

  CreateHardLink(新建硬连接名,已有文件名,安全属性).  

  如果硬连接建立成功则返回逻辑真,否则返回逻辑假.更多的关于该函数可以到MSDN去查询.

文件锁定是windows向用户提供的一种保护数据的安全机制.即一个正在运行的程序或被应用程序打开的程序一般都处于锁定状态,当用户试图删除它时系统会报错,如:

一般情况下我们只要根据文件名就可以找出是哪个程序在使用或锁定文件了,但如果文件被做了硬连接,并且如果锁定的是该文件的硬连接文件,那么利用文件名根本就无法找到是哪个程序在起锁定作用了,所以也就不能结束该程序了.如a.txt的硬连接b.txt被打开或锁定,那么别的程序也无法对a进行操作了,而我们根据a根本无法确定是哪个程序在锁定文本a,通常我们很难想到a.txt会和b.txt有什么关系.试想一下,如果有恶意程序利用了硬连接和文件锁定功能的话,那将会给我们的手工杀毒带来很大的麻烦.
  解决方法:
1、  由于硬连接的建立不能跨分区(如不能在D盘建立一个C盘文件的硬连接),所以如果用FAT32格式的的分区做系统分区,那么恶意程序就不会对一些重要系统文件做硬连接了.所以普通用户完全可以用FAT32格式做系统分区,而重要的数据存储区则使用NTFS.
2、  对于一些非NTFS格式做分区不可的用户来说,可以先对一些系统敏感文件做锁定操作,因为windows系统不允许对已锁定的文件做硬连接,这样一定程度上也可以防止恶意程序的硬连接.

类别:技术ウ点缀生命||添加到搜藏 |分享到i贴吧|浏览(1153)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu