CN102971741A - 规范计算机系统行为的方法 - Google Patents

规范计算机系统行为的方法 Download PDF

Info

Publication number
CN102971741A
CN102971741A CN201080067255XA CN201080067255A CN102971741A CN 102971741 A CN102971741 A CN 102971741A CN 201080067255X A CN201080067255X A CN 201080067255XA CN 201080067255 A CN201080067255 A CN 201080067255A CN 102971741 A CN102971741 A CN 102971741A
Authority
CN
China
Prior art keywords
code snippet
current operation
operation request
data structure
call instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201080067255XA
Other languages
English (en)
Inventor
汪家祥
曲立东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
The safe and sound Information Technology Co., Ltd in sky in Beijing
Original Assignee
Antaios Beijing Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Antaios Beijing Information Technology Co ltd filed Critical Antaios Beijing Information Technology Co ltd
Publication of CN102971741A publication Critical patent/CN102971741A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

一种规范计算机系统行为的方法,包括拦截调用指令;在拦截到调用指令后,获取所述拦截到的调用指令的数据结构;基于所述获取的拦截到的调用指令的数据结构确定拦截到的调用指令的发起者,并确定拦截到的调用指令的操作方法以及操作对象;将所述拦截到的调用指令的发起者、操作方法以及操作对象与规范计算机系统行为的规则进行匹配,判断是否允许所述拦截到的调用指令执行。本发明根据调用指令的数据结构确定拦截到的调用指令的发起者,可以对计算机系统进行全面监控,只要是“恶意”的发起者,均不允许拦截到的调用指令执行,可以全面有效侦测到“非法操作”。

Description

