《網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程》課件11.3課件_第1頁(yè)
《網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程》課件11.3課件_第2頁(yè)
《網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程》課件11.3課件_第3頁(yè)
《網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程》課件11.3課件_第4頁(yè)
《網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程》課件11.3課件_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三篇網(wǎng)絡(luò)安全理論與技術(shù)實(shí)驗(yàn)篇第十一章操作系統(tǒng)安全編程實(shí)驗(yàn)11.3進(jìn)程線程塊分析及實(shí)踐網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程111.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)要求了解了解EPROCESS、ETHREAD等結(jié)構(gòu),并編程實(shí)現(xiàn)一個(gè)最基本的進(jìn)程隱藏。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程211.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)預(yù)備理論:(1)進(jìn)程和線程進(jìn)程是具有一定獨(dú)立功能的程序,是關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),同時(shí)是進(jìn)程的一個(gè)實(shí)體,是CPU進(jìn)行資源調(diào)度和分派的基本單位,比進(jìn)程更小且能獨(dú)立運(yùn)行。線程本身只擁有一些在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源。一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。相對(duì)進(jìn)程而言,線程是一個(gè)更加接近于執(zhí)行體的概念,它可以與同進(jìn)程中的其他線程共享數(shù)據(jù),但擁有自己的??臻g,擁有獨(dú)立的執(zhí)行序列。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程311.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)預(yù)備理論:(2)線程模型和調(diào)度算法線程有兩種模型,即用戶級(jí)線程和內(nèi)核級(jí)線程。用戶級(jí)線程模型的優(yōu)勢(shì)是線程切換效率高,因?yàn)椴簧婕皟?nèi)核模式和用戶模式之間的切換,并且應(yīng)用程序可以采用合適自己特點(diǎn)的線程選擇算法。內(nèi)核級(jí)線程有可能應(yīng)用各種算法來分配處理器時(shí)間,線程可以有優(yōu)先級(jí),高優(yōu)先級(jí)的線程被優(yōu)先執(zhí)行。系統(tǒng)維護(hù)一個(gè)全局線程表,系統(tǒng)在適當(dāng)?shù)臅r(shí)候掛起一個(gè)正在執(zhí)行的線程,線程狀態(tài)有多種可能:sleep、wait/select、硬中斷或異常、線程終止。內(nèi)核級(jí)線程的好處是,無需考慮自己霸占處理器而導(dǎo)致其他線程得不到處理器時(shí)間。代價(jià)是所有線程切換都將在內(nèi)核模式下完成的。對(duì)于在用戶模式下運(yùn)行的線程來說,一個(gè)線程被切換出去,下次再切換回來,需要從用戶模式到內(nèi)核模式,再?gòu)膬?nèi)核模式切換回用戶模式。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程411.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)預(yù)備理論:(3)線程調(diào)度算法線程調(diào)度算法可以分為非搶占式和搶占式。搶占式通過一個(gè)時(shí)鐘中斷來獲得對(duì)處理器的控制權(quán)。有三種典型的線程調(diào)度算法:先到先服務(wù)算法,時(shí)間片輪轉(zhuǎn)算法,優(yōu)先級(jí)調(diào)度算法。Windows的調(diào)度算法是一個(gè)搶占式的、支持多處理器的優(yōu)先級(jí)調(diào)度算法,每個(gè)處理器定義了一個(gè)鏈表數(shù)組,相同優(yōu)先級(jí)的線程掛在同一個(gè)鏈表中,不同優(yōu)先級(jí)的線程分別屬于不同的鏈表。當(dāng)一個(gè)線程滿足條件時(shí),它首先被掛到當(dāng)前處理器的一個(gè)待分配的鏈表,調(diào)度器在適當(dāng)?shù)臅r(shí)候會(huì)把待分配的鏈表上的線程分配到了某個(gè)處理器的對(duì)應(yīng)優(yōu)先級(jí)的線程鏈表中。進(jìn)程和線程的實(shí)現(xiàn)非常復(fù)雜,具體原理大家可以參看《Windows內(nèi)核原理與實(shí)現(xiàn)》等書籍。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程511.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)預(yù)備理論:(4)DKOM進(jìn)程隱藏

