基于硬件辅助的内核漏洞挖掘框架 闫广禄.

Slides:



Advertisements
Similar presentations
趋势护航 安享云端 趋势科技 王进华 Internal - Confidential.
Advertisements

1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
WCI361 Windows Vista WCI361 Windows Vista 运行性能设计与 改进.
多核结构与程序设计 杨全胜 东南大学成贤学院计算机系.
Introduction to Computer Science
Foundations of Computer Science
第 6 章 安裝問題解疑.
第2章 SOPC硬件开发环境及流程.
单片机应用技术 项目一 循环彩灯装置 第7讲 Keil软件的使用 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
操作系统结构.
最新計算機概論 第3章 計算機組織.
105年度產學合作培育 研發菁英計畫說明會 教育部高等教育司 /
Advantage And Disadvantage
第五章 设备管理 5.1 I/O系统 5.2 I/O控制方式 5.3 缓冲管理 5.4 设备分配 5.5 设备处理 5.6 磁盘存储器管理.
第五章 设 备 管 理 5.1 I/O系统 5.2 I/O控制方式 5.3 缓冲管理 5.4 I/O软件 5.5 设备分配
第四章 存储体系.
Chapter 6 時序.
计算机网络故障诊断与排除
Chapter 13 輸入/輸出系統 (I/O Systems)
張晃崚 麟瑞科技股份有限公司 網路基本概念/網路Router設定 張晃崚 麟瑞科技股份有限公司.
Xen基础架构安全性分析 云朋
FC OB1 FB SFC 操作系统 SFB OBs 结构化编程 其它
第 2 章 中央處理單元.
第一章 C语言概述.
1-1 電腦的起源 1-2 電腦的演進 1-3 電腦的種類 1-4 電腦與生活
汇编语言程序设计 Assembly Language Programming
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
结构化编程 FC OB1 FB SFC 操作系统 SFB OBs 其它
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
虛擬化基本概念.
第2章 16位和32位微处理器 位微处理器8086/ 位微处理器80386
Operating System Concepts 作業系統原理 CHAPTER 2 系統結構 (System Structures)
第4章 PIC软件开发设计基础.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
計算機結構 – 概論 陳鍾誠 於金門大學.
Ch 9: Input/Output System 输入/输出系统
基本的”防”黑客技术 Basic” ” Hacker Technique
機台監控系統 w w w . P r o M O S . c o m .tw.
What’s wrong? public int listen() { lock.acquire();
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
线程(Thread).
第8章 記憶體管理的概念.
Introduction to Multimedia Coding
JTAG INTERFACE SRAM TESTER WITH C-LCM
作業系統 (Operating System)
第五章,抢占式调度(lab3).
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
Ch9 Communicating with Hardware
寄存器分配 影响程序速度的因素 cpu, register, cache, memory, disk
凌宁 系统工程师 亚洲区嵌入式系统事业群 微软(中国)有限公司
第3章 認識處理元.
本节内容 KPCR:CPU控制区(Processor Control Region) 视频提供:昆山滴水信息技术有限公司 官网地址:
(第2版).
雲端虛擬化 Cloud Virtualization
Introduction to C Programming
作業系統 Operating System 第四單元 檔案系統
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
计算机系统结构(2012年春) ----存储层次: Cache基本概念
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
第7章 進階的同步 觀念與實務.
WIRELESS LAN B 邱培哲 B 張宏安.
第六章 記憶體.
虚拟机加密,是把源程序的X86指令变成自定义的伪指令,执行时内置在保护程序中的VM就会启动,读取伪指令,然后解析执行
用户程序的重新接线 目录 页 目标 ………… 概述……… 用SIMATIC 管理器重新接线 …………………
F1-20P PLC简易编程器的使用.
第七章 软件测试 Software Testing
大数据搜索挖掘实验室 第五章 子程序设计 张华平 副教授 博士 Website: 大数据搜索挖掘实验室
Presentation transcript:

基于硬件辅助的内核漏洞挖掘框架 闫广禄

贡献者 潘剑锋 360首席安全架构师 闫广禄 360冰刃实验室高级安全研究员 范晓草 360冰刃实验室高级安全研究员 www.iceswordlab.com

内核漏洞 永恒之蓝(EternalBlue) 内核漏洞 NSA网络军火库民用化第一例 WannaCry勒索病毒 Adylkuzz挖矿僵尸网络 本地提权->完整控制操作系统

整体架构 1 错误检测 2 内容提要 路径探测 3 漏洞检测 4

整体架构

组成 路径探测 日志分析 错误检测 路径探测 错误检测 日志分析 基于代码覆盖导向型路径探测方法,构造、变异输入用例,执行目标程序,以发现更多的路径为目标。 错误检测 监控目标程序执行过程,捕获漏洞特征行为、收集关键数据。 日志分析 分析日志数据,生成漏洞报告

Hardware (CPU + virtualization extensions + Intel PT) 整体架构 Guest OS Loader Fuzzer Log Analyzer User Space Kernel Space Middleware Interface Detection VMM Infrastructure Memory Detection Hypervisor PT Trace Hardware (CPU + virtualization extensions + Intel PT) Target Program Logs 初始化 Driver  hypervisor OS  guest OS 基础功能组件 虚拟页面监控器 内核与Hypervisor间通信 事件监控器 CPU模拟器 线程调度监控器 PT Trace

错误检测子系统

虚拟页面监控器 影子页表(SPT) BitMap #PF handler MTF/TF handler 监控虚拟页面 记录 私有中断 VA PA #PF Not Match MA Propagate GPT SPT CR3 Handle Log Inject Interruption MTF/TF Handler Match Clear P Set MTF/TF Update #VMEXIT 影子页表(SPT) BitMap 监控虚拟页面 #PF handler 记录 私有中断 设置MTF/TF 更新SPT MTF/TF handler 再次监控虚拟页面

Hypervisor Components User Space Kernel Space Hypervisor Hypervisor Components Target Module Work Thread Log Shared Memory 3 1 2 2` K2H 服务函数 H2K 共享内存

ProbeRead/ProbeWrite/ProbeAccess AllocVirtualMemory/GetPebTeb 事件监控器 Check ProbeRead/ProbeWrite/ProbeAccess 检测用户指针 Access MemAccess 访问用户地址空间 Start Syscall/Trap2b/Trap2e 系统调用入口 Mark AllocVirtualMemory/GetPebTeb 标记内存合法 End RetUser 系统调用出口

CPU模拟器 ProbeAccess事件 目标内存 解释执行 1) cmp esi, dword ptr [nt!MmUserProbeAddress] 2) mov eax, dword ptr [nt!MmUserProbeAddress] cmp eax,XXX ProbeAccess事件 目标内存 nt!MmUserProbeAddress win32k!W32UserProbeAddress 解释执行 N cmp 固定指令数 #DR Target Memory DR Handler EAX EBX …… EIP Guest CPU EAX EBX …… EIP Virtual CPU N UVA-1 Update UVA-2 cmp Emulator …… UVA-N

路径探测子系统

Executing System Calls 代码覆盖导向型路径探测子系统 User User Space Building Parameters Mutating Executing System Calls Checking Bitmap Inputs Logs configuration Kernel Space Target Program Auxiliary Hypervisor PT Trace

进化算法 Input: Seed Inputs S 1: T’ = ∅; 2: T = S 3: while(1) 4: { 4: { 5: t = chooseNext(T) 6: p = assignEnergy(t) 7: for(i=0; i<p; i++) 8: { 9: t’= mutate input(t) 10: if t’ crashes 11: add t’ to T’ 12: if IsInteresting(t’) 13: add t’ to T 14: } 15: } Output: Crashing Inputs T’

PT Trace Intel® Processor Trace (Intel PT) 数据包(Data Packets) Taken Not-Taken (TNT) packets: TNT包负责跟踪条件跳转指令的跳转方向,即1代表跳转,0代表未跳转。 Target IP (TIP) packets: TIP包记录间接分支、异常和中断处理程序的目标地址。

线程调度监控器与准实时数据处理 目标线程 VS 非监控线程 _KPCR->_KPRCB->CurrentThread SPT or GPT 性能开销 _KPCR->_KPRCB->CurrentThread 监控 _KPRCB Write Monitor _KPCR Thread #1 …… _KPRCB Thread #2 Thread #n Thread #i PT buffer 1 PT buffer n Buffer is full/ Thread exits Thread call back Full path Bitmap 线程级别的准实时处理,无需内存或文件存储大量packets

块缓存(Block Caches) Cache for Block B Cache for Block A Address Size Jump type Next block array Next block 1 Next block 2 …… Block B Address Bitmap offset (1) Block C Address Bitmap offset (2) Cache for Block C 在解析数据包和构建bitmap时带来极大的性能提升。 程序运行一次即可建立起相应的块缓存 通过1bit(即跳转与否)可立即定位到目标块

改进的BitMap\全路径信息 改进的BitMap:在bitmap中为每一条新发现的路径分配固定位置 5 E 2 C 6 A F 1 B 4 动态分配 仅为执行过的路径分配 分配的位置记录到块缓存中 快速、无碰撞 A B C D F E 1 3 2 6 5 4 全路径信息

降噪实例 — 消除外部中断影响 × Stub (nop vmcall) External Interrupt Monitor (EIM) Guest OS Hypervisor Stub (nop vmcall) × External Interrupt Monitor (EIM) Interrupt Window Monitor (IWM) Guest IF = 1 Guest IF = 0 Disable EIM&PT, Tamper Guest EIP to Stub Disable EIM, Enable IWM sti Disable PT&IWM, Tamper Guest EIP to Stub External Interrupt VMCALL Monitor Enable EIM&PT, Return Guest EIP Target Program

构建、变异系统调用参数 [info] ;funs count number=4 ;STRATEGY_GUID = 2, STRATEGY_RANDOM =1 strategy=2 [parameters1] index=0x15c SubStructsNum=3 args=_HANDLE_PTR,_UINT32,_STRUCT_PTR,_STRUCT_PTR,_UINT32,_UINT32,_HANDLE,NIL mask=0xffffffff ;deep first subargs1=_UINT32,_HANDLE,_STRUCT_PTR,_UINT32,_VOID_PTR,_VOID_PTR,NIL submask1=0xffffffff subargs2=_INT16,_INT16,_VOID_PTR,NIL submask2=0xffffffff subargs3=_INT32,_INT32,_INT64,NIL submask3=0xffffffff ……

路径探测导出函数 线程级别路径探测 实时分析 DTENABLETRACE EnableTrace; DTDISABLETRACE DisableTrace; DTTRACEADDTHREAD TraceAddThread; DTTRACESTARTTHREAD TraceStartThread; DTTRACESTOPTHREAD TraceStopThread; DTQUERYTRACEINFORMATION QueryTraceInformation; DTENABLEIPT EnableIpt; DTDISABLEIPT DisableIpt; DTIPTQUERYINFORMATION IptQueryInformation; DTIPTADDTHREAD IptAddThread; DTIPTSTARTTHREAD IptStartThread; DTIPTSTOPTHREAD IptStopThread; DTPREPAREDECODER PrepareDecoder; DTDECODEIPTLOG DecodeIptLog; DTINITIALIZEDECODECACHE InitializeDecodeCache; DTDECODEIPTLOGSIMPLE DecodeIptLogSimple; DTDECODEIPTLOGTOBITMAP DecodeIptLogToBitmap; 线程级别路径探测 实时分析

漏洞检测

UNPROBE 与 TOCTTOU 类型错误检测 (Probe X) n Syscall n+4 RetUser n+1 ProbeRead (Access X) n+3 MemAccess n+2 (Access Y) 系统调用过程的事件记录示例

漏洞示例 UNPROBE (Avast 11.2.2262) TOCTTOU (Dr. Web 11.0) NtAllocateVirtualMemory : Eip : 89993f3d, Address : 0023f304, rw: R Eip : 84082ed9, Address : 0023f304, PROBE KiFastSystemCallRet TOCTTOU (Dr. Web 11.0) NtCreateSection : …… Eip : 89370d54 Address :3b963c Sequence :399 rw: R Eip : 89370d7b Address :3b963c Sequence :401 rw: R KiFastSystemCallRet

检测UAF漏洞 MS16-123/CVE-2016-7211: 跟踪释放内存 通过虚拟页面监控器捕获 “use” 操作 记录“free”函数及其调用栈 延迟释放 MS16-123/CVE-2016-7211: Single step exception - code 80000004 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. win32k!_ScrollDC+0x21: 96b50f3e 83ff01 cmp edi,1 kd> r eax=fe809268 ebx=96b50e37 ecx=85eefb40 edx=00000000 esi=fe809268 edi=00000000 …… 96b50f3b 8b7e68 mov edi , dword ptr [esi+68h] 96b50f3e 83ff01 cmp edi ,1// win32k !_ScrollDC+0x21

检测OOB漏洞 MS16-090/CVE-2016-3252: 监控待测模块分配与释放内存 利用虚拟页面监控器捕获内存访问 额外内存块 — 保护区(red zone) Single step exception - code 80000004 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. win32kbase!RGNMEMOBJ::bFastFill+0x385: 93e34bf9 895304 mov dword ptr [ebx+4],edx kd> r eax=00000002 ebx=9fa3f4f0 ecx=000003f0 edx=0000001b esi=9fa3f4f0 …… BAD_POOL_HEADER (19) FOLLOWUP_IP: win32kfull!NSInstrumentation::PlatformFree+10 a0efaade 5d pop ebp STACK_TEXT: nt!RtlpBreakWithStatusInstruction nt!KiBugCheckDebugBreak+0x1f MS16-090/CVE-2016-3252: Digtool Driver Verifier

检测内核信息泄露漏洞 CVE-2017-8470 CVE-2017-8474 CVE-2017-8476 CVE-2017-8482 内核会把某些关键的信息写入用户态的内存——监控内核代码对用户态内存的写操作: 未初始化堆/栈拷贝与直接敏感信息拷贝 初步试验产出60+ case,目前微软已分配18个CVE。 CVE-2017-8470 CVE-2017-8474 CVE-2017-8476 CVE-2017-8482 CVE-2017-8485 CVE-2017-8490 ...

总结 & 优势 无需Crash 提供准确上下文 检测多种类型漏洞 性能损耗低 连续记录漏洞特征 在漏洞触发时,可中断客户操作系统 UNPROBE, TOCTTOU, UAF(MS16-123/CVE-2016-7211), OOB, 信息泄露… 性能损耗低 只影响目标线程中被监控的系统调用 Intel PT仅带来很小的性能开销

谢谢! IceSwordLab@360.cn