规范计算机系统行为的方法 技术领域
本发明涉及计算机领域,尤其涉及一种规范计算机系统行为的方 法。
背景技术
现有的计算机安全技术主要包括: 1、 建立在 "查杀" 机制上的 计算机安全系统, 例如病毒、 防火墙类软件; 2、 建立在 "庇护" 机 制上的计算机安全系统, 例如 "时间机器" 、 "沙箱" 类安全系统; 3、 建立在 "系统加固" 理论基础上的计算机安全系统, 如 "安全操 作系统( Secure Operation System, 筒称 Secure OS ),, 。
上述的 "查杀" 、 "庇护"机制理论上就不能保障计算机系统安 全。 而 "系统加固,,机制实质上是限制计算机行为以保障计算才 l ^行 安全, 目前基于这种机制的产品主要有安全操作系统和其它主动防御 类产品,但由于这类产品只能通过孤立地限制计算机的某些行为来为 系统提供安全保障, 因此极大的限制了计算机的应用。
事实上, 由于计算机结构、 计算机行为和计算机状态变化的复杂 性, 计算机某一个行为有可能只引起计算机某个状态变化, 也有可能 造成计算机系统一系列反应而引起一连串的状态变更,因此只根据当 前的计算机行为判断计算机行为的合法性是无法有效保障计算机系 统的安全性。这也是为什么主动防御类软件只能作为辅助安全系统的 根本原因。 其次, 由于计算机运行的复杂性, 对于计算机的某个具体行为可 能是由某个合法程序引发, 也可能是恶意代码引发, 如果仅以某个具 体行为本身来判断某个具体行为的合法性就会造成 "一刀切" 现象, 造成合法行为和恶意代码引起的非法行为都会被同样处置,无法有效 区分 "善" "恶" 的安全目的。
计算机的安全必须是系统性的,解决局部的问题不能保证计算机 系统的安全, 例如保障静态的文件代码不被修改, 但如果内存代码或 参数被恶意修改, 计算机系统已没有安全性可言; 计算机在运行过程 中的任何操作都是计算机所具有的功能,孤立地看计算机的每个操作 是没有 "善意" 和 "恶意"之分的, 例如孤立地看删除文件、 修改内 存、 指令重组是无法判断其是否具有恶意。
因此目前计算机系统安全主要面临两个问题:首先是判断计算机 行为合法性依据问题: 具体地说, 就是在判断计算机系统行为合法性 时, 无法形成一个有效的 "证据链"作为判断条件, 所以建立 "连续" "有效" 的判断机制是计算机系统安全面临的最根本的问题。 其次, 有效区分行为的 "善恶" 问题: 在计算机系统运行过程中, 行为本身 是没有 "善恶" 区分, 只有某个行为被恶意使用时才成为恶意行为, 因此怎样区分行为的善恶是计算机系统运行安全最核心的问题。
发明内容
本发明提供一种规范计算机系统行为的方法,通过实现对计算机 系统运行进行全面连续的行为与状态监控,实现对计算机系统行为全 面连续控制, 以达到保障计算机系统行为安全的目的。 克服了现在的 信息安全技术无法全面监控计算机行为,无法控制计算机系统行为的 不足。
为解决以上技术问题,本发明提供一种规范计算机系统行为的方 法, 包括:
获取调用指令,基于所述调用指令获取调用指令要调用的下一代 码片断信息, 建立代码片断调用数据结构; 其中, 所述代码片断调用 数据结构为: 以调用指令所在的代码片断为节点、 以调用指令建立的 发起该调用指令的代码片断和被调用代码片断之间的调用关系为调 用路径而建立的代码片断调用数据结构;所述数据结构包括若干个子 数据结构;
从所述数据结构中获取与当前操作请求关联的子数据结构,基于 所述子数据结构确定当前操作请求的发起者、 操作方法以及操作对 象, 所述当前操作请求为当前调用指令的动作;
获取规范计算机系统行为的规则,将所述确定的当前操作请求的 发起者、操作方法以及操作对象与所述规则进行匹配, 判断当前操作 请求是否合法。
可选的, 所述规范计算机系统行为的规则包括三要素, 分别为: 操作请求的发起者, 操作请求的操作方法以及操作请求的操作对象; 所述规则为: 当所述确定的发起者符合规则要求时, 允许当前操 作请求执行; 或者, 当确定的发起者以及操作方法符合规则要求时, 允许当前操作请求执行; 或者, 当确定的发起者、 操作方法以及操作 对象符合规则要求时, 允许当前操作请求执行。
可选的, 所述发起者为: 当前操作请求之前的、 与当前操作请求 关联的所有节点和调用路径组成的子数据结构。
可选的,所述操作对象为当前操作请求的被调用代码片断所要操 作的内容。
可选的,所述操作方法为当前操作请求的被调用代码片断所要进 行的操作。
可选的,从所述数据结构中获取与当前操作请求关联的子数据结 构包括: 预设获取子数据结构的条件;
在所述当前操作请求满足所述预设条件时, 基于所述数据结构, 回溯与所述当前操作请求关联的节点和调用路径,获取与当前操作请 求关联的子数据结构。
可选的, 还包括:
将所述计算机运行的空间划分为至少两个子空间;
所述预设的获取子数据结构的条件为:在某个子空间内的操作请 求将要操作另一个子空间内的对象。
可选的, 所述数据结构的建立方法包括:
获取调用指令;
获取发起所述调用指令的代码片断以及被调用代码片断; 以所述获取的发起所述调用指令的代码片断以及被调用代码片 断建立节点;
建立发起所述调用指令的代码片断以及被调用代码片断之间的 调用关系,以所述建立的调用关系为调用节点和被调用节点之间的调 用路径。
可选的, 所述调用指令为汇编指令, 所述获取调用指令包括: 对运行的计算机代码进行二进制翻译以获取调用指令。
可选的,所述获取发起所述调用指令的代码片断以及被调用代码 片断包括:
从调用参数中获取被调用代码片断的地址;
基于所述被调用代码片断的地址获取被调用代码片断,所述调用 指令所在的代码片断为发起调用指令的代码片断。
与现有技术相比, 本发明具有以下优点:
本发明的技术方案,从建立的代码片断调用数据结构中获取与当 前操作请求关联的子数据结构,基于所述子数据结构确定当前操作请 求的发起者、操作方法以及操作对象;根据子数据结构确定的发起者、 操作方法以及操作对象与规则进行匹配的结果判断是否允许当前操 作请求执行。上述方案是在当前操作请求未执行时即可对当前操作请
的危害, 具有事前防御的特点; 而且使用动态的、 连续的当前操作请 求关联的子数据结构描述当前操作请求,不像现有技术那样孤立分析 当前的每一个操作。因此将当前操作请求与之前与其关联的行为关联 起来看, 就可以有效判断当前操作请求是 "善意" 还是 "恶意,,。 从 而, 解决现有技术只能事后进行监测和分析计算机系统行为的不足, 并且不能对操作行为进行 "判别,,, 以确定当前操作请求是 "善意" 还是 "恶意" 的缺点。
而且, 在本发明具体实施例中, 规范计算机系统行为的规则可以 为当操作请求的发起者符合规则要求时, 允许当前操作请求执行; 或 者, 当操作请求的发起者以及操作方法符合规则要求时, 允许当前操 作请求执行; 或者, 当当前操作请求的发起者以及操作对象符合规则 要求时, 允许当前操作请求执行; 或者, 当当前操作请求的发起者、 操作方法以及操作对象符合规则要求时, 允许当前操作请求执行。 可 以根据实际情况确定规范计算机系统行为的规则, 非常灵活。
附图说明
图 1 为本发明具体实施方式的规范计算机系统行为的方法的流 程图;
图 2为建立代码片断调用数据结构的方法的流程图;
图 3为本发明具体实施例的代码片断调用关系示意图; 图 4 为本发明具体实施例中建立的代码片断调用数据结构的示 意图。 具体实施方式 子数据结构,基于所述子数据结构确定当前操作请求的发起者、操作 方法以及操作对象; 根据子数据结构确定的发起者、操作方法以及操 作对象与规则进行匹配的结果判断是否允许当前操作请求执行。上述 方案是在当前操作请求未执行时即可对当前操作请求进行分析,与现 预防的特点; 而且使用动态的、 连续的与当前操作请求关联的子数据 结构描述当前操作请求,不像现有技术那样孤立分析当前的每一个操 作。 因此将当前操作请求与之前与其关联的行为关联起来看, 以确定 为什么会引起当前的操作请求,如果引起当前操作请求的关联关系存 在着 "恶意", 该操作请求即为 "恶意的", 反之亦然。 从而, 解决现 有技术只能事后进行监测和分析计算机系统行为的不足,并解决了当 前的安全系统不能对操作行为进行 "判别" 以确定当前操作请求是 "善意" 还是 "恶意" 的缺点。
图 1 为本发明具体实施方式的规范计算机系统行为的方法的流 程图, 参考图 1 , 本发明具体实施方式的规范计算机系统行为的方法 包括: 步骤 S10, 获取调用指令, 基于所述调用指令获取调用指令要调 用的下一代码片断信息, 建立代码片断调用数据结构; 其中, 所述代 码片断调用数据结构为: 以调用指令所在的代码片断为节点、 以调用 指令建立的发起该调用指令的代码片断和被调用代码片断之间的调 用关系为调用路径而建立的代码片断调用数据结构;所述数据结构包 括若干个子数据结构;
步骤 S20, 从所述数据结构中获取与当前操作请求关联的子数据 结构,基于所述子数据结构确定当前操作请求的发起者、操作方法以 及操作对象, 所述当前操作请求为当前调用指令的动作。
步骤 S30, 获取规范计算机系统行为的规则, 将所述确定的当前 操作请求的发起者、操作方法以及操作对象与所述规则进行匹配, 判 断当前操作请求是否合法。
为了使本领域技术人员可以更好的理解本发明的精神,下面结合 具体实施例以及附图详细说明本发明具体实施方式的规范计算机系 统行为的方法。
步骤 S10, 获取调用指令, 基于所述调用指令获取调用指令要调 用的下一代码片断信息, 建立代码片断调用数据结构; 其中, 所述代 码片断调用数据结构为: 以调用指令所在的代码片断为节点、 以调用 指令建立的发起该调用指令的代码片断和被调用代码片断之间的调 用关系为调用路径而建立的代码片断调用数据结构;所述数据结构包 括若干个子数据结构。
计算机通过执行代码以及功能函数之间的调用实现一定的功能, 其中顺序执行的一段代码定义为一代码片断,在顺序执行完一代码片 断后, 通过调用指令跳转执行下一代码片断, 基于此原理, 建立描述 计算机代码执行过程的数据结构,也就是本发明中的代码片断调用数 据结构。
在计算机运行时, 以调用指令所在的代码片断为节点, 以调用指 令建立的发起调用指令的代码片断和被调用代码片断之间的调用关 系为调用路径建立代码片断调用数据结构;该代码片断调用数据结构 包括各个节点, 以及各个调用节点和被调用节点之间的调用路径。 其 中, 调用节点是指以发起调用指令的代码片断建立的节点, 被调用节 点是指以调用指令所要调用的代码片断(即被调用代码片断 )建立的 节点, 也就是说, 在建立顺序相邻的两个节点中, 调用节点是指先建 立的节点, 被调用节点指后建立的节点。 本发明中的代码片断调用数 据结构包括若干个子数据结构, 由于在同一时间点, 会有若干个调用 指令同时执行, 该若干个调用指令调用相应的若干个下一代码片断, 因此就会出现建立的代码片断调用数据结构是一个数据网,由若干个 子数据结构构成。
图 2为建立代码片断调用数据结构的方法的流程图, 参考图 2, 本发明的代码片断调用数据结构的方法包括:
步骤 S21 , 获取调用指令;
步骤 S22, 获取发起所述调用指令的代码片断以及被调用代码片 断;
步骤 S23 , 以所述获取的发起所述调用指令的代码片断以及被调 用代码片断建立节点;
步骤 S24, 建立发起所述调用指令的代码片断以及被调用代码片 断之间的调用关系,以所述建立的调用关系为调用节点和被调用节点 之间的调用路径。 下面详述建立代码片断调用数据结构的方法, 步骤 S21 , 获取调 用指令: 在本发明的该具体实施例中调用指令为汇编指令, 而计算机 运行的代码均为机器码, 本发明具体实施例中所述获取调用指令包 括: 对计算机运行时的机器码进行二进制翻译以获取调用指令。 具体 为: 通过将计算机运行时的机器码进行二进制翻译, 将机器码翻译为 汇编语言, 此过程为反汇编过程, 得到反汇编后的汇编语言后, 获取 汇编语言中的调用指令。
图 3为本发明具体实施例的代码片断调用关系示意图,参考图 3 , 图 3示出了多个代码片断, 分别为由 Al~An行代码组成的代码片断 11、 由 B 1 ~Bn行代码组成的代码片断 12、 由 C 1 ~Cn行代码组成的代 码片断 13 , 由 M 1 ~Mn行代码组成的代码片断 21 , 由 L 1 ~Ln行代码 组成的代码片断 31 , 由 El~En行代码组成的代码片断 41、 由 Fl~Fn 行代码组成的代码片断 42、 由 G 1 ~Gn行代码组成的代码片断 43 , 由 Rl ~Rn行代码组成的代码片断 61 , 由 S 1 ~Sn行代码组成的代码片断 51 , 其中, An行代码、 Bn行代码、 Cn行代码、 Mn行代码、 Ln行 代码、 En行代码、 Fn行代码、 Gn行代码、 Rn行代码、 Sn行代码均 为调用指令, 通过 An行代码、 Bn行代码、 Cn行代码、 Mn行代码、 Ln行代码、 En行代码、 Fn行代码、 Gn行代码、 Rn行代码、 Sn行 代码将图 3所示的计算机代码分成了多个代码片断, 即代码片断 11、 代码片断 12、 代码片断 13、 代码片断 21、 代码片断 31、 代码片断 41、 代码片断 42、 代码片断 43、 代码片断 51、 代码片断 61 ; 其中, 代码片断 11、 代码片断 12、 代码片断 13、 代码片断 21、 代码片断 31 为相互关联的一组代码片断, 他们之间的相互调用关系可以形成 一个子数据结构; 代码片断 41、 代码片断 42、 代码片断 43、 代码片 断 51、 代码片断 61为相互关联的一组代码片断, 他们之间的相互调 用关系可以形成一个子数据结构。在图 3所示的本发明的该具体实施 例中, 计算机执行完代码片断 11后, 通过 An行代码调用代码片断 21 , 代码片断 21执行完后, 通过 Mn行代码调用代码片断 31 , 代码 片断 31执行完后, 通过 Ln行代码调用代码片断 12, 代码片断 12执 行完后,通过 Bn行代码调用代码片断 13。计算机执行完代码片断 41 后, 通过 En行代码调用代码片断 51 , 代码片断 51执行完后, 通过 Sn行代码调用代码片断 61 , 代码片断 61执行完后, 通过 Rn行代码 调用代码片断 42, 代码片断 42执行完后, 通过 Fn行代码调用代码 片断 43。 图 3 中只是示意性的给出了几个代码片断的示例, 起到可 以使本领域技术人员可以更好的理解建立调用指令的数据结构的目 的。
在本发明的具体实施例中, An行代码、 Bn行代码、 Cn行代码、 Mn行代码、 Ln行代码、 En行代码、 Fn行代码、 Gn行代码、 Rn行 代码、 Sn行代码为机器码, 对其进行二进制翻译获取汇编语言调用 指令。
执行完步骤 S21后, 执行步骤 S22, 获取发起所述调用指令的代 码片断以及被调用代码片断。举例来说, 如果步骤 S21中获取的调用 指令为 An行代码表示的调用指令, 则在步骤 S22中获取发起该调用 指令的代码片断 11 , 被调用的代码片断 21。 如果步骤 S21 中获取的 调用指令为 Mn行代码表示的调用指令,则在步骤 S22中获取发起该 调用指令的代码片断 21 , 被调用的代码片断 31。
执行步骤 S23 , 以所述获取的发起所述调用指令的代码片断以及 被调用代码片断建立节点。 结合图 3和图 4进行说明, 代码片断 11 执行完后, 以代码片断 11建立节点 P11 ; 然后, An行代码表示的调 用指令调用代码片断 21 , 代码片断 21执行完后, 以代码片断 21建 立节点 P21 ; 然后, Mn行代码表示的调用指令调用代码片断 31 , 代 码片断 31执行完后, 以代码片断 31建立节点 P31 ; 然后, Ln行代码 表示的调用指令调用代码片断 12, 代码片断 12执行完后, 以代码片 断 12建立节点 P12; 接着, Bn行代码表示的调用指令调用代码片断 13 , 代码片断 13执行完以后, 以代码片断 13建立节点 P13。 对于另 一组代码片断, 代码片断 41执行完以后, 以代码片断 41 建立节点 N41 ; 然后, En行代码表示的调用指令调用代码片断 51 , 代码片断 51执行完以后, 以代码片断 51建立节点 N51 ; 然后, Sn行代码表示 的调用指令调用代码片断 61 , 代码片断 61执行完以后, 以代码片断 61建立节点 N61 ;然后, Rn行代码表示的调用指令调用代码片断 42, 代码片断 42执行完以后, 以代码片断 42建立节点 N42; 接着, Fn 行代码表示的调用指令调用代码片断 43 , 代码片断 43执行完以后, 以代码片断 43建立节点 N413。
步骤 S24, 建立发起所述调用指令的代码片断以及被调用代码片 断之间的调用关系,以所述建立的调用关系为调用节点和被调用节点 之间的调用路径。 仍以图 3所示为例, 结合图 4进行说明, 以代码片 断 11 ( An行代码对应的调用指令的发起者)对代码片断 21 ( An行 代码对应的调用指令的调用目标、 Mn行代码对应的调用指令的发起 者) 的调用关系建立代码片断 11 的节点 P11和代码片断 21 的节点 P21之间的调用路径 T1 ,以代码片断 21对代码片断 31的调用关系建 立代码片断 21的节点 P21和代码片断 31的节点 P31之间的调用路径 T2, 以代码片断 31对代码片断 12的调用关系建立代码片断 31的节 点 P31和代码片断 12的节点 P12之间的调用路径 T3 , 以代码片断 12对代码片断 13的调用关系建立代码片断 12的节点 P12和代码片 断 13的节点 P13之间的调用路径 T4,从而可以建立从根节点到当前 节点的所有节点之间的调用路径。 以代码片断 41 ( En行代码对应的 调用指令的发起者)对代码片断 51 ( En行代码对应的调用指令的调 用目标、 Sn行代码对应的调用指令的发起者) 的调用关系建立代码 片断 41的节点 N41和代码片断 51的节点 N51之间的调用路径 K1 , 以代码片断 51对代码片断 61的调用关系建立代码片断 51的节点 N51 和代码片断 61的节点 N61之间的调用路径 K2 , 以代码片断 61对代 码片断 42的调用关系建立代码片断 61的节点 N61和代码片断 42的 节点 N42之间的调用路径 K3 , 以代码片断 42对代码片断 43的调用 关系建立代码片断 42的节点 N42和代码片断 43的节点 N3之间的调 用路径 K4, 从而可以建立从根节点到当前节点的所有节点之间的调 用路径。
其中, 以上所述的两组代码片断调用关系中, 其中代码片断 11、 代码片断 12、 代码片断 13、 代码片断 21、 代码片断 31之间的调用 关系建立了一个子数据结构, 其包括节点 Pl l、 P21、 P31、 P12、 P13 以及调用路径 Τ1、 Τ2、 Τ3、 Τ4。 代码片断 41、 代码片断 42、 代码 片断 43、 代码片断 51、代码片断 61之间的调用关系建立了另一个子 数据结构, 其包括节点 Ν41、 Ν51、 Ν61、 Ν42、 Ν43 以及调用路径 Κ1、 Κ2、 Κ3、 Κ4。 为了本领域技术人员理解方便, 图 3和图 4中只 是示意出了一个例子,本发明中的代码片断调用数据结构为一个数据 网, 其包括若干个子数据结构, 每一个子数据结构中的各个代码片断 相互关联。 基于这样一种方式, 每执行一段代码片断, 即每执行一个调用指 令, 即以发起该调用指令的代码片断建立节点, 从而可以建立从根节 点到当前节点的所有节点,调用节点和被调用节点之间通过建立的调 用路径连接。
需要说明的是, 建立数据结构的方法, 是一个动态过程, 每获取 一个调用指令,即获取发起该调用指令的代码片断以及被调用代码片 断,然后以获取的发起调用指令的代码片断以及被调用代码片断建立 节点,并以发起调用指令的代码片断以及被调用代码片断之间的调用 关系建立调用节点和被调用节点之间的调用路径。
现有的计算机为堆栈型, 其中, 栈区由编译器自动分配释放, 存 放调用指令的调用参数,该调用参数包括调用指令所调用的下一代码 片断(即被调用代码片断 )的地址, 下一代码片断的操作方法和操作 内容, 操作方法即如何完成一个操作, 操作内容即操作对应的对象, 以下一代码片断为删除一个文件为例, 操作方法即为删除, 操作内容 即文件。
在本发明具体实施例中,从调用参数中获取被调用代码片断的地 址, 如被调用代码片断的第一行代码的地址, 以图 3为例, 如果被调 用的代码片断为代码片断 21 , 则获取的被调用代码片断的地址为 Ml 行代码的地址, 也就是代码片断 21的第一行代码的地址; 基于所述 被调用代码片断的地址获取被调用代码片断,所述调用指令所在的代 码片断为发起调用指令的代码片断。
以上所述的数据结构, 可以用来描述计算机的运行状态, 该数据 结构是一个非常庞大的数据结构网, 其中包括了很多子数据结构, 每 一个子数据结构对应着相互关联的代码片断调用关系。 步骤 S20, 从所述数据结构中获取与当前操作请求关联的子数据 结构,基于所述子数据结构确定当前操作请求的发起者、操作方法以 及被操作对象。 也就是说, 使用动态连续的子数据结构来描述当前操 作请求的特征, 也就是当前操作请求的特征。 其中操作请求是指调用 指令调用代码的动作;操作方法是指调用指令的被调用代码片断的属 性, 即如何完成一个操作; 操作对象是指被调用代码片断执行动作所 针对的对象, 也就是所要操作的内容。 例如, 当前操作请求为调用被 代码片断, 让该被调用代码片断删除一个文件, 则, 当前操作请求的 操作方法即为删除的动作, 操作内容即为要删除的文件, 也就是所要 操作的内容。
在本发明具体实施例中, 可以预设获取子数据结构的条件, 在当 前操作请求符合预设的条件时,获取与当前操作请求关联的子数据结 构。 因此, 本发明具体实施例中, 从所述数据结构中获取与当前操作 请求关联的子数据结构包括: 预设获取子数据结构的条件; 在所述当 前操作请求满足所述预设条件时,基于所述数据结构, 回溯与所述当 前操作请求的关联的节点和调用路径,获取与当前操作请求关联的子 数据结构。 以所述的图 3和图 4中所示的例子为例: 如果当前操作请 求为 Bn行代码表示的调用指令要进行的动作、 Fn行代码表示的调用 指令要进行的动作, 则, 基于已经建立的数据结构, 对于 Bn行代码 对应的当前操作请求, 回溯获取与其关联的节点和调用路径, 从而获 得获取与当前操作请求关联的子数据结构, 该子数据结构包括: 节点 Pll、 P21、 P31、 P12以及调用路径 Tl、 Τ2、 Τ3。 对于 Fn行代码对 应的当前操作请求, 回溯获取与其关联的节点和调用路径, 从而获得 获取与当前操作请求关联的子数据结构, 该子数据结构包括: 节点 N41、 N51、 N61、 N42以及调用路径 Kl、 K2、 K3。 可以通过追溯当 前操作请求之前、且与其关联的节点, 直至追溯至最初发起当前操作 请求的节点, 以获取当前操作请求的子数据结构。
在本发明具体实施例中, 当前操作请求为汇编指令, 而计算机运 行的代码均为机器码,需要对计算机运行时的机器码进行二进制翻译 获取当前调用指令, 从而获取当前操作请求, 然后根据预设的条件判 断获取的当前操作请求是否满足预设条件, 如果满足预设条件, 则获 取与当前操作请求关联的子数据结构。 具体为: 通过将计算机运行时 的机器码进行二进制翻译, 将机器码翻译为汇编语言, 此过程为反汇 编过程, 得到反汇编后的汇编语言后, 获取汇编语言中的当前调用指 令, 以获取当前操作请求, 然后判断判断获取的当前操作请求是否满 足预设条件, 如果满足预设条件, 则获取与当前操作请求关联的子数 据结构。
在本发明具体实施例中,可以将所述计算机运行的空间划分为至 少两个子空间; 所述预设的获取子数据结构的条件为: 在某个子空间 内的操作请求将调用另一个子空间内的代码片断。由于计算机发生操 作请求调用下一代码片断(可以理解为操作请求)十分频繁, 并且某 些操作请求调用下一代码片断不会对计算机运行造成实质影响,因此 可将计算机运行的空间分为至少两个子空间, 例如: 8个子空间, 并 定义所有子空间两两相邻, 该子空间可根据需要无限细分, 直至细分 至每一个操作请求, 即对每一个操作请求进行合法性判断。 当某个操 作请求将跨子空间边界时, 即触发操作请求的合法性检验机制, 也就 是说, 在将计算机运行的空间划分为多个子空间时, 可以将获取子数 据结构的求的条件设为:在某个子空间内的调用指令将调用另一个子 空间内的代码片断时, 获取与当前操作请求关联的子数据结构。
接下来,基于所述获取的与当前操作请求关联的子数据结构确定 当前操作请求的发起者,并确定当前操作请求的操作方法以及操作对 象。 具体为, 基于已经获取的与当前操作请求关联的子数据结构, 将 获取的与当前操作请求关联的子数据结构确定为当前操作请求的发 起者。 举例来说, 如果当前操作请求为 Bn行代码表示的调用指令将 进行的动作, 则包括节点 Pll、 P21、 P31、 P12以及各个节点之间的 调用路径 Tl、 Τ2、 Τ3的数据结构即为与当前操作请求关联的子数据 结构。基于当前操作请求的调用参数, 确定当前操作请求要调用的下 一代码片断(被调用代码片断 )的操作方法和操作对象, 也就是当前 操作请求的操作方法和操作对象。
在确定了当前操作请求的发起者, 操作方法和操作对象后, 执行 步骤 S30, 获取规范计算机系统行为的规则, 将所述确定的当前操作 请求的发起者、操作方法以及被操作对象与所述规则进行匹配, 判断 当前操作请求否合法。 其中, 在本发明具体实施例中, 规范计算机系 统行为的规则包括三要素, 分别为: 操作请求的发起者, 操作请求的 操作方法以及操作请求的操作对象;规范计算机系统行为的规则为当 当前操作请求的发起者符合规则要求时, 允许当前操作请求执行; 或 者, 当当前操作请求的发起者以及操作方法符合规则要求时, 允许当 前操作请求执行; 或者, 当当前操作请求的发起者以及操作对象符合 规则要求时, 允许当前操作请求执行; 或者, 当当前操作请求的发起 者、操作方法以及操作对象符合规则要求时,允许当前操作请求执行。 具体为, 可以分为四种情况, 第一种情况: 根据操作请求的发起者判 断是否允许当前操作请求执行。 第二种情况: 将操作请求的发起者、 操作请求的操作方法两个要素结合起来判断是否允许当前操作请求 执行。 第三种情况: 将操作请求的发起者、 操作请求的操作对象两个 要素结合起来判断是否允许当前操作请求执行。 第四种情况: 将操作 请求的发起者、操作请求的操作方法以及操作请求的操作对象三个要 素结合起来判断是否允许当前操作请求执行。
"预设的获取子数据结构的条件" 包括: 内存可执行代码子空间 (通过系统代码映射机制, 确定系统映射结构中可执行代码的范围, 即内存可执行代码子空间),持久化设备的结构化数据子空间(其中, 持久化设备即存储设备, 结构化数据指以文件形式存在的数据)。
实例一
利用本发明的方法, 防止内存可执行代码被改写或重组: 通过二进制翻译确定当前操作请求, 当当前操作请求是对内存可 执行代码进行操作时, 触发"恶意"分析, 即触发预设的获取子数据结 构的条件;
回溯与当前操作请求关联的节点和调用路径,获取与当前操作请 求关联的子数据结构;
根据回溯到的当前操作请求的子数据结构,确定当前操作请求的 发起者, 即产生当前操作请求的全部的调用或引用过程, 也就是与当 前操作请求关联的所有节点和调用路径;
将所述回溯得到的当前操作请求的子数据结构作为当前操作请 求的发起者, 将该发起者与规则进行匹配, 判断当前操作请求是否为 初始化或引用发起的重映射,以决定是否允许可执行代码改写或重组 的当前操作请求执行, 如果发生非法操作, 可阻止改写或重组动作发 生。
实例二:
通过对操作请求发起者进行分析, 防止持久化设备(存储设备) 的结构化数据(以文件形式存在的数据)被穿透破坏:
通过二进制翻译确定当前操作请求, 当当前操作请求是对持久化 设备的结构化数据进行操作时, 触发"恶意"分析, 即触发预设的获取 子数据结构的条件;
可以追溯到当前操作请求的产生过程,即回溯与当前操作请求关 联的节点和调用路径, 获取与当前操作请求关联的子数据结构;
根据回溯到的当前操作请求的子数据结构,确定当前操作请求的 发起者, 即产生当前操作请求的全部的调用或引用过程, 也就是与当 前操作请求关联的所有节点和调用路径;
将回溯到的与当前操作请求的子数据结构作为当前操作请求发 起者,将该发起者与规则进行匹配,决定是否允许当前操作请求执行: 结构化数据的写操作的产生过程是按计算机的栈设备栈层次依次连 续向下发送过程(对应规则, 操作请求发起者为连续的节点和调用路 径组成的子数据结构); 当当前操作请求的产生过程为非依次连续过 程时 (即调用路径非连续时), 即为穿透某设备的操作请求, 该当前 操作请求为非法操作请求; 不允许当前操作请求执行, 从而防止持久 化设备 (存储设备 )的结构化数据 (以文件形式存在的数据 )被穿透 破坏。
本发明在计算机运行时, 建立代码片断调用数据结构, 该数据结 构包括若干个子数据结构, 其中, 每一个子数据结构中各个节点相互 关联,也就是说存在调用关系, 而且,建立的数据结构为动态建立的, 随着计算机的运行而建立, 因此是一个动态、 连续的数据结构。 当获 取了当前操作请求后, 就可以根据已经建立的数据结构, 回溯获得与 当前操作请求关联的子数据结构, 形成一个有效的 "证据链", 根据 该子数据结构 (有效的 "证据链")确定当前操作请求的发起者、 操 作方法和操作对象,这样就在一个动态连续的过程中看待当前操作请 求, 而非孤立的看待当前操作请求, 也就可以根据这样的动态、 连续 的子数据结构确定的发起者、操作方法以及操作对象与规则的匹配判 断当前操作请求是 "善意" 还是 "恶意", 从而可以达到规范计算机 系统行为的目的。 而且, 本发明的规范计算机系统的行为, 是事前预 防, 而非像现有技术那样,是事后补救。 当应用于计算机安全领域时, 可以起到保证计算机系统安全的目的,避免现有技术中仅以当前的计 算机系统行为来判断当前行为的合法性就会造成 "一刀切"现象, 使 正常的某种行为和恶意代码引起的某种行为都会被管制或不被管制, 无法达到管控计算机系统安全的目的。
而且, 在本发明具体实施例中, 规范计算机系统行为的规则可以 为当操作请求的发起者符合规则要求时, 允许当前操作请求执行; 或 者, 当操作请求的发起者以及操作方法符合规则要求时, 允许当前操 作请求执行; 或者, 当当前操作请求的发起者以及操作对象符合规则 要求时, 允许当前操作请求执行; 或者, 当当前操作请求的发起者、 操作方法以及操作对象符合规则要求时, 允许当前操作请求执行。 可 以根据实际情况确定规范计算机系统行为的规则, 非常灵活。
以上所述仅为本发明的具体实施例,为了使本领域技术人员更好 的理解本发明的精神,然而本发明的保护范围并不以该具体实施例的 具体描述为限定范围,任何本领域的技术人员在不脱离本发明精神的 范围内, 可以对本发明的具体实施例做修改, 而不脱离本发明的保护 范围。

