61阅读

减缓温室效应的措施-研究”加固Windows 10的0day利用缓解措施”

发布时间:2018-01-30 所属栏目:技术

一 : 研究”加固Windows 10的0day利用缓解措施”

0x00 前言

在两周前,来自Windows攻击安全研究团队(OSR)发布的关于加固Windows 10对抗内核利用:https://blogs.technet.microsoft.com/mmpc/2017/01/13/hardening-windows-10-with-zero-day-exploit-mitigations/https://blogs.technet.microsoft.com/mmpc/2017/01/13/hardening-windows-10-with-zero-day-exploit-mitigations/

Windows上的内核利用几乎总是需要原始内核读或写。因此OSR报告了Windows 10周年版更新如何加固来缓解原始操作的使用。问题来自与tagWND对象,在内核中表示一个窗口。读了这个博文,我想起了我去年10月份做的一些研究。大约在Black Hat Europe 2016之前两周,我在Windows10周年版更新上面查找利用tagWND对象来原始读写。但是在我准备写些关于我发现的东西之前,在Black Hat Europe上通过窗口攻击窗口的讨论就发表了:https://www.blackhat.com/docs/eu-16/materials/eu-16-Liang-Attacking-Windows-By-Windows.pdf

因此我停止了写作的想法,因为我的发现基本上和他们相同。然而在读了OSR发布的博文后,来自Yin Liang 和 Zhou Li的演讲只能在1511版本上面演示,这个版本不存在新的缓解措施。然而我做我的研究时发现了一些烦人的指针验证,但是发现了一个绕过他们的方式,在当时并没有想到它。现在我确认了这个指针验证就是OSR发布的加固措施,并且他们非常容易绕过,重新带回原始读写功能。

本文将浏览加固的过程,和它的问题,且如何绕过它。下面的分析是在2016年更新的Windows 10版本研究的。

0x01 原始PoC

我将复用来自Black Hat Europe的演讲内容,因此如果你还没有阅读,我建议你现在看一下它。这个演讲的本质是一个write-what-where漏洞的情况,结构体tagWND的cbwndExtra字段可能增长并且允许覆盖内存。因此如果两个tagWND对象紧挨着存放,覆盖第一个tagWND对象的cbwndExtra字段可能允许利用来修改下一个tagWND对象的字段。这些当中有strName,包含了一个窗口标题位置的指针,修改这个能被利用来在内核内存中读写。下面的代码片段展示了如何使用SetWindowLongPtr和NtUserDefSetText来做到这点:

这个创建了一个新的LargeUnicodeString对象和试图在任意地址写入内容。调用SetWindowLongPtr被用来改变窗口名字的指针,并且然后再次恢复它。这个在周年版之前的所有版本可以有效,现在会引起相面的bugcheck:

这个确实在OSR发布的博文中有描述。

0x02 深入挖掘

为了理解为什么会引起bugcheck,我开始调试函数DefSetText的流程。当进入这个函数,我们已经有了RCX存放的tagWND对象的地址和RDX存放的指向新的LargeUnicodeString对象的指针。第一部分的验证如下:

这个仅仅确保tagWND对象和新的LargeUnicodeString对象格式正确。一点点深入函数:

DesktopVerifyHeapLargeUnicodeString是新的加固函数。它使用LargeUnicodeString地址为参数,这个包含了我们通过调用SetWindowLongPtr改变的指针。并且针对Desktop的tagWND对象的一个指向tagDESKTOP结构体的指针被使用。新函数的第一部分是验证字符串的长度是不是正确的格式,并且不还有原始长度,因为他们应该是Unicode字符串:

然后校验确保LargeUnicodeString的长度不是负数:

然后以指向tagDESKTOP的指针为参数调用DesktopVerifyHeapPointer,记住RDX已经包含了缓冲区地址。接下来发生的是触发bugcheck。在结构体tagDESKTOP对象的偏移0x78和0x80处解引用了,这是桌面的堆和大小,比较地址我们试图写操作LargeUnicodeString。如果那个地址不在桌面堆中,则会引起bugcheck。OSR说的加固措施如下:

非常清晰,原始写不再有效,除非在桌面堆中使用,但是被限制了。

0x03 新的希望