當(dāng)服務(wù)控制管理器(SCM)加載一個(gè)驅(qū)動(dòng)的時(shí)候,就會(huì)生成一個(gè)DRIVER_OBJECT結(jié)構(gòu)的對(duì)象;其中的DriverSection中保存著一個(gè)指向KLDR_DATA_TABLE_ENTRY結(jié)構(gòu)體的指針,這個(gè)結(jié)構(gòu)體被用來保存驅(qū)動(dòng)模塊的一些信息。這個(gè)結(jié)構(gòu)體中的第一個(gè)成員InLoadOrderLinks是一個(gè)LIST_ENTRY的結(jié)構(gòu),這使得每個(gè)驅(qū)動(dòng)模塊被串在了一個(gè)雙向鏈表中,我們只要遍歷這條雙向鏈就能枚舉出所有的驅(qū)動(dòng)模塊;其中域DllBase是驅(qū)動(dòng)模塊的加載基地址,F(xiàn)ullDllName是驅(qū)動(dòng)模塊的完整路徑,BaseDllName是驅(qū)動(dòng)模塊的名稱。因此,如果我們要隱藏某個(gè)驅(qū)動(dòng),只需將我們要隱藏的驅(qū)動(dòng)名跟鏈表中的每個(gè)節(jié)點(diǎn)的驅(qū)動(dòng)名比較,一旦找到我們要隱藏的驅(qū)動(dòng),則修改它的InLoadOrderLinks域的Flink和Blink的指針即可,這即稱為DKOM(DirectKernelObjectManipulation)進(jìn)程隱藏。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程611.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)首先通過WinDbg工具,查看Windows微內(nèi)核層的進(jìn)程和線程對(duì)象(EPROCESS,ETHREAD,KPROCESS,KTHREAD)以及其他一些結(jié)構(gòu),如PEB等;接著利用所學(xué)知識(shí)實(shí)現(xiàn)一個(gè)基本的DKOM(DirectKernelObjectManipulation)進(jìn)程隱藏。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程711.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)要點(diǎn)說明:(實(shí)驗(yàn)難點(diǎn)說明)查看進(jìn)程和線程對(duì)象編程實(shí)現(xiàn)進(jìn)程隱藏網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程811.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)準(zhǔn)備:(實(shí)驗(yàn)環(huán)境,實(shí)驗(yàn)先有知識(shí)技術(shù)說明)Host機(jī):裝有WDKVersion7.1.0的Win7x64位操作系統(tǒng)(或裝有WDKVersion10.0.14393.0的Win10x64位操作系統(tǒng))WinDbg6.12.0002.633網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程911.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)準(zhǔn)備:(實(shí)驗(yàn)環(huán)境,實(shí)驗(yàn)先有知識(shí)技術(shù)說明)虛擬機(jī):裝有WDKVersion7600.16385.1的Windows7x64操作系統(tǒng)DriverMonitorVersion3.2.0DbgViewVersion4.76driversignatureenforcementoverriderVersion1.3b

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1011.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)通過WinDbg工具,查看Windows微內(nèi)核層的進(jìn)程和線程對(duì)象(KPROCESS,KTHREAD,EPROCESS,ETHREAD)以及其他一些結(jié)構(gòu)如PEB等等。

(1)EPROCESS結(jié)構(gòu)在雙機(jī)調(diào)試過程中,可以在WinDbg的命令行中輸入dt_EPROCESS命令來查看EPROCESS結(jié)構(gòu),如圖11-3-1所示。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1111.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

EPROCESS具體結(jié)構(gòu)如下:

kd>dtnt!_EPROCESS+0x000Pcb:_KPROCESS+0x160ProcessLock:_EX_PUSH_LOCK+0x168CreateTime:_LARGE_INTEGER+0x170ExitTime:_LARGE_INTEGER+0x178RundownProtect:_EX_RUNDOWN_REF

+0x180UniqueProcessId:Ptr64Void//進(jìn)程的唯一編號(hào)

+0x188ActiveProcessLinks:_LIST_ENTRY+0x198ProcessQuotaUsage:[2]Uint8B//內(nèi)存使用量

+0x1a8ProcessQuotaPeak:[2]Uint8B//尖峰使用量

+0x1b8CommitCharge:Uint8B+0x1c0QuotaBlock:Ptr64_EPROCESS_QUOTA_BLOCK+0x1c8CpuQuotaBlock:Ptr64_PS_CPU_QUOTA_BLOCK+0x1d0PeakVirtualSize:Uint8B+0x1d8VirtualSize:Uint8B

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1211.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x1e0SessionProcessLinks:_LIST_ENTRY+0x1f0DebugPort:Ptr64Void+0x1f8ExceptionPortData:Ptr64Void+0x1f8ExceptionPortValue:Uint8B+0x1f8ExceptionPortState:Pos0,3Bits+0x200ObjectTable:Ptr64_HANDLE_TABLE+0x208Token:_EX_FAST_REF+0x210WorkingSetPage:Uint8B+0x218AddressCreationLock:_EX_PUSH_LOCK+0x220RotateInProgress:Ptr64_ETHREAD+0x228ForkInProgress:Ptr64_ETHREAD+0x230HardwareTrigger:Uint8B+0x238PhysicalVadRoot:Ptr64_MM_AVL_TABLE+0x240CloneRoot:Ptr64Void+0x248NumberOfPrivatePages:Uint8B+0x250NumberOfLockedPages:Uint8B網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1311.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x258Win32Process:Ptr64Void+0x260Job:Ptr64_EJOB+0x268SectionObject:Ptr64Void+0x270SectionBaseAddress:Ptr64Void+0x278Cookie:Uint4B+0x27cUmsScheduledThreads:Uint4B+0x280WorkingSetWatch:Ptr64_PAGEFAULT_HISTORY+0x288Win32WindowStation:Ptr64Void+0x290InheritedFromUniqueProcessId:Ptr64Void+0x298LdtInformation:Ptr64Void+0x2a0Spare:Ptr64Void+0x2a8ConsoleHostProcess:Uint8B+0x2b0DeviceMap:Ptr64Void+0x2b8EtwDataSource:Ptr64Void

