CN103761175A - 一种Linux***下程序执行路径监测***及其方法 - Google Patents

一种Linux***下程序执行路径监测***及其方法 Download PDF

Info

Publication number
CN103761175A
CN103761175A CN201310606932.6A CN201310606932A CN103761175A CN 103761175 A CN103761175 A CN 103761175A CN 201310606932 A CN201310606932 A CN 201310606932A CN 103761175 A CN103761175 A CN 103761175A
Authority
CN
China
Prior art keywords
inner nuclear
layer
nuclear layer
program
function
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.)
Granted
Application number
CN201310606932.6A
Other languages
English (en)
Other versions
CN103761175B (zh
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.)
Institute of Computing Technology of CAS
Shenhua Hollysys Information Technology Co Ltd
Original Assignee
Institute of Computing Technology of CAS
Shenhua Hollysys 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 Institute of Computing Technology of CAS, Shenhua Hollysys Information Technology Co Ltd filed Critical Institute of Computing Technology of CAS
Priority to CN201310606932.6A priority Critical patent/CN103761175B/zh
Publication of CN103761175A publication Critical patent/CN103761175A/zh
Application granted granted Critical
Publication of CN103761175B publication Critical patent/CN103761175B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种linux***下程序执行路径监测***及其方法,对用户层和内核层的程序执行路径进行监控,程序执行路径监测***包括:用户层监控模块和内核层监控模块,用户层监控模块用于通过用户层探测工具对用户层程序进行探测,获取用户层的地址信息,生成用户层程序的执行路径,以对用户层程序进行监控;内核层监控模块用于通过内核层探测工具对内核层程序进行探测,获取内核层的地址信息,生成内核层程序的执行路径,以对内核层程序进行监控。本发明提供了一种基于用户层和内核层探测工具的程序执行路径监测***及方法。

Description

