劉冀卿 程紅林 丁乾 孫典 賈宏志 竇唯



摘要:在推動國民經濟和社會信息化的歷程中,政府,企業及個人越來越多關注的是信息的安全。信息安全的核心是數據的安全,但在實際操作中又很難防止出現數據毀壞或丟失的現象。該系統在充分研究數據恢復原理、內核安全和匯編語言的基礎上,設計實現了在數據未受到破壞前預先對Rootkit為代表的內核級木馬進行內核級別的預先防護和對被新型木馬破壞后的系統進行數據重建的兩大功能。部署該系統后,用戶可以根據自身需要手動進行數據恢復并且能全方位的利用ARK技術監控內核維護系統內核的安全性和完整性實現二次防護。
關鍵詞:信息安全;數據保護;rootkit;內核防護;數據恢復
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2020)09-0007-04
1 背景
隨著現代計算機技術的發展,人們對信息的依賴越來越強,各類信息存儲介質成為人生活工作中不可或缺的組成部分[1]。但每年由于病毒入侵、人員疏忽等原因引起的數據丟失現象卻頻頻發生,存儲于各式信息設備中的數據一旦丟失,會造成難以估計的財產損失。2017年全球爆發了Wannacry勒索病毒事件,該事件波及面廣,影響深大,全球至少150個國家深受其害,應用業務被迫中斷,超過20萬臺以上PC的數據被破壞[2]。面對巨大的信息安全漏洞,數據恢復行業技術因此應運而生[3]。
在安全領域,Rootkit技術發揮著重要作用。Rootkit是惡意軟件用于隱藏自身及其他特定資源和活動的程序集合[4]。在常見的木馬病毒等手段對目標機器的攻擊中,常常采用Rootkit技術隱藏自身的文件、進程等信息達到長期潛伏于目標系統中的目的,以此來對抗目標主機入侵檢測系統的檢測和防護[5]。
鑒于以上兩點,本系統將ARK(anti-rootkit)技術和數據恢復技術結合起來,一方面維護計算機不受Rootkit對計算機數據的竊取和破壞,另一方面在防護不當的情況下仍可以對存儲介質的殘留數據進行有效恢復,實現二次防護。
2 系統設計
2.1 數據恢復模塊
目前數據恢復技術已被廣泛使用,但一般的數據恢復軟件中采用基于文件系統目錄信息的數據恢復方法,即根據FAT文件系統中的FDT、FAT等記錄文件目錄數據進行恢復[6]。根據文獻[7-9]丟失的文件在NTFS文件系統中一般是根據MFT目錄信息來恢復文件,這種方法在磁盤格式化或者其他原因導致文件目錄信息即FDT、MFT完全丟失后將無法進行數據重建。
針對這種情況,本系統使用一種Windows平臺下通用的數據恢復算法。在Windows中各類文件都有一定的數據特征,基于不同文件的文件頭部和文件尾部便能進行數據的重建[10]。基于文件特征的恢復算法思想是對某一選定磁盤的扇區進行深度掃描,匹配所指定文件格式的文件特征頭,如此就找到了一個文件在磁盤上的起始扇區,再次匹配到相應的文件尾部,找到特征文件的結束位置。將文件頭部起始扇區的數據和文件尾部扇區之間的數據進行數據整合,并根據原始文件類型重建數據。只要磁盤上存在此種文件的文件特征,那么對應該種類型的文件都可以在磁盤上被找出。
2.2 數據保護模塊
2.2.1 數據保護模塊設計
數據保護模塊主要由系統鉤子監測模塊,驅動加載監測模塊,進程監控模塊,注冊表監控模塊,啟動項監測模塊,服務項監測模塊六個子模塊構成。
數據保護模塊的架構主要包括應用層3層和內核層。應用層分為用戶交互層、控制層、邏輯層、內核通信層。當程序執行時,用戶交互層接收用戶指令并傳遞給控制層,根據指令,調用相應的業務邏輯。如果下層需要調用內核,則生成相應的請求,調用內核通信層的接口,將請求傳遞給內核模塊,內核模塊根據請求調用分發函數,將執行結果往下層傳遞,最后在用戶交互層顯示用戶界面。
程序啟動后,首先加載驅動程序到內核中,等待應用層程序準備就緒后,應用程序從驅動程序獲取相關基礎信息進行初始化操作,初始化完畢后向用戶展示默認用戶界面。通過鼠標向應用程序傳達監測模塊切換命令,每次切換會向內核的驅動程序發出控制信號。在驅動程序中會調用相關的分發函數,并進行一系列操作。用戶層在獲得內核的執行結果前需要等待,當數據最終返回到應用層程序后,展示對應操作結果的用戶界面。當用戶結束對目的主機的監測后,內核模塊會得到卸載。對應的程序執行流程過程圖如圖1所示。
3 系統實現
3.1 數據恢復模塊
運行數據恢復程序,選定目的主機上的一塊磁盤,勾選要恢復的文件的文件類型。程序可支持圖像類型、音頻類型、文檔類型、聲頻類型等文件類型,或者勾選單個Windows所支持的文件擴展名,點擊右下角的恢復按鈕執行數據恢復工作。如圖2為例演示選定C盤后恢復圖像類型的文件,恢復過程中會同步顯示所匹配文件的文件大小,重建的文件數量等基礎信息。
3.2 驅動加載監測模塊
惡意軟件為了能進一步提升自己的權限,會將自己“注入”到內核中,即工作在應用層的程序通過漏洞越權加載惡意驅動程序到內核的行為。通過加載到內核,使其可以工作在ring0層上,以此獲得高權限來執行特權指令。
本系統考慮到這點,對已加載到內核中的驅動進行了監控。ring3層加載驅動,一般以創建服務的方式進行,其最終則會調用NtLoad Driver函數。通過hook技術掛鉤該函數,每次對該函數有新的調用,就會產生控制信號發往本驅動程序對應的分發例程進行處理。在內核態中獲得數據后會和在ring3層的通信程序進行實時信息交換,最終獲取到的數據展示在用戶界面時的情況如圖3所示。程序可以獲取到所有的驅動程序的驅動名稱、驅動所在基地址、驅動大小(以字節計)等信息。
3.3 進程監測模塊
受運行權限限制,用戶模式下Rootkit通過設置鉤子“鉤住”對應監控進程的函數,并篡改函數執行的結果,如篡改所在磁盤上的映像路徑或者更改自身的進程名,以此偽裝成正常的應用程序達到進程隱藏的目的。
通過讓驅動程序掛鉤NTCreate Process/NTCreate User Pro-cess這兩個進程創建函數,在內核中實時通知驅動程序新進程的創建,并通過使用ring0層的ZwQuerySystemlnformation函數從EPROCESS和KPROCESS中讀取rootkit的真實進程信息,而避免進程對進程信息的惡意篡改。如圖4所示,通過驅動程序可以獲取到所有進程在內核創建時的映像名稱、進程ID、父進程ID、映像路徑和相應的進程地址。部分惡意程序工作在應用層,故很難更改在內核層的進程創建信息,因此通過對比應用層的進程監控軟件和本系統的進程監控模塊的信息可以達到進程防護的效果。
3.4 系統鉤子監測模塊
NT結構下,Native API通過int Ox2e指令或者sysenter指令陷入內核,調用內核中的服務程序,向用戶層提供服。而調用內核層系統服務最為重要的是存放在內核中的一張系統服務描述符表(SSDT和Shadow SSDT)。這兩張表規定了向用戶層提供服務的系統服務入口和服務號。部分內核Rootkit通常對這兩張表進行hook操作,將原本的服務人口地址惡意修改后指向自己可控的服務人口地址.從而改變系統服務例程原始的執行邏輯。通過掛鉤系統服務描述符表,惡意程序可以監控所有來自應用層和部分工作在內核態的程序行為,以此實現進一步的利用和破壞。
系統鉤子監測模塊著重對SSDT和Shadow SSDT這兩張表進行了監控。驅動程序在內核中獲取KeServiceDescriptorTable的地址后,通過解析KeServiceDescriptorTable地址對應的結構體數組的第一項和第二項獲取到所有服務的服務例程名稱,服務例程當前的人口地址和原始的人口地址。通過前后函數地址的對比來有效判斷其服務人口地址是否超出了服務人口最大地址判斷是否有惡意程序在攻擊系統描述符表。對SSDT和Shadow SSDT的監測模塊如圖4和5所示。
3.5 注冊表監測模塊
注冊表在操作系統的重要性不言而喻。注冊表是一個集中管理系統硬件和軟件各項配置的數據庫,其中存放的各種參數,直接控制著Windows操作系統的核心信息[12]。
本模塊用以實時監測注冊表,一旦用戶開啟注冊表監控功能,系統主線程會額外創建一個新線程,專門用于監測對注冊表的操作。Windows內核函數中有專用的注冊表過濾處理函數,驅動程序通過調用CmRegister Callback注冊一個RegisterCallback回調函數,并能通過調用CmUnRegisterCallback來注銷這個回調函數。Register Callback能夠在配置管理器執行操作之前接收注冊表操作的通知請求,也能在操作完成后記錄這些操作。
此外,本模塊通過直接解析HIVE文件樹得到注冊表中的配置信息,防止Rootkit惡意程序提前對注冊表的回調函數進行掛鉤隱藏。本系統通過對HIVE文件中的BIN、CELL逐步解析獲得單個注冊表項從而遞歸解析整個HIVE樹,解析后反饋到界面上注冊表數據如圖7所示。
3.6 啟動項監測模塊
部分破壞性木馬病毒通過將自身的啟動路徑惡意寫入系統自啟動項中達到持久控制的效果,當宿主機一旦啟動便會根據自啟動程序的路徑依次執行各個自啟動項。由于寫入啟動項的方式較多,所以本模塊對啟動項的監控面較廣,具體包括:
1)監測 HKEY_CURRENT_USER\Software\Microsoft\Win-dows\Current Version\Run路徑下面的表項以及HKEY_ LO-CAL MACHINE\SoftwareYMicrosoft\Windows\Current Version\Run下面的注冊表項
2)監測 HKEY_CURRENT_USER\Software\Microsoft\Win-dows\Current Version\Policies\Explorer\Run下面的注冊表項以及監測 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win-dows\Current Version\Policies\Explorer\Run下面的注冊表項
3)對Runonce的監測,具體的注冊表的路徑是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce以及HKEY—LOCAL—MACHINE\Software\Mi-crosoft Windows\Current Version\RunOnce
4)對注冊表中其他位置的注冊表項的監測,具體的注冊表路徑為HKEY_CURRENT_USER\Software\Microsoft\Win-dows\Current Version\Policies\System\Shell
注冊表監測出來的結果通過內核驅動將數據回傳給應用層程序進行界面展示,本軟件對自啟動注冊表項描述的啟動程序路徑進行整合后將操作系統自啟動的程序信息顯示在用戶界面上,對應的示意圖如圖8所示。
3.7 服務監測模塊
通常Rootkit為了提升自己的權限,會將自己注冊為服務程序來獲得對目的主機的持久控制。本模塊在應用層使用EnumServices Status函數來遍歷系統中服務程序,獲取到的服務程序信息如圖9所示。
4 結束語
常規防御手段往往只從系統內核出發進行保護,而一旦防護技術有所漏洞被入侵者繞過,那么防護的關鍵數據就很有可能受到破壞,導致數據泄露或遺失。本系統在盡可能兼顧主流Rootkit之類的惡意軟件的基礎上,又對可能發生的數據被破壞的情形進行處理,最大可能恢復誤刪除、或惡意軟件及木馬篡改的數據。本系統兼容多種操作系統,并為用戶設計實現了一個友好的用戶界面,用戶通過鼠標點擊即可使用不同的監控模塊接口服務實現對自身主機的監控操作,并在用戶防護不當的情況下啟動數據恢復程序對遺失文件進行二次恢復。木馬病毒的編寫者在經濟效益的利誘下,研究使用新型進程隱藏技術,繞過現有防護系統的防護。本系統在與惡意Rootkit的攻防中將與時俱進,研究新型防護方案,實現更為有力強大的防護系統。
參考文獻:
[1]趙蓉英,余波.網絡信息安全研究進展與問題探析[J].現代情報,2018,38(11): 116-122.
[2]方欽.勒索病毒攻擊事件漏洞分析及應對防護策略[J].網絡安全技術與應用.2018(11): 103-104.
[3]胡越喬.計算機數據備份和數據恢復技術分析[J].中國戰略新興產業,2017(48): 91.
[4]梁冰.Windows Rootkit實現及其檢測技術分析[J].電子世界,2013(9): 13-15.
[5]馬松松.Rootkit檢測與反檢測技術的研究與實現[D].西安:西安理工大學,2017.
[6]遲揚,李亞波.FAT32文件系統下的數據恢復分析[Jl.計算機安全,2011(4): 66-68.
[7]陳培德,王麗清,吳建平.NTFS被快速格式化成NTFS后數據恢復的研究[J].計算機技術與發展,2018,28(8): 191-195.
[8]唐文昊,李孟軒,唐文艷,等.NTFS文件系統的數據恢復[Jl.視聽,2018(4): 107-109.
[9]張明旺.基于NTFS文件系統的數據恢復技術[J].福建電腦,2012,28(5): 81-82,86.
[10]胡敏,楊吉云,姜維.Windows下基于文件特征的數據恢復算法[J].計算機應用,201 1,31(2): 527-529.
[11]袁海峰,范曉鶴.基于JPEG文件結構特征碼的數據恢復技術分析與實現[J].蘇州市職業大學學報,2016,27(1): 31-35.
[12]范書平,楊文君.Windows注冊表詳解[Jl.牡丹江師范學院學報:自然科學版,2005(1): 20-21.
【通聯編輯:謝媛媛】
基金項目:江蘇省大學生創新創業訓練項目(項目編號:xcx2019028)
作者簡介:劉冀卿(1999-),男,安徽宿州人,學生,主要研究方向為信息安全;程紅林(1974-),男,副教授,研究方向為信息安全;丁乾(1998-),男,學生,研究方向為信息安全;孫典(1999-),男,學生,研究方向為信息安全;賈宏志(1998-),男,學生,研究方向為信息安全;竇唯(2000-),女,學生,研究方向為信息安全。