何 進,范明鈺,王光衛
基于TWPos內核完整性保護
何 進,范明鈺,王光衛
(電子科技大學計算機科學與工程學院 成都 611731)
內核rookits攻擊對內核的完整性構成致命威脅,因此對內核rootkits防護是內核完整性保護的重點。當前研究主要側重于內核rootkits探測和防護,不足之處在于:1) rootkits防護存在單一保護模式;2) 內核rootkits探測只能做探測使用,即便發現內核已經受到攻擊,也無能為力。鑒于這種情況,該文設計了一種內核完整性保護方法,采用安全認證保護和探測恢復兩種方式(TWPos)保護操作系統,同時具備探測和防護能力,即便內核受到攻擊也能進行恢復。實驗表明,TWPos系統既能全面有效的防護,而且又不犧牲系統性能,并且兼容多種OS系統。
探測恢復復試; 內核完整性; rootkits; 安全認證保護模式; TWPos; 虛擬機管理
Rootkits是攻擊者向計算機系統植入的,能夠隱藏自身蹤跡并保留超級用戶訪問權限的惡意程序。rootkits分為用戶級和內核級兩種[1],本文只對內核級rootkits進行探測和防護,內核級的rootkits對整個計算機安全構成致命威脅,它不僅破壞內核任務、文件系統、網絡協議棧、系統時鐘、調度堆棧等OS重要部件,而且對內核進行篡改、注入、更改內核控制流程以及隱藏自身反病毒軟件。rootkits對內核攻擊主要通過以下途徑:1) 帶有rootkits的模塊插入到內核;2) 內核自身安全漏洞,注入rootkits到內核;3) 通過應用安全漏洞提取最高權限,再向內核注入rootkits。
無論采用何種途徑防止內核rootkits攻擊,最終目的是確保內核完整性。通過研究內核rootkits注入方式、系統特征及防范措施,將這些工作分為兩大類:1) 探測內核rootkits[2-4],早期Copilot[2]采用獨立PCI卡周期獲取內核的內存,并分析判斷內核是否被破壞;基于Copilot改進[3]進一步探測代碼完整性及其數據完整性;SBCFI[4]探測控制流;OSck[5]基于不變式進行探測。所有這些都是基于探測模式,只有rootkits已經注入內核之后,才能探測發現rootkits攻擊,盡管事后采取一系列措施,然而內核完整性無法得到保障。2) 阻止rootkits注入內核從而確保內核完整性[6-9,12-13],Secvisor[6]確保整個系統運行周期內核代碼完整性;Patagonix[7]探測執行文件格式確保內核完整性;NICKLE[8]認證內核代碼再執行;HookSafe[9]函數指針保護,主要是鉤子函數保護。這些保護都是基于內核某一個方面進行保護,要么保證代碼完整性[6-8],或數據完整性[11,15]或控制流完整性[9],都采用單一防護某類攻擊,而缺乏統一全面保護措施。
基于上述兩種類型,僅僅采用探測方式是無法保護內核完整性,即便阻止rootkits注入確保內核完整性這種方式,也存在諸多弊端,因而無法有效的保護內核完整性。鑒于此,本文采用了一種將安全防護及探測安全漏洞并進行恢復相結合的方法確保內核完整性的方案,稱為TWPos方法,TWPos基于VMM[14]管理,將TWPos保護的內核劃分為兩種保護措施:一部分內核采用安全認證保護方式(safe authentication protection mode, SAPM),這部分保護主要針對內核里面安全級別要求很高的部分,如控制流、內核調度等;另一部分內核采用探測恢復方式(detection recovery mode, DRM),這部分相對上面部分安全要求低,如一些外圍設備等。TWPos將保護的內核邏輯上劃分為兩個部分,采用SAPM方式保護的內核部分稱為SAPM-K,采用DRM方式探測保護的內核部分稱為DRM-K。
定義 1 內核完整性KI:內核整個運行周期,內核代碼、內核數據、內核控制流和內核棧都未被篡改或注入,稱為內核完整性。
定義 2 原始內存塊OMB:OMB保存內核代碼、數據、堆棧的內存。保護方式來看OMB內存= DRM-K∪SAPM-K,DRM-K?OMB,SAPM-K?OMB并且DRM-K∩SAPM-K=?。
定義 3 備份內存塊BMB:保存DRM-K?OMB備份的內存,當DRM-K完整性遭到破壞,通過BMB進行恢復,確保代碼、數據、控制流和棧完整性。
定義 4 映射內存塊MMB:存放的內存都是從OMB通過安全認證之后的內存,GOS可以安全訪存。
定義 5 安全映射表SMT:建立SAPM-K和MMB之間映射關系,當GOS任務訪問SAPM-K內存時,通過SMT項映射至MMB內存,進行訪問,SMT標識狀態包括5種:LOCK、UNLOCK、USE、SAFE和NORMAL。LOCK狀態:建立映射時的狀態;UNLOCK狀態:撤銷映射時的狀態;USE狀態:GOS可以訪問內存;SAFE狀態:GOS可以安全訪問MMB內存,NORMAL狀態:GOS通用訪問OMB內存。
1.1 內存關系
將TWPos加載VMM中,TWPos從Host OS(HOS)分配3部分內存:BMB、SMT和MMB,并將這3部分內存塊的頁表都置為非置換方式,避免這些內存被置換出去,導致系統性能降低。
GOS未加入安全系統之前,GOS訪存過程:GOS虛擬地址—>VMM。將TWPos作為VMM針對GOS的一個安全部件,被保護的GOS運行在VMM之上,加入安全TWPos系統,訪存過程如圖1b:GOS虛擬地址—>TWPos—>VMM。說明GOS任務安全訪問物理內存時,必須通過TWPos,才能訪問真正物理內存,TWPos作為GOS安全訪問的重要部件,通過保護GOS物理內存達到保護GOS內核KI。內存關系如圖1c:將TWPos加載到OMB時,TWPos從HOS分配3部分內存分別為BMB、SMT和MMB,處理它們之間關系如下:
1) 映射關系(OMB—>MMB):TWPos內核加載時,將采用SAPM機制的內存或者模塊SAPM-K?OMB內存認證備份至MMB內存SAPM-K—>MMB,并且SMT={OMB,MMB,SMT標識}將它們映射關系寫入空閑SMT項。
2) 副本關系(OMB—>BMB):TWPos內核加載時,將采用DRM機制的內存或者模塊DRMK?OMB內存備份至BMB內存DRM-K—>BMB。
3) 安全訪問(GOS—>SMT—>MMB):若GOS訪問SAPM-K內存,先查找SAPM-K內存與MMB映射關系SMT,若找到則通過SMT映射塊訪問MMB,由于MMB是認證之后的內存,因此該訪問為安全訪問。
4) 通用訪問(GOS—>SMT—>OMB):GOS訪問DRM-K內存,訪問過程為GOS—>SMT—>OMB。
5) 恢復關系(BMB—>OMB):如果DRM機制周期檢測到DRM-K內存被篡改,則通過BMB進行恢復BMB—>OMB。
1.2 保護機制
TWPos根據不同保護內容采用不同策略,圖1顯示了TWPos保護KI完整性的總體構架。
SAPM方式:初始化模塊建立GOS的映射關系SAPM-K—>MMB,并將MMB內存置為只讀模式,同時修改shadow page tables(SPT)頁表將原先指向SAPM-K修改為指向MMB;當GOS訪問SAPM-K內存通過SPT和SMT映射到MMB進行訪問。要是GOS訪問DRM-K內存通用訪問。
DRM方式:初始化時將GOS的DRM-K內存和BMB內存切分多個邏輯塊,并將DRM-K所有邏輯塊與BMB建立副本關系,同時DRM-K所有邏輯塊進行HASH,并將HASH值存入BMB內存;GOS訪問DRM-K內存采用通用訪問,該訪存未進行任何安全保護,GOS可能對DRM-K內存進行篡改和破壞。DRM啟動內核線程周期HASH驗證DRM-K邏輯塊KI完整性,如果KI完整性被破壞則通過BMB進行恢復。

