如何在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
GigsGigsCloud新上了洛杉矶机房国际版线路VPS,基于KVM架构,采用SSD硬盘,年付最低26美元起。这是一家成立于2015年的马来西亚主机商,提供VPS主机和独立服务器租用,数据中心包括美国洛杉矶、中国香港、新加坡、马来西亚和日本等。商家VPS主机基于KVM架构,所选均为国内直连或者优化线路,比如洛杉矶机房有CN2 GIA、AS9929或者高防线路等。下面列出这款年付VPS主机配置信息...
华为云怎么样?华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。本次年终聚惠618活动相当给力,1核2G内存1m云耀云服务器仅88元/年起,送主机安全基础版套餐,...
iWebFusion(iWFHosting)在部落分享过很多次了,这是成立于2001年的老牌国外主机商H4Y旗下站点,提供的产品包括虚拟主机、VPS和独立服务器租用等等,其中VPS主机基于KVM架构,数据中心可选美国洛杉矶、北卡、本德、蒙蒂塞洛等。商家独立服务器可选5个不同机房,最低每月57美元起,而大流量10Gbps带宽服务器也仅149美元起。首先我们分享几款常规服务器配置信息,以下机器可选择5...
8个CPU新漏洞为你推荐
重庆电信断网为什么电信宽带突然断网了企业建网站一般中小型企业建立网站需要多少费用?多大的空间?163yeah网易yeah邮箱登陆dell服务器bios设置戴尔服务器720bios设置硬盘启动asp.net网页制作如何用DREAMWEAVER ASP.NET 做网页生药http更新internal大飞资讯新闻资讯包括什么内容?大飞资讯单仁资讯的黄功夫是何许人?大飞资讯伯乐资讯是什么公司
国外域名注册 二级域名申请 域名抢注工具 cn域名个人注册 赵容 dreamhost 香港机房 ssh帐号 免费网络电视 softbank邮箱 asp免费空间申请 网通服务器托管 天翼云盘 web服务器搭建 游戏服务器出租 稳定空间 重庆服务器 winserver2008下载 网络安装 堡垒主机 更多