(計算機系統(tǒng)結(jié)構(gòu)專業(yè)論文)基于虛擬機的反rootkit技術(shù)研究.pdf_第1頁
(計算機系統(tǒng)結(jié)構(gòu)專業(yè)論文)基于虛擬機的反rootkit技術(shù)研究.pdf_第2頁
(計算機系統(tǒng)結(jié)構(gòu)專業(yè)論文)基于虛擬機的反rootkit技術(shù)研究.pdf_第3頁
(計算機系統(tǒng)結(jié)構(gòu)專業(yè)論文)基于虛擬機的反rootkit技術(shù)研究.pdf_第4頁
(計算機系統(tǒng)結(jié)構(gòu)專業(yè)論文)基于虛擬機的反rootkit技術(shù)研究.pdf_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

(計算機系統(tǒng)結(jié)構(gòu)專業(yè)論文)基于虛擬機的反rootkit技術(shù)研究.pdf.pdf 免費下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

摘要 摘要 r o o t k i t 是黑客成功入侵系統(tǒng)后用來保持系統(tǒng)的超級用戶權(quán)限并隱藏痕跡的一 種工具。根據(jù)r o o t l d t 運行的層次可以分為應(yīng)用層r o o t k i t 和內(nèi)核級r o o t k i t 。 目前,對應(yīng)用層的r o o t k i t 檢測技術(shù)已經(jīng)比較成熟,但還沒有能夠很好的反擊 內(nèi)核級r o o t k i t 的工具。主要原因在于內(nèi)核級r o o t k i t 擁有的權(quán)限和反r o o t k i t 模塊 能取得的權(quán)限一樣高。 本文先分析了內(nèi)核級r o o t k i t 的攻擊原理,然后基于反r o o t k i t 模塊權(quán)限比內(nèi)核 級r o o t k i t 高這一個原則,本文在i g u e s t 虛擬機中設(shè)計與實現(xiàn)了針對l i n u x 操作系 統(tǒng)內(nèi)核的反r o o t k i t 模塊。在此模塊中實現(xiàn)了這樣的訪問控制機n - 除來自可信任的操作系統(tǒng)核心代碼段的代碼外,來自其它地方的代碼不允許 對客戶機內(nèi)核被保護內(nèi)存區(qū)域?qū)懖僮鳎?除來自可信任的操作系統(tǒng)核心代碼段的代碼外,來自其它地方的代碼不允許 對虛擬出來的被監(jiān)控的客戶機的特權(quán)寄存器寫操作; 被保護或者說被監(jiān)控的內(nèi)存部分包括客戶機操作系統(tǒng)核心內(nèi)核的代碼段、內(nèi) 核的只讀數(shù)據(jù)段、異常表段以及重要的會成為r o o t k i t 攻擊目標的全局數(shù)據(jù): 被保護的或者說被監(jiān)控的寄存器目前包括i d t r 、g d t r 、 s y s e n t e re i pm s r 和調(diào)試寄存器等 我們通過清除被保護內(nèi)存區(qū)域的影子頁表中的 位實現(xiàn)對內(nèi)存區(qū) 域的寫保護,通過截獲特權(quán)寄存器寫操作的 _pa實g現(xiàn)e_對rwhypercall 寄存器的寫保護。 實驗結(jié)果表明,本文實現(xiàn)的原型系統(tǒng)在反l i n u x 2 6 內(nèi)核的r o o t k i t 上有良好表 現(xiàn)而僅僅損失了些許性能。 關(guān)鍵詞:r o o t k i t 虛擬機虛擬機監(jiān)控器l g u e s tl i n u x 內(nèi)核 a b s t r a c t r o o t k i t sa r et o o l su s e db yh a c k e r st om a n t a i nr o o ta c c e s st ot h es y s t e ma n d c o n d u c tm a l i c i o u sa c t i v i t i e sa f t e rc r a c k i n gac o m p u t e rs y s t e m r o o t k i t sc a nb e c l a s s i f i e di n t oa p p l i c a t i o nl e v e lr o o t k i t sa n dk e r n e ll e v e lr o o t k i t sa c c o r d i n gt ot h e r u n n i n gl e v e l c u r r e n t l y , t h et e c h n o l o g yo fd e t e c t i n gt h ea p p l i c a t i o nl e v e lr o o t k i t si su s e a b l e ,b u t t h e r ei sn ot o o l sc a ne x c e l l e n t l yd e f e n s ek e n e ll e v e lr o o t k i t s t h em a i nr e a s o ni st h a t t h ep r i v i l e g eo fk e m e l1 e v e lr o o t k i t si st h es a n l ea st h ea n t i - r o o t k i t s i nt h i sp a p e r , w ef i r s ta n a l y z et h em e c h n i s mu s e db yk e r n e ll e v e lr o o t k i t s w e d e s i g na n di m p l e m e n taa n t i r o o t k i tm o d u l ei nl g u e s tt a r g e t e do nl i n u xk e r n e ll e v e l r o o t k i t s t h em o d u l e sp o l i c ya r e : o n l yt h ec o d ef r o m t e x to fk e r n e l m e m o r yr e g i o np r o t e c t e db yt h em o d u l e c o r ec a np e r f o r mt h ew r i t eo p e r a t i o nt o o n l yt h ec o d ef r o m t e x to fk e r n e lc o r ec a n p r i v i l e g e dr e g i s t e r s t h ep r o t e c t e dm e m o r yr e g i o n sa r em a d e e x t a b l ea n do t h e ri m p o r t a n tg l o b a ld a t a p e r f o r mt h ew r i t eo p e r a t i o nt ov i r t u a l u po f t e x to fk e r n e lc o r e ,r o d a t a , t h e p r o t e c t e dp r i v i l e g e dr e g i s t e r s a r em a d eu po fi d t r , g d t r s y s e n t e r e i p m s re t c o u rp r o t o t y p ea c h e i v et h eg o a lo fw r i t ep r o t e c t i o nt op r o t e c t e dm e m o r yb y c l e a r i n gt h e p a g er wb i to ft h es h a d d o wp a g et a b l eo fp r o t e c t e dm e m o r y o u r p r o t o t y p ea c h e i v et h eg o a l o fw r i t ep r o t e c t i o np r i v i i e g e dr e g i s t e r sb yh o o kt h e h y p e r c a l lo f t h ew r i t eo p e r a t i o nt op r i v i l e g e dr e g i s t e r s t h er e s u l to fe x p e r i m e n t ss h o wt h a to u rs y s t e mc a na c h e i v et h eg o a l o f a n t i - r o o t k i t sa tal i r l ep e r f o r m a n c ec o s t k e y w o r d s :r o o t k i t ;v i r t u a lm a c h i n e ;v i r t u a lm a c h i n em o n i t o r ;l g u e s t ;l i n u xk e r n e l i i 插圖目錄 插圖目錄 圖2 1 系統(tǒng)調(diào)用在操作系統(tǒng)中位置5 圖2 2 系統(tǒng)調(diào)用流程示意7 圖3 1 修改系統(tǒng)調(diào)用表。15 圖3 2 重定向系統(tǒng)調(diào)用表1 6 圖3 3 被攻擊后的系統(tǒng)調(diào)用入口函數(shù)流程2 0 圖3 4 直接修改系統(tǒng)調(diào)用服務(wù)函數(shù)j 2 2 圖3 。5e x c e p t i o nt a b l e 2 5 圖3 6x 8 6 處理器中調(diào)試寄存器:3 0 圖4 1 系統(tǒng)原型整體框架3 9 圖4 2 內(nèi)核進程堆棧。4 2 圖4 3 函數(shù)調(diào)用棧幀4 5 圖5 1c a l l t r a c e 算法優(yōu)化前后所耗時間對比:5 0 圖5 2 打開c o n f i gf r a m ep o i n t e r 與否內(nèi)核體積比較5 3 v i 表格目錄 表格目錄 表5 1 原型系統(tǒng)反r o o t k i t 攻擊實驗4 9 表5 2 主機上內(nèi)核選項c o n f i gf r a m ep o i n t e r 打開與否性能測試5 2 表5 3 原l g u e s t 與原型系統(tǒng)性能測試對比5 3 v i i 中國科學(xué)技術(shù)大學(xué)學(xué)位論文原創(chuàng)性聲明 本人聲明所呈交的學(xué)位論文,是本人在導(dǎo)師指導(dǎo)下進行研究工作所取得的 成果。除已特別加以標注和致謝的地方外,論文中不包含任何他人已經(jīng)發(fā)表或 撰寫過的研究成果。與我一同工作的同志對本研究所做的貢獻均已在論文中作 了明確的說明。 作者簽名:琴臣乏主。j i 7 夠 簽字日期: 羋 中國科學(xué)技術(shù)大學(xué)學(xué)位論文授權(quán)使用聲明 作為申請學(xué)位的條件之一,學(xué)位論文著作權(quán)擁有者授權(quán)中國科學(xué)技術(shù)大學(xué) 擁有學(xué)位論文的部分使用權(quán),即:學(xué)校有權(quán)按有關(guān)規(guī)定向國家有關(guān)部門或機構(gòu) 送交論文的復(fù)印件和電子版,允許論文被查閱和借閱,可以將學(xué)位論文編入有 關(guān)數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存、匯編學(xué)位論 文。本人提交的電子文檔的內(nèi)容和紙質(zhì)論文的內(nèi)容相一致。 保密的學(xué)位論文在解密后也遵守此規(guī)定。 幺開口保密( 年) 作者簽名:趣蘭壘隨 導(dǎo)師簽名: 簽字日期:簽字日期: 弘爭也 第1 章緒論 第1 章緒論 1 。1 研究背景 1 1 1r o o t k i t 定義 計算機系統(tǒng)攻擊者的目的不僅僅在于獲得系統(tǒng)的非授權(quán)最高訪問權(quán)限,還在 于保持對目標系統(tǒng)的這種非授權(quán)權(quán)限。r o o t k i t 就是這樣一種用來保持對目標系統(tǒng) 最高訪問權(quán)限的工具。 r o o k i t 是安全領(lǐng)域的一個術(shù)語來自r o o t 和k i t 兩個單詞的組合,其中r o o t 意 思是類u n i x 系統(tǒng)中最高訪問權(quán)限,虹t 意思是一系列用來保持非授權(quán)r o o t 訪問權(quán) 限而不引起警覺的程序。n s a 安全與入侵檢測術(shù)語字典( n s ag l o s s a r yo ft e r m s u s e di ns e c u r i t ya n di n t r u s i o nd e t e c t i o n ) 把r o o t k i t 定義如下【1 】:r o o t k i t 是一套給入 侵者提供后門,收集同一網(wǎng)絡(luò)上其他主機信息并能掩蓋系統(tǒng)已經(jīng)被入侵事實的工 具集合。w i k i p e d i a 則如下定義r o o t k i t :r o o t k i t 是攻擊者在入侵系統(tǒng)后用來保持 對系統(tǒng)的超級用戶訪問權(quán)限,創(chuàng)建后門和隱藏攻擊痕跡等常采用的一種技術(shù)【2 】。 r o o t k i t 和其它惡意程序例如利用漏洞獲得最高訪闖權(quán)限的攻擊程序、蠕蟲、 病毒等是有區(qū)別的,它們主要有如下不同:它們的目標是不一樣的。r o o k i t 通常 是在系統(tǒng)已經(jīng)被攻破時使用,其目標是保持最高訪問權(quán)限而不引起系統(tǒng)的用戶或 管理員警覺。而蠕蟲病毒之類的惡意程序目標是利用漏洞攻擊進入系統(tǒng)。 1 1 2r o o t k i t 發(fā)展歷史 文獻記載的最早的r o o t k i t 出現(xiàn)在1 9 9 4 年,主要攻擊u n i x 操作系統(tǒng),特別是 s u n o s 4 x 。那時的r o o t k i t 主要替換l o g i n 等系統(tǒng)工具,方便用戶再次登錄系統(tǒng)。 記錄最早的l i n u x 上的r o o t k i t 出現(xiàn)在1 9 9 4 年1 0 月。它主要替換l o g i n 、p s 和n e t s t a t 等系統(tǒng)工具,可以隱藏網(wǎng)絡(luò)連接和進程,為應(yīng)用級r o o t k i t 。 l i n u x 上的內(nèi)核級r o o t k i t 最早出現(xiàn)在1 9 9 7 年,從那以后內(nèi)核級r o o t k i t 常用 方法用可加載內(nèi)核模塊來替換系統(tǒng)調(diào)用。 第一個已知的w i n d o w s 平臺上的r o o t k i t 是w w w r o o t k i t c o r n 網(wǎng)站的創(chuàng)始人 g r e gh o g l u n d 在1 9 9 9 年發(fā)布的“n t r o o t k i t ” 3 】,它可以隱藏注冊表項和重定向 可執(zhí)行程序。 現(xiàn)在幾乎所有的操作系統(tǒng)( 包括l i n u x 、b s d 、s o l a r i s 、w i n d o w s 等) 都受 到r o o t k i t 的攻擊。由于l i n u x 的開源和廣泛使用,使得它成為r o o t k i t 攻擊的主 要目標之。r o o t k i t 的攻擊方法也越來越高明,從剛開始的替換系統(tǒng)應(yīng)用程序和系 統(tǒng)庫,深入到攻擊操作系統(tǒng)內(nèi)核。 1 第1 章緒論 1 2 研究現(xiàn)狀 1 2 1 反r o o t k i t 現(xiàn)狀 r o o t k i t 按其運行的權(quán)限不同可以分為應(yīng)用層r o o t k i t 和內(nèi)核級r o o t k i t 。應(yīng)用層 r o o t k i t 主要是通過修改或替換系統(tǒng)工具或者系統(tǒng)庫來達到其攻擊目標,有的應(yīng)用 層r o o t k i t 還會修改替換了的系統(tǒng)工具和系統(tǒng)庫的最后修改時間更具一定的欺騙 性。目前對應(yīng)用層r o o t k i t 檢測技術(shù)已經(jīng)達到了非常成熟的水平,主要檢測手法 是文件的完整性檢查法:新系統(tǒng)安裝完畢后通過這類工具獲得并保存系統(tǒng)的各種 信息比如校驗和、最后修改時間等等,檢測的時候通過比較文件的當前信息和保 存的基準信息,如果不匹配說明攻擊發(fā)生。這類工具代表者有t r i p w i r e 1 1 和 a i d e 1 2 】 內(nèi)核層r o o t k i t 主要攻擊內(nèi)核的系統(tǒng)調(diào)用表、中斷描述符表等等。當內(nèi)核被攻 擊后,其提供給應(yīng)用層的信息將不可靠,因此很少有純應(yīng)用層工具能檢測到內(nèi)核 級r o o t k i t ,即使能檢測到某些內(nèi)核級r o o t k i t ,但當此r o o k i t 升級后就失效了。前 面提到的文件完整性檢測工具t r i p w i r e 和a i d e 對內(nèi)核級r o o t k i t 無效。只能檢測 一些低版本內(nèi)核級r o o t k i t 的純應(yīng)用層工具的典型代表是e h k r o o t k i t 1 3 。 目前內(nèi)核級檢測工具通常都是應(yīng)用層和內(nèi)核層或者是應(yīng)用層和能結(jié)合 d e v k l m e m 設(shè)備文件比較可靠的獲得內(nèi)核某些信息的工具的結(jié)合,例如 k e r n _ c h e c k 1 8 、e h e c k i d t 1 4 和s t m i c h a e l 1 5 1 6 等。k e m c h e c k 主要手段是比較 各個內(nèi)核符號在s y s t e m m a p 文件中的地址和系統(tǒng)運行時的地址:c h e c k i d t 主要通 過檢查中斷描述符表的完整性檢測到攻擊中斷描述表這一特定類型r o o t k i t ; s t m i c h a e l 主要手段是驗證內(nèi)核關(guān)鍵區(qū)域如代碼段和系統(tǒng)調(diào)用表的完整性來達到 檢測目的,它截獲了可加載模塊的加載等系統(tǒng)調(diào)用( 這本身也使用了r o o t k i t 的 攻擊手段) ,在每次模塊加載等操作時都會觸發(fā)完整性的檢查操作。它還設(shè)置了 一個定時器,以固定時間間隔運行完整性檢查操作。這類檢查工具雖然能夠檢測 到一些r o o t k i t ,但如果r o o t k i t 中存在專門的代碼規(guī)避它們的檢測,那么檢測將不 再有效,根本原因在于它們運行的最高權(quán)限和內(nèi)核級r o o t k i t 的權(quán)限是一樣的。 c o p i l o t 4 3 是突破此限制的一種嘗試,它利用嵌入式軟硬件設(shè)計方法設(shè)計了一種 額外的p c i 硬件,使用時該p c i 卡安裝在被監(jiān)控的主機上,該p c i 卡固定周期掃 描主機系統(tǒng)內(nèi)存,比較預(yù)先保存內(nèi)核內(nèi)存和當前內(nèi)核內(nèi)存的m d 5 哈希值來判斷 是否受到r o o t k i t 攻擊。但是為檢查r o o t k i t ,c o p i l o t 需要系統(tǒng)安裝塊額外的硬 件設(shè)備。 1 2 2 虛擬機與反r o o t k i t 研究 虛擬機是一個抽象的計算機,和實際的計算機樣,具有一個指令集并使用 2 第1 章緒論 不同的存儲區(qū)域。它負責執(zhí)行指令,還要管理數(shù)據(jù)、內(nèi)存和寄存器。按 1 7 1 q b 的 分法,虛擬機可以分為進程級虛擬機、高級語言虛擬機、系統(tǒng)虛擬機。 系統(tǒng)虛擬機技術(shù)通過在物理硬件上增添一層軟件層虛擬出一個或多個計算 平臺,這層軟件層被稱為虛擬監(jiān)控i 搭( v i r t u a lm a c h i n em o n i t o r ) 1 7 ,有的時候也 稱為h y p e r v i s o r ,如此虛擬出的系統(tǒng)被稱為虛擬機,有時該虛擬機也被稱為g u e s t 。 虛擬機都在v m m 的監(jiān)控和輔助下訪問底層物理硬件。因為v m m 能允許多個虛 擬機透明的復(fù)用物理機器的資源同時又能對虛擬機進行嚴格的監(jiān)控,所以近年來 虛擬技術(shù)在系統(tǒng)安全領(lǐng)域特別是反r o o k i t 領(lǐng)域得到了廣泛的應(yīng)用。 s e c v i s o r 4 4 、n i c k l e 4 5 就是將虛擬機技術(shù)應(yīng)用于反r o o t k i t 的嘗試,其中 s e c v i s o r 通過保護內(nèi)核代碼段的完整性在一定程度上起到了反r o o t k i t 的效果,但 其不能保護內(nèi)核中的重要數(shù)據(jù)。n i c k l e 通過設(shè)置對虛擬機透明的影子內(nèi)存來 達到阻止r o o t k i t 的目的,但是因為它需要在v m m 中設(shè)置和虛擬機內(nèi)存同等大 小的影子內(nèi)存,對性能都有較大影響而且系統(tǒng)的內(nèi)存利用率很低只有5 0 。 1 3 論文主要工作 內(nèi)核級r o o t k i t 比應(yīng)用層的r o o t k i t 更隱蔽更難檢測,其危害性也最大。而有相 當數(shù)量的內(nèi)核級r o o t k i t 攻擊目標是系統(tǒng)調(diào)用,故而本論文先對l i n u x 系統(tǒng)調(diào)用機 制做了深入分析。同時相當數(shù)量的內(nèi)核級r o o t k i t 是以可加載內(nèi)核模塊形式出現(xiàn) 的,故而需要詳細分析l i n u x 內(nèi)核的可加載內(nèi)核模塊機制 實現(xiàn)一種反r o o t k i t 系統(tǒng)的前提是對各種r o o t k i t 攻擊原理和系統(tǒng)脆弱部分要有 深入的理解和研究,本論文接著分析了r o o t k i t 攻擊的原理包括應(yīng)用層r o o t k i t 和 內(nèi)核級r o o t k i t ,著重分析了內(nèi)核的脆弱性和內(nèi)核級級r o o t k i t 的攻擊原理 在上述基礎(chǔ)上,本文提出一種虛擬機監(jiān)控器的反r o o t k i t 系統(tǒng),在i g u e s t 虛擬 機上針對l i n u x 操作系統(tǒng)設(shè)計并實現(xiàn)了其原型,并對可能存在的性能瓶頸進行了 優(yōu)化并測試了優(yōu)化的效果。最后利用v i r t b e n c h 測試了原型與原l g u e s t 的性能, 并做了對比和評價。 1 4 論文組織結(jié)構(gòu) 全文共分為六章:其中3 、4 、5 三章是本文主體。 第2 章:l i n u x 內(nèi)核系統(tǒng)調(diào)用與l k m 。簡單介紹目前l(fā) i n u x 內(nèi)核x 8 6 平臺下 的兩種系統(tǒng)調(diào)用機制:軟中斷i n t0 x 8 0 方式和s y s e m e r s y s c a l l 方式,再簡單介 紹了l i n u x 內(nèi)核下的可加載模塊( l k m ) 機制。這兩項與本文研究重點內(nèi)核級 r o o t k i t 關(guān)系密切,在進入本文主體前深入理解和研究他們是非常必要的。 3 第1 章緒論 第3 章:r o o t k i t 攻擊原理。在簡要分析了應(yīng)用層r o o t k i t 攻擊手段之后,轉(zhuǎn)向 對本文重點內(nèi)核級r o o t k i t 攻擊的原理分析。既分析了常見的攻擊系統(tǒng)調(diào)用、攻 擊中斷描述符表、通過d e v k m e m 的攻擊,也分析了目前不常見的且比較難以 檢測的攻擊手段諸如:攻擊異常表e xt a b l e 和基于調(diào)試寄存器的攻擊。 第4 章:原型系統(tǒng)設(shè)計與實現(xiàn)?;诜磖 o o t k i t 模塊運行的權(quán)限要比r o o t k i t 運行權(quán)限高這樣一個原則,在l g u e s t 虛擬機上設(shè)計與實現(xiàn)了針對l i n u x 內(nèi)核的反 r o o t k i t 系統(tǒng)原型。在提出總體框架和策略后,提出被監(jiān)控部分的組成:被監(jiān)控的 內(nèi)存區(qū)域和被監(jiān)控的特權(quán)寄存器i d t r 、g d t r 和s y s e n t e re i pm s r 等,其 中被監(jiān)控的內(nèi)存區(qū)域又包括了內(nèi)核核心部分的代碼段t e x t 、異常表段e x t a b l e 、 只讀數(shù)據(jù)段r o d a t a 以及本文增加的針對重點全局數(shù)據(jù)的m o n i t o r 段。接著分析了 被監(jiān)控特權(quán)寄存器i d t r 、g d t r 以及s y s e n t e re i pm s r 等寫保護的實現(xiàn)細 節(jié),接下來分析了被監(jiān)控內(nèi)存保護的實現(xiàn)過程中需要解決的各方面的問題:l g u e s t 如何得知客戶機內(nèi)核被監(jiān)控內(nèi)存區(qū)域的地址( 本文通過增加h y p e r c a l l 來做到的) , 客戶機內(nèi)核進程堆棧的獲取,函數(shù)調(diào)用鏈的獲得,重要全局數(shù)據(jù)的處理,寫操作 合法性的驗證算法,以及被驗證寫操作合法后如何通過指令模擬來修正缺頁異常 達到對客戶機透明的目的。 第5 章:原型系統(tǒng)驗證及性能評價與優(yōu)化。首先,簡單介紹了原型系統(tǒng)實現(xiàn) 的硬件和軟件平臺。接下來列出分析了反已有r o o t k i t 的實驗結(jié)果。接著分析了 c a l l t r a c e 算法優(yōu)化的原理和優(yōu)化后的性能評價。最后分析了原型系統(tǒng)整體的性能: 因要獲取函數(shù)調(diào)用鏈而打開的內(nèi)核選項c o n f i gf r a m ep o i n t e r 對性能的 影響;原型系統(tǒng)在v i r t b e n c h 性能測試工具集下的性能和原l g u e s t 性能,并對實 驗數(shù)據(jù)做了分析。 第6 章全文總結(jié)。對全文的工作進行了總結(jié),歸納了本文工作的貢獻、收獲、 以及不足之處;并提出了進一步的研究方向。 4 第2 章l i n u x 系統(tǒng)調(diào)用與l i ( m 第2 章l i n u x 系統(tǒng)調(diào)用與l k m 2 1l i n u x 系統(tǒng)調(diào)用 2 1 1 系統(tǒng)調(diào)用概述 系統(tǒng)調(diào)用是操作系統(tǒng)提供給用戶程序一組操作硬件設(shè)備請求內(nèi)核服務(wù)的“特 殊 接口,位于核心層和應(yīng)用層之間,用戶程序可以通過這組“特殊”接口來獲 得操作系統(tǒng)內(nèi)核提供的服務(wù)。系統(tǒng)調(diào)用在l i n u x 操作系統(tǒng)中的位置如圖2 1 所示: 臣三j 匭顯一 內(nèi)核層 圖2 1 系統(tǒng)調(diào)用在操作系統(tǒng)中位置 l i n u x 內(nèi)核系統(tǒng)調(diào)用到2 6 2 9 為止共有3 3 2 個,大致可以分為如下幾類: 處理i o 請求的系統(tǒng)調(diào)用,比如s y s _ o p e n 、s y s r e a d 、s y s _ w r i t e 、s y s _ _ i o c t l 等等 進程管理的系統(tǒng)調(diào)用,比如s y s _ f o r k 、s y s _ _ k i l l 、s y s _ n i c e 、s y s _ e x e c v e 等 等 時間有關(guān)的系統(tǒng)調(diào)用,比如s y s _ g e a i m e o f d a y 等 內(nèi)存空間管理的系統(tǒng)調(diào)用,比如s y s _ m m a p ,s y s _ b r k 等等 進程間通信,比如s y s _ s h m g e t 、s y s _ s i g n a l 等 x 8 6 平臺上從l i n u x 2 6 開始,有兩種實現(xiàn)系統(tǒng)調(diào)用的方式 1 0 】:軟件中斷 5 第2 章l i n u x 系統(tǒng)調(diào)用與l 刪 i n t i r e t 指令方式和s y s e n t e r s y s e x i t 指令方式。在介紹這兩種系統(tǒng)調(diào)用實現(xiàn)方式前, 本章首先介紹與系統(tǒng)調(diào)用有關(guān)的系統(tǒng)服務(wù)函數(shù)、系統(tǒng)調(diào)用號和系統(tǒng)調(diào)用表 2 1 2 系統(tǒng)調(diào)用服務(wù)函數(shù)、系統(tǒng)調(diào)用號和系統(tǒng)調(diào)用表 ( 1 ) 每個系統(tǒng)調(diào)用對應(yīng)一個系統(tǒng)調(diào)用服務(wù)函數(shù) 9 】,服務(wù)函數(shù)以“s y s _ 開 頭,后接系統(tǒng)調(diào)用函數(shù)名。 ( 2 ) 系統(tǒng)調(diào)用號用來標識應(yīng)用層想調(diào)用的系統(tǒng)調(diào)用服務(wù)函數(shù),每個系統(tǒng)調(diào) 用號都唯一對應(yīng)一個系統(tǒng)調(diào)用。系統(tǒng)調(diào)用號在a r c h x 8 6 i n c l u d e a s m u n i s t d _ 3 2 h 中定義如下: # d e f i n e n r _ r e s t a r t _ s y s e a l l 0 # d e f i n e n r - _ e x i t 1 # d e f i n ej r f o r k2 ( 3 ) 系統(tǒng)調(diào)用表用來保存系統(tǒng)調(diào)用號到系統(tǒng)調(diào)用的映射關(guān)系 8 】,以系統(tǒng)調(diào) 用號為下標,那么對應(yīng)系統(tǒng)調(diào)用表的內(nèi)容就是系統(tǒng)調(diào)用服務(wù)函數(shù)的入口地址。目 前系統(tǒng)調(diào)用表定義在a r c h x 8 6 k e m e l s y s c a l l _ t a b l e _ 3 2 s 中,具有如下的格式: e n t r y ( s y s _ _ c a l l _ t a b l e ) 1 0 n gs y s r e s t a r t _ s y s c a l l 嚴0 一o l d ”s e t u p ( ) ”s y s t e mc a l l ,u s e df o rr e s t a r t i n g 1 1 0 n gs y s e x i t 1 0 n gs y s _ f o r k 1 0 n gs y s r e a d 1 0 n gs y s _ w r i t e 1 0 n gs y s _ _ o p e n | 嶙s | 1 0 n gs y s _ _ c l o s e 2 1 3 軟件中斷i n t i r e t 方式 x 8 6 有三種中斷描述符,分別是任務(wù)門、中斷門和陷阱門,系統(tǒng)調(diào)用使用的 是陷阱門。系統(tǒng)啟動過程中: a r c h x 8 6 k e m e l h e a d3 2 s 中的s e t u p 函數(shù)設(shè)置好中斷描述表idt a r c h x 8 6 k e m e l t r a p s c 中的t r a p函數(shù)調(diào)用 l y , i n i t s e t _ s y s t e r n _ t r a p _ g a t e ( s y s c a le c t o r & s y s t e m _ c a l l ) 設(shè)置好陷阱門,其中 s y s c a l lv e c t o r 為0 x 8 0 這是系統(tǒng)調(diào)用使用的中斷號。 當用戶空間程序想調(diào)用系統(tǒng)調(diào)用時,比如調(diào)用g e t p i d 系統(tǒng)調(diào)用,可以通過 6 第2 章l i n u x 系統(tǒng)調(diào)用與l k m 以下的代碼段來完成: m o v l $ 2 0 ,e a x $ s y s c a l ln u m b e r i n t $ 0 x 8 0 $ i m p l e m e n ti n t e r r u p t l ,s a v e _ a l l , g e tt h r e a di n f o 苧+ s y 吖匆 、? 出口。泳 圖2 2 系統(tǒng)調(diào)用流程示意 首先把g e t p i d 的系統(tǒng)調(diào)用號放到e a x 中,然后就用i n t 執(zhí)行系統(tǒng)調(diào)用,以內(nèi) 核態(tài)進入系統(tǒng)調(diào)用的總?cè)肟诘刂穝 y s t e m _ c a l l ,其定義在a r c h x 8 6 k e m e l e n t r y _ 3 2 s 中,代碼如下( 略去為調(diào)試方便而加入的代碼) : e n t r y ( s y s t e m _ c a l l ) p u s h l e a x 拌s a v eo r i g e a x s a v e a l l :, g e t _ j h r e a d i n f o ( e b p ) t e s t w $ ( 一t i f _ s y s c a l l _ e m u l t i f _ s y s c a l l - t r a c e i j i f s e c c o m pl _ t i f _ s y s c a l u u d i t ) ,t l f l a g s ( e b p ) j n zs y s c a l l _ _ t r a c e _ e n t r y c m p l $ ( n r _ s y s c a l l s ) ,e a x j a es y s c a l lb a d s y s 7 第2 章l i n u x 系統(tǒng)調(diào)用與l 跚 s y s c a l l _ c a l l : c a l l 幸s y s _ c a l l _ t a b l e ( ,e a x ,4 ) m o v l e a x ,p t _ e a x ( e s p ) 群s t o r et h er e t u r nv a l u e s y s c a l l _ e x i t : s y s t e m _ c a l l 首先將系統(tǒng)調(diào)用號( e a x 的值,前面我們把g e t p i d 的系統(tǒng)調(diào)用號2 0 放到這里面) 放到棧中,然后保存相關(guān)寄存器( s a v e _ a l l ) 。再得到s t r e e t t h r e a d i n f o 結(jié)構(gòu)的指針放到e b p 中。檢查s t r u c tt h r e a d _ i n f o 中的f l a g s 標志,檢查 是否有系統(tǒng)調(diào)用跟蹤等,有則跳到s y s c a l lt r a c ee n t r y 。沒有就比較系統(tǒng)調(diào)用號是 否在有效范圍內(nèi)。有效就調(diào)用系統(tǒng)調(diào)用,最后把結(jié)果放到棧中,以返給調(diào)用者。 最后運行s y s c a l le x i t 標簽處一系列代碼返回用戶空間。完整流程圖如圖2 2 所示: 2 1 4 s y s e n t e r s y s e x i t 方式 2 1 4 1s y s e n t e r l s y s e x i t 背景 在x 8 6 保護模式中,處理i n t 中斷指令時,c p u 首先從中斷描述符i d t 中取 出對應(yīng)的中斷描述符,判斷中斷描述符種類,檢查中斷描述符的級別d p l 和硫 指令調(diào)用者的級別c p l ,當c p l 將c s 的值設(shè)置為s y s e n t e rc sm s r 寄存器的值。 將e i p 的值設(shè)置為s y s e n t e re i pm s r 寄存器的值。 r 第2 章l i n u x 系統(tǒng)調(diào)用與l 腳 將s s 的值設(shè)置為s y s e n t e r c s m s r 寄存器的值n _ e 8 。 將e s p 的值設(shè)置為s y s e n t e r e s p m s r 寄存器的值。 r i n 9 0 代碼調(diào)用s y s e x i t 指令后,硬件會做如下操作: 將c s 的值設(shè)置為s y s e n t e rc sm s r 寄存器的值加上1 6 。 將e i p 的值設(shè)置為e d x 寄存器的值。 將s s 的值設(shè)置為s y s e n t e rc s m s r 寄存器的值加上2 4 。 將e s p 的值設(shè)置為e c x 寄存器的值 其中寄存器s y s e n t e r c s m s r ,s y s e n t e r _ e i p _ m s r , s y s e n t e re s pm s r 在i n t e l 的文檔中定義。他們可以通過w r m s r 指令來設(shè)置。 l i n u x 內(nèi)核在a r c h x 8 6 v d s o v d s 0 3 2 s e t u p c 通過e n a b l e _ s e p _ _ c p u 函數(shù)初始化了這些 寄存器。 v o i de n a b l e _ s e p _ c p u ( v o i d ) 。 t s s - x 8 6 一t s s s s l = - l r n e l _ c s ; t s s - x 8 6 _ t s s s pl = s i z e o f ( s t r u c tt s s _ s t r u c t ) + ( u n s i g n e dl o n g ) t s s ; w r m s r ( m s r i a 3 2 _ s y s e n t e r _ c s ,r n e l - s s ,0 ) ; w r m s r ( m s r _ i a 3 2 _ s y s e n t e r _ e s p , t s s - x 8 6 _ t s s s p l ,o ) ; 。 w r m s r ( m s r _ i a 3 2 _ s ;y s e n t e r _ e i p , ( u n s i g n e dl o n g ) i a 3 2 _ s y s e n t e rt a r g e t , o ) ; ) 其中i a 3 2 _ s y s e n t e r _ t a r g e t 是s y s e n t e r 在內(nèi)核空間的入c 1 函數(shù),其流程和 s y s t e m _ c a l l 類似,不再贅述。 2 1 4 3l i n u x 內(nèi)核對兩種方式的支持 l i n u x 內(nèi)核為了同時支持軟件中斷i n t i r e t 方式和s y s e n t e r s y s e x i t 指令方式兩 種實現(xiàn)系統(tǒng)調(diào)用的方式,虛擬了一個被稱為v d s o 4 2 共享庫。例如我們用l d d b i n i s 可以查看可執(zhí)行文件b i n i s 所依賴的庫: l i n u x g a t e s o 1 - ( 0 x b 7 e e f 0 0 0 ) l i b e s o 6 = l i b i 6 8 6 c m o v l i b c s o 6 ( 0 x b 7 d 5 a 0 0 0 ) 這里的l i n u x g e t s o 1 沒有對應(yīng)的文件,它正是我們所說的v d s o 共享庫。系 統(tǒng)調(diào)用的入口點即在此共享庫中。對于應(yīng)用程序來說不用考慮系統(tǒng)調(diào)用實現(xiàn)方式 只需做些初始準備后直接“c a l l 入口地址”即可,實際上g l i b c 的系統(tǒng)調(diào)用正是 9 第2 章l i n u x 系統(tǒng)調(diào)用與l k m 如此實現(xiàn)的。目前該入口點名稱為k e r n e ly s y s c a l l ,對于軟件中斷i n t i r e t 方式, 其實現(xiàn)在a r c h x 8 6 v d s o v d s 0 3 2 i n t 8 0 s 中;對于s y s e n t e r s y s e x i t 指令方式,其實 現(xiàn)在a r c h x 8 6 v d s o v d s 0 3 2 s y s e n t e r s 中。內(nèi)核編譯時會被編譯成s o 文件,由 a r c h x 8 6 v d s o v d s 0 3 2 s 包含,并且導(dǎo)出起始地址和結(jié)束地址。內(nèi)核啟動時會調(diào)用 s y s e n t e r s e t u p 函數(shù),先分配一個空白頁面,然后根據(jù)處理器支持s y s e n t e r 與否將 s y s e n t e r - s 或i n t 8 0 s 編譯出的s o 文件拷貝到此空白頁。當用戶空間執(zhí)行一個e l f 文件時,在f s b i n f m te l f c 文件的l o a de l fb i n a r y 函數(shù)中加載e l f 文件到內(nèi)存,然 后調(diào)用a r c h _ s e t u p _ a d d i t i o n a l _ _ p a g e s 將v s d o 所在頁面映射到用戶空間中,接著 l o a de l fb i n a r y 調(diào)用c r e a t ee l ft a b l e s 將k e r n e ly s y s c a l l 的地址放到e l f 參數(shù) a t - s y s i n f o 中,最后c r e a t e e l f t a b l e s 將e l f i n f o 中的_ _ _ k e m e l v s y s c a l l 放到用 戶堆棧中e l f 參數(shù)適當位置,這樣用戶層代碼即可方便獲得 的 地址。 _ k e r n e ly s y s c a l l 對于s y s e n t e r s y s e x i t 方式來說,- k e m e l _ v s y s c a l l 在將e c x 、e d x 、e b p 壓棧并 將棧指針送e b p 后即調(diào)用s y s e n t e r 指令,隨即s y s e n t e r 在內(nèi)核空間的入1 2 1 函數(shù) i a 3 2 _ s y s e n t e r t a r g e t 開始運行。入口函數(shù)i a 3 2 _ s y s e n t e r t a r g e t 的流程在前面已經(jīng) 分析過,這里不再贅述。 2 2l i n u x 內(nèi)核模塊 2 2 1 可加載內(nèi)核模塊機制 傳統(tǒng)的操作系統(tǒng)內(nèi)核有兩種結(jié)構(gòu):微內(nèi)核體系( m i c r o k e r n e l ) 和宏內(nèi)核體系 ( m o n o l i t h i c ) 。微內(nèi)核體系結(jié)構(gòu)的特點是在操作系統(tǒng)內(nèi)核層實現(xiàn)了一個很小的c o r e 用來實現(xiàn)最基本的操作系統(tǒng)服務(wù)比如中斷的管理、時鐘的管理和進程問通信機制 ( i n t e rp r o c e s sc o m m u n i c a t i o n ) 等等,而將其它的操作系統(tǒng)服務(wù)比如文件系統(tǒng)、 t c p i p 網(wǎng)絡(luò)協(xié)議棧,除幾個特殊硬件外的設(shè)備驅(qū)動程序等等都實現(xiàn)在用戶層空間 里。微內(nèi)核體系結(jié)構(gòu)優(yōu)美、可擴展性好,但由于系統(tǒng)運行時有較多的進程切換以 及進程間通信機制性能低下等因素,微內(nèi)核系統(tǒng)的性能則不盡如人意,雖然所謂 第二代微內(nèi)核的性能號稱很良好。微內(nèi)核操作系統(tǒng)的代表者有m i n i x 、h u r d 、m a e h 、 1 4 等。 宏內(nèi)核是將操作系統(tǒng)服務(wù)比如內(nèi)存管理、設(shè)備管理、進程管理、網(wǎng)絡(luò)協(xié)議棧 和文件系統(tǒng)等等都實現(xiàn)在內(nèi)核層連接為一個大內(nèi)核,進程切換大為減少,因為其 各模塊都緊密連接在一起,其性能優(yōu)秀,但可擴充性相對微內(nèi)核則較差。宏內(nèi)核 體系的代表者有l(wèi) i n u x 、傳統(tǒng)的u n i x 操作系統(tǒng)等。 l k m 是l o a d a b l ek e r n e lm o d u l e 的縮寫,中文名為可加載內(nèi)核模塊。l k m 是包括l i n u x 操作系統(tǒng)在內(nèi)類u n i x 操作系統(tǒng)為了在降低內(nèi)存使用量和多功能、 1 0 第2 章l i n u x 系統(tǒng)調(diào)用與l 腳 高可擴充性之間取得平衡提供的機制。使用該機制后,內(nèi)核的大部分功能模塊平 時以目標文件的形式存在于硬盤上,當需要某一種內(nèi)核功能時就將其實現(xiàn)模塊動 態(tài)地加載到內(nèi)存中使用。內(nèi)核維護著一個全局的模塊鏈表,鏈表的每個節(jié)點都對 應(yīng)著一個模塊的s t r u c tm o d u l e 結(jié)構(gòu)體,內(nèi)核正是利用s t r u c tm o d u l e 結(jié)構(gòu)體來管理 每一個l k m 的。裝載一個模塊時,動態(tài)生成對應(yīng)此模塊的s t r u c tm o d u l e 結(jié)構(gòu)體, 并鏈入鏈表的頭部。注意,鏈表的末尾節(jié)點為內(nèi)核本身,其模塊名為空。加載模 塊時需要對模塊所引用到的符號進行解析和重定位,這相當于實現(xiàn)了應(yīng)用層中的 應(yīng)用程序加載器l d s o 的功能。然后,模塊即可被當成內(nèi)核的一部分來執(zhí)行。加 載進內(nèi)核中的模塊具有所有的內(nèi)核權(quán)限。模塊可以在系統(tǒng)啟動時加載,也可以在 系統(tǒng)運行時動態(tài)加載,在不需要時模塊還能被卸載。操作系統(tǒng)內(nèi)核本身將作為一 個基礎(chǔ)模塊,其中實現(xiàn)了操作系統(tǒng)的通用的基礎(chǔ)功能并提供了對l k m 機制的支 持。如果需要對系統(tǒng)的功能迸行擴充,如實現(xiàn)新的設(shè)備驅(qū)動程序、新的文件系統(tǒng) 等,只需要添加新的模塊在其中實現(xiàn)所需要的功能并不需要重新編譯內(nèi)核。加載 新模塊時并不需要重新啟動機器,這樣就在內(nèi)存使用量和高可擴充性之間取得了 最佳的平衡。 大部分的內(nèi)核級r o o t k i t 正是利用了可加載模塊機制,動態(tài)加載進內(nèi)存把自己 作為內(nèi)核的一部分運行,因為其擁有和操作系統(tǒng)內(nèi)核本身一樣的權(quán)限,相對于應(yīng) 用層的r o o t k i t 來講其隱蔽性更好,危害性更大。 2 2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論