圖1 TWPos總體構架
TWPos實現兩種內核和內核模塊保護機制:1) SAPM方式,將內核及其模塊建立映射關系SAPM-K—>MMB,GOS采用安全訪問GOS—>SMT—>MMB進行訪存。2) DRM方式,將DRM-K內核劃分多個邏輯塊,每個邏輯塊DRM-K[i]進行HASH,并將HASH值存入OMB[i]內存,同時建立副本關系DRM-K—>BMB。DRM方式周期HASH驗正DRM-K內核,如果探測到DRM-K內核的KI被破壞,則探測恢復關系BMB—>OMB。TWPos保護的內核,即可以采用其中一種,也可以同時采用兩種保護方式,但是不能將相同內存塊同時置于這兩種保護方式之下。
2.1 初始化
內核和內核模塊加載OMB內存中,SAPM方式保護的內核SAPM-K?OMB,DRM方式保護的內核DRM-K?OMB,并且DRM-K∩SAPM-K=?,也就是OMB內存對應的邏輯塊只能選擇一種方式保護,不能將OMB的邏輯塊即置入SAPM方式和DRM方式之下。從前面所述內存關系可以看出要保護SAPM-K內核,需要在初始化時建立映射關系SAPM-K—>MMB。同樣,保護DRM-K內核,初始化時建立副本關系DRM-K—>BMB,并且建立HASH驗證機制。同時SMT、MMB和BMB 3部分內存頁表都置為非置換方式,避免內存頁置換出去,導致系統性能降低。內核采用保護方式不一樣,分為兩種初始化過程:
1) SAPM-K初始化建立SAPM-K—>MMB映射關系,逐一將SAPM-K[i]—>MMB[i]邏輯塊建立映射關系。同時建立SMT[i]={OMB[i],MMB[i],標識}映射表。
2) DRM-K內核初始化:GOS的DRM-K內核劃分多個DRM-K[i]邏輯塊并進行HASH,將HASH值—>BMB備份內存,作為后期判斷DRM-K內存KI破壞的依據,建立副本關系DRM-K—>BMB,BMB為KI內存,作為后續DRM-K內存完整性破壞時進行恢復使用。
2.2 SAPM方式
如圖2所示,GOS通過SAPM方式訪問內存分為兩種情況:一種安全訪問;一種通用訪問。通用訪問就是找到GOS對應的SMT項,則遵循原有內存訪問模式GOS—>SPT—>SAPM-K,訪存流程不變。而安全訪問過程GOS—>SPT—>SMT—>MMB。GOS訪問物理內存,通過SPT頁表,查找訪問SMT;判斷SMT[i].標識狀態,若SMT[i].標識=LOCK,則等待解鎖之后才訪存;若SMT[i].標識=USE&SAFE,則表示安全訪問MMB[i]內存;若SMT[i].標識= USE& NORMAL,則表示通用訪問OMB[i]內存。