不是所有的都丢了,桌面堆的地址和它的大小都来自tagDESKTOP对象。然而没有验证指向tagDESKTOP对象的指针是否正确。因此如果我们创建一个假的tagDESKTOP对象,并且替换原始的,然后我们能控制0x78和0x80偏移。因为指向tagDESKTOP的指针被tagWND使用,我们也能使用SetWindowLongPtr修改它。下面是更新的函数:

g_fakeDesktop被分配的用户层地址是0x2a000000。因为Windows10不采用SMAP所以这是可能的,然而如果这么做,我们能将它放到桌面堆上,因为仍然允许在哪里写。运行更新的PoC来确保校验通过了,并且回到下面的代码片段:

因此另一个调用来做相同的校验,还是tagDESKTOP作为第一个参数,现在缓冲区指针加上最大字符串的长度减1是第二个参数,而不是字符串缓冲区的开始。校验将通过并执行到DefSetText。

当我们继续执行,我们还会引起一个新的bugcheck:

这是因为下面的指令:

因为R9包含了0x1111111111111111,非常清楚是由假的tagDESKTOP对象填充的。使用IDA我们发现:

证实了R9的内容确实来自tagDESKTOP指针,并且是第二个QWORD。因此我们能更新代码来设置这个值。如果设置为0,解引用被绕过。运行新的代码不会导致崩溃,任意覆盖如下:

0x04 总结

总结下OSR确实做了加固措施,但是还不够。相同的方式也能通过使用InternalGetWindowText来作为原始读。

代码如下:https://github.com/MortenSchenk/tagWnd-Hardening-Bypass

 

二 : 浅析全球温室效应原因与减缓温室效应的方法

摘 要:随着科技的不断进步,人类文明的不断发展,一个关于人类生存环境的问题却日渐突出,凸现出来,全球气温的不断变暖,已经给人类的发展造成的一定的阻碍,也影响了大自然的自身调节能力,当然将来地球不适合于人类的生存也是可能出现的结果。本文就温室效应的产生原因和温室效应的后果给以阐述以及提出减缓温室效应的可行性办法。

