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