+0x2c0FreeTebHint:Ptr64Void+0x2c8FreeUmsTebHint:Ptr64Void網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1411.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x2d0PageDirectoryPte:_HARDWARE_PTE+0x2d0Filler:Uint8B+0x2d8Session:Ptr64Void+0x2e0ImageFileName:[15]UChar+0x2efPriorityClass:UChar+0x2f0JobLinks:_LIST_ENTRY+0x300LockedPagesList:Ptr64Void

+0x308ThreadListHead:_LIST_ENTRY+0x318SecurityPort:Ptr64Void+0x320Wow64Process:Ptr64Void+0x328ActiveThreads:Uint4B+0x32cImagePathHash:Uint4B+0x330DefaultHardErrorProcessing:Uint4B+0x334LastThreadExitStatus:Int4B+0x338Peb:Ptr64_PEB

+0x340PrefetchTrace:_EX_FAST_REF網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1511.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x348ReadOperationCount:_LARGE_INTEGER+0x350WriteOperationCount:_LARGE_INTEGER+0x358OtherOperationCount:_LARGE_INTEGER+0x360ReadTransferCount:_LARGE_INTEGER+0x368WriteTransferCount:_LARGE_INTEGER+0x370OtherTransferCount:_LARGE_INTEGER+0x378CommitChargeLimit:Uint8B+0x380CommitChargePeak:Uint8B+0x388AweInfo:Ptr64Void+0x390SeAuditProcessCreationInfo:_SE_AUDIT_PROCESS_CREATION_INFO+0x398Vm:_MMSUPPORT+0x420MmProcessLinks:_LIST_ENTRY+0x430HighestUserAddress:Ptr64Void+0x438ModifiedPageCount:Uint4B+0x43cFlags2:Uint4B+0x43cJobNotReallyActive:Pos0,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1611.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x43cAccountingFolded:Pos1,1Bit+0x43cNewProcessReported:Pos2,1Bit+0x43cExitProcessReported:Pos3,1Bit+0x43cReportCommitChanges:Pos4,1Bit+0x43cLastReportMemory:Pos5,1Bit+0x43cReportPhysicalPageChanges:Pos6,1Bit+0x43cHandleTableRundown:Pos7,1Bit+0x43cNeedsHandleRundown:Pos8,1Bit+0x43cRefTraceEnabled:Pos9,1Bit+0x43cNumaAware:Pos10,1Bit+0x43cProtectedProcess:Pos11,1Bit+0x43cDefaultPagePriority:Pos12,3Bits+0x43cPrimaryTokenFrozen:Pos15,1Bit+0x43cProcessVerifierTarget:Pos16,1Bit+0x43cStackRandomizationDisabled:Pos17,1Bit+0x43cAffinityPermanent:Pos18,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1711.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x43cAffinityUpdateEnable:Pos19,1Bit+0x43cPropagateNode:Pos20,1Bit+0x43cExplicitAffinity:Pos21,1Bit+0x440Flags:Uint4B+0x440CreateReported:Pos0,1Bit+0x440NoDebugInherit:Pos1,1Bit+0x440ProcessExiting:Pos2,1Bit+0x440ProcessDelete:Pos3,1Bit+0x440Wow64SplitPages:Pos4,1Bit+0x440VmDeleted:Pos5,1Bit+0x440OutswapEnabled:Pos6,1Bit+0x440Outswapped:Pos7,1Bit+0x440ForkFailed:Pos8,1Bit+0x440Wow64VaSpace4Gb:Pos9,1Bit+0x440AddressSpaceInitialized:Pos10,2Bits+0x440SetTimerResolution:Pos12,1Bit

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1811.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x440BreakOnTermination:Pos13,1Bit+0x440DeprioritizeViews:Pos14,1Bit+0x440WriteWatch:Pos15,1Bit+0x440ProcessInSession:Pos16,1Bit+0x440OverrideAddressSpace:Pos17,1Bit+0x440HasAddressSpace:Pos18,1Bit+0x440LaunchPrefetched:Pos19,1Bit+0x440InjectInpageErrors:Pos20,1Bit+0x440VmTopDown:Pos21,1Bit+0x440ImageNotifyDone:Pos22,1Bit+0x440PdeUpdateNeeded:Pos23,1Bit+0x440VdmAllowed:Pos24,1Bit+0x440CrossSessionCreate:Pos25,1Bit+0x440ProcessInserted:Pos26,1Bit

+0x440DefaultIoPriority:Pos27,3Bits+0x440ProcessSelfDelete:Pos30,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程1911.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x440SetTimerResolutionLink:Pos31,1Bit+0x444ExitStatus:Int4B+0x448VadRoot:_MM_AVL_TABLE+0x488AlpcContext:_ALPC_PROCESS_CONTEXT+0x4a8TimerResolutionLink:_LIST_ENTRY+0x4b8RequestedTimerResolution:Uint4B+0x4bcActiveThreadsHighWatermark:Uint4B+0x4c0SmallestTimerResolution:Uint4B+0x4c8TimerResolutionStackRecord:Ptr64_PO_DIAG_STACK_RECORD網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2011.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