圖2 SAPM保護方式下的內存訪問
算法1:SAPM方式保護KI算法
頁表查找GOS—>SPT.
頁表訪存SPT—>SMT.
if SMT[i].標識 = LOCK then
WAIT.
else if (SMT[i].標識 = USE) then
if(SMT[i].標識 = SAFE)then
獲取SMT[i].MMB[i]地址.
安全訪問MMB[i]內存.
else if(SMT[i].標識 = NORMAL)then
獲取SMT[i]. OMB[i]地址.
通用訪問OMB[i]內存.
else
錯誤
2.3 DRM方式
GOS不通過認證直接訪問DRM-K內核,帶有惡意代碼或數據直接訪問OMB,導致KI被破壞。DRM內核初始化及DRM內核模塊加載過程中,DRM-K內核的OMB內存都做恢復備份和HASH。TWPos的DRM保護方式下,探測到rootkits攻擊進行恢復內核線程對OMB內存做周期性校驗,如圖3所示,檢查KI是否被破壞,若KI未破壞,則進入下一個周期檢查,否則BMB內存進行恢復(見恢復算法2)。

圖3 DRM保護方式下,探測到rootkits攻擊進行恢復
DRM方式恢復邏輯塊OMB[i]算法如下:
1) 周期HASH驗證,TWPos的內核線程對OMB[i]邏輯塊進行HASH,值標記為:HASH[dest]。從BMB[i]內存獲取OMB[i]初始化HASH值,標記為:HASH[Orig]。HASH[Orig]和HASH[dest]進行匹配,若匹配則表明OMB[i]的KI未破壞,若不匹配則表明OMB[i]的KI被破壞。
2) 定時周期校驗與恢復交互,定時周期校驗模塊發現KI被破壞,則向恢復模塊發送恢復指令標記為CMD[rec],等到恢復模塊恢復KI結束之后,向定時周期校驗模塊發送恢復完成指令,標記為CMD[resp]。
3) KI恢復,恢復模塊收到CMD[rec]指令,讀取BMB[i],執行探測恢復BMB[i]—>OMB[i]。
算法2:恢復算法
創建周期檢測線程。
for OMB[i]且?i∈{1,2,…,n} do
HASH邏輯塊OMB[i]—>HASH[dest]。
獲取BMB[i]初始化值HASH[Orig]。
if HASH[Orig] ≠ HASH[dest] then
CMD[rec]—>恢復模塊.
LOCK—> OMB[i].
恢復關系BMB[i]—>OMB[i] .
UNLOCK—> OMB[i].
CMD[resp]—>定時周期檢測模塊.
else
OMB[i]的KI未破壞.
等待下一個檢測周期