Claims (10)

  1. 权 利 要 求
    1. 一种规范计算机系统行为的方法, 其特征在于, 包括:
    获取调用指令,基于所述调用指令获取调用指令要调用的下一代 码片断信息, 建立代码片断调用数据结构; 其中, 所述代码片断调用 数据结构为: 以调用指令所在的代码片断为节点、 以调用指令建立的 发起该调用指令的代码片断和被调用代码片断之间的调用关系为调 用路径而建立的代码片断调用数据结构;所述数据结构包括若干个子 数据结构;
    从所述数据结构中获取与当前操作请求关联的子数据结构,基于 所述子数据结构确定当前操作请求的发起者、 操作方法以及操作对 象;
    获取规范计算机系统行为的规则,将所述确定的当前操作请求的 发起者、操作方法以及操作对象与所述规则进行匹配, 判断当前操作 请求是否合法。
  2. 2. 如权利要求 1所述的规范计算机系统行为的方法, 其特征在于, 所述规范计算机系统行为的规则包括三要素, 分别为: 调用指令的发 起者, 调用指令的操作方法以及调用指令的操作对象;
    所述规范计算机系统行为的规则为当当前操作请求的发起者符 合规则要求时, 允许当前操作请求执行; 或者, 当当前操作请求的发 起者以及操作方法符合规则要求时, 允许当前操作请求执行; 或者, 当当前操作请求的发起者以及操作对象符合规则要求时,允许当前操 作请求执行; 或者, 当当前操作请求的发起者、 操作方法以及操作对 象符合规则要求时, 允许当前操作请求执行。
  3. 3. 如权利要求 1或 2所述的规范计算机系统行为的方法, 其特征在 于, 所述发起者为: 当前操作请求之前的、 与当前操作请求关联的所 有节点和调用路径组成的子数据结构。
  4. 4. 如权利要求 1所述的规范计算机系统行为的方法, 其特征在于, 所述操作对象为当前操作请求的被调用代码片断所要操作的内容。
  5. 5. 如权利要求 1所述的规范计算机系统行为的方法, 其特征在于, 所述操作方法为当前操作请求的被调用代码片断所要进行的操 作。
  6. 6. 如权利要求 1所述的规范计算机系统行为的方法, 其特征在于, 从所述数据结构中获取与当前操作请求关联的子数据结构包括: 预设获取子数据结构的条件;
    在所述当前操作请求满足所述预设条件时, 基于所述数据结构, 回溯与所述当前操作请求关联的节点和调用路径,获取与当前操作请 求关联的子数据结构。
  7. 7. 如权利要求 6所述的规范计算机系统行为的方法, 其特征在于, 还包括:
    将所述计算机运行的空间划分为至少两个子空间;
    所述预设的获取子数据结构的条件为:在某个子空间内的操作请 求将调用另一个子空间内的代码片断。
  8. 8. 如权利要求 1所述的规范计算机系统行为的方法, 其特征在于, 所述数据结构的建立方法包括:
    获取调用指令;
    获取发起所述调用指令的代码片断以及被调用代码片断; 以所述获取的发起所述调用指令的代码片断以及被调用代码片 断建立节点;
    建立发起所述调用指令的代码片断以及被调用代码片断之间的 调用关系,以所述建立的调用关系为调用节点和被调用节点之间的调 用路径。
  9. 9. 如权利要求 8所述的规范计算机系统行为的方法, 其特征在于, 所述调用指令为汇编指令, 所述获取调用指令包括:
    对运行的计算机代码进行二进制翻译以获取调用指令。
  10. 10. 如权利要求 8所述的规范计算机系统行为的方法, 其特征在于, 所述获取发起所述调用指令的代码片断以及被调用代码片断包括: 从调用参数中获取被调用代码片断的地址;
    基于所述被调用代码片断的地址获取被调用代码片断,所述调用 指令所在的代码片断为发起调用指令的代码片断。