執(zhí)行體層位于內(nèi)核層之上,側(cè)重于提供各種管理策略,同時(shí)為上層應(yīng)用程序提供基本的功能接口。執(zhí)行體層進(jìn)程對(duì)象的數(shù)據(jù)結(jié)構(gòu)EPROCESS的重要組成部分如下:·Pcb是EPROCESS中第一個(gè)成員KPROCESS,KPROCESS是微內(nèi)核的進(jìn)程結(jié)構(gòu),側(cè)重于進(jìn)程的基本資源信息。其中又有許多結(jié)構(gòu),例如鎖,線程鏈表等用來表征一個(gè)進(jìn)程的數(shù)據(jù)結(jié)構(gòu)。同時(shí)它也能通過LIST_ENTRY相互串聯(lián)成一個(gè)雙向鏈表?!niqueProcessId域是進(jìn)程的唯一編號(hào),在進(jìn)程創(chuàng)建時(shí)設(shè)定?!ctiveProcessLinks域是一個(gè)雙鏈表節(jié)點(diǎn),表頭是一個(gè)全局變量PsActiveProcessHead?!rocessQuotaUsage和ProcessQuotaPeak是指一個(gè)進(jìn)程的內(nèi)存使用量和尖峰使用量。應(yīng)用層上的一些相關(guān)進(jìn)程函數(shù)會(huì)在工作時(shí)讀取它們。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2111.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)·SessionProcessLinks域是一個(gè)雙鏈表節(jié)點(diǎn),當(dāng)進(jìn)程加入系統(tǒng)的一個(gè)會(huì)話時(shí),這個(gè)域?qū)⒆鳛橐粋€(gè)節(jié)點(diǎn)加入到該會(huì)話的進(jìn)程鏈表?!bjectTable域是進(jìn)程的句柄表,句柄是一個(gè)抽象概念,代表了進(jìn)程已打開的一個(gè)對(duì)象。Windows的進(jìn)程句柄表有層次結(jié)構(gòu)。例如,對(duì)某進(jìn)程執(zhí)行一次NtOpenProcess讀句柄,在進(jìn)程句柄表上的相關(guān)計(jì)數(shù)就要加一?!oken域是指該進(jìn)程的訪問令牌,用于該進(jìn)程的安全訪問檢查?!dtInformation負(fù)責(zé)維護(hù)一個(gè)進(jìn)程的LDT信息?!hreadListHead包含該進(jìn)程中的所有線程。在EPROCESS中包含的是ETHREAD中的ThreadListEntry節(jié)點(diǎn)而在KPROCESS中包含的是KTHREAD中的ThreadListEntry網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2211.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)·SecurityPort與lsass進(jìn)程之間的跨通信端口·SeAuditProcessCreationInfo包含創(chuàng)建進(jìn)程時(shí)指定的進(jìn)程映像全路徑名,ImageFileName實(shí)質(zhì)上是從這里提取出來的(ImageFileName有效長(zhǎng)度只有15-1)·Flags表示該進(jìn)程當(dāng)前的狀態(tài)。如果Flags=0,則NtOpenProcess會(huì)失敗·Peb:Ptr64_PEBPEB是一個(gè)非常重要的結(jié)構(gòu)。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2311.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)(2)KPROCESS結(jié)構(gòu)在雙機(jī)調(diào)試過程中,可以在WinDbg的命令行中輸入dt_KPROCESS命令來查看KPROCESS結(jié)構(gòu),如圖11-3-2所示。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2411.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)KPROCESS的具體結(jié)構(gòu)如下:

kd>dtnt!_KPROCESS+0x000Header:_DISPATCHER_HEADER+0x018ProfileListHead:_LIST_ENTRY+0x028DirectoryTableBase:Uint8B+0x030ThreadListHead:_LIST_ENTRY+0x040ProcessLock:Uint8B+0x048Affinity:_KAFFINITY_EX

+0x070ReadyListHead:_LIST_ENTRY//記錄就緒但尚未被加入就緒鏈表的線程,指向KTHREAD對(duì)象WaitListEntry域

+0x080SwapListEntry:_SINGLE_LIST_ENTRY

+0x088ActiveProcessors:_KAFFINITY_EX//記錄當(dāng)前進(jìn)程運(yùn)行在哪些處理器上

+0x0b0AutoAlignment:Pos0,1Bit+0x0b0DisableBoost:Pos1,1Bit+0x0b0DisableQuantum:Pos2,1Bit

