惡意代碼原理、技術(shù)與防范 課件 6-RootKit_第1頁
惡意代碼原理、技術(shù)與防范 課件 6-RootKit_第2頁
惡意代碼原理、技術(shù)與防范 課件 6-RootKit_第3頁
惡意代碼原理、技術(shù)與防范 課件 6-RootKit_第4頁
惡意代碼原理、技術(shù)與防范 課件 6-RootKit_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六章RootKit引言Rootkit是一種以管理員身份訪問計算機或計算機網(wǎng)絡(luò)的程序,其目的在于隱藏自己以及其他軟件不被發(fā)現(xiàn)。運行的權(quán)限級別高、隱蔽性強是攻擊者特別喜愛的主要原因。攻擊者往往利用Rootkit實現(xiàn)啟動、文件、進程、通信等多方面的隱藏。本章將介紹Rootkit的概念、技術(shù)基礎(chǔ)以及應(yīng)用層和內(nèi)核層Rootkit關(guān)鍵技術(shù),以及各類Rootkit隱藏技術(shù)在惡意代碼中的具體應(yīng)用。RootKit概述RootKit關(guān)鍵技術(shù)RootKit的防范與檢測1RootKit概述Rootkit出現(xiàn)于1994年,安全咨詢報告“OngoingNetworkMonitoringAttacks”中首先使用了Rootkit這個名詞。Rootkit利用操作系統(tǒng)的模塊化技術(shù),作為系統(tǒng)內(nèi)核的一部分運行,并且可以使常規(guī)系統(tǒng)分析工具失效,無法捕捉到任何蛛絲馬跡。1.1RootKit的定義Rootkit是一個由root和kit組成的復(fù)合詞。Root是用來描述具有計算機最高權(quán)限的用戶,kit被定義為工具和實現(xiàn)的集合,因此Rootkit是一組能獲得計算機系統(tǒng)root或者管理員權(quán)限對計算機進行訪問的工具。RootKit:一組在惡意軟件中獲得root訪問權(quán)限、完全控制目標(biāo)操作系統(tǒng)和其底層硬件的技術(shù)編碼。1.2RootKit的特性Rootkit技術(shù)設(shè)計之初是用計算機系統(tǒng)的特權(quán)對計算機進行管理,然而卻為攻擊者提供了兩種最有利的幫助:維持對目標(biāo)系統(tǒng)的訪問權(quán)限通過隱身技術(shù)掩蓋攻擊痕跡1.3RootKit的分類根據(jù)駐留的操作系統(tǒng)環(huán)境:UNIXRootkitLinuxRootkitWindowsRootkitAndroidRootkit根據(jù)在系統(tǒng)中運行的位置進行分類:駐留于固件的Bootkit操作系統(tǒng)內(nèi)核的內(nèi)核層Rootkit操作系統(tǒng)應(yīng)用層的應(yīng)用層RootkitRootKit概述RootKit關(guān)鍵技術(shù)RootKit的防范與檢測2

Rootkit關(guān)鍵技術(shù)技術(shù)基礎(chǔ)Windows層次結(jié)構(gòu)層次結(jié)構(gòu)為Rootkit提供了修改接口信息的機會。基礎(chǔ)知識2

Rootkit關(guān)鍵技術(shù)CPU的特權(quán)等級基礎(chǔ)知識Intel

CPU的特權(quán)等級:程序在CPU執(zhí)行時被分配相應(yīng)的Ring權(quán);Ring值高的程序不能直接訪問Ring值低的程序及內(nèi)存空間;某些特權(quán)指令只能在Ring0級執(zhí)行;應(yīng)用層的程序代碼如何應(yīng)訪問內(nèi)核數(shù)據(jù)?

2

Rootkit關(guān)鍵技術(shù)基礎(chǔ)知識2

Rootkit關(guān)鍵技術(shù)12程序執(zhí)行序列EnumProcessNtQuerySystemInformationZwQuerySystemInformation進程內(nèi)核對象Win32APINativeAPISSDT用戶態(tài)核心態(tài)2