一种Linux***下程序执行路径监测***及其方法
技术领域
本发明属于程序执行路径监控领域,特别涉及linux***下程序执行路径监测领域。
背景技术
如今,企业数据泄露、丢失已经成为一个***管理员们急需解决的挑战性问题。对于企业来说数据是最为宝贵的资产。数据、信息的泄露丢失都会使企业蒙受巨大的经济损失。经过对于数据泄露问题的调查,解决这一问题的关键是检测***的运行过程是否有任何异常行为情况,避免***执行一系列未知的隐藏功能模块,完成一系列非法的数据访问及数据窃取操作。
在“Proceedings of the first ACM conference on Data and application securityand privacy(第1届数据及应用安全隐私ACM研讨会)”中公开了一篇名称为“LeakProber:A Framework for Profiling Sensitive Data LeakagePaths(LeakProber:一个分析敏感数据泄露路径的框架)”的文献,作者为:JunfengYu,Shengzhi Zhang,Peng Liu,Zhitang Li,公开时间为2011年,文献中提到了一种有关敏感数据泄露路径的探测方法,通过利用该方法可以获取用户所定义的敏感数据在***的中传递修改的函数路径,通过获取此函数路径,即可实现在***中对敏感数据的监控。然而,此方法的问题在于,需要用户对需要探测的敏感数据进行文件配置,并且对于敏感数据及函数调用的各种关系(调用、别名等等)分类过于细致,实现文中所提出关键模型--敏感数据传播图(thesensitive 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类似)。且我们知道如果被探测函数是被某函数调用的话,其返回地址应该在调用函数所在地址区间内。我们可以通过查找程序中所有已知函数所在地址区间进行判断,某个函数是否是我们被探测函数的调用函数。依次类推,找到整个程序运行时函数调用的路径。监控程序运行的行为。如有异常情况可及时发现。
relayfs是一个快速的转发(relay)数据的文件***,它以其功能而得名。它为那些需要从内核空间转发大量数据到用户空间的工具和应用提供了快速有效的转发机制。运用此转发工具来传输内核层函数监控得到的信息到用户层,供用户层程序进行分析。
发明内容
本发明所要解决的技术问题在于提供一种linux***下程序执行路径监测***及其方法,本发明将利用uprobe,kprobe工具对用户层函数和内核层函数进行监控,获取他们执行过程中函数的返回地址,并通过必要的处理获取用户层函数和内核层函数的地址区间。以这些数据为基准,分析函数调用执行路径的方法。
为实现上述目的,本发明提供了一种linux***下程序执行路径监测***,对用户层和内核层的程序执行路径进行监控,其特征在于,所述程序执行路径监测***包括:
用户层监控模块:用于通过用户层探测工具对所述用户层程序进行探测,获取用户层的地址信息,生成所述用户层程序的执行路径,以对所述用户层程序进行监控;
内核层监控模块:用于通过内核层探测工具对所述内核层程序进行探测,获取内核层的地址信息,生成所述内核层程序的执行路径,以对所述内核层程序进行监控。
上述linux***下程序执行路径监测***,其特征在于,所述用户层监控模块,包括:
用户层地址获取模块:用于获取用户层程序的地址信息;
用户层执行路径生成模块:用于根据所述用户层程序的地址信息通过建立有向图的方式生成用户层执行路径。
上述linux***下程序执行路径监测***,其特征在于,所述内核层监控模块,包括:
内核层地址获取模块:用于获取内核层程序的地址信息;
内核层数据传输模块:用于通过内核层转发工具,将所述内核层程序的地址信息从所述内核层传输到所述用户层;
内核层执行路径生成模块:用于根据所述内核层程序的地址信息通过建立所述有向图的方式生成内核层执行路径。
上述linux***下程序执行路径监测***,其特征在于,所述用户层地址获取模块,包括:
用户层函数地址区间获取模块:用于通过用户层程序符号表文件获取待监控的所述用户层程序中的用户层函数的名称和地址区间;
用户层函数返回地址获取模块:用于通过用户层探测工具,对所述用户层函数进行探测,获取所述用户层函数的返回地址。
上述linux***下程序执行路径监测***,其特征在于,所述用户层执行路径生成模块,包括:
用户层函数调用关系生成模块:用于循环遍历所述用户层函数,将所述用户层函数的地址区间与所述用户层函数的返回地址进行比较判断,记录用户层局部函数调用关系,建立所述用户层函数调用关系有向图;
用户层函数调用关系分析模块:用于通过用户层递归回溯算法对所述用户层函数调用关系有向图进行计算,获取被监控的所述用户层程序的完整执行路径,以用于所述用户层程序执行路径的监控。
上述linux***下程序执行路径监测***,其特征在于,所述内核层地址获取模块,包括:
内核层函数地址区间获取模块:用于通过内核层程序符号表文件获取待监控的所述内核层程序中的内核层函数的名称和地址区间;
内核层函数返回地址获取模块:用于通过内核层探测工具,对所述内核层函数进行探测,获取所述内核层函数的返回地址;
上述linux***下程序执行路径监测***,其特征在于,所述内核层执行路径生成模块,包括:
内核层函数调用关系生成模块:用于循环遍历所述内核层函数,将所述内核层函数的地址区间与所述内核层函数的返回地址进行比较判断,记录内核层局部函数调用关系,建立所述内核层函数调用关系有向图;
内核层函数调用关系分析模块:用于通过内核层递归回溯算法对所述内核层函数调用关系有向图进行计算,获取被监控的所述内核层程序的完整执行路径,以用于所述内核层程序执行路径的监控。
上述linux***下程序执行路径监测***,其特征在于,所述用户层探测工具为uprobe工具,所述内核层探测工具为kprobe工具。
上述linux***下程序执行路径监测***,其特征在于,所述内核层转发工具为relayfs转发工具。
本发明还提供一种linux***下程序执行路径监测方法,应用于权利要求所述程序执行路径监测***,其特征在于,包括:
用户层监控步骤:用于通过用户层探测工具对所述用户层程序进行探测,获取用户层的地址信息,生成所述用户层程序的执行路径,以对所述用户层程序进行监控;
内核层监控步骤:用于通过内核层探测工具对所述内核层程序进行探测,获取内核层的地址信息,生成所述内核层程序的执行路径,以对所述内核层程序进行监控。
上述linux***下程序执行路径监测方法,其特征在于,所述用户层监控步骤,包括:
用户层地址获取步骤:获取用户层程序的地址信息;
用户层执行路径生成步骤:根据所述用户层程序的地址信息通过建立有向图的方式生成用户层执行路径。
上述linux***下程序执行路径监测方法,其特征在于,所述内核层监控步骤,包括:
内核层地址获取步骤:获取内核层程序的地址信息;
内核层数据传输步骤:通过内核层转发工具,将所述内核层程序的地址信息从所述内核层传输到所述用户层;
内核层执行路径生成步骤:根据所述内核层程序的地址信息通过建立所述有向图的方式生成内核层执行路径。
上述linux***下程序执行路径监测方法,其特征在于,所述用户层地址获取步骤,包括:
用户层函数地址区间获取步骤:通过用户层程序符号表文件获取待监控的所述用户层程序中的用户层函数的名称和地址区间;
用户层函数返回地址获取步骤:通过用户层探测工具,对所述用户层函数进行探测,获取所述用户层函数的返回地址。
上述linux***下程序执行路径监测方法,其特征在于,所述用户层执行路径生成步骤,包括:
用户层函数调用关系生成步骤:循环遍历所述用户层函数,将所述用户层函数的地址区间与所述用户层函数的返回地址进行比较判断,记录用户层局部函数调用关系,建立所述用户层函数调用关系有向图;
用户层函数调用关系分析步骤:用于通过用户层递归回溯算法对所述用户层函数调用关系有向图进行计算,获取被监控的所述用户层程序的完整执行路径,以用于所述用户层程序执行路径的监控。
上述linux***下程序执行路径监测方法,其特征在于,所述内核层地址获取步骤,包括:
内核层函数地址区间获取步骤:用于通过内核层程序符号表文件获取待监控的所述内核层程序中的内核层函数的名称和地址区间;
内核层函数返回地址获取步骤:用于通过内核层探测工具,对所述内核层函数进行探测,获取所述内核层函数的返回地址;
上述linux***下程序执行路径监测方法,其特征在于,所述内核层执行路径生成步骤,包括:
内核层函数调用关系生成步骤:用于循环遍历所述内核层函数,将所述内核层函数的地址区间与所述内核层函数的返回地址进行比较判断,记录内核层局部函数调用关系,建立所述内核层函数调用关系有向图;
内核层函数调用关系分析步骤:用于通过内核层递归回溯算法对所述内核层函数调用关系有向图进行计算,获取被监控的所述内核层程序的完整执行路径,以用于所述内核层程序执行路径的监控。
上述linux***下程序执行路径监测方法,其特征在于,所述用户层递归回溯算法递归回溯到所述用户层函数的主函数停止,所述内核层递归回溯算法递归回溯到所述内核层的***调用函数停止。
上述linux***下程序执行路径监测方法,其特征在于,所述用户层函数调用关系有向图以所述用户层函数为点,所述用户层局部函数调用关系为有向边,所述内核层函数调用关系有向图以所述内核层函数为点,所述内核层局部函数调用关系为有向边。
上述的linux***下程序执行路径监测方法,其特征在于,所述用户层探测工具为uprobe工具,所述内核层探测工具为kprobe工具。
上述linux***下程序执行路径监测方法,其特征在于,所述内核层转发工具为relayfs转发工具。
与现有技术相比,本发明的有益效果在于,本发明分别独立作用于***内核层和用户层,利用简单的返回地址信息原理,建立有向图的思想方法,并基于建立的函数调用有向图分析获取函数调用路径。分别分析生成了被监控程序在两个层级中函数的执行路径用以分析被监控程序是否被篡改,是否有不明程序改变被探测程序的执行路径用以获取核心数据。
附图说明
图1为本发明linux***下程序执行路径监测***示意图;
图2为本发明的用户层监控模块示意图;
图3为本发明的内核层监控模块示意图;
图4为本发明用户层程序执行路径监测方法流程图;
图5为本发明内核层程序执行路径监测方法流程图;
图6为本发明的用户层实施例处理流程图;
图7为本发明的内核层实施例处理流程图;
图8为本发明在用户层获取被探测程序用户层函数地址区间的流程示意图;
图9为本发明在用户层构造有向图模型的流程示意图。
其中,附图标记:
1Linux***下程序执行路径监测***
2用户层监控模块                 3内核层监控模块
21用户层地址获取模块            22用户层执行路径生成模块
211用户层函数地址区间获取模块   212用户层函数返回地址获取模块
221用户层函数调用关系生成模块   222用户层函数调用关系分析模块
31内核层地址获取模块            32内核层数据传输模块
33内核层执行路径生成模块
311内核层函数地址区间获取模块   312内核层函数返回地址获取模块
331内核层函数调用关系生成模块   332内核层函数调用关系分析模块
S111~S112、S121~S122、S211~S212、S231~S232:本发明各实施例的施行步骤
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
下面结合附图和具体实施方式,对本发明做进一步的说明。
本发明所要解决的技术问题是提供一种Linux***下程序执行路径监测***及其方法。
如图1所示,本发明提供的一种Linux***下程序执行路径监测***1,包括:用户层监控模块2和内核层监控模块3,用户层监控模块2用于通过用户层探测工具对用户层程序进行探测,获取用户层的地址信息,生成用户层程序的执行路径,以对用户层程序进行监控;内核层监控模块3用于通过内核层探测工具对内核层程序进行探测,获取内核层的地址信息,生成内核层程序的执行路径,以对内核层程序进行监控。
如图1所示,用户层监控模块2包括:用户层地址获取模块21和用户层执行路径生成模块22;用户层地址获取模块21用于获取用户层程序的地址信息;用户层执行路径生成模块22用于根据用户层程序的地址信息通过建立有向图的方式生成用户层执行路径。
如图2所示,用户层地址获取模块21包括:用户层函数地址区间获取模块211和用户层函数返回地址获取模块212;用户层函数地址区间获取模块211用于通过用户层程序符号表文件获取待监控的用户层程序中的用户层函数的名称和地址区间;用户层函数返回地址获取模块212用于通过用户层探测工具,对用户层函数进行探测,获取用户层函数的返回地址。
如图2所示,用户层执行路径生成模块22包括:用户层函数调用关系生成模块221,用户层函数调用关系分析模块222;用户层函数调用关系生成模块221用于循环遍历用户层函数,将用户层函数的地址区间与用户层函数的返回地址进行比较判断,建立用户层函数调用关系有向图;用户层函数调用关系分析模块222用于通过递归回溯算法对用户层函数调用关系有向图进行计算,获取被监控的用户层程序的完整执行路径,以用于用户层程序执行路径的监控。
如图1所示,内核层监控模块3包括:内核层地址获取模块31、内核层数据传输模块32和内核层执行路径生成模块33;内核层地址获取模块31用于获取内核层程序的地址信息;内核层数据传输模块32用于将内核层程序的地址信息从内核层传输到所述用户层;内核层执行路径生成模块33用于根据内核层程序的地址信息通过建立有向图的方式生成内核层执行路径。
如图3所示,内核层地址获取模块31包括:内核层函数地址区间获取模块311和内核层函数返回地址获取模块312;内核层函数地址区间获取模块311用于通过内核层程序符号表文件获取待监控的内核层程序中的内核层函数的名称和地址区间;内核层函数返回地址获取模块312用于通过内核层探测工具,对内核层函数进行探测,获取内核层函数的返回地址。
如附图3所示,内核层执行路径生成模块33包括:内核层函数调用关系生成模块331和内核层函数调用关系分析模块332;内核层函数调用关系生成模块331用于循环遍历内核层函数,将内核层函数的地址区间与内核层函数的返回地址进行比较判断,建立内核层函数调用关系有向图;内核层函数调用关系分析模块332用于通过递归回溯算法对内核层函数调用关系有向图进行计算,获取被监控的内核层程序的完整执行路径,以用于内核层程序执行路径的监控。
本发明提供的一种Linux***下程序执行路径监测方法,用户层监测步骤如下:
用户层监控步骤S1:用于通过用户层探测工具对用户层程序进行探测,获取用户层的地址信息,生成用户层程序的执行路径,以对用户层程序进行监控;
用户层监控步骤S1,还包括:
用户层地址获取步骤S11:用于获取用户层程序的地址信息;
用户层执行路径生成步骤S12:用于根据用户层程序的地址信息通过建立有向图的方式生成用户层执行路径。
如图4所示,用户层地址获取步骤S11,包括:
用户层函数地址区间获取步骤S111:用于通过用户层程序符号表文件获取待监控的用户层程序中的用户层函数的名称和地址区间;
用户层函数返回地址获取步骤S112:用于通过用户层探测工具,对用户层函数进行探测,获取用户层函数的返回地址。
如图4所示,用户层执行路径生成步骤S12,包括:
用户层函数调用关系生成步骤S121:用于循环遍历所述用户层函数,将用户层函数的地址区间与用户层函数的返回地址进行比较判断,记录用户层局部调用关系,建立用户层函数调用关系有向图;
用户层函数调用关系分析步骤S122:用于通过递归回溯算法对用户层函数调用关系有向图进行计算,获取被监控的用户层程序的完整执行路径,以用于用户层程序执行路径的监控。
以下结合本发明一具体实施例对程序执行路径监测方法在用户层的实施步骤进行说明,如图6所示:
MAP文件为用户层本程序的符号表文件,MAP文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,是整个程序工程信息的静态文本,通常由链接器linker生成。
(1)获取用户层函数地址区间,具体步骤如图8所示:
A1:编译被监控程序,获取此程序的MAP文件,此MAP文件为用户层程序符号表文件。
A2:截取MAP文件中程序中的用户层函数的名称和起始地址信息的字符串段落。用户层字符串截取详细步骤为:逐一循环读取MAP文件中的字符,直到第二次读到字符串“main”停止;然后反向读取所述字符,直到遇到“.text”停止。
A3:字符串截取完毕,获取到用户层程序中的函数名称及函数首地址。
A4:将获取的用户层函数首地址进行相邻函数首地址做减法,得到所有用户层函数地址区间,并且将所有用户层函数形成函数集合。
(2)获取用户层函数返回地址,具体如图9所示:
对从MAP文件(用户层程序符号表)中读取的用户层函数利用用户层探测工具uprobe加入探测点,被探测的用户层函数在运行时会被uprobe工具获取返回地址和进程信息。
(3)函数调用关系生成,具体步骤如下:
A5:将用户层函数名称、返回地址及进程信息进行封装,成为封装信息,依次获取所有函数的封装信息。
A6:循环遍历每条封装信息,将每个封装信息中的用户层函数返回地址依次与所有用户层函数的地址区间进行比对:
查找每个被探测用户层函数返回地址值是否在用户层函数集合中某一用户层函数的地址区间内:若在,则进行相应的用户层局部调用关系记录;若不在,表示此用户层函数未被本程序中的函数调用。
A7:将用户层函数及调用关系看作图结构。以用户层函数为点,以第A6步中记录得到的用户层局部调用关系为有向边建立用户层有向图。
(4)函数调用关系分析,具体步骤如下:
A8:将用户层函数间的调用关系序列问题转化为用户层有向图中两点间是否存在到达路径问题,并利用递归回溯的算法处理有向图中的调用关系路径得出调用关系,用户层是找到用户层程序的主函数main函数为止,由于用户层程序的执行都是从main函数开始的,所以调用关系序列的源头是main函数,所以回溯到main函数即可。
本发明提供的一种Linux***下程序执行路径监测方法,内核层监测步骤如下:
内核层监控步骤S2:用于通过内核层探测工具对内核层程序进行探测,获取内核层的地址信息,生成内核层程序的执行路径,以对内核层程序进行监控。
内核层监控步骤S2,包括:
内核层地址获取步骤S21:用于获取内核层程序的地址信息;
内核层数据传输步骤S22:用于将内核层程序的地址信息通过内核层转发工具从内核层传输到用户层;
内核层执行路径生成步骤S23:用于根据内核层程序的地址信息通过建立有向图的方式生成内核层执行路径。
如图5所示,内核层地址获取步骤S21,包括:
内核层函数地址区间获取步骤S211:用于通过内核层程序符号表文件获取待监控的内核层程序中的内核层函数的名称和地址区间;
内核层函数返回地址获取步骤S212:用于通过内核层探测工具,对内核层函数进行探测,获取内核层函数的返回地址;
如图5所示,内核层执行路径生成步骤S23,包括:
内核层函数调用关系生成步骤S231:用于循环遍历内核层函数,将内核层函数的地址区间与内核层函数的返回地址进行比较判断,记录内核层函数局部调用关系,建立内核层函数调用关系有向图;
内核层函数调用关系分析步骤S232:用于通过内核层递归回溯算法对内核层函数调用关系有向图进行计算,获取被监控的内核层程序的完整执行路径,以用于内核层程序执行路径的监控。
本发明一具体实施例为在内核层的程序执行路径监测方法,具体步骤如图7所示:
(1)获取内核层函数地址区间:
利用内核***中的system.map文件,system.map文件为内核层程序符号表文件,其中含有所有内核函数在内核中的起始地址,然后读取此文件后,相邻函数首地址做减法得到函数地址区间,其做法与用户层从MAP文件获取地址信息的方法类似。
(2)获取内核层函数返回地址:
对从system.map文件(内核符号表)中读取的内核函数利用内核层探测工具kprobe加入探测点,其中有些不能加探测点的位置可以舍弃,在内核符号表中有些信息不是函数,不能加函数探测点,所以,这类信息应该忽略掉。被探测的内核层函数在运行时会被kprobe工具获取内核层返回地址等相应信息。
(3)传输数据:
利用内核层转发工具relayfs将内核层函数名称,执行过程中内核层返回地址信息及进程信息封装后,可以将这些返回信息根据进程号PID进行区分,以进程号PID为单位将内核层地址返回信息区分整理后,再由内核层传递到用户层进行处理,后续内核层函数调用关系生成和分析在用户层进行,由于计算量和存储量大,所以需要在用户层进行处理,可以减小内核层的计算量和存储量。
(4)内核层函数调用关系生成:
将内核层函数名称、返回地址及进程信息进行封装,成为内核层封装信息,依次获取所有内核层函数的封装信息。
循环遍历每条内核层封装信息,将每条内核层封装信息中的内核层函数返回地址依次与所有内核层函数的地址区间进行比对:
查找每个被探测内核层函数返回地址值是否在内核层函数集合中某一内核层函数的地址区间内:若在,则进行相应的内核层局部调用关系记录;若不在,表示此函数未被调用,可以暂时不作处理。
以内核层函数为点,内核层函数局部调用关系为边建立内核层有向图。
(4)内核层函数调用关系分析:
将函数间的调用关系序列问题转化为有向图中两点间是否存在到达路径问题,并利用递归回溯的算法处理有向图中的调用关系路径得出调用关系,由于内核函数的执行都是从***调用函数开始的,因此回溯寻找内核函数的调用关系序列的时候,当回溯到***调用函数时停止。由于程序陷入内核执行时都是从***调用函数开始的,监控内核函数执行(即调用关系)的序列的源头都是***调用函数,所以回溯到***调用函数即可。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (20)