+0x0b0ActiveGroupsMask:Pos3,4Bits網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2511.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x0b0ReservedFlags:Pos7,25Bits+0x0b0ProcessFlags:Int4B+0x0b4BasePriority:Char+0x0b5QuantumReset:Char+0x0b6Visited:UChar+0x0b7Unused3:UChar+0x0b8ThreadSeed:[4]Uint4B+0x0c8IdealNode:[4]Uint2B+0x0d0IdealGlobalNode:Uint2B+0x0d2Flags:_KEXECUTE_OPTIONS+0x0d3Unused1:UChar+0x0d4Unused2:Uint4B+0x0d8Unused4:Uint4B+0x0dcStackCount:_KSTACK_COUNT

+0x0e0ProcessListEntry:_LIST_ENTRY+0x0f0CycleTime:Uint8B+0x0f8KernelTime:Uint4B

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2611.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x0fcUserTime:Uint4B+0x100InstrumentationCallback:Ptr64Void+0x108LdtSystemDescriptor:_KGDTENTRY64+0x118LdtBaseAddress:Ptr64Void+0x120LdtProcessLock:_KGUARDED_MUTEX+0x158LdtFreeSelectorHint:Uint2B+0x15aLdtTableLength:Uint2B我們看到,每個(gè)KPROCESS都代表一個(gè)進(jìn)程。KPROCESS對(duì)象中記錄的信息主要包括兩類:一類跟進(jìn)程的內(nèi)存環(huán)境相關(guān),比如頁(yè)目錄表,交換狀態(tài)。另一類是與其線程相關(guān)的一些屬性,比如線程列表以及線程所需要的優(yōu)先級(jí)、時(shí)限設(shè)置。ActiveProcessors記錄下了當(dāng)前進(jìn)程正在哪些處理器上運(yùn)行。+0x070ReadyListHead:_LIST_ENTRY代表了雙向鏈表的表頭,該鏈表記錄了這個(gè)進(jìn)程中處于就緒狀態(tài)但尚未被加入全局就緒鏈表的線程。該鏈表每一項(xiàng)都是一個(gè)指向KTHREAD對(duì)象WaitListEntry域的地址。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2711.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)(3)ETHREAD結(jié)構(gòu)在雙機(jī)調(diào)試過程中,可以在WinDbg的命令行中輸入dt_ETHREAD命令來查看ETHREAD結(jié)構(gòu),如圖11-3-3所示。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2811.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)ETHREAD的具體結(jié)構(gòu)如下:kd>dtnt!_ETHREAD+0x000Tcb:_KTHREAD+0x360CreateTime:_LARGE_INTEGER+0x368ExitTime:_LARGE_INTEGER+0x368KeyedWaitChain:_LIST_ENTRY+0x378ExitStatus:Int4B+0x380PostBlockList:_LIST_ENTRY+0x380ForwardLinkShadow:Ptr64Void+0x388StartAddress:Ptr64Void+0x390TerminationPort:Ptr64_TERMINATION_PORT+0x390ReaperLink:Ptr64_ETHREAD+0x390KeyedWaitValue:Ptr64Void+0x398ActiveTimerListLock:Uint8B+0x3a0ActiveTimerListHead:_LIST_ENTRY+0x3b0Cid:_CLIENT_ID

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2911.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x3c0KeyedWaitSemaphore:_KSEMAPHORE+0x3c0AlpcWaitSemaphore:_KSEMAPHORE+0x3e0ClientSecurity:_PS_CLIENT_SECURITY_CONTEXT+0x3e8IrpList:_LIST_ENTRY+0x3f8TopLevelIrp:Uint8B+0x400DeviceToVerify:Ptr64_DEVICE_OBJECT+0x408CpuQuotaApc:Ptr64_PSP_CPU_QUOTA_APC+0x410Win32StartAddress:Ptr64Void+0x418LegacyPowerObject:Ptr64Void+0x420ThreadListEntry:_LIST_ENTRY+0x430RundownProtect:_EX_RUNDOWN_REF+0x438ThreadLock:_EX_PUSH_LOCK+0x440ReadClusterSize:Uint4B+0x444MmLockOrdering:Int4B+0x448CrossThreadFlags:Uint4B+0x448Terminated:Pos0,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3011.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x448ThreadInserted:Pos1,1Bit+0x448HideFromDebugger:Pos2,1Bit+0x448ActiveImpersonationInfo:Pos3,1Bit+0x448SystemThread:Pos4,1Bit+0x448HardErrorsAreDisabled:Pos5,1Bit+0x448BreakOnTermination:Pos6,1Bit+0x448SkipCreationMsg:Pos7,1Bit+0x448SkipTerminationMsg:Pos8,1Bit+0x448CopyTokenOnOpen:Pos9,1Bit+0x448ThreadIoPriority:Pos10,3Bits+0x448ThreadPagePriority:Pos13,3Bits+0x448RundownFail:Pos16,1Bit+0x448NeedsWorkingSetAging:Pos17,1Bit+0x44cSameThreadPassiveFlags:Uint4B+0x44cActiveExWorker:Pos0,1Bit+0x44cExWorkerCanWaitUser:Pos1,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3111.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x44cMemoryMaker:Pos2,1Bit+0x44cClonedThread:Pos3,1Bit+0x44cKeyedEventInUse:Pos4,1Bit+0x44cRateApcState:Pos5,2Bits+0x44cSelfTerminate:Pos7,1Bit+0x450SameThreadApcFlags:Uint4B+0x450Spare:Pos0,1Bit+0x450StartAddressInvalid:Pos1,1Bit+0x450EtwPageFaultCalloutActive:Pos2,1Bit+0x450OwnsProcessWorkingSetExclusive:Pos3,1Bit+0x450OwnsProcessWorkingSetShared:Pos4,1Bit+0x450OwnsSystemCacheWorkingSetExclusive:Pos5,1Bit+0x450OwnsSystemCacheWorkingSetShared:Pos6,1Bit+0x450OwnsSessionWorkingSetExclusive:Pos7,1Bit+0x451OwnsSessionWorkingSetShared:Pos0,1Bit+0x451OwnsProcessAddressSpaceExclusive:Pos1,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3211.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x451OwnsProcessAddressSpaceShared:Pos2,1Bit+0x451SuppressSymbolLoad:Pos3,1Bit+0x451Prefetching:Pos4,1Bit+0x451OwnsDynamicMemoryShared:Pos5,1Bit+0x451OwnsChangeControlAreaExclusive:Pos6,1Bit+0x451OwnsChangeControlAreaShared:Pos7,1Bit+0x452OwnsPagedPoolWorkingSetExclusive:Pos0,1Bit+0x452OwnsPagedPoolWorkingSetShared:Pos1,1Bit+0x452OwnsSystemPtesWorkingSetExclusive:Pos2,1Bit+0x452OwnsSystemPtesWorkingSetShared:Pos3,1Bit+0x452TrimTrigger:Pos4,2Bits+0x452Spare1:Pos6,2Bits+0x453PriorityRegionActive:UChar+0x454CacheManagerActive:Uchar+0x455DisablePageFaultClustering:UChar+0x456ActiveFaultCount:UChar+0x457LockOrderState:UChar網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3311.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)+0x458AlpcMessageId:Uint8B+0x460AlpcMessage:Ptr64Void+0x460AlpcReceiveAttributeSet:Uint4B+0x468AlpcWaitListEntry:_LIST_ENTRY+0x478CacheManagerCount:Uint4B+0x47cIoBoostCount:Uint4B+0x480IrpListLock:Uint8B+0x488ReservedForSynchTracking:Ptr64Void+0x490CmCallbackListHead:_SINGLE_LIST_ENTRY

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3411.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)Executivethreadblock(ETHREAD)應(yīng)用在executive層,Kernelthreadblock(KTHREAD)應(yīng)用在kernel層,它們都是在系統(tǒng)空間里,實(shí)際上KTHREAD結(jié)構(gòu)是ETHREAD結(jié)構(gòu)的一個(gè)子結(jié)構(gòu)。上述結(jié)構(gòu)中LARGE_INTEGERCreateTime包含了線程的創(chuàng)建時(shí)間,它是在線程創(chuàng)建時(shí)被賦值的。LARGE_INTEGERExitTime則包含了線程的退出時(shí)間,它是在線程退出函數(shù)中被賦值的。任務(wù)管理器中之所以能觀察到性能參數(shù),計(jì)劃任務(wù)的運(yùn)行以及線程的饑餓算法的調(diào)度,很大程度上是因?yàn)樵诰€程和進(jìn)程的數(shù)據(jù)結(jié)構(gòu)中保存了大量類似這些的基礎(chǔ)參數(shù)。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3511.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)(4)KTHREAD結(jié)構(gòu)在雙機(jī)調(diào)試過程中,可以在WinDbg的命令行中輸入dt_KTHREAD命令來查看KTHREAD結(jié)構(gòu),如圖11-3-4所示。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3611.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)ETHREAD的具體結(jié)構(gòu)如下:kd>dtnt!_KTHREAD+0x000Header:_DISPATCHER_HEADER+0x018CycleTime:Uint8B+0x020QuantumTarget:Uint8B+0x028InitialStack:Ptr64Void+0x030StackLimit:Ptr64Void+0x038KernelStack:Ptr64Void+0x040ThreadLock:Uint8B+0x048WaitRegister:_KWAIT_STATUS_REGISTER+0x049Running:UChar+0x04aAlerted:[2]UChar+0x04cKernelStackResident:Pos0,1Bit+0x04cReadyTransition:Pos1,1Bit+0x04cProcessReadyQueue:Pos2,1Bit網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3711.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x04cWaitNext:Pos3,1Bit+0x04cSystemAffinityActive:Pos4,1Bit+0x04cAlertable:Pos5,1Bit+0x04cGdiFlushActive:Pos6,1Bit+0x04cUserStackWalkActive:Pos7,1Bit+0x04cApcInterruptRequest:Pos8,1Bit+0x04cForceDeferSchedule:Pos9,1Bit+0x04cQuantumEndMigrate:Pos10,1Bit+0x04cUmsDirectedSwitchEnable:Pos11,1Bit+0x04cTimerActive:Pos12,1Bit+0x04cSystemThread:Pos13,1Bit+0x04cReserved:Pos14,18Bits+0x04cMiscFlags:Int4B+0x050ApcState:_KAPC_STATE+0x050ApcStateFill:[43]UChar+0x07bPriority:Char網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3811.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x07cNextProcessor:Uint4B+0x080DeferredProcessor:Uint4B+0x088ApcQueueLock:Uint8B+0x090WaitStatus:Int8B+0x098WaitBlockList:Ptr64_KWAIT_BLOCK+0x0a0WaitListEntry:_LIST_ENTRY+0x0a0SwapListEntry:_SINGLE_LIST_ENTRY+0x0b0Queue:Ptr64_KQUEUE

