[发明专利]一种Linux系统下程序执行路径监测系统及其方法有效
申请号: | 201310606932.6 | 申请日: | 2013-11-25 |
公开(公告)号: | CN103761175A | 公开(公告)日: | 2014-04-30 |
发明(设计)人: | 陈英超;田昕晖;孙毓忠;潘涛 | 申请(专利权)人: | 中国科学院计算技术研究所;神华和利时信息技术有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30;G06F11/36 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;李岩 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 linux 系统 程序 执行 路径 监测 及其 方法 | ||
技术领域
本发明属于程序执行路径监控领域,特别涉及linux系统下程序执行路径监测领域。
背景技术
如今,企业数据泄露、丢失已经成为一个系统管理员们急需解决的挑战性问题。对于企业来说数据是最为宝贵的资产。数据、信息的泄露丢失都会使企业蒙受巨大的经济损失。经过对于数据泄露问题的调查,解决这一问题的关键是检测系统的运行过程是否有任何异常行为情况,避免系统执行一系列未知的隐藏功能模块,完成一系列非法的数据访问及数据窃取操作。
在“Proceedings of the first ACM conference on Data and application security and privacy(第1届数据及应用安全隐私ACM研讨会)”中公开了一篇名称为“LeakProber:A Framework for Profiling Sensitive Data Leakage Paths(LeakProber:一个分析敏感数据泄露路径的框架)”的文献,作者为:Junfeng Yu,Shengzhi Zhang,Peng Liu,Zhitang Li,公开时间为2011年,文献中提到了一种有关敏感数据泄露路径的探测方法,通过利用该方法可以获取用户所定义的敏感数据在系统的中传递修改的函数路径,通过获取此函数路径,即可实现在系统中对敏感数据的监控。然而,此方法的问题在于,需要用户对需要探测的敏感数据进行文件配置,并且对于敏感数据及函数调用的各种关系(调用、别名等等)分类过于细致,实现文中所提出关键模型--敏感数据传播图(the sensitive data propagation graph)的方法过于复杂,算法执行过程不易实现。
kprobe是一个动态地收集调试和性能信息的工具,作用于内核层,它从Dprobe项目派生而来,是一种非破坏性工具,用户用它几乎可以跟踪任何函数或被执行的指令以及一些异步事件(如timer)。它的基本工作机制是:用户指定一个探测点,并把一个用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径。
kprobe实现了三种类型的探测点:kprobes,jprobes和kretprobes(也叫返回探测点)。kprobes是可以被插入到内核的任何指令位置的探测点,jprobes则能被插入到内核函数的入口,而kretprobes则是被插入到指定内核函数的入口并在内核函数返回时才被执行。
kretprobe使用了kprobes来实现,当用户调用register_kretprobe()时,kprobe在被探测函数的入口建立了一个探测点,当执行到探测点时,kprobe保存了被探测函数的返回地址并取代返回地址为一个trampoline的地址,kprobe在初始化时定义了该trampoline并且为该trampoline注册了一个kprobe,当被探测函数执行它的返回指令时,控制传递到该trampoline,因此kprobe已经注册的对应于trampoline的处理函数将被执行,而该处理函数会调用用户关联到该kretprobe上的处理函数,处理完毕后,设置指令寄存器指向已经备份的函数返回地址,因而原来的函数返回被正常执行。kretprobe探测函数时,被探测函数的返回地址值在kretprobe中是已知的(kretprobe的处理函数中其中一个参数structkretprobe_instance*ri,该结构的ret_addr字段表示返回地址)。
uprobe是与kprobe相对应的动态地收集调试和性能信息的工具,uprobe用于用户层程序的的调试、监控。使用思想与方法与kprobe基本一致。
利用kprobe和uprobe提供的kretprobe及uretprobe类型的探测方法探测函数,被探测函数的返回地址值在kretprobe及uretprobe中是已知的(kretprobe的处理函数中其中一个参数structkretprobe_instance*ri,该结构的ret_addr字段表示返回地址,uretprobe类似)。且我们知道如果被探测函数是被某函数调用的话,其返回地址应该在调用函数所在地址区间内。我们可以通过查找程序中所有已知函数所在地址区间进行判断,某个函数是否是我们被探测函数的调用函数。依次类推,找到整个程序运行时函数调用的路径。监控程序运行的行为。如有异常情况可及时发现。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所;神华和利时信息技术有限公司,未经中国科学院计算技术研究所;神华和利时信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310606932.6/2.html,转载请声明来源钻瓜专利网。