[发明专利]用于外来代码检测的系统和方法有效
| 申请号: | 200680007679.0 | 申请日: | 2006-04-06 |
| 公开(公告)号: | CN101405705A | 公开(公告)日: | 2009-04-08 |
| 发明(设计)人: | K·豪特乐利得;U·隆顿;V·A·舒宾 | 申请(专利权)人: | 微软公司 |
| 主分类号: | G06F12/14 | 分类号: | G06F12/14 |
| 代理公司: | 上海专利商标事务所有限公司 | 代理人: | 陈 斌 |
| 地址: | 美国华*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 外来 代码 检测 系统 方法 | ||
版权声明和许可
本专利文件的公开内容的一部分可能包含须经版权保护的材料。本版权所有者不反对任何专利文件或专利公开像出现在专利与商标局专利文件或记录中一样的复制,但在除此之外的任何情况下保留版权。以下标注应适用于本文件:Copyright2004,Microsoft Corp.。
发明领域
本发明一般涉及计算领域,尤其涉及检测非旨在驻留在计算机系统的进程空间中的外来代码的技术。
发明背景
当今的计算机系统常遭受到各种破坏或禁止计算机系统的期望操作、并使得系统以损坏或非期望方式运行的攻击。计算机病毒、蠕虫和特洛伊木马程序是不同形式攻击的示例。攻击也可以来自计算机系统的不择手段的用户或者远程黑客。这些攻击通常是以尝试修改由计算机系统执行的现有程序代码或尝试在计算机系统中常规程序执行的各个阶段插入新的未经授权的程序代码的形式出现。防止这些恶意攻击的系统和方法变得日益重要。
一般而言,这种攻击是通过使计算机执行外来代码实现的。在这种情况下“外来”代码是指不旨在或期望在特定程序的进程空间中执行的代码。它通常由黑客写成用以进入程序的进程空间以完成某些目的,诸如删除、破坏或为了如非法制作音乐的未经授权拷贝等其它目的操纵代码或数据等。
防止外来代码的这种攻击有助于确保计算机系统(或至少是特定程序)的行为完整性。维持完整性的一种方式是执行模块认证,其中保护一个或多个软件模块的安全性以免被篡改。这提供了对诸如代码补丁、重定向和软件断点等对软件的恶意改变的一定程度的保护。
模块认证的一种形式是确保包含在软件模块中的内容没有被改变(或者至少诸如代码部分等模块的不期望改变的部分真正保持未变)。这可以通过静态模块认证来完成。静态模块认证是验证模块(在某些情况下可被认为是“on-disk(盘上)”模块)的持久存储图像的过程。例如,检查盘上模块的一种机制可以通过取文件的散列值、并将所得散列值与已由受信任签署者签名的文件的预先计算散列值作比较来完成。
散列(Hashing)的处理是一种众所周知的密码技术,它使用相对唯一但相比原始数据小得多的表示来标识数据。如SHA-1等好的散列算法即使对于源数据中(或者该情况下的二进制文件)微小的变化也会生成显著不同的散列值。因此,当预期的攻击是对所存储代码的修改时,散列法在检测出修改方面很有效。
然而,对于检查代码和数据的完整性和安全性方面有基本的限制。简而言之,不能一直检查所有的代码和数据。从性能的角度看,用户可能不希望计算机系统专门使用其过量的资源来不断地搜索代码或数据篡改。例如,像Microsoft Suite等大型软件程序的大小是许多兆字节,并且会花费大量的资源来反复检查整个程序以获得代码或数据篡改的证据。
解决该性能问题的一个方法是通过在存储器中选择一些数量的随机页面然后扫描它们来检查外来代码。可以在某些设定的时间间隔或在事件发生时扫描这些页面。通过随机地检查有限量的代码和数据,可为用户释放更多的资源以供使用,同时提供对外来代码破坏计算机系统完整性的合理检查。
然而,用于检查对计算机系统的攻击的一种经改进方式是仔细地选择程序的哪些部分用于检查可能的篡改。例如,如果没有引用代码,那么它不能被执行,这意味着它不会对计算机系统完整性造成危险。因此,提供智能技术来检测外来代码是有优势的,其中检查和验证将要执行的代码或者很有可能要执行的代码。具体地,通过检查可引用任何外来代码的进程空间中的线程堆栈来确定外来代码的存在是有优势的。此外,检查指令指针所指向的代码、页面出错历史、以及任何指针和可执行的其相关联函数,诸如整个动态链接库(DLL)中的指针和函数、事件处理器的指针和函数等,是有优势的。
发明内容
本发明的各个方面示教了检测外来代码的一种智能方法。本发明一方面的重点在于可能运行的代码,即以某种方式引用的代码。在本发明的一方面,不管线程堆栈是否活动检查由线程堆栈引用的代码。特别地,检查在任何给定线程堆栈上引用的选定代码页面。此外,在本发明的另一方面,也选择邻近那些选定页面的任何可疑页面来作外来代码检查。在本发明的又一方面,检查线程堆栈上引用的随机页面。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200680007679.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:信息传输装置、信息发送装置和信息传输方法
- 下一篇:补片散热器