+0x0b8Teb:Ptr64Void//指向進(jìn)程空間中線程環(huán)境塊結(jié)構(gòu)

+0x0c0Timer:_KTIMER+0x100AutoAlignment:Pos0,1Bit+0x100DisableBoost:Pos1,1Bit+0x100EtwStackTraceApc1Inserted:Pos2,1Bit+0x100EtwStackTraceApc2Inserted:Pos3,1Bit+0x100CalloutActive:Pos4,1Bit

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程3911.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x100ApcQueueable:Pos5,1Bit+0x100EnableStackSwap:Pos6,1Bit+0x100GuiThread:Pos7,1Bit+0x100UmsPerformingSyscall:Pos8,1Bit+0x100VdmSafe:Pos9,1Bit+0x100UmsDispatched:Pos10,1Bit+0x100ReservedFlags:Pos11,21Bits+0x100ThreadFlags:Int4B+0x104Spare0:Uint4B+0x108WaitBlock:[4]_KWAIT_BLOCK+0x108WaitBlockFill4:[44]UChar+0x134ContextSwitches:Uint4B+0x108WaitBlockFill5:[92]UChar+0x164State:UChar+0x165NpxState:Char+0x166WaitIrql:UChar

網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4011.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x167WaitMode:Char+0x108WaitBlockFill6:[140]UChar+0x194WaitTime:Uint4B+0x108WaitBlockFill7:[168]UChar+0x1b0TebMappedLowVa:Ptr64Void+0x1b8Ucb:Ptr64_UMS_CONTROL_BLOCK+0x108WaitBlockFill8:[188]UChar+0x1c4KernelApcDisable:Int2B+0x1c6SpecialApcDisable:Int2B+0x1c4CombinedApcDisable:Uint4B+0x1c8QueueListEntry:_LIST_ENTRY