1.一种linux***下程序执行路径监测***,对用户层和内核层的程序执行路径进行监控,其特征在于,所述程序执行路径监测***包括: 
用户层监控模块:用于通过用户层探测工具对用户层程序进行探测,获取用户层的地址信息,生成所述用户层程序的执行路径,以对所述用户层程序进行监控; 
内核层监控模块:用于通过内核层探测工具对内核层程序进行探测,获取内核层的地址信息,生成所述内核层程序的执行路径,以对所述内核层程序进行监控。 
2.根据权利要求1所述的linux***下程序执行路径监测***,其特征在于,所述用户层监控模块,包括: 
用户层地址获取模块:用于获取所述用户层程序的地址信息; 
用户层执行路径生成模块:用于根据所述用户层程序的地址信息通过建立有向图的方式生成用户层执行路径。 
3.根据权利要求1所述的linux***下程序执行路径监测***,其特征在于,所述内核层监控模块,包括: 
内核层地址获取模块:用于获取所述内核层程序的地址信息; 
内核层数据传输模块:用于通过内核层转发工具,将所述内核层程序的地址信息从所述内核层传输到所述用户层; 
内核层执行路径生成模块:用于根据所述内核层程序的地址信息通过建立所述有向图的方式生成内核层执行路径。 
4.根据权利要求2所述的linux***下程序执行路径监测***,其特征在于,所述用户层地址获取模块,包括: 
用户层函数地址区间获取模块:用于通过用户层程序符号表文件获取待监控的所述用户层程序中的用户层函数的名称和地址区间; 
用户层函数返回地址获取模块:用于通过用户层探测工具,对所述用户层函数进行探测,获取所述用户层函数的返回地址。 
5.根据权利要求2所述的linux***下程序执行路径监测***,其特征在于,所述用户层执行路径生成模块,包括: 
用户层函数调用关系生成模块:用于循环遍历所述用户层函数,将所述用户层函数的地址区间与所述用户层函数的返回地址进行比较判断,记录用户层局部函数调用关系,建立所述用户层函数调用关系有向图; 
用户层函数调用关系分析模块:用于通过用户层递归回溯算法对所述用户层函数调用关系有向图进行计算,获取被监控的所述用户层程序的完整执行路径,以用于所述用户层程序执行路径的监控。 
6.根据权利要求3所述的linux***下程序执行路径监测***,其特征在于,所述内核层地址获取模块,包括: 
内核层函数地址区间获取模块:用于通过内核层程序符号表文件获取待监控的所述内核层程序中的内核层函数的名称和地址区间; 
内核层函数返回地址获取模块:用于通过内核层探测工具,对所述内核层函数进行探测,获取所述内核层函数的返回地址。 
7.根据权利要求3所述的linux***下程序执行路径监测***,其特征在于,所述内核层执行路径生成模块,包括: 
内核层函数调用关系生成模块:用于循环遍历所述内核层函数,将所述内核层函数的地址区间与所述内核层函数的返回地址进行比较判断,记录内核层局部函数调用关系,建立所述内核层函数调用关系有向图; 
内核层函数调用关系分析模块:用于通过内核层递归回溯算法对所述内核层函数调用关系有向图进行计算,获取被监控的所述内核层程序的完整执行路径,以用于所述内核层程序执行路径的监控。 
8.根据权利要求1所述的linux***下程序执行路径监测***,其特征在于,所述用户层探测工具为uprobe工具,所述内核层探测工具为kprobe工具。 
9.根据权利要求3所述的linux***下程序执行路径监测***,其特征在于,所述内核层转发工具为relayfs转发工具。 
10.一种linux***下程序执行路径监测方法,应用于权利要求1-9中任一项所述程序执行路径监测***,其特征在于,包括: 
用户层监控步骤:用于通过用户层探测工具对用户层程序进行探测,获取用户层的地址信息,生成所述用户层程序的执行路径,以对所述用户层程序进行监控; 
内核层监控步骤:用于通过内核层探测工具对内核层程序进行探测,获取 内核层的地址信息,生成所述内核层程序的执行路径,以对所述内核层程序进行监控。 
11.根据权利要求10所述的linux***下程序执行路径监测方法,其特征在于,所述用户层监控步骤,包括: 
用户层地址获取步骤:获取所述用户层程序的地址信息; 
用户层执行路径生成步骤:根据所述用户层程序的地址信息通过建立有向图的方式生成用户层执行路径。 
12.根据权利要求10所述的linux***下程序执行路径监测方法,其特征在于,所述内核层监控步骤,包括: 
内核层地址获取步骤:获取所述内核层程序的地址信息; 
内核层数据传输步骤:通过内核层转发工具,将所述内核层程序的地址信息从所述内核层传输到所述用户层; 
内核层执行路径生成步骤:根据所述内核层程序的地址信息通过建立所述有向图的方式生成内核层执行路径。 
13.根据权利要求11所述的linux***下程序执行路径监测方法,其特征在于,所述用户层地址获取步骤,包括: 
用户层函数地址区间获取步骤:通过用户层程序符号表文件获取待监控的所述用户层程序中的用户层函数的名称和地址区间; 
用户层函数返回地址获取步骤:通过用户层探测工具,对所述用户层函数进行探测,获取所述用户层函数的返回地址。 
14.根据权利要求11所述的linux***下程序执行路径监测方法,其特征在于,所述用户层执行路径生成步骤,包括: 
用户层函数调用关系生成步骤:循环遍历所述用户层函数,将所述用户层函数的地址区间与所述用户层函数的返回地址进行比较判断,记录用户层局部函数调用关系,建立所述用户层函数调用关系有向图; 
用户层函数调用关系分析步骤:用于通过用户层递归回溯算法对所述用户层函数调用关系有向图进行计算,获取被监控的所述用户层程序的完整执行路径,以用于所述用户层程序执行路径的监控。 
15.根据权利要求12所述的linux***下程序执行路径监测方法,其特征在于,所述内核层地址获取步骤,包括: 
内核层函数地址区间获取步骤:用于通过内核层程序符号表文件获取待监控的所述内核层程序中的内核层函数的名称和地址区间; 
内核层函数返回地址获取步骤:用于通过内核层探测工具,对所述内核层函数进行探测,获取所述内核层函数的返回地址。 
16.根据权利要求12所述的linux***下程序执行路径监测方法,其特征在于,所述内核层执行路径生成步骤,包括: 
内核层函数调用关系生成步骤:用于循环遍历所述内核层函数,将所述内核层函数的地址区间与所述内核层函数的返回地址进行比较判断,记录内核层局部函数调用关系,建立所述内核层函数调用关系有向图; 
内核层函数调用关系分析步骤:用于通过内核层递归回溯算法对所述内核层函数调用关系有向图进行计算,获取被监控的所述内核层程序的完整执行路径,以用于所述内核层程序执行路径的监控。 
17.根据权利要求14或16所述的linux***下程序执行路径监测方法,其特征在于,所述用户层递归回溯算法递归回溯到所述用户层函数的主函数停止,所述内核层递归回溯算法递归回溯到所述内核层的***调用函数停止。 
18.根据权利要求14或16所述的linux***下程序执行路径监测方法,其特征在于,所述用户层函数调用关系有向图以所述用户层函数为点,所述用户层局部函数调用关系为有向边,所述内核层函数调用关系有向图以所述内核层函数为点,所述内核层局部函数调用关系为有向边。 
19.根据权利要求10所述的linux***下程序执行路径监测方法,其特征在于,所述用户层探测工具为uprobe工具,所述内核层探测工具为kprobe工具。 
20.根据权利要求12所述的linux***下程序执行路径监测方法,其特征在于,所述内核层转发工具为relayfs转发工具。 
CN201310606932.6A 2013-11-25 2013-11-25 一种Linux***下程序执行路径监测***及其方法 Active CN103761175B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310606932.6A CN103761175B (zh) 2013-11-25 2013-11-25 一种Linux***下程序执行路径监测***及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310606932.6A CN103761175B (zh) 2013-11-25 2013-11-25 一种Linux***下程序执行路径监测***及其方法