Rootkit關(guān)鍵技術(shù)利用掛鉤技術(shù)修改程序的執(zhí)行路徑,從而攔截并修改上下層傳遞的信息。分為應(yīng)用層掛鉤和內(nèi)核層掛鉤。MEP直接修改內(nèi)核對象的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)DKOMIAT

HookInline

HookSSDT

HookIDT

HookIRP

Hook應(yīng)用層掛鉤驅(qū)動層掛鉤2

Rootkit關(guān)鍵技術(shù)(1)MEP技術(shù)利用Windows

Hook,修改程序調(diào)用過程中傳遞的消息;參考文獻:Hook技術(shù)解析(比較全但概要),/developer/article/17685742

Rootkit關(guān)鍵技術(shù)

IATHook原理:通過修改導(dǎo)入表中API函數(shù)的地址改變程序流程。15IAT

Hook2

Rootkit關(guān)鍵技術(shù)16LoadLibraryMain()PE文件中:[924F0]=0x925CA加載到內(nèi)存后:[924F0]=0xaaaaMyLdLibrary1.獲得自已在進程中的地址0xbbbb;2.從[924F0]中找到當(dāng)前LoadLibrary的地址0xaaaa,保存;3.[924F0]的內(nèi)容改為0xbbbb;4.卸載時再將[924F0]改回0xaaaa;用IAT掛鉤LoadLibary2

Rootkit關(guān)鍵技術(shù)17Inline

Hook通過替換導(dǎo)入DLL中API函數(shù)的部分代碼實現(xiàn)函數(shù)劫持。優(yōu)點:全局Hook比IAT

Hook更隱蔽

示例:微軟Detours2

Rootkit關(guān)鍵技術(shù)技術(shù)TargetFunction:pushebpmovebp,esppushebxpushesipushedi…Main:callTargetFunction…TargetFunction:JmpDetourFunctionpushedi

TrampolineFunction:pushebpmovebp,esppushebxpushesijmpTargetFunction+5…DetourFunction:TrampolineFunction

;addyourrootkitcode……Inline

Hook前Inline

Hook后2

Rootkit關(guān)鍵技術(shù)SSDT

Hook通過修改系統(tǒng)服務(wù)描述表(SSDT)地址,使控制權(quán)重定向到Rootkit代碼,再將被修改后的假消息傳回至應(yīng)用程序。192

