欢迎来到天天文库
浏览记录
ID:40843013
大小:927.63 KB
页数:27页
时间:2019-08-08
《EPATHOBJ提权0dayx64利用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、EPATHOBJ提权0dayx64利用instruderEPATHOBJ提权0day谷歌工程师TavisOrmandy最早3月份在一次windows内核压力测试中发现的5月中旬其博客公布了漏洞利用细节6月初国内论坛看雪有网友公开了x32位攻击代码通杀xp、2003、vista、win7、win8、2008所有系统EPATHOBJ漏洞细节X32位利用X64位利用EPATHOBJ漏洞细节EPATHOBJ漏洞细节EPATHOBJ在分配新的pathrecordnode时,先从freelist里面寻找,若找到则直接返回里面的node,而该n
2、ode内存没有正确初始化导致可以添加用户层控制的node到pathobjchain表中,从而可以任意地址写入node的地址。360安全卫视临时patch内存清0利用特点可以任意写内核地址,但是写入的值无法控制,是PACHRECORD对象的地址,该对象指向的内容可以控制X32位利用Exploit目标:控制freelist->next指针指向用户层控制BUFFER触发chain任意地址写EXP讲解分配3个PathRecord指向自身退出的PathRecordExploitPathRecordEXP讲解申请大量roundrectregi
3、ons导致AllocateObject分配出现失败引发PALLOCMEM分配会出现失败EXP讲解申请大量pointers指向之前的pathrecord对象喷射调用PolyDraw尝试将PathRecord添加到freelist中一定几率EXP讲解为啥大量调用CreateRoundRectRgn导致对象分配失败?PolyDrarcreaterecnewpathalloc分配失败调用reinitvFreeBlocks循环调用freepathalloc将用户层控制的内存添加到freelist中EXP讲解不执行CreateR
4、oundRectRgn和执行的区别PathRecordNotingEXP讲解调用FlattenPath(Device)将freelist->next节点(用户层控制的PathRecord)加入PathRecordChain中一旦加入这里便会陷入死循环EXP讲解创建看门狗线程伺机将PathRecord->next指向ExploitRecordEXP讲解一旦PathRecord->next被替换成ExploitRecord,之前的EPATHOBJ__bFlatten循环就会被终止,调用EPATHOBJ__pprFlattenRec函数
5、触发任意地址写PathObj对象地址特殊的flagsEXP讲解尝试调用NtQueryIntervalProfile是否写入HalDispatchTable成功执行ShellcodeShellcode执行复制System进程的toke到当前进程EXPSUCCESS!整个流程PathRecordExploitPathRecordExitPathRecord大量CreateRoundRectRgnFailedtoAllocateObjectPolyDrawSpamPathRecordFlattenPath触发将Freelistnode添
6、加进PATHOBJChainEPATHOBJ__bFlattenWatchDogThread交换PathRecord->next与ExploitPathRecordNextPreHalDispatchTable0X42424242Next调用reinit将PathRecord加入到freelist对象分配失败无限循环PathRecord->next=PathRecord创建WatchDogHalDispatchTable改写Shellcode执行BOOMX64利用利用难点64位内核堆栈、各种堆默认没有可执行属性xp64不能分配指定
7、地址内存win8不能不能分配0地址开始的64k内存MmUserProbeAddressNtReadVirtualMemoryX64利用MmUserProbeAddress=0x000007ff`ffff0000PATCHRECORDNODE属于内核地址,一般都很大通过改写MmUserProbeAddress,达到任意内核地址读写的途径X64利用流程1触发漏洞修改MmUserProbeAddress大于0x7fff00002调用NtReadVirtualMemory的指定ReturnLength指向HalDispatchTable,
8、写入SHELLCODE地址到HalDispatchTable3调用NtQueryIntervalProfile触发调用HalDispatchTable,从而执行SHELLCODE32EXP修改的地方ExitPatchRecord不需要指定的地址,任
此文档下载收益归作者所有