EPATHOBJ提权0dayx64利用

EPATHOBJ提权0dayx64利用

ID:40843013

大小:927.63 KB

页数:27页

时间:2019-08-08

EPATHOBJ提权0dayx64利用_第1页
EPATHOBJ提权0dayx64利用_第2页
EPATHOBJ提权0dayx64利用_第3页
EPATHOBJ提权0dayx64利用_第4页
EPATHOBJ提权0dayx64利用_第5页
资源描述:

《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导致对象分配失败?PolyDrarcreaterecnewpathalloc分配失败调用reinitvFreeBlocks循环调用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不需要指定的地址,任

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。