Rootkit關(guān)鍵技術(shù)typedefstructSystemServiceDescriptorTable{UINT*ServiceTableBase;//addressoftheSSDTUINT*ServiceCounterTableBase;//notusedUINTNumberOfService;//numberofsystemcallsUCHAR*ParameterTableBase;//bytearray}SystemServiceDescriptorTable,*PSystemServiceDescriptorTable;202

Rootkit關(guān)鍵技術(shù)若函數(shù)在SSDT的索引號為x,則:Address=KeServiceDescriptorTable->ServiceTableBase+4*x;21如何獲得ZwFuncName在SSDT中的地址?利用該函數(shù)在SSDT的索引號!2

Rootkit關(guān)鍵技術(shù)22索引號怎么得到?#defineSYSCALL_INDEX(ZwFuncName)(*(PULONG)((PUCHAR)ZwFuncName+1))kd?>unt!ZwSetValueKeyNt!ZwSetValueKey:81a999c8b844010000moveax,144h81a999cd8d542404leaedx,[esp+4]81a999d19c pushfd81a999d26a08 push881a999d4e8a50e0000 callnt!KiSystemService[81a9a87e]2

Rootkit關(guān)鍵技術(shù)根據(jù)前人逆向得到的UndocumentAPI文檔23如何得到ZwFuncName的聲明格式?2

Rootkit關(guān)鍵技術(shù)24例:SSDTHooking實現(xiàn)進程隱藏EnumProcessNtQuerySystemInformationZwQuerySystemInformation進程內(nèi)核對象Win32APINativeAPISSDT用戶態(tài)核心態(tài)25通過掛鉤ZwQuerySystemInformation函數(shù)實現(xiàn)隱藏。NTSYSAPINTSTATUSNTAPIZwQuerySystemInformation(INSYSTEM_INFORMATION_CLASSSystemInformationClass,INOUTPVOIDSystemInformation,INULONGSystemInformationLength,OUTPULONGReturnLengthOPTIONAL);存放信息的數(shù)據(jù)結(jié)構(gòu)查詢信息類型2

Rootkit關(guān)鍵技術(shù)2

Rootkit關(guān)鍵技術(shù)26若SystemInformationClass的值設(shè)置為5,則查詢進程信息,此時SystemInformation對應(yīng)_SYSTEM_PROCESS結(jié)構(gòu)。typedefstruct_SYSTEM_PROCESSES{ULONGNextEntryDelta;ULONGThreadCount;ULONGReserved1[6];LARGE_INTEGERCreateTime;LARGE_INTEGERUserTime;LARGE_INTEGERKernelTime;UNICODE_STRINGProcessName;KPRIORITYBasePriority;ULONGProcessId;ULONGInheritedFromProcessId;ULONGHandleCount;ULONGReserved2[2];VM_COUNTERSVmCounters;IO_COUNTERSIoCounters;//Windows2000onlySYSTEM_THREADSThreads[1];}SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;隱藏方法:在返回的_SYSTEM_PROCES結(jié)構(gòu)鏈表中遍歷,發(fā)現(xiàn)需要隱藏的Rootkit進程,則將其從鏈表中刪除。2

Rootkit關(guān)鍵技術(shù)文件隱藏27FindFirstFileExwNtQueryDirectoryFileZwQueryDirectoryFileIRP_MJ_DIRECTORY_CONTROLIRP_MJ_DIRECTORY_CONTROLIRP_MJ_READIRP_MJ_READAPINativeAPISSDT過濾驅(qū)動過濾驅(qū)動磁盤過濾驅(qū)動磁盤驅(qū)動用戶態(tài)核心態(tài)文件處理核心態(tài)磁盤處理2

Rootkit關(guān)鍵技術(shù)28文件隱藏:修改SSDT的ZwQueryDirectoryFile思路:1.定義鉤子函數(shù)HookZwQueryDirectoryFile,其中返回值和參數(shù)類型與原始函數(shù)相同;2.鉤子函數(shù)調(diào)用原始函數(shù)進行文件查詢。通過遍歷返回的結(jié)果鏈表_FILE_BOTH_DIRCTORY_INFORMATION,檢查是否為隱藏的文件名,若是則將其從鏈表中刪除,達到隱藏的效果。2

Rootkit關(guān)鍵技術(shù)IRP

HookIRP是驅(qū)動程序與驅(qū)動程序之間、應(yīng)用層程序與內(nèi)核層驅(qū)動程序之間通信的一種方式.IRP

Hook在IRP傳遞過程中進行攔截并處理有關(guān)IRP,從而達到修改IRP數(shù)據(jù)消息的目的。(2)DKOM技術(shù)操作系統(tǒng)通過創(chuàng)建相關(guān)內(nèi)核對象來登記和審計系統(tǒng)資源,DKOMRootkit可通過修改這些內(nèi)核對象來隱藏特定資源。DKOMRootkit可直接訪問內(nèi)核存儲器,以相對可靠的方式修改內(nèi)核關(guān)鍵對象,如隱藏進程、為指定令牌增加權(quán)限、隱藏端口等。前提:知道內(nèi)核對象管理結(jié)構(gòu)302

Rootkit關(guān)鍵技術(shù)2

Rootkit關(guān)鍵技術(shù)31例:DKOM隱藏進程Windows系統(tǒng)枚舉進程使用的是活動進程列表PsActiveProcessList,每個結(jié)點對應(yīng)一個進程的EPROCESS數(shù)據(jù)結(jié)構(gòu),所有結(jié)點通過EPROCESS結(jié)構(gòu)中的ActiveProcessLinks雙向指針鏈在一起。要隱藏某個進程,只需修改對應(yīng)EPROCESS的ActiveProcessLinks,將其從鏈表中摘除即可。2

Rootkit關(guān)鍵技術(shù)32摘除前鏈表結(jié)構(gòu)摘除后鏈表結(jié)構(gòu)關(guān)鍵:通過PsGetCurrentProcess函數(shù)能找到當(dāng)前運行進程的指針,從而找到它的EPROCESS。RootKit概述RootKit關(guān)鍵技術(shù)RootKit的防范與檢測3Roo

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論