表1 通過現有內核rootkits攻擊TWPos系統,防護情況
TWPos系統實驗及其分析側重兩種方面:1) 防護能力;2) 系統性能。實驗環境:Dell PowerEdge T310、2.4 G主頻、Intel Xeon X3430、4 GB內存,Xen[16]hypervisor基于3.4.2版本,dom0系統為Fedora 12,使用64位Ubuntu、內核為2.6.24作為客戶機OS。
防護能力:采用現有內核rootkits攻擊工具[17-23]對插入TWPos模塊的系統進行攻擊,測試結果如表1所示。插入模塊修改控制流程、全局變量、修改或注入調用表或中斷表等,從而達到隱藏或篡改操作系統目的。實驗表明TWPos能夠有效防止現有內核rootkits攻擊,保護內核的完整性。表2通過幾種探測和防護系統的比較,可看出TWPos系統是一個全面綜合防御系統,包括對控制流、代碼、數據完整性進行全面保護,克服單一防護模式的弱點,其他探測與防御系統對控制流、代碼、數據完整性行只能保護其中一種或兩種,不能全面有效的防護。

表2 TWPos與其他內核完整性探測和防護系統的對比
性能影響:采用XEN作為性能測試基準,Lmbench[10]作為測試性能工具,測試并分析系統各參數及TWPos系統對性能的影響。
SAPM方式和DRM方式性能對比:DRM方式獲得最佳性能:最合理邏輯塊切分粒度4K和最優檢測周期15 ms,與SAPM方式比較,內核比例分配:SAPM-K內核占有60%,DRM-K內核占有40%,圖4表明了SAPM方式比DRM方式性能更好,只要SAPM方式能夠防護,盡可能采用SAPM方式。TWPos系統整體性能介于SAPM方式和DRM方式之間。
TWPos系統對應用程序的影響:應用程序訪存過程:應用程序—>系統調用—>GOS內核虛擬地址—>GOS內核物理地址—>TWPos—>VMM—>物理內存。盡管TWPos只對內核完整性進行保護,但TWPos在兩個方面可能對應用程序性能造成影響:1) 應用程序的系統調用需要訪問內核,那么就要訪問TWPos安全模塊;2) DRM方式的內核線程周期檢測DRM-K內存,對系統性能造成影響。圖5表明TWPos系統對應用程序性能影響很小。主要基于如下原因:1) 由于TWPos采用了內存映射而摒棄仲裁技術,內存映射機制對系統性能產生輕微的影響,不會導致系統性能嚴重下降;2) DRM的內核檢測線程盡管周期掃描DRW-K內存,但是只有在內核被篡改或注入代碼時,內核完整性遭到破壞進行恢復才會導致系統性能下降,其它時候對系統性能不造成影響。
TWPos系統對內核程序的影響:圖6呈現了TWPos對系統性能的影響,導致系統性能下降的主要原因是訪存過程中建立和查找對應的SMT映射。Fork進程和Exec任務都需要建立棧對象,對棧進行映射處理。Insmod插入模塊對系統性能的影響主要是SMT映射的建立,并做內存備份。file copy(FC)開銷主要是SMT映射函數地址的查找,而實際文件內容訪問(讀寫)并沒有增加系統開銷。Apache主要針對協議棧代碼完整性保護導致系統開銷。TWPos對系統額外開銷很少,主要開銷在于SMT映射。TWPos系統對性能的影響主要是SMT導致的,訪問內容不會降低系統性能。圖6表明了TWPos系統比SecVisor和NICKLE系統性能好,無論系統接口調用、內核模塊加載還是內核程序執行,TWPos都體現出優越的性能,主要由于TWPos摒棄仲裁技術而采用內存映射機制,并且將OMB內存切分多個邏輯塊進行快速恢復。

