千亿国际娱乐_千亿国际电子游戏平台_千亿国际电子游戏官网

您现在的位置:新闻首页>国内新闻

纯干货:微软漏洞中国第一人黄正——如何用正

2019-02-28 16:56编辑:admin人气:


  2016年,这个信仰“技术可以改变世界”的低调黑客大牛以一己之力挖掘无数浏览器漏洞,创下了排名微软MSRC2016年度黑客贡献榜中国区第一(世界第八)的壮举。

  从一个安全开发工程师华丽转身,成为安全研究员,黄正最终站在了中国浏览器漏洞挖掘的顶峰。本期硬创公开课,我们将会请到黄正为雷锋网宅客频道的读者童鞋们奉献一场纯干货——如何用正确的姿势挖掘浏览器漏洞。

  从上千万行代码中,精准地找到那个微小的漏洞,恰如站在万里之遥,拉弓搭箭。正中靶心。

  以下,是雷锋网宅客频道(公众号:宅客频道)诚意奉上的公开课全文及完整PPT。

  我是百度安全实验室的黄正,在百度参与过网页挂马检测、钓鱼欺诈检测、病毒木马分析、伪基站检测、泛站群打击、漏洞挖掘和漏洞利用等。

  在百度做恶意网页检测相关的开发工作,可以说是一个职业“鉴黄师”,其实“鉴黄”是一个非常有挑战的事情,每天要检测几亿/几十亿的网页,怎样设计存储、调度、检测算法,才能在有限的服务器、带宽,在有限的时间内检测完,还要去保证检出率和误报率。

  所以恶意网页检测是一个比较偏工程的方向,我呢还是有一颗黑客的心,还挑战一些新的安全技术方向。想去挖漏洞,所以在早期组建安全实验室团队时就加入了X-Team,从安全开发工程师切换到做浏览器漏洞挖掘,今天给大家分享的议题是浏览器漏洞挖掘,希望大家能有所收获。

  今天先给大家科普一下浏览器的一些基础知识,再回顾看一下浏览器漏洞类型,重点讲怎么去做一个Fuzz系统,以及分享一些我们曾经发现过的一些漏洞POC,最后再分享一下怎么给微软、GOOGLE、苹果报告安全漏洞。

  首先,浏览器是干嘛用的。大家都知道是用来看网页用的,再往底层一点呢,它是把html代码按照一定的标准绘制成在屏幕上肉眼可见的图像用的。

  比如,像这段html代码,浏览器会按照一定的标准去把他变成一张肉眼可见的网页:

  那么浏览器是怎么把Html代码渲染成网页的呢?来看一张浏览器渲染引擎的结构图:

  DOM树是把HTML文档呈现为带有元素、属性和文本的树结构。比如以下HTML将被解析成如下DOM树:

  使用DOM给JS开放的接口,可以用用JS操作DOM对象的属性。这里列举一些常见的DOM方法:

  调用这些DOM方法,对DOM的修改,最终会体现在绘图上,也就是肉眼可见的网页变化。DOM的标准也在不断在升级:

  浏览器是一个很复杂的工程,不仅要去支持不同时候的DOM标准,而且不同的浏览器为了让解析的速度变得更快,让用户使用得更方便,在不断地增加新功能。从13年的新闻来看,Chrome浏览器的代码应该至少有1000万行。

  代码越多,开发的人员越多,就容易出现安全问题。接着介绍一下浏览器的漏洞类型,我自己的分类方法,不一定合理。

  比如老的IE浏览器可以用JS检测是否存在某文件。这样会泄漏用户是否安装了杀毒软件,以便进行下一步操作。

  有些信息泄漏漏洞会泄漏内存的信息,攻击者可能使用泄漏的信息来绕过操作系统的保护机制,比如:ASLR、DEP等等。

  还有一类信息泄漏漏洞:UXSS,通用跨域漏洞。这种跨越域隔离策略的漏洞,可以在后台偷偷地打开其它域的网页,把你在其它网站上的数据偷走。

  内存破坏漏洞又可以细分为释放后重用漏洞(UAF),越界读写漏洞,类型混淆漏洞。越界读写漏洞比较神,他也能用来泄漏内存信息,所以越界读写漏洞非常好利用。

  比如搜狗浏览器浏览网页可下载任意文件到任意位置,重启之后,电脑可能被完全控制。百度浏览器可静默安装插件,且存在目录穿越漏洞。解压缩到启动目录,重启之后,电脑被完全控制。

  我们曾经抓到一个打DDoS的嫌疑人,他控制了200个肉鸡,接单打DDoS。这200个肉鸡每天给他创造2000块的收入,如果有一套组合的浏览器0day+一个大站Webshell,一天上千的肉鸡非常简单,日入万元不是梦,哈哈。。。

  国产浏览器的漏洞大多是人工测试出来的,用自己的经验,逆向分析,手工测试。

  有一些开源的框架可以学习:Grinder、Fileja、funfzz等。我们来看一下一个Fuzz框架是怎样实现的。

  简单地说就是控制浏览器去加载你生成的测试样本,捕捉导致浏览器崩溃的样本,传回服务器作下一步分析。今天给大家分享一个最简单的Fuzz框架,一行代码,启动调试器打开样本生成器网页:

  一个最简单调试器,十几行代码,pydbg是windbg的一个插件,使用它可以编程控制windbg。

  观察windbg收到的调试事件,如果是退出进程事件,那么把windbg退出(同时chrome进程也退出了)。同理,如果windbg收到的调试事件是读写内存异常,那就是一个有效崩溃。

  这时候你只需要执行windbg命令r,k,把结果传回服务器就完成了一个崩溃信息的收集了。

  要想挖掘浏览器漏洞,推荐大家去分析以往浏览器的漏洞,收集一些POC,这样能更好地理解浏览器漏洞形成的原因以及调试分析方法。来看一个典型IE漏洞的POC:

  我们需要去构建fuzz生成算法用的字典,通常可以写爬虫到MSDN、MDN、W3C去抓取,还有可以用IDA分析mshtml找隐藏的属性键值,还可以看浏览器源码的头文件。我们需要去构建全面的字典,去覆盖浏览器的各个特性。

  再来一个生成算法,用一个CSS生成算法来举例,使用刚才收集回来的字典,随机生成测试用的CSS。

  如果只是这样随机生成,跑一年有可能会出来一个有效的崩溃,这是个很可悲的事情。为什么????

  一是因为测试的总样本集非常大,比如一共有110个html标签的类型,如果我们随机创建10个,那就是110的10次方种可能,这是个超级大的数,大到你可能永远都跑不完,二是前辈们可能10年前就跑过了,能发现的问题早就报告修复完了。

  我们需要新的样本生成策略,去发现别人发现不了的漏洞。曲博在2014BlackHat分享了一个有意思的故事:

  曲博他老婆的iPhone屏幕坏了,让曲博修,他拆开后,装上了新屏幕,差不多快好了,发现多了两个螺丝,摄像头不见了……

  应用到fuzz这块,有两个策略,去做相反的事情,去改变初始的状态。比如:

  我们首先想的是把调用关系做得非常深,制造非常复杂的回调场景。比如以下这个POC,我们多次在事件响应函数中去触发另一个事件响应函数,最终导致解析出错:

  CLSID:8856F961-340A-11D0-A96B-00C04FD705A2应该是一个浏览器控件,浏览器控件是有自己独立的前进、后退功能的,如果与父页面的前进后退功能混用,会导致问题。

  很少看见有人做fuzz的时候会随机的用一些unicode字符串来测试,我们在这块收获了EDGE一个越界读漏洞。

  现在JS引擎的内存破坏漏洞越来越多了。我们在这块也挖到不少漏洞,由于目前还都是0day的状态,所以不拿我们自己发现的POC举例,拿一个GoogleProjectZero分开的POC给大家看看长什么样:

  现在很多人生成的fuzz样本都是用JS生成的,但是对HTML的初始状态关注并不多,比如我们在初始状态时加了N个复杂的表格嵌套,也发现了不少的问题。

  表格相关的各种元素都有特有方法,比如insertRow、moveRow、deleteRow,还有表单的特有的属性和方法,如果跟CSS结合,那么渲染起来就更加复杂了,比如下面这个POC:

  好了,我的分享就到这里了。以下是引用的一些参考资料,大家也可以学习一下。

  大部分都是自己写代码写出来的,没有特别的工具,比如为了方便我们调试,我会写一个工具来自动配置启动浏览器:

  不知道是否回答了这位朋友的问题,其它的工具用的是windbg,VS,python,php等。都是用这些造出来的,没有用现成的像sqlmap,burpsuite那样的工具。

  其实11秒这个数字不重要,关键是攻破了,360牛人多、积累多,从上次他们的博客可以看出,手里有大把的0day,攻破chrome需要很多个漏洞组合,不止是浏览器漏洞,确实是能力超强啊。

  雷锋网宅客频道读者:深度学习与网络安全(比如反APT,漏洞挖掘等)有没有很好的结合点?

  这个百度已经有了一些尝试了,百度手机卫士移动端病毒检测使用百度开源的机器学习平台paddle对病毒样本的特征进行深度学习,检出率在国际权威排名中已经多次世界排名第一,感兴趣的可以看一下blackhatEurope2016王磊的议题。

  另外,百度安全实验室也在应用机器学习算法来做撞库检测、支付欺诈检测,效果都很不错,欢迎来交流。

  发现的第一个是释放后重用漏洞,我可以详细说一下我从安全工程怎样革自己的命要搞漏洞的,并最终搞出来的。

  成立安全实验室后,我给自己定的KPI是半年内,要搞通浏览器漏洞分析方法,搭建浏览器Fuzz,并且挖出一个浏览器漏洞。

  压力大啊,没有人带我,完全自己搞,每天都在不断地学习,不停地尝试修改生成算法,不断地去网上爬资料找POC,3个月过去了,一个漏洞都没发现,我想这下完了,年终奖要没了。后来终于在使用setTimeout来改变location发现了第一个可以稳定崩溃的POC。并且是可利用完全没有任何保护机制防护的,下一步就是去精简样本,当时很土,手工慢慢删,最终受不了了写了自动化精简样本的脚本,然后就提交了,完成了半年发现一个漏洞KPI。

  雷锋网:很多同学都想成为黄正老师一样的漏洞挖掘大牛。对于这些同学,黄老师有什么干货的建议吗?

  别停留于想法,赶紧去做,哈哈,网上资料多得是。看看我打印的学习资料,这还只是一部分:

(来源:未知)

  • 凡本网注明"来源:的所有作品,版权均属于中,转载请必须注明中,http://www.watchesandboxes.com。违反者本网将追究相关法律责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。





图说新闻

更多>>
知名圈子人李帅与李东生贾跃亭共上新闻热点头

知名圈子人李帅与李东生贾跃亭共上新闻热点头


返回首页