Publications (2)

Publication Number Publication Date
CN103761175A true CN103761175A (zh) 2014-04-30
CN103761175B CN103761175B (zh) 2016-08-17

Family

ID=50528417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310606932.6A Active CN103761175B (zh) 2013-11-25 2013-11-25 一种Linux***下程序执行路径监测***及其方法

Country Status (1)

Country Link
CN (1) CN103761175B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077220A (zh) * 2014-06-10 2014-10-01 中标软件有限公司 Mips架构操作***内核的调试方法和装置
CN104715190A (zh) * 2015-02-03 2015-06-17 中国科学院计算技术研究所 一种基于深度学习的程序执行路径的监控方法及***
CN105808252A (zh) * 2016-03-04 2016-07-27 北京理工大学 一种Windows操作***内核函数遍历方法
CN108229155A (zh) * 2017-12-27 2018-06-29 山东华软金盾软件股份有限公司 一种Linux***用户操作行为审计方法
CN108345471A (zh) * 2017-05-08 2018-07-31 清华大学 检测装置处理异步事件的方法及检测装置
CN109101416A (zh) * 2014-09-28 2018-12-28 华为技术有限公司 一种内核故障注入方法及电子设备
CN109542341A (zh) * 2018-11-06 2019-03-29 网宿科技股份有限公司 一种读写io监测方法、装置、终端及计算机可读存储介质
CN109784054A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 行为堆栈信息获取方法及装置
CN109948346A (zh) * 2019-04-09 2019-06-28 苏州浪潮智能科技有限公司 一种漏洞PoC实现方法和装置
CN110716873A (zh) * 2019-09-24 2020-01-21 北京计算机技术及应用研究所 一种硬件兼容性知识库构建方法
US10684896B2 (en) 2017-02-20 2020-06-16 Tsinghua University Method for processing asynchronous event by checking device and checking device
CN111523115A (zh) * 2019-02-02 2020-08-11 阿里巴巴集团控股有限公司 信息确定方法、函数调用方法及电子设备
US10884899B2 (en) 2018-10-01 2021-01-05 International Business Machines Corporation Optimized trampoline design for fast software tracing
CN112486410A (zh) * 2020-11-23 2021-03-12 华南师范大学 一种持久性内存文件读写方法、***、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328597A (ja) * 2006-06-08 2007-12-20 Mitsubishi Electric Corp コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム
US20110016289A1 (en) * 2009-07-20 2011-01-20 Ableidinger Bruce J Apparatus and Method for Profiling Software Performance on a Processor with Non-Unique Virtual Addresses
CN102521537A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 基于虚拟机监控器的隐藏进程检测方法和装置
CN102799523A (zh) * 2012-07-03 2012-11-28 华为技术有限公司 动态探测程序执行路径的方法、装置和计算机***
CN103034544A (zh) * 2012-12-04 2013-04-10 杭州迪普科技有限公司 一种用户态与内核态共享内存的管理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328597A (ja) * 2006-06-08 2007-12-20 Mitsubishi Electric Corp コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム
US20110016289A1 (en) * 2009-07-20 2011-01-20 Ableidinger Bruce J Apparatus and Method for Profiling Software Performance on a Processor with Non-Unique Virtual Addresses
CN102521537A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 基于虚拟机监控器的隐藏进程检测方法和装置
CN102799523A (zh) * 2012-07-03 2012-11-28 华为技术有限公司 动态探测程序执行路径的方法、装置和计算机***
CN103034544A (zh) * 2012-12-04 2013-04-10 杭州迪普科技有限公司 一种用户态与内核态共享内存的管理方法和装置

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077220A (zh) * 2014-06-10 2014-10-01 中标软件有限公司 Mips架构操作***内核的调试方法和装置
CN109101416B (zh) * 2014-09-28 2022-01-14 华为技术有限公司 一种内核故障注入方法及电子设备
CN109101416A (zh) * 2014-09-28 2018-12-28 华为技术有限公司 一种内核故障注入方法及电子设备
CN104715190B (zh) * 2015-02-03 2018-02-06 中国科学院计算技术研究所 一种基于深度学习的程序执行路径的监控方法及***
CN104715190A (zh) * 2015-02-03 2015-06-17 中国科学院计算技术研究所 一种基于深度学习的程序执行路径的监控方法及***
CN105808252A (zh) * 2016-03-04 2016-07-27 北京理工大学 一种Windows操作***内核函数遍历方法
US10684896B2 (en) 2017-02-20 2020-06-16 Tsinghua University Method for processing asynchronous event by checking device and checking device
CN108345471A (zh) * 2017-05-08 2018-07-31 清华大学 检测装置处理异步事件的方法及检测装置
CN108229155A (zh) * 2017-12-27 2018-06-29 山东华软金盾软件股份有限公司 一种Linux***用户操作行为审计方法
CN108229155B (zh) * 2017-12-27 2021-05-14 山东华软金盾软件股份有限公司 一种Linux***用户操作行为审计方法
US10884899B2 (en) 2018-10-01 2021-01-05 International Business Machines Corporation Optimized trampoline design for fast software tracing
CN109542341A (zh) * 2018-11-06 2019-03-29 网宿科技股份有限公司 一种读写io监测方法、装置、终端及计算机可读存储介质
CN109542341B (zh) * 2018-11-06 2022-07-19 网宿科技股份有限公司 一种读写io监测方法、装置、终端及计算机可读存储介质
CN109784054A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 行为堆栈信息获取方法及装置
CN109784054B (zh) * 2018-12-29 2021-01-15 360企业安全技术(珠海)有限公司 行为堆栈信息获取方法及装置
CN111523115B (zh) * 2019-02-02 2023-05-26 斑马智行网络(香港)有限公司 信息确定方法、函数调用方法及电子设备
CN111523115A (zh) * 2019-02-02 2020-08-11 阿里巴巴集团控股有限公司 信息确定方法、函数调用方法及电子设备
CN109948346A (zh) * 2019-04-09 2019-06-28 苏州浪潮智能科技有限公司 一种漏洞PoC实现方法和装置
CN110716873A (zh) * 2019-09-24 2020-01-21 北京计算机技术及应用研究所 一种硬件兼容性知识库构建方法
CN110716873B (zh) * 2019-09-24 2023-09-26 北京计算机技术及应用研究所 一种硬件兼容性知识库构建方法
CN112486410A (zh) * 2020-11-23 2021-03-12 华南师范大学 一种持久性内存文件读写方法、***、装置及存储介质
CN112486410B (zh) * 2020-11-23 2024-03-26 华南师范大学 一种持久性内存文件读写方法、***、装置及存储介质