关键词:温室效应;产生原因;后果;措施
温室效应,是大气保温效应的俗称。大气能使太阳短波辐射到达地面,但地表向外放出的长波热辐射却被大气吸收,这样就是地表与低层大气温度增高,因其作用类似于栽培农作物的温度,故名温室效应。大气环境的变暖无疑会使全球气温升高,以至于产生融化极地冰川,从而导致海平面上升,陆地面积减少,甚至是物种的减少,人类的灭亡等等后果。面对这样的严峻形式,本文就以减缓温室效应为目的,给以部分可深入研究的方法。
一、分析温室效应的影响因素
从现有的科技水平看,温室效应的主要影响因素为以下几种:
1.二氧化碳(CO2)
据相关研究表明,在大约38亿年前大气中的CO2的浓度约为300cm3/m3这样一个动态平衡的状态,但是在工业革命之后CO2的浓度在逐步上升,特别是在上世纪50年代中叶至60年代中叶,CO2浓度为316cm3/m3,80年代至90年代中叶,CO2的浓度竟增至354cm3/m3。递增幅度呈阶梯式增加,并且递增幅度在不断增加。
2.甲烷(CH4)
大气中的甲烷含量一直很少,主要来源于动植物等腐殖质的残骸中,但是在人类的发张过程中注意CO2的程度似乎比CH4的程度更大,但是以单位量计算CH4对空气的加热率是CO2的58倍,这说明CH4的温室效应比CO2的温室效应更明显,并且CH4在全球气温变化过程中起着重要的作用。
3.氟氯烷烃(CFCS)
CFCS在自然界中自然存在的形式很少,也就是说全部来自于人工合成,所以CFCS对于大气的影响就是近几十年的事情,但是对大气的影响程度和对大气臭氧层的破坏程度远大于以上两种气体,仅仅就C2F5CL和CF3CL而言,在大气中存在的时间长达400年,另一方面对于大气的温室效应的“贡献”特别大,就和CO2相比,其对空气的相对加热率是CO2的几百倍,甚至是几千倍。换句话说,这类物质对于大气的温室效应不(www.61k.com]仅仅是影响很大而且影响时间长。
4.臭氧(O3)
在人为因素的影响下,对于大气中的不同高度的O3都在发生不同的变化,总体来讲O3的浓度在减少,对流层的O3相对增加,平流层的O3浓度相对减少,而O3浓度的减少,更减少了对于太空中紫外线的吸收,从而导致到达地面和低层大气中的紫外线光强度增加,致使地表温度升高。
对于其它因素比如氧化亚氮、水汽、火山爆发、地球自转速率、大气污染、河流水库萎缩、冰山后退、人口因素,等等都会对环境的变化甚至是变暖都有不同程度的影响。
二、分析温室效应的后果
1.全球变暖,气候转变
面对着温室效应的日益加剧,以至于影响到气候。自工业革命以来,现有的自然资源大量消耗导致CO2的急剧增加,据相关资料全球平均温度比1000年前上升了0.3~0.6℃。据联合国机构预测,由于现有的情况在不断进行,到大概2050年全球平均气温将上升1.5 ~4.5 摄氏度,到那时可能有些地方将不再有四季。
2.对生物物种的影响
由于温度的持续升高,南北温带气候区将向两极移动,从而引起物种的迁徙,但是物种的变化和迁移速度远远落后于人类对于环境的改变,因此会造成大部分的物种走向灭亡。据英国生态学和水文学研究中心的杰里米?托马斯领导的一支科研团队在最近出版的《科学》杂志上发表的英国野生动物调查报告称,从1600~1800年间,地球上的鸟类和兽类物种灭绝25种;从1800~1950年地球上的鸟类和兽类物种灭绝了78种。据统计,全世界每天有75个物种灭绝,每小时有3个物种灭绝。
三、分析温室效应的发展对人类环境的影响
1.气温变化引起海平面上升,极地冰川融化
气温的变暖有两种过程会导致海平面上升,一是:海水受热体积膨胀使海水向大陆蔓延;二是:极地冰川和高峰冰川融化使地球上水体总量增加,从而导致大陆面积减少。2007年联合国政府间气候变化专门委员会的报告预测,如果海平面上升1米全球的大陆面积将减少约1/5,也就是说人类的生存空间减少,人类的粮食来源减少,将直接威胁到人类的生存环境。
2.人类健康的影响以及威胁人类的生存环境
由于太空中臭氧空洞的出现,以至于紫外线照射加强,从而对人类的健康造成影响。一方面,若臭氧减少1%,①皮肤癌患者增加6%;②损害眼睛,提高了白内障患者的发病率;③削弱了人的免疫系统,增加了传染病患者。再一方面,若臭氧减少1%,①大豆减产1%,②渔业量减少,若臭氧减少10%,紫外线强度增强20%,将会在15天内杀死水深10以内的鳗鱼幼鱼。③破坏森林,破坏了核糖核酸改变了遗传物质。以上两个方面都直接威胁了人类的生存条件。
四、结论
随着人类的不断发展,大气中的二氧化碳,甲烷,氟氯烷烃,氮氧化合物,粉尘等气体的浓度也在不断的增加,致使空气中吸收热能的分子量在不断增加,而保护地球的臭氧层却在不断的减少,为此提出几点建议:
①在法律上制定相关的法律措施,用以限制二氧化碳的排放提高排放二氧化碳的标准,禁止氟氯烷烃的生产和使用,针对甲烷等可重复利用的气体,提高其重复利用率,避免可用气体的浪费;②在技术上,改进生产方法,提高生产效率,建立鼓励开发新能源的相关政策,进行新能源,清洁能源的大面积使用,对于已经进入空气中的有害气体,发展有效科学技术进行吸收;③加强对森林和湿地的保护的同时加强对动物的保护,以个人为单位进行对于大自然的保护,共同保护这个可以让人类生存的环境。
参考文献:
[1]王绍武,近百年我国及全球气温变化趋势,气象,1990年第02期
[2]尹荣楼,王玮,尹斌,编著.全球温室效应及其影响.北京:文津出版社,1993
作者简介:
刘玉庚(1988.10~)男,毕业于河北地质职工大学地质系,主要从事雨地质学、水文学。

本文标题:减缓温室效应的措施-研究”加固Windows 10的0day利用缓解措施”
本文地址: http://www.61k.com/1154911.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1