CN201080067255XA 2010-12-21 2010-12-21 规范计算机系统行为的方法 Pending CN102971741A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2010/080034 WO2012083521A1 (zh) 2010-12-21 2010-12-21 规范计算机系统行为的方法

Publications (1)

Publication Number Publication Date
CN102971741A true CN102971741A (zh) 2013-03-13

Family

ID=46313022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080067255XA Pending CN102971741A (zh) 2010-12-21 2010-12-21 规范计算机系统行为的方法

Country Status (5)

Country Link
US (1) US9230067B2 (zh)
EP (1) EP2657872A4 (zh)
JP (1) JP5615444B2 (zh)
CN (1) CN102971741A (zh)
WO (1) WO2012083521A1 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872400A (zh) * 2009-04-24 2010-10-27 汪家祥 建立根据计算系统操作请求关联关系判断计算机操作请求安全性的计算机信息安全防护方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL132915A (en) * 1999-11-14 2004-05-12 Networks Assoc Tech Inc Method for secure function execution by calling address validation
US7076557B1 (en) * 2000-07-10 2006-07-11 Microsoft Corporation Applying a permission grant set to a call stack during runtime
BR0209497A (pt) 2001-05-11 2005-08-30 Computer Ass Think Inc Método e sistema para a transformação de aplicações de software de legado em sistemas modernos orientados a objetos
US7546587B2 (en) * 2004-03-01 2009-06-09 Microsoft Corporation Run-time call stack verification
US7966643B2 (en) * 2005-01-19 2011-06-21 Microsoft Corporation Method and system for securing a remote file system
US20060259947A1 (en) * 2005-05-11 2006-11-16 Nokia Corporation Method for enforcing a Java security policy in a multi virtual machine system
US8555061B2 (en) * 2005-05-13 2013-10-08 Microsoft Corporation Transparent code
JP2006330864A (ja) 2005-05-24 2006-12-07 Hitachi Ltd サーバ計算機システムの制御方法
JP2008021274A (ja) * 2006-06-15 2008-01-31 Interlex Inc プロセス監視装置及び方法
US7950056B1 (en) * 2006-06-30 2011-05-24 Symantec Corporation Behavior based processing of a new version or variant of a previously characterized program
US8156536B2 (en) * 2006-12-01 2012-04-10 Cisco Technology, Inc. Establishing secure communication sessions in a communication network
US20090210888A1 (en) 2008-02-14 2009-08-20 Microsoft Corporation Software isolated device driver architecture
CN101282332B (zh) 2008-05-22 2011-05-11 上海交通大学 面向网络安全告警关联的攻击图生成系统
CN102144222B (zh) 2008-07-02 2014-11-05 国立大学法人东京工业大学 执行时间估计方法、执行时间估计程序以及执行时间估计装置
US20100125830A1 (en) * 2008-11-20 2010-05-20 Lockheed Martin Corporation Method of Assuring Execution for Safety Computer Code
JP5155909B2 (ja) 2009-03-06 2013-03-06 Sky株式会社 操作監視システム及び操作監視プログラム
US8468113B2 (en) * 2009-05-18 2013-06-18 Tufin Software Technologies Ltd. Method and system for management of security rule set
WO2011041871A1 (en) 2009-10-08 2011-04-14 Irdeto Canada Corporation A system and method for aggressive self-modification in dynamic function call systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872400A (zh) * 2009-04-24 2010-10-27 汪家祥 建立根据计算系统操作请求关联关系判断计算机操作请求安全性的计算机信息安全防护方法