+0x1d8TrapFrame:Ptr64_KTRAP_FRAME//表示當(dāng)一個(gè)線程離開運(yùn)行狀態(tài)時(shí),其當(dāng)前的執(zhí)行狀態(tài)

+0x1e0FirstArgument:Ptr64Void+0x1e8CallbackStack:Ptr64Void+0x1e8CallbackDepth:Uint8B+0x1f0ApcStateIndex:UChar網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4111.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x1f1BasePriority:Char+0x1f2PriorityDecrement:Char+0x1f2ForegroundBoost:Pos0,4Bits+0x1f2UnusualBoost:Pos4,4Bits+0x1f3Preempted:UChar+0x1f4AdjustReason:UChar+0x1f5AdjustIncrement:Char+0x1f6PreviousMode:Char+0x1f7Saturation:Char+0x1f8SystemCallNumber:Uint4B+0x1fcFreezeCount:Uint4B+0x200UserAffinity:_GROUP_AFFINITY+0x210Process:Ptr64_KPROCESS+0x218Affinity:_GROUP_AFFINITY

+0x228IdealProcessor:Uint4B+0x22cUserIdealProcessor:Uint4B網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4211.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x230ApcStatePointer:[2]Ptr64_KAPC_STATE+0x240SavedApcState:_KAPC_STATE+0x240SavedApcStateFill:[43]UChar+0x26bWaitReason:UChar+0x26cSuspendCount:Char+0x26dSpare1:Char+0x26eCodePatchInProgress:UChar+0x270Win32Thread:Ptr64Void+0x278StackBase:Ptr64Void+0x280SuspendApc:_KAPC+0x280SuspendApcFill0:[1]UChar+0x281ResourceIndex:UChar+0x280SuspendApcFill1:[3]UChar+0x283QuantumReset:UChar+0x280SuspendApcFill2:[4]UChar+0x284KernelTime:Uint4B網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4311.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x280SuspendApcFill3:[64]UChar+0x2c0WaitPrcb:Ptr64_KPRCB+0x280SuspendApcFill4:[72]UChar+0x2c8LegoData:Ptr64Void+0x280SuspendApcFill5:[83]UChar+0x2d3LargeStack:UChar+0x2d4UserTime:Uint4B+0x2d8SuspendSemaphore:_KSEMAPHORE+0x2d8SuspendSemaphorefill:[28]UChar+0x2f4SListFaultCount:Uint4B+0x2f8ThreadListEntry:_LIST_ENTRY+0x308MutantListHead:_LIST_ENTRY+0x318SListFaultAddress:Ptr64Void+0x320ReadOperationCount:Int8B+0x328WriteOperationCount:Int8B+0x330OtherOperationCount:Int8B網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4411.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)

