如何在3个月发现12个内核信息泄露漏洞陈唐晖李龙百度安全实验室2019目录0.
我是谁1.
认识漏洞2.
研究漏洞堆栈数据污染检测漏洞技术CVE实例分析3.
成果4.
总结和思考我是谁百度安全实验室资深安全研发工程师百度杀毒、卫士主防设计者和负责人十多年的windows内核研究和开发经验深谙Rootkit技术,内功深厚,剑法独到偶然涉入漏洞挖掘领域TanghuiChenchenhui00530@163.
com什么是内核信息泄露漏洞Windows内核存在很多信息泄露漏洞,可能导致绕过KASLR或系统关键信息泄露,攻击者可以利用它们得到一些重要信息,比如:加密密钥内核对象关键模块地址…漏洞是如何产生的如CVE-2018-84431.
用户态调用ZwDeviceIoControlFile(.
.
.
,0x7d008004,Output,…);2.
ZwDeviceIoControlFile经过系统调用进入内核3.
返回用户态后,Output包含内核栈中未初始化的数据现有的挖掘技术BochsPwnCPU指令模拟DigTool重量级VT技术插桩…挖掘信息泄露漏洞的方法第1步:堆/栈数据污染方法HookKiFastCallEntry,内核栈污染HookExAllocatePoolWithTag,内核堆污染对堆和栈的内存数据填充特殊标志数据,如AA等在HookKiFastCallEntry中,通过IoGetStackLimits获取内核栈内存,填充特殊标志数据IoGetStackLimits(&LowLimit,&HighLimit);__asm{xoreax,eax;moval,g_cFlags;//0xAAmovedi,LowLimit;movecx,Esp_Value;subecx,LowLimit;cld;repstosb;}栈的污染在调用ExAllocatePoolWithTag分配内存时,填充特殊标志数据PVOIDNTAPIHOOK_ExAllocatePoolWithTag(.
.
.
){PVOIDBuffer=NULL;Buffer=pfn_ExAllocatePoolWithTag(PoolType,NumberOfBytes,Tag);if(Buffer){memset(Buffer,g_cFlags,NumberOfBytes);//将内存初始化特殊数据,如0xAA}returnBuffer;}堆的污染堆栈数据污染的思考堆和栈数据污染技术相对简单,并不存在方法优劣内存中可能存在和污染标记相同的数据,有误报的可能性采用随机污染标记减少误报第2步:数据检测技术研究目前已经有基于CPU指令模拟、VT等数据检测技术.
那是否还有更简捷的方法呢数据检测技术研究经过探索,我们提出了三种新的用于数据检测技术:Nirvana(首次应用于内核信息泄露漏洞挖掘)memcpy/memmove,后称memcpy(最轻量级的方法)movsdNirvana是Microsoft提供的一个轻量级的动态translation框架,可用于监视和控制正在运行的进程的执行,而无需重新编译或构建进程中的任何代码(fromHookingNirvana@AlexIonescu),首次被我们应用于内核信息泄露漏洞挖掘.
通过Nirvana可设置系统调用返回到用户态时的回调函数,在回调函数中能够检测栈数据.
ZwSetInformationProcess(NtCurrentProcess(),ProcessInstrumentationCallback,&Info64,sizeof(Info64));typedefstruct_PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION{ULONG_PTRVersion;ULONG_PTRReserved;ULONG_PTRCallback;}PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION;Nirvana概述__declspec(naked)VOIDInstrumentationCallback(){__asm{//代码有省略.
.
.
moveax,fs:[0x8];movedi,fs:[0x4];cmpdwordptr[eax],g_cFlag;//如0xAAAAAAAAjz__find;addeax,4;cmpeax,edi;//代码有省略.
.
.
jmpdwordptrfs:[0x1B0];}}Nirvana检测技术的实现Nirvana捕获到的现场16Nirvana检测技术的优点WindowsVista之后系统都支持Nirvana使用系统提供接口,实现非常简单兼容性好Nirvana检测技术的缺陷只能检测栈数据,几乎无法检测堆数据抓不到泄露现场,分析和编写POC相对困难memcpyWindows内核层向应用层写入数据一般都使用memcpy/memmovekernelspaceuserspace用户态内存内核态内存memcpy(dst,src,size);检测Hookmemcpy/memmove,检测dst是否用户态内存,数据是否包含特殊标志数据void*__cdeclHOOK_memcpy(void*dst,void*src,size_tcount){//代码有省略.
.
.
if((ULONG_PTR)dstMmSystemRangeStart){pOffset=(PUCHAR)src;while(pOffset<=(PUCHAR)src+count-sizeof(DWORD)){if(*(DWORD*)pOffset==g_dwDwordFlags){//checked}}}//代码有省略.
.
.
}memcpy检测技术的实现memcpy检测技术特点实现简单,性能突出几乎没有性能损失兼容性好能够抓到漏洞第一现场,分析和编写POC简单优点突出,几无缺点memcpy深入研究size为变量,直接调用memcpysize为常数,memcpy被优化size为较大常数,优化为movsdmemmove不会被优化movsd检测方法探索memcpy会被优化成了什么最终都是编译成movsd指令通过movsd检测数据解决极个别情况下memcpy覆盖面不够的问题movsd如何实现检测movsddst,src;(F3A5)int20h;(CD20)都是两字节扫描nt模块代码段,替换所有movsd为int20h自定义int20h中断处理函数,KiTrap20KiTrap20中检测内存数据if(*(WORD*)pOffset==0xA5F3){//repmovsdwordptres:[edi],dwordptr[esi]MdlBuffer=GetMdlBuffer(&Mdl,pOffset,2);*(WORD*)MdlBuffer=0x20CD;//int20}__declspec(naked)VOIDHOOK_KiTrap20(){__asm{//代码有省略.
.
.
pushfd;pushad;callDetectMemory;popad;popfd;repmovsdwordptres:[edi],dwordptr[esi];//也可以检测类似指令iretd;}//代码有省略.
.
.
}movsd检测技术的实现VOIDDetectMemory(PVOIDDestAddress,PVOIDSrcAddress,SIZE_TSize){//代码有省略.
.
.
if((ULONG_PTR)DestAddress.
.
}}movsd检测技术的实现movsd检测技术特点检测数据较memcpy覆盖更全面能够抓到漏洞第一现场,分析和编写POC简单第3步:漏洞分析捕获到疑似漏洞时,通过调试器现场分析确认让代码执行回到用户态,确认用户态内存中是否存在特殊标志数据,如果存在那么就是内核信息泄露漏洞通过分析调用栈和逆向用户态的系统调用的相关代码,编写POC漏洞分析有些漏洞内存经过多次拷贝,造成分析和编写POC非常困难我们专门实现了一套内存追踪的工具来辅助分析,支持:内存trace内存条件断点这是win1017134x64检测到的一个漏洞现场,该漏洞已分配CVE-2018-8443CVE实例分析回溯到mpssvc.
dll,确认用户态内存是否包含特殊标记CVE实例分析回溯到mpssvc.
dll,找到漏洞触发代码CVE实例分析CVE实例分析最终完成pocCVE实例分析使用三个月就已挖掘windows内核信息泄露漏洞12个,都已分配CVE其中7个CVE获得当时最高5000$奖金成果思考仅此而已吗…用户态内存只读(去掉PTE写位)反向追踪…ThankyouTanghuiChenchenhui00530@163.
com
HaBangNet支持支付宝和微信支付,只是价格偏贵,之前国内用户并不多。这次HaBangNet推出三个特价套餐,其中美国机房和德国机房价格也还可以,但是香港机房虽然是双向CN2 GIA线路,但是还是贵的惊人,需要美国和德国机房的可以参考下。HaBangNet是一家成立于2014年的香港IDC商家,中文译名:哈邦网络公司,主营中国香港、新加坡、澳大利亚、荷兰、美国、德国机房的虚拟主机、vps、专用...
今天中午的时候看到群里网友在讨论新版本的Apache HTTP Server 2.4.51发布且建议更新升级,如果有服务器在使用较早版本的话可能需要升级安全,这次的版本中涉及到安全漏洞的问题。Apache HTTP 中2.4.50的修复补丁CVE-2021-41773 修复不完整,导致新的漏洞CVE-2021-42013。攻击者可以使用由类似别名的指令配置将URL映射到目录外的文件的遍历攻击。这里...
spinservers是Majestic Hosting Solutions LLC旗下站点,主营国外服务器租用和Hybrid Dedicated等,数据中心在美国达拉斯和圣何塞机房。目前,商家针对圣何塞部分独立服务器进行促销优惠,使用优惠码后Dual Intel Xeon E5-2650L V3(24核48线程)+64GB内存服务器每月仅109美元起,提供10Gbps端口带宽,可以升级至1Gbp...
8个CPU新漏洞为你推荐
手机iphoneinternalservererrorinternal server error怎么解决http500ZTCS500在哪能下载手机QQ?重庆网站制作我想做个网站,我是重庆的人。想在本地找个做网站的公司,请教一下在重庆那个公司比较好一点,,,,谢谢即时通如何使用即时通啊oa办公软件价格一套专业版的oa办公系统多少钱?团购程序团购的具体流程是什么?仿佛很简单便捷的样子?drupal主题Drupal比DEDE等国内CMS好在哪里?顽固木马专杀工具哪个可以专杀顽固木马病毒的?推荐位关于橱窗推荐位规则的描述哪个是错误的
广东服务器租用 香港vps 罗马假日广场 西安电信测速 a2hosting 站群服务器 火车票抢票攻略 福建天翼加速 个人域名 国外视频网站有哪些 免费mysql数据库 rewritecond tracker服务器 japanese50m咸熟 cdn免备案空间 俄勒冈州 瓦工工资 ddos攻击器 ddos攻击小组 隐士ddos 更多