圖4 SAPM與DRM性能對比

圖5 TWPos和XEN性能對比

圖6 TWPos與XEN、SecVisor和NICKLE內核程序性能對比
本論文基于VMM虛擬技術,呈現TWPos的設計、實現及其TWPos實驗分析,表明了TWPos不僅能夠全面高效自動探測和防護確保內核完整性,同時兼容多操作系統。因此TWPos可以廣泛應用于商業領域。
[1] NGUYEN A Q, YOSHIYASU T. Towards a tamper resistant kernel rootkit detector[C]//Proceedings of the 2007 ACM Symposium on Applied Computing. Seoul, Korea: ACM, 2007.
[2] PETRONI N, FRASER T, MOLINA J, et al. Copilot: a coprocessor-based kernel runtime integrity monitor[C]// Proceedings of the 13th USENIX Security Symposium. San Diego, USA: Springer, 2004.
[3] PETRONI J N L, FRASER T, WALTERS A, et al. An architecture for specification-based detection of semantic integrity violations in kernel dynamic data[C]//Proceedings of the 15th USENIX Security Symposium. Vancouver, Canada: Springer, 2006.
[4] PETRONI J N L, HICKS M. Automated detection of persistent kernel control-flow attacks[C]//Proceedings of the 2007 ACM Conference on Computer and Communications Security. Alexandria, USA: ACM, 2007.
[5] HOFMANN O S, DUNN A M, KIM S, et al. Ensuring operating system kernel integrity with osck[J]. ACM SIGPLAN Notices, 2011, 46(3): 279-290.
[6] SESHADRI A, LUK M, QU Ning, et al. Secvisor: a tiny hypervisor to provide lifetime kernel code integrity for commodity oses[J]. ACM SIGOPS Operating Systems Review, 2007, 41(6): 335-350.
[7] LITTY L, LAGAR-CAVILLA H A, LIE D. Hypervisor support for identifying covertly executing binaries[C]// Proceedings of the 17th USENIX Security Symposium. California, USA: Springer, 2008: 243-258.
[8] RILEY R, JIANG Xu-xian, XU Dong-yan. Guesttransparent prevention of kernel rootkits with vmm-based memory shadowing[C]//the 11th International Symposium on Recent Advances in Intrusion Detection. Cambridge, USA: Springer, 2008.
[9] WANG Zhi, JIANG Xu-xian, CUI Wei-dong, et al. Countering kernel rootkits with light weight hook protection [C]//16th ACM Conference on Computer and Communications Security. New York, USA: ACM, 2009.
[10] Sourceforge site. Lmbench[R/OL]. [2014-03-19]. http:// sourceforge.net/ projects/lmbench/.
[11] LI Jin-ku, WANG Zhi, BLETSCH T, et al. Comprehensive and efficient protection of kernel control data[J]. IEEE Transactions Information Forensics and Security, 2011, 6(4): 1404-1417.
[12] SZEFER J, LEE R B. Architectural support for hypervisor-secure virtualization[J]. ACM SIGARCH Computer Architecture News, 2012, 40(1): 437-450.
[13] WANG Zhi, WU C, GRACE M, et al. Isolating commodity hosted hypervisors with HyperLock[C]//ACM European Conference on Computer Systems. New York, USA: ACM, 2012.
[14] DANIEL P. Berrangé. Virtual machine manager[R/OL]. [2014-03-29]. http://virt-manager.org/.
[15] BALIGA A, GANAPATHY V, IFTODE L. Automatic inference and enforcement of kernel data structure invariants[C]//the 2008 Annual Computer Security Applications Conference. Washington, USA: IEEE, 2008.
[16] Xen Project. Xen[R/OL]. [2014-04-19]. http://www. xen.org/.
[17] OpenWall Organization. Adore-ng[R/OL]. [2014-04-19]. http://stealth. openwall.net/rootkits/.
[18] Fr33project. Enyelkm[R/OL]. [2014-04-19]. http://www. Fr33project. org/pages/projects/enyelkm.htm.
[19] Codeforge webset. Sk2rc2[R/OL]. [2014-04-19]. http:// www.codeforge.com/ s/3/sk2rc2-code.
[20] Superkit international company. Superkit[R/OL]. [2014-04-19]. http://www.superkit.com/.
[21] Open code lib. Mood-nt[R/OL]. [2014-04-19]. http:// darkangel.antifork. org/codes/.
[22] Moodledoc site. Override[R/OL]. [2014-04-19]. http:// docs.moodle.org/23/en/Override_permissions.
[23] Sebek project site. Sebek[R/OL]. [2014-04-19]. https:// projects.honeynet.org/sebek.
編 輯 葉 芳
Protection of Kernel Integrity with Two-Mode Protection Operation System
HE Jin, FAN Ming-yu, and WANG Guang-wei
(School of Computer Science and Engineering, University of Electronic Science and Technology of China Chengdu 611731)
Kernel-level rootkits attacks pose a deadly threat to kernel integrity, and kernel rootkits is currently a research focus, primarily focused on kernel-level rootkits detection and rootkits protection. However, these studies are always flawed: the rootkits protection presents a single protected mode; kernel-level rootkits detection can only do the detection use, even if the kernel has been found to be attacked, there is no method to solve. Give this situation, we design a two-mode protection operation system (TWPos), this is, a kernel-level integrity protection method along with detection and protection capability, even if the kernel is already under attack, TWPos also recoveries kernel integrity. The experiments show that TWPos is a comprehensive and effective protection system without sacrificing system performance for the price, and is compatible with a variety of OS systems.
detection recovery mode; kernel integrity; rootkits; safe authentication protection mode; two-mode protection operation system; virtual machine monitoring
TP309
A
10.3969/j.issn.1001-0548.2015.06.017
2014 ? 05 ? 06;
2014 ? 09 ? 19
國家863項目(2009AA01Z435, 2009AA01Z 403);國家自然科學基金(60373109, 60272091)
何進(1977 ? ),男,博士,主要從事操作系統安全、虛擬技術及云安全等方面的研究.