发布日期:2017-06-22 13:22:51 +0000
2003-2004年研究的方向主要是一些系统机制与攻击利用技术上的研究。03年除了分析了WINDOWS认证过程与SMB协议外,主要的一个工作就是做了很多WINDOWS堆的分析。WINDOWS的堆除了前人分析出来的CHUNK结构和FREE链表外,整个堆的管理也是非常有趣的,如堆节的管理,扩展后的回调函数,堆块的融合过程,LOOKASIDE表。利用一些堆的特性,可以实现一些很难利用的堆溢出的利用,当初曾准备过一个议题,就是针对当时出的一个很难利用的堆溢出,利用堆的融合时的操作,巧妙地绕过这个限制实现利用,不过最后还是没找到合适的场合讲。之后,微软逐步增强了对堆上面的保护,WINDOWS 2003 SP1首次增加了链表一致性的检查。2003年的XCON,我的议题是《WINDOWS 2003堆保护的饶过利用》就是针对当时WINDOWS 2003 SP1检查机制不完善,只针对摘链表做了检查,对插入链表没有做检查,攻击者可以伪造堆头构造释放,在插入链表时绕过保护。并且提出了将利用堆栈伪造符合条件的思路,可以将堆溢出转化为堆栈溢出的方式,之后沿着这条思路美国的Matt Conover(shok)找到了更好的方法,通过触发LOOKASIDE表使用形成天然的符合条件的方式,可以获取把任意内存当作一个堆CHUNK分配给用户任意使用来达到利用。MATT是安全领域的传奇少年,10几岁时就写出了的世界最早的堆溢出原理文章。在堆溢出领域研究非常深入。
2004年,我的研究重点先是转到WINDOWS内核远程溢出上,这一块以前全世界都没有人公开发布过相关的技术。正好赛门铁克的个人防火墙出了一个WINDOWS内核的远程溢出,之前我对内核也没什么接触,搞内核的溢出利用确实需要对内核很多机制有深入的了解,这一块,得到了科技师傅的大力帮助和支持,遇到对内核机制不了解的地方,科技就象一个活字典帮我解答一些疑难问题,终于成功实现了WINDOWS内核缓冲区远程溢出的稳定利用,在XCON上公布了WINDOWS内核远程利用的关键技巧但是没有公布代码。也被赛门铁克的报告里认为是世界上首个公布WINDOWS内核缓冲区远程溢出利用技术的演讲。这个演讲之后被SOBEIT分析研究做了改进公布出了代码。
这时我的兴趣逐步转向了漏洞挖掘,在这之前,漏洞挖掘基本靠人逆向分析源代码,比如yuange就是大家公认的肉眼挖掘机。2004年前我发现的几个安全漏洞都是靠很长时间协议分析和手动测试,逆向分析,花了很多时间才分析到,觉得这样找安全漏洞效率太低下。2003年SKIPE工具第一次把模糊FUZZ的思想引入了漏洞挖掘,取得了很不错的效果,但是SKIPE毕竟只是个简单的工具,还是很难有效去找更多安全漏洞。我当时就想,如果实现一个由异常监视,模糊器和自动化测试模块组成的框架,应该就能让测试程序自己去找安全漏洞,多配一些机器,找寻安全漏洞的效率会高很多。于是和科技师傅一起深入探讨了一些WINDOWS异常的表现,处理的机制等技术问题后,然后我写出了个原形展示给科技师傅看,科技也很感兴趣,又提出来可以做自动模拟键盘和鼠标的功能,于是按照样本模糊器策略,异常监控,自动化实施组成的FUZZ框架很快成型,我和科技马上投入使用,效果非常显著,在我们测试的头两星期,就找到了一批微软产品的安全漏洞。于是我们整理出来3个,我发现的2个,科技发现的1个。发信给微软负责接收漏洞的邮箱。意料之中过了2周,没有任何响应,于是我们发布给漏洞公告的专业组织CVE,等CVE确认之后,这时微软还是没有什么响应就公布了出来。自然又引起了微软的一通公告式的指责。但我觉得作为我们安全厂商已经做到自己的义务了,主动联系你但你没响应,这样我们也是先提交CVE再公布的。后来当时的微软安全主管ANDREW CUSHMAN和我联系时又提及此事,我告诉他我们写了漏洞报告给微软,但是微软直到现在也没给我们回复过。他回去让人去查接受漏洞报告邮箱,果然找到了我们提交的报告,还没人打开阅读过。他向我表达了歉意并表示会整改此事,之后微软对来自中国的安全漏洞报告的响应速度就及时了很多。这几个漏洞中,值得一提的是ANI的整数溢出触发堆溢出的利用EXP,整数溢出触发堆溢出后由于拷贝的数据是整个表达范围的长度,注定都是会触发异常的,WINDOWS在堆栈之下可以利用SEH来在触发异常时获得控制权,但是在堆溢出中就缺乏这样的一个控制通道,而且堆被破坏之后很容易异常。但是在IE下面,攻击者存在很多可以控制堆内存布局的手段,这个就EXP就是生成多个HTML元素,利用HTML元素在堆上面的对象包含了大量函数指针,而且这些函数指针会被多线程例程调用,这样就有很大的几率在异常之前获得控制。这么多年来,微软产品的安全获得了足够的改进,但在IE上面,由于攻击者可以借力的渠道太多,而且大量流行的第三方的控件的机制和代码质量难以约束,IE的安全问题还是非常严峻。
方兴,原翰海源创始人,现任阿里巴巴资深安全专家,作为国内漏洞挖掘领域最顶尖的黑客,他被更多人所熟知的则是他的别号:flashsky(闪空)。他是数百个高危级安全漏洞的发现者,而关于他的故事,最著名的莫过于2003年由他发布的微软史上最为严重的LSD PRC DCOM漏洞,后者直接导致之后“冲击波”病毒在全球范围内疯狂肆虐。
鼹鼠看看推荐语:
微软不要小看人。不要忽视东南亚!