Also Published As

Publication number Publication date
US9230067B2 (en) 2016-01-05
JP5615444B2 (ja) 2014-10-29
EP2657872A1 (en) 2013-10-30
EP2657872A4 (en) 2017-02-08
WO2012083521A1 (zh) 2012-06-28
JP2013542536A (ja) 2013-11-21
US20130219464A1 (en) 2013-08-22

Similar Documents

Publication Publication Date Title
CN102012987B (zh) 自动二进制恶意代码行为分析系统
CN110851241A (zh) Docker容器环境的安全防护方法、装置及系统
CN103020527B (zh) 主动拦截恶意程序的方法、装置、系统
CN103020526B (zh) 恶意程序主动拦截方法和装置及客户端设备
CN104239786B (zh) 免root主动防御配置方法及装置
CN104081404A (zh) 使用动态优化框架的应用沙盒化
CN105117645A (zh) 基于文件系统过滤驱动实现沙箱虚拟机多样本运行的方法
CN104506495A (zh) 一种智能化网络apt攻击威胁分析方法
CN113138836B (zh) 一种使用基于Docker容器的防逃逸系统的防逃逸方法
CN101872400A (zh) 建立根据计算系统操作请求关联关系判断计算机操作请求安全性的计算机信息安全防护方法
CN111859394A (zh) 基于tee的软件行为主动度量方法及系统
EP3531324A1 (en) Identification process for suspicious activity patterns based on ancestry relationship
CN111787001B (zh) 网络安全信息的处理方法、装置、电子设备和存储介质
Michael et al. Software decoys: Intrusion detection and countermeasures
Chen et al. Efficient detection of the return-oriented programming malicious code
CN111107108A (zh) 一种工业控制系统网络安全分析的方法
Das et al. CoRuM: collaborative runtime monitor framework for application security
CN103677746B (zh) 指令重组方法及装置
CN102971741A (zh) 规范计算机系统行为的方法
CN116582351A (zh) 一种基于云环境的apt攻击的沙箱检测方法及系统
WO2019136428A1 (en) Systems and methods for detecting and mitigating code injection attacks
CN115296936A (zh) 一种反网络犯罪辅侦的自动化方法及系统
Filman et al. Communicating security agents
CN103677769B (zh) 指令重组方法及装置
Mishra et al. Multi tree view of complex attack–stuxnet

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 100071 FENGTAI, BEIJING

TA01 Transfer of patent application right

Effective date of registration: 20150123

Address after: 100071 Beijing city Fengtai District Xiaotun Road No. 89 aerospace standard tower

Applicant after: The safe and sound Information Technology Co., Ltd in sky in Beijing

Address before: 100084 C0803, 18 East Zhongguancun Road, Beijing, Haidian District

Applicant before: Beijing Zhongtian Antai Technology Co., Ltd.

CB02 Change of applicant information

Address after: 100071 Beijing city Fengtai District Xiaotun Road No. 89 aerospace standard tower

Applicant after: Zhongtian Aetna (Beijing) Information Technology Co. Ltd.

Address before: 100071 Beijing city Fengtai District Xiaotun Road No. 89 aerospace standard tower

Applicant before: The safe and sound Information Technology Co., Ltd in sky in Beijing

COR Change of bibliographic data
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20130313