[发明专利]文件操作方法及装置有效
申请号: | 201210199822.8 | 申请日: | 2012-06-14 |
公开(公告)号: | CN102768678A | 公开(公告)日: | 2012-11-07 |
发明(设计)人: | 潘剑锋;王宇 | 申请(专利权)人: | 奇智软件(北京)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市德权律师事务所 11302 | 代理人: | 刘丽君 |
地址: | 100016 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 文件 操作方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别是涉及文件操作方法及装置。
背景技术
在面对复杂问题的时候,人们往往会采用分而治之的方法分割、缩小问题的范围,这一点在操作系统的设计中亦是如此。例如,Windows操作系统就是借助分层的设计思想来解决复杂的问题。这一做法带来了可移植性、可扩展性等优点,不过,由于在设计理论上存在着安全性缺陷(例如缺乏完整性校验机制等),另一方面也意味着系统存在大量的被篡改可能。以文件系统的设计为例,文件调用栈的分层式结构决定了其调用链上存在多个层,每个层对其上层提供接口,对下层进行调用,文件的调用请求会从最上层开始,经过调用链上的逐层处理,直到到达文件系统的下层设备,并最终确定出文件是保存在磁盘的第多少个扇区、占用多少字节等等,然后返回对应的信息。但是,由于操作系统并不会对调用链的完整性进行校验,这也就意味着,第三方可以任意地向调用链中加入一些层,甚至还可以对已有的层的逻辑进行修改等等,而这种加入层或者修改层逻辑的操作,都使得调用链存在被篡改的风险。
例如,一些包含有病毒等恶意内容的文件为了避免被安全软件检测到,就会通过安装驱动的方式,对系统的文件调用栈的链路进行篡改(增加层或者修改一些层逻辑等),达到对文件调用操作进行劫持的目的,以至于安全软件在调用文件时,获得的数据的准确性得不到保证。例如,安全软件在需要获取文件A的数据对文件A进行检测时,如果链路已经被篡改,则系统实际上返回的却可能是文件B的数据,最终安全软件实际检测数据的也是文件B的数据,只不过安全软件无法知悉该情况,会将其作为文件A的数据来看待。这样,只要文件B是安全的,就可以通过检测,并且安全软件显示的检测结果是“文件A不存在安全威胁”,进而,如果用户信任安全软件的检测结果,对文件A执行了打开或者运行等操作,则可能也会导致用户的系统遭到文件A包含的恶意程序的侵害。
一般而言,操作系统文件调用栈链路如图1所示,在执行文件调用操作时采用如下分层调用的方式:调用者101(例如安全软件等)调用内核接口层102,内核接口层102调用内核执行层103,内核执行层103调用文件对象解析例程104,文件对象解析例程104调用过滤驱动105,顶层过滤驱动逐层调用直至调用到底层过滤驱动106,底层过滤驱动106调用文件系统107,文件系统107调用文件系统下层设备108,等等。其中,调用者101和内核接口层102属于操作系统用户态,内核执行层103、文件对象解析例程104、顶层过滤驱动105、底层过滤驱动106、文件系统107和文件系统下层设备108属于操作系统内核态。
在对文件调用栈的链路进行篡改时,有很多潜在的篡改点,这些篡改点可能包括对用户态的篡改(例如内核接口层的用户态IAT Hook(Import Address Table Hook,导入表钩挂)/EAT Hook(Export Address Table Hook,导出表钩挂),内核接口层的用户态Inline Hook(内联钩挂)等),也可能包括对内核态的篡改(例如,内核执行层的Native API SSDT Hook(System Service Dispatch Table Hook,系统服务分派表钩挂)、文件对象解析例程的Object Parse Routine Hook(对象解析例程钩挂)、顶层过滤驱动a的顶层过滤驱动获取,等等)。
传统的安全软件厂商虽然意识到了文件调用操作被劫持的各种可能性,但是大多只考虑了操作系统用户态的劫持风险,在操作系统内核态的攻防上往往体现出一定的能力缺失。
为了能够避免操作系统内核态被劫持时带来的危害,本发明人提供了“文件穿透”的解决方案(该方案已经作为一件独立的专利另行申请)。所谓的文件穿透是指,假设操作系统中原有的文件调用栈的链路是不安全的,因此,在文件调用请求到来时,另外建立一条新的、可信的链路,通过该新建的链路去获取文件对应的数据。也就是说,文件的调用请求不再经过原有调用栈上内核态的各个层,而是直接通过一条可信的通道到达文件所在的原始地址,可见,相当于在调用文件的过程中,将调用栈中原有的链路作为旁路,形象地讲,就相当于穿透了内核态的各个层,因此简称为文件穿透。
这种文件穿透方案由于使得文件调用请求不再流经内核态的各个层,因此,也就不会遭受内核态劫持,可以保证调用者最终调用到的数据的正确性,进而也保证调用者后续执行的检测等操作的有效性。但是,在实际应用中,通过这种文件穿透的方式对文件进行调用时,有时会出现调用错误,例如无法找到文件的原始地址,或者调用到的数据存在乱码,等等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于奇智软件(北京)有限公司,未经奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210199822.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种联系人信息的查找方法和终端
- 下一篇:栅格地图图片库的建立方法