+0x338ReadTransferCount:Int8B+0x340WriteTransferCount:Int8B+0x348OtherTransferCount:Int8B+0x350ThreadCounters:Ptr64_KTHREAD_COUNTERS+0x358XStateSave:Ptr64_XSTATE_SAVE在KTHREAD中,我們看到Teb域,+0x0b8Teb:Ptr64Void,TEB指向進(jìn)程空間中的一個(gè)TEB(線程環(huán)境塊結(jié)構(gòu))。TrapFrame域是最重要的部分,它表示當(dāng)一個(gè)線程離開運(yùn)行狀態(tài)時(shí),其當(dāng)前的執(zhí)行狀態(tài),比如現(xiàn)在的指令RIP在哪里,各個(gè)寄存器中的值是什么,都必須保留下來,以便下次再輪到這個(gè)線程運(yùn)行時(shí),可以恢復(fù)原來的執(zhí)行狀態(tài)。TrapFrame是記錄控制流狀態(tài)的數(shù)據(jù)結(jié)構(gòu),它是一個(gè)指向KTRAP_FRAME類型的指針。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4511.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:1)查看EPROCESS,ETHREAD,KPROCESS,KTHREAD結(jié)構(gòu)KTHREAD通過LIST_ENTRY相互串聯(lián),要獲得當(dāng)前進(jìn)程的KPROCESS,可以通過查找KPRCB來找到KTHREAD鏈,找到KTHREAD后即可找到KPROCESS。在KTHREAD中有TEB(線程環(huán)境快)的成員,通過TEB,進(jìn)而可以獲得PEB。通過KPROCESS和KTHREAD我們看到,內(nèi)核層的進(jìn)程和線程對(duì)象只包含了系統(tǒng)資源管理和多控制流并發(fā)執(zhí)行所涉及的基本信息,沒有包含與應(yīng)用程序相關(guān)聯(lián)的信息。進(jìn)程對(duì)象提供了線程的基本執(zhí)行環(huán)境,包括進(jìn)程地址空間和一組進(jìn)程范圍內(nèi)公用的參數(shù);線程對(duì)象提供了為參與線程調(diào)度而必須的各種信息及其維護(hù)控制流的狀態(tài)。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4611.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:2)DKOM進(jìn)程隱藏隱藏進(jìn)程的方法有多種,除了本節(jié)所涉及的斷鏈方法,還有修改句柄表等其他方法。然而,隱藏進(jìn)程實(shí)際上是一個(gè)非常不穩(wěn)定的操作,進(jìn)程自身的一些正常功能可能會(huì)受到影響。

(1)進(jìn)程隱藏實(shí)現(xiàn)原理在操作系統(tǒng)中,EPROCESS中的ActiveProcessLinks把各個(gè)EPROCESS結(jié)構(gòu)體連接成雙向鏈表,ZwQuerySystemInformation在枚舉進(jìn)程時(shí)會(huì)枚舉這條鏈表。本實(shí)驗(yàn)在通過斷鏈方法實(shí)現(xiàn)隱藏進(jìn)程時(shí),會(huì)將某個(gè)需要隱藏的EPROCESS從鏈表摘除,此時(shí)ZwQuerySystemInformation無法枚舉到被摘鏈的進(jìn)程,而依靠此函數(shù)的一些RING3的枚舉進(jìn)程函數(shù)也就失效了。需要注意的是,由于系統(tǒng)安全機(jī)制原因,該進(jìn)程隱藏在運(yùn)行一定時(shí)間后可能會(huì)導(dǎo)致系統(tǒng)藍(lán)屏。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4711.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:2)DKOM進(jìn)程隱藏(2)進(jìn)程隱藏關(guān)鍵源碼HIDE64.c進(jìn)程隱藏的關(guān)鍵代碼如下:#include<ntddk.h>#include<windef.h>NTKERNELAPINTSTATUSPsLookupProcessByProcessId(HANDLEProcessId,PEPROCESS*Process);NTKERNELAPICHAR*PsGetProcessImageFileName(PEPROCESSProcess);//目標(biāo)進(jìn)程PEPROCESSaudiodg=NULL,dwm=NULL;ULONGop_dat;

//偏移定義,我們實(shí)驗(yàn)環(huán)境是Win7系統(tǒng),如果其他系統(tǒng)該值不一樣#definePROCESS_ACTIVE_PROCESS_LINKS_OFFSET0x188網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程4811.3進(jìn)程線程塊分析及實(shí)踐實(shí)驗(yàn)步驟:2)DKOM進(jìn)程隱藏//摘除雙向鏈表的指定項(xiàng)VOIDRemoveListEntry(PLIST_ENTRYListEntry){KIRQLOldIrql;OldIrql=KeRaiseIrqlToDpcLevel();if(ListEntry->Flink!=ListEntry&&ListEntry->Blin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論