国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

基于處理器調試機制的Rootkit隱形技術(1)
2008-11-10   

本文將向讀者介紹一種通過處理器的調試機制來實現Rootkit的隱形的技術。這種技術的特點是,無需利用系統的缺陷,直接處理器的正常功能就能達到隱形的目的。本文將以Linux系統為例來介紹如何實現基于調試寄存器的隱形方法。

一、概述

幾年來,用于在攻陷的機器上實現隱形技術和方法越來越多,讓人目不暇接。其中,有一些直接篡改系統調用表,有一些修改中斷處理程序,凡此種種,在此不再一一列舉。不過,這些方法的共同之處在于,都以可見的形式修改了底層的操作系統,這使得它們很容易被發現。
本文中,筆者利用調試機制這一x86平臺的共同特性,用內核級Rootkit實現了終極的隱形。雖然該方法通用于所有IA-32兼容平臺,但我們這里以Linux操作系統為例,講解如何在不碰鉤子技術的各種“傳統”目標(如系統調用表、中斷處理程序等)的情況下攔截正常執行流程的技術。 實際上,這種隱形技術是如此高超,以至于還沒有人發現我們的存在。

在本文中,當我們說“調試器”時,實際上指的是只能從ring 0訪問的IA-32的調試機制,對于用戶空間的調試程序來說,是無法利用這個機制的,只有某些內核調試工具才能使用這個機制。

二、處理器的調試機制

為了讓開發人員過得更輕松些,Intel公司引入了一個機制來處理調試過程。按照Intel公司的用戶手冊的說法,“IA-32架構提供了大量的調試設施,供調試代碼、監視代碼執行和處理器性能之用。這些設施對調試應用程序軟件、系統軟件和多任務操作系統都是非常重要的 ”。開發人員可以通過一組專用寄存器(稱為調試寄存器,從DR0至DR7)來使用該機制,這樣他們就可以根據內存地址來設置硬件斷點了。一旦執行流到達帶有斷點標記的地址,控制權就會交給調試中斷處理程序(INT 1),該處理程序繼而調用do_debug()函數(定義在/i386/kernel/traps.c文件中)來處理引起異常的實際情況。

可以通過調試寄存器(DB0~DB7)和兩個與模式特定的寄存器(MSR)來訪問這種調試支持。對本文而言,我們只需關心調試寄存器就行了。這些寄存器存放的是內存地址和I/O位置,我們將其稱之為斷點。斷點既可以是用戶在程序中選定的位置(指令斷點),也可以是內存中的數據存儲區(數據斷點),還可以是指定的I/O端口(I/O斷點),程序員或者系統設計人員通常希望程序在這些指定的地方停下來,以便調用調試軟件來檢查處理器的狀態。

當內存或I/O設備訪問某個斷點地址時,就會引起一個調試異常(#DB)。我們可以進一步為斷點規定引起中斷的具體的內存訪問方式或者I/O訪問方式,例如一個內存讀和/或寫操作或者I/O讀和/或寫操作(即以規定之外的方式訪問該斷點時不會引起中斷)。調試寄存器同時支持指令斷點和數據斷點。MSR是從P6系列處理器開始引入IA-32架構的,它用于監視分支、中斷和異常,并記錄下最后分支、中斷或者異常所使用的源地址和目的地址,以及最后中斷或者異常之前發生的分支的源地址和目的地址。


共5頁: 1 [2] [3] [4] [5] 下一頁
 第 1 頁:  第 2 頁:調試寄存器
 第 3 頁:隱身法  第 4 頁:處理程序
 第 5 頁:神奇的障眼法

熱詞搜索:

上一篇:利用XSSDetect自動檢測跨站腳本漏洞
下一篇:對某國家級重點職教網的一次安全滲透(1)

分享到: 收藏
主站蜘蛛池模板: 大理市| 石棉县| 永胜县| 天气| 安陆市| 大庆市| 定日县| 武山县| 封丘县| 滦南县| 呼图壁县| 永川市| 弥勒县| 潼南县| 康定县| 凤山市| 明水县| 车险| 壤塘县| 富宁县| 龙川县| 庄河市| 龙岩市| 五莲县| 比如县| 武功县| 通渭县| 成安县| 化州市| 盐源县| 定南县| 娄烦县| 五家渠市| 乌鲁木齐市| 谷城县| 凤城市| 阿克苏市| 新昌县| 宁都县| 甘孜县| 新绛县|