Also Published As

Publication number Publication date
CN103761175B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN103761175A (zh) 一种Linux***下程序执行路径监测***及其方法
Kwon et al. MCI: Modeling-based Causality Inference in Audit Logging for Attack Investigation.
Geneiatakis et al. A Permission verification approach for android mobile applications
CN103729595B (zh) 一种Android应用程序隐私数据泄露离线检测方法
Li et al. JSgraph: Enabling Reconstruction of Web Attacks via Efficient Tracking of Live In-Browser JavaScript Executions.
CN104008329B (zh) 一种基于虚拟化技术的软件隐私泄露行为检测方法及***
CN105956474A (zh) Android平台软件异常行为检测***
Ali-Gombe et al. Toward a more dependable hybrid analysis of android malware using aspect-oriented programming
US20110055815A1 (en) Incremental Runtime Compliance Validation of Renderable Objects
US20170286693A1 (en) Security analysis using relational abstraction of data structures
EP3566166B1 (en) Management of security vulnerabilities
Yu et al. ALchemist: Fusing Application and Audit Logs for Precise Attack Provenance without Instrumentation.
US8881296B2 (en) Marking and obscuring sensitive values in traces
Lee et al. Design and implementation of the secure compiler and virtual machine for developing secure IoT services
CN102708043B (zh) 静态数据竞争检测和分析
CN102651062A (zh) 基于虚拟机架构的恶意行为跟踪***和方法
CN112035354B (zh) 风险代码的定位方法、装置、设备及存储介质
CN104766015A (zh) 一种基于函数调用的缓冲区溢出漏洞动态检测方法
Cheng et al. Logextractor: Extracting digital evidence from android log messages via string and taint analysis
Khoury et al. Execution trace analysis using ltl-fo
Al-Azzani et al. Secarch: Architecture-level evaluation and testing for security
CN117501658A (zh) 安全事件告警的可能性评估
Gauthier et al. Experience: model-based, feedback-driven, Greybox web fuzzing with BackREST
CN116450533B (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
Shahriar et al. Mobile application security using static and dynamic analysis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant