系統(tǒng)中錯(cuò)誤句柄引用所引發(fā)漏洞_第1頁
系統(tǒng)中錯(cuò)誤句柄引用所引發(fā)漏洞_第2頁
系統(tǒng)中錯(cuò)誤句柄引用所引發(fā)漏洞_第3頁
系統(tǒng)中錯(cuò)誤句柄引用所引發(fā)漏洞_第4頁
系統(tǒng)中錯(cuò)誤句柄引用所引發(fā)漏洞_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

windows系統(tǒng)中錯(cuò)誤的句柄引用所引發(fā)的漏洞

目錄背景知識(shí)隱患與漏洞漏洞的利用漏洞的防范2背景知識(shí)句柄與對(duì)象3對(duì)象實(shí)例對(duì)象實(shí)例對(duì)象管理器內(nèi)核層對(duì)象句柄用戶層背景知識(shí)DDK中的函數(shù)ObReferenceObjectByHandleObOpenObjectByPointer4背景知識(shí)ObReferenceObjectByHandle函數(shù)的原型NTSTATUSObReferenceObjectByHandle(

INHANDLEHandle,

INACCESS_MASKDesiredAccess,

INPOBJECT_TYPEObjectTypeOPTIONAL,

INKPROCESSOR_MODEAccessMode,

OUTPVOID*Object,

OUTPOBJECT_HANDLE_INFORMATION HandleInformationOPTIONAL

);5背景知識(shí)ObReferenceObjectByHandle用法 status=ObReferenceObjectByHandle(handle, GENERIC_ALL, NULL, KernelMode, &fileObject,

NULL); if(NT_SUCCESS(status)){ //與對(duì)象相關(guān)操作 … }6隱患與漏洞場景應(yīng)用程序與內(nèi)核的同步應(yīng)用層創(chuàng)建事件對(duì)象核心層通過句柄獲得對(duì)象完成事件同步7隱患與漏洞應(yīng)用層代碼 eventHandle=CreateEvent(NULL,TRUE,FALSE,NULL);

rc=DeviceIoControl(deviceHandle,

IOCTL_INIT_EVENT, &eventHandle, sizeof(eventHandle), NULL, 0, &returnSize);8隱患與漏洞核心層的代碼status=ObReferenceObjectByHandle(*(PHANDLE)InputBuffer, GENERIC_ALL, NULL, KernelMode, (PVOID*)&eventObject, NULL);If(NT_SUCCESS(status)){

//與對(duì)象相關(guān)操作 KeClearEvent(eventObject);

….}9隱患與漏洞漏洞在哪里?ObReferenceObjectByHandle函數(shù)的參數(shù)檢查

if((ObjectHeader->Type==ObjectType)||(ObjectType==NULL)){ …. if((SeComputeDeniedAccesses(GrantedAccess,DesiredAccess)||(AccessMode==KernelMode)){ … }}10隱患與漏洞漏洞在哪里?安全隱患ObjectType賦值為NULL時(shí)可返回任意類型的有效對(duì)象應(yīng)用層傳遞的對(duì)象類型并不明確不能獲得期待的對(duì)象11隱患與漏洞漏洞在哪里?KeClearEvent的實(shí)現(xiàn)

kd>uKeClearEventnt!KeClearEvent:804faf168bffmovedi,edi804faf1855pushebp804faf198becmovebp,esp804faf1b8b4508moveax,dwordptr[ebp+8]804faf1e83600400anddwordptr[eax+4],0804faf225dpopebp804faf23c20400ret412隱患與漏洞漏洞的形成ObReferenceObjectByHandle的錯(cuò)誤使用與KeClearEvent函數(shù)的調(diào)用形成了安全漏洞對(duì)象的不正確操作造成對(duì)象體的破壞13隱患與漏洞漏洞的形成內(nèi)核對(duì)象被破壞,從而形成漏洞14

對(duì)象體+0+4

被改寫為0+8+c+10+14+18+1c+20隱患與漏洞漏洞的根源對(duì)函數(shù)缺乏理解人員的疏忽傳入不合理的參數(shù)操作了不期待的對(duì)象15漏洞的利用漏洞的利用挑選一顆合適的子彈構(gòu)造有利的利用環(huán)境讓子彈安全的飛往目標(biāo)從目標(biāo)安全的返回16漏洞的利用利用場景中的漏洞使用_FILE_OBJECT作為子彈_KEVENT對(duì)象與_FILE_OBJECT對(duì)象的對(duì)比17漏洞的利用_KEVENTkd>dtnt!_kevent-r +0x000Header:_DISPATCHER_HEADER +0x000Type:UChar +0x001Absolute:UChar +0x002Size:UChar +0x003Inserted:UChar +0x004SignalState:Int4B +0x008WaitListHead:_LIST_ENTRY18漏洞的利用_FILE_OBJECTkd>dtnt!_file_object +0x000Type:Int2B +0x002Size:Int2B +0x004DeviceObject:Ptr32_DEVICE_OBJECT +0x008Vpb:Ptr32_VPB +0x00cFsContext:Ptr32Void +0x010FsContext2:Ptr32Void +0x014SectionObjectPointer:Ptr32 ……19漏洞的利用_FILE_OBJECT的影響典型的I/O處理流程20設(shè)備驅(qū)動(dòng)程序I/O管理器I/O系統(tǒng)服務(wù)API用戶模式API內(nèi)核層應(yīng)用層漏洞的利用_FILE_OBJECT的影響I/O管理器關(guān)聯(lián)_FILE_OBJECT與設(shè)備對(duì)象IoGetRelatedDeviceObject函數(shù)21漏洞的利用_FILE_OBJECT的影響IoGetRelatedDeviceObject函數(shù)對(duì)于文件返回FileObject->Vpb->DeviceObject的設(shè)備棧頂層對(duì)象對(duì)于磁盤設(shè)備返回FileObject->DeviceObject->Vpb->DeviceObject的設(shè)備棧頂層對(duì)象對(duì)于其他類型返回FileObject->DeviceObject的設(shè)備棧頂層對(duì)象22漏洞的利用_FILE_OBJECT的影響破壞后_FILE_OBJECT所關(guān)聯(lián)的設(shè)備對(duì)象為空形成了空指針引用的漏洞可導(dǎo)致運(yùn)行任意ring0代碼23漏洞的利用偽造設(shè)備對(duì)象24文件對(duì)象…設(shè)備對(duì)象…虛擬地址空間0-0x1000設(shè)備對(duì)象漏洞的利用_DEVICE_OBJECT的結(jié)構(gòu)0:kd>dt_DEVICE_OBJECTnt!_DEVICE_OBJECT+0x000Type:Int2B+0x002Size:Uint2B+0x004ReferenceCount:Int4B+0x008DriverObject:Ptr32_DRIVER_OBJECT+0x00cNextDevice:Ptr32_DEVICE_OBJECT+0x010AttachedDevice:Ptr32_DEVICE_OBJECT+0x014CurrentIrp:Ptr32_IRP+0x018Timer:Ptr32_IO_TIMER……25漏洞的利用_DRIVER_OBJECT的結(jié)構(gòu)0:kd>dt_driver_objectnt!_DRIVER_OBJECT+0x000Type:Int2B+0x002Size:Int2B+0x004DeviceObject:Ptr32_DEVICE_OBJECT……+0x028FastIoDispatch:Ptr32_FAST_IO_DISPATCH+0x02cDriverInit:Ptr32long+0x030DriverStartIo:Ptr32void+0x034DriverUnload:Ptr32void+0x038MajorFunction:[28]Ptr32long26漏洞的利用偽造驅(qū)動(dòng)對(duì)象27偽造的設(shè)備對(duì)象…驅(qū)動(dòng)對(duì)象的指針偽造的驅(qū)動(dòng)對(duì)象…MajorFunction[IRP_MJ_CREATE]…漏洞的利用實(shí)現(xiàn)dispatch函數(shù)fastcall的調(diào)用方式函數(shù)的參數(shù)正確的處理irp在應(yīng)用調(diào)用I/O處理函數(shù)避免復(fù)雜,一切從簡CloseHandle與IRP_MJ_CLEANUP28漏洞的利用通過對(duì)設(shè)備進(jìn)行I/O操作來獲得控制權(quán)29內(nèi)核設(shè)備I/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