如何在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
SoftShellWeb是一家2019年成立的国外主机商,商家在英格兰注册,提供的产品包括虚拟主机和VPS,其中VPS基于KVM架构,采用SSD硬盘,提供IPv4+IPv6,可选美国(圣何塞)、荷兰(阿姆斯特丹)和台湾(台北)等机房。商家近期推出台湾和荷兰年付特价VPS主机,其中台湾VPS最低年付49美元,荷兰VPS年付24美元起。台湾VPSCPU:1core内存:2GB硬盘:20GB SSD流量...
10gbiz发布了9月优惠方案,针对VPS、独立服务器、站群服务器、高防服务器等均提供了一系列优惠方面,其中香港/洛杉矶CN2 GIA线路VPS主机4折优惠继续,优惠后最低每月仅2.36美元起;日本/香港独立服务器提供特价款首月1.5折27.43美元起;站群/G口服务器首月半价,高防服务器永久8.5折等。这是一家成立于2020年的主机商,提供包括独立服务器租用和VPS主机等产品,数据中心包括美国洛...
活动方案:美国洛杉矶 E5 2696V2 2核4G20M带宽100G流量20元/月美国洛杉矶E5 2696V2 2核4G100M带宽1000G流量99元/季香港CN2 E5 2660V2 2核2G30M CN2500G流量119元/季日本CN2E5 2660 2核2G30M CN2 500G流量119元/季美国300G高防 真实防御E5 2696V2 2核2G30M...
8个CPU新漏洞为你推荐
操作http支持ipad操作httpcentos6.5centos7和centos6.5的区别outlookexpress系统自带的outlook express有什么用?怎么用?申请支付宝账户怎么申请支付宝的账号?360免费建站搭建卡盟分站(卡乐购系统,免费360网站收录)只要29元,想建的找2208647548!资费标准中国移动38元套餐介绍抢米网怎么用小米商城可以快速抢到手机!大侠们 帮帮忙!徐州商标介绍徐州的一种产品
虚拟主机管理软件 传奇服务器租用 域名备案信息查询 华为云服务 hkbn unsplash 卡巴斯基永久免费版 空间论坛 福建铁通 支付宝扫码领红包 怎么建立邮箱 联通网站 云营销系统 服务器论坛 申请免费空间 114dns 工信部icp备案查询 七十九刀 湖南铁通 蓝队云 更多