- A+
WooBook 新版《Windows平台内存防护与绕过技术的进化演变系列》即将上线,从基础的漏洞讲起,逐渐深入到windows的各种防护机制,各种高大上的绕过手段,由底层大牛 Chuck撰稿,欢迎大家关注
作者语:
一、概述
最初有总结下的想法始于近期看过的几篇关于CFG绕过以及EMET绕过的文章,这些文章里大概都有提到类似这样的句子“As with every known exploitation mitigation, there are ways to bypass it if certain conditions are met.”。无论攻与防的技术都是有时间与条件限定的,某种技术一般只在某段时间内对某特定场景有效,而攻与防又是在互为前提、互为基础、又互为对手彼此砥砺发展的,那么如果对这些技术的由来以及互相之间的争斗历史(历程)有一个宏观整体的、脉络清晰的认识,对于学习理解Windows平台内存防护机制以及新出现的各种内存攻防技术应该是有积极意义的。
其实很早之前就已经有人做过类似的总结,早期国内的nsfocus、xfocus、邪恶八进制,国外的微软安全部门以及一些早期黑客组织的牛们都写过关于内存攻击防护、缓冲区溢出相关的总结,内容侧重点各有不同,有讲漏洞原理分析的、有漏洞利用的、有侧重研究防护与缓解技术的,本系列拟在前人总结的基础上,结合近几年新出现的一些思路、技术、手段,把各种防护与绕过技术从头至尾连接起来,尝试做一个平衡、全面的讲述。在写的过程中,会尽量选择添加一些实例分析来增加文章的可读性,但水平所限,难免顾此失彼或出现各种错漏,恳请各位大神谅解并多批评指正。
二、思路
该系列的大概的思路是一个简单的向上循环:
三、目录结构(写时会根据内容走向稍作调整)
1 Windows内存攻防发展概述
1.1内存缓冲区溢出概述
-什么是缓冲区溢出
-缓冲区溢出原因
-早期缓冲区溢出利用技术发展简史(1988-2004)
1.2内存防护机制的出现
-安全需求
-防护原则
-内存防护策略
1.3内存攻防技术概览
2 Win Xp,内存攻防的开始
2.1背景知识(Windows内存堆栈结构等)
2.2 GS
GS: stack cookie、variable recording、#pragma strict_gs_check
2.3 GS绕过方法与实例(猜测/计算Cookie、覆盖SEH、覆盖虚函数指针)
2.4 SafeSEH
SafeSEH:SEH handler validation、SEH Chain Validation
2.5 SafeSEH绕过方法与实例(利用堆地址覆盖SEH、利用未开启SEH保护的模块)
2.6 SEHOP
2.7 SEHOP绕过方法与实例(伪造SEH堆)
2.8 NX/W^X/DEP
2.9 DEP绕过方法与实例(Ret2libc、TEB过DEP、NtSetinformationProcess、
SetProcessDEPPolicy、ROP、SEH绕过等)
3 Win 7+,内存战场大乱斗
3.1 ASLR
PEB TEB、Heap、Stack、images
3.2 ASLR(包括KASLR)的绕过与内存泄露利用(覆盖部分返回地址、寻找未启用ASLR的模块、内存信息泄露利用、堆喷、Systemcall、非分页内存利用等)
3.3堆防护技术
Safe Unlinking、heap metadata cookies、heap metadata encryption
3.4 堆防护的绕过(Safe lookaside lists、堆喷、猜解/计算堆Cookie)
3.5 EMET 4.0到EMET 5.2
DEP 、 SEHOP (NA)、 NuLL Page (NA)、 Heap Spray、 EAF、 EAF+ (NA)、 ASLR、 Bottom’s up ASLR、 LoadLibrary (NA)、 memprot (NA)、 Caller Check、 Simexecflow、 Stack Pivot、 ASR (NA)
3.6 EMET的绕过方法与实例讲解
3.7 CFG机制
3.8 CFG的绕过 (未开启CFG的模块、覆盖返回地址、寻找未被CFG保护的直接调用)
4 未来内存攻防技术猜想
四、参考
本系列源于但不限于以下文章:
《Smashing The Stack For Fun And Profit》
《The Tao of Windows Buffer Overflows》
《Buffer Overflows:Attacks and Defenses for the Vulnerability of the Decade》
《Writing Solid Code》
《Writing.Secure.Code.2ed》
《Bypassing Memory Protections: The Future of Exploitation》
《The Evolution of Microsoft’s Exploitation Mitigations》
《Whitepaper on Bypassing ASLR/DEP》
《Windows Exploitation in 2014》
《Mitigating Buffer Overflows by Operating System Randomization》
《Transparent ROP Exploit Mitigation Using Indirect Brance Tracing》
《Bypassing All of the Things》
《Bypassing Browser Memory Protections–Setting back browser security by 10 years》
《Defending Microsoft Windows against 0-day exploits using EMET ICSJWG-Fall 2012》
《A Brief History of Exploitation Techniques&Mitigations on Windows》
《Instructions of Software Exploitation in the Windows Environment》
《Countering Code-Injection Attacks With Instruction-Set Randomization》
《Invincea and Microsoft EMET-An Exploit-tested Comparison of Invincea FreeSpace and Microsoft EMET 5.0 for Protecting against Web-based Attacks》
《Mitigating Software Vulnerabilities》
《Anti-Exploitation Features》
《Defeating EMET 5.2 Protections》
《0day安全 软件漏洞分析技术》
《安全编码实践之GS、DEP、ASLR》(chengyun_chu)
《细致讲解Buffer Overflow》
《Hello Stack!—-Learning Stack Overflow On Win32》
《软件漏洞及缓冲区溢出》
《Windows NT Buffer Overflow’s From Start to Finish》
《Windows系统下的堆栈溢出》》绿盟安全月刊
《Windows 2000缓冲区溢出入门》绿盟安全月刊