[發明專利]一種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.szxzyx.cn/pat/books/201310606932.6/2.html,轉載請聲明來源鉆瓜專利網。





