文章目录

  • 前言
  • 从安全工程师到漏洞第一人
  • 从 Pwn2Own 到科恩实验室
  • 独特的Fuzzing算法
  • 总结
    • 参考

前言

科恩实验室的负责人吴石,全球漏洞发现第一人。

“两次成功破解特斯拉自动驾驶系统,甚至可以在远程无物理接触的前提下操控汽车,将特斯拉的中控大屏和液晶仪表盘更换为自己实验室的Logo,并收到马斯克亲笔签名的致谢信;远程破解宝马多款车型;连续五年参加国际顶级黑客大赛Pwn2Own并获得十六个单项冠军,斩获三个Master of Pwn称号,创造了世界最好成绩。”
在2010年6月的一次安全更新中,苹果公司针对iPhone操作系统发布了64个新补丁,在这之中,有15个漏洞都是由吴石发现的,而由苹果内部研究人员发现的漏洞只有6个。美国《福布斯》杂志在一篇文章中写道:“自2007年以来,这位家住上海的35岁研究员已经发现并报告了IE、Safari和Chrome等浏览器中存在的100多个严重漏洞……这表明吴石一年汇报给ZDI和iDefense的漏洞比全世界任何一个研究人员都多。”
这一切,都源自腾讯科恩实验室掌门人–吴石之手,曾经一段时间内腾讯唯一的T5科学家。腾讯一共就9名T5,9名T5都分布于这些实验室和研发中心。分别是优图实验室贾佳亚、量子实验室张胜誉、多媒体实验室刘杉、玄武实验室于旸、科恩实验室吴石、AI Lab和Robotics X Lab实验室张正友,AI Lab实验室的俞栋和刘威,服务器研发中心的赵岩。腾讯职级体系升级后,张正友成为唯一的17级,16级以上只有三位,吴石是其中之一。
我在网上搜索枯肠,试图勾勒出这位中国顶级白帽黑客的传奇人生,但相关的资料比较匮乏,大多数属于新闻式的报道,对技术也只是只鳞片爪的笼统描述,缺乏对吴石漏洞挖掘细节的揭示。也没找到相关的论文,无奈之余,为了方便国内有志于安全方向的人士参考,也为了日后我进一步探索,还是结合网上一些材料,整理出本文。如有纰漏之处,大伙不吝赐教。

从安全工程师到漏洞第一人

吴石,四川人,据说初二之前吴石的数学非常差。但是那一年,他遇到一位很好的数学老师,从此对数学的兴趣一发不可收拾。高二拿了全国数学竞赛一等奖,后来于1994年考入了复旦大学数学系。

1996年复旦有了互联网,那时数学系机房里清一色的DOS系统,大家拿着软盘上机,软盘里装有Pascal程序。正是借助于Borland公司出品的Turbo Pascal,这些学子们对程序开发产生了兴趣。机房机器里除了少量的游戏,就是文字游戏MUD了。那些会装机,会装软件,会diskedit的同学都被视为高手。上了名校的吴石也和在座各位一样打游戏,但不是帝国时代和红警2,而是叫做“MUD”。但人家玩着玩着就黑进了游戏的服务器,并且成功修改了自己的游戏数据,从此走上了走漏洞之路。你玩王者只想着喷队友,别人玩游戏自己开挂,这就是差距啊同学们。MUD,一款上古时代的多用户虚拟空间游戏,整个大三吴石几乎都在搞计算机,他去软件公司打工,以至于几乎没有上一节课,但就是这样人家也就挂了一科。吴石学的是数学里最难得纯数学-复旦基础数学专业,基础数学里有几门公认的天书一般的课程:《拓扑学》、《泛函分析》,每次期末考试,一共就五道题左右,满分100分,而只有第一道和第二道题较容易一些,但也不是白给,后面几道题基本上是给优秀学生准备的,所以稍有不慎就会挂科。心思不在数学上的吴石如履薄冰一般度过了数学系的四年大学生涯。虽然没有潜心研究数学,但数学课程中那些抽象的思维方法,建模思路,还是给吴石今后的计算机研究以深刻的启迪。

1998年大学毕业后,吴石到广东东莞的一家企业工作。2000年,吴石再次回到上海,去复旦大学的一家校办企业复旦光华网络有限公司做网络安全的防护工作。“那时我的工资只有4000多元,当时莘庄的房价是每平方米2000多元。后来我的工资涨到1万多元,房价都涨到每平方米两三万元了。” 当2006年中国股市开始暴涨时,吴石当时仍在这家小型IT公司任职,其感觉当时的职业就像是一艘正在下沉的船,并因此感到绝望之极。当时的薪水甚至难以让吴石养家度日。

2006年年初,吴石从那家IT公司辞职,自己成立了一家小公司,这是一家基于P2P文件共享技术公司。他做了一款可以识别正常流量和p2p流量的系统,可以帮助运营商清洗迅雷和电驴类软件对带宽的占用。整整九个月,这款软件的销售额为“0”。创业的九个月时间,总收入是五千块,这五千块还是吴石给别人做安全服务赚的,和公司业务没关系。不能说穷途末路,但是是坐吃山空。“当时在业余时间帮企业找网络方面的问题,一共做了两单生意,每单能赚十几万元,而且主要干活的人就是我,这样算下来,跟一年的工资都差不多了,而且还不累。”但公司开了,客户没了。但是当一家大客户拒绝为一个主要项目支付报酬时,吴石的合作伙伴找也就离职而去,这样其公司也遭遇破产。吴石说:“运营这样的公司要靠关系。客户先是包给大公司,大公司再转手包给小公司,有关系的人才能拿到生意。之前在校办企业干的私活儿也是靠同事的关系。”商业社会用这种方式对这位技术大牛做出了残酷的评价。

无事可做的他开始潜心研究网络技术。“那时我注意到国际上刚刚出现的Fuzzing漏洞检查方法,觉得它一定会流行起来。像微软的Office软件,它内部有几千台机器都在运行着Fuzzing的程序。”Fuzzing对代数功底要求很高,这恰恰是吴石最擅长的。之后,吴石开始组建一家安全咨询公司,并实验他多年前在复旦大学读书时就曾设想的一个fuzzing方法。他发现了微软的一些安全漏洞,并且直接报告给微软。在这之后,他才从一位朋友口中得知了ZDI这样“购买漏洞”的组织。从此以后,吴石就成为一名全职漏洞猎手 。
  2007年8月,吴石带着他自己的P2P文件分享技术北上北京参加一个网络安全论坛,虽然推销失败,但吴石听到了新鲜事儿。“有人说,在安全技术最好的网站XFocus上发布了一个漏洞,后来真的收到了网站给的奖金。”这让吴石心头一动。
  一次,吴石偶然提交给微软的一个漏洞。这是一个非常高质量的漏洞,可以实现系统提权。出乎他意料的是微软居然提供了奖励——要知道在当时的环境下,国内很少有公司能做到这么体面的事情。伴随微软致谢函而来的,还有著名的漏洞团队 ZDI。他们一开始向我询问一些这个漏洞的细节,末了非常遗憾地跟我说:“这么高质量的漏洞,应该给我们,我们会给你钱。”吴石抱着怀疑的态度向他们提交了另外一个漏洞,他怕 ZDI 像国内的厂商一样:先拿到漏洞详情,再告诉对方这个漏洞不符合要求,我们不要。吴石为了研究语音编码程序,曾比较了QQ和MSN的视频编码程序,“当时就发现了MSN的一个视频编码的问题。”吴石回复了ZDI的请求,ZDI进而鼓励他,以后可以将发现的漏洞卖给ZDI专门做收购、分析的项目小组。经过一个月的忐忑等待,吴石的账户里多了三千多美金。

“然后我用了一个月时间就找到了第二个漏洞。 当你没饭吃的时候,你的动作会很快的。 ”从这一刻起,他再也不是那个致谢函就可以打发的白帽子,而成为了一个佩戴着智慧之矛和尊严之盾的赏金猎人。

热情被点燃的吴石开始着手用更通用的方法挖掘漏洞,那个在他脑海里盘旋数年的漏洞数学模型终于被付诸实施。连续三四个月的时间,除了每天下来两次买盒饭,睡几个小时觉,他所有的时间都在搭建这套系统。也许在冥冥之中他已经能感受到,这个系统可以改变网络安全的历史。吴石将他发现的漏洞大多数卖给了像Zero Day Initiativ(简称ZDI)和VeriSign这样的美国网络安全公司,这些公司会将这些数据运用在它们的安全产品之中,并且将数据发送给受到影响的软件厂商。
“刚开始每个漏洞只有两三千美元,现在稍微涨了一点,大概有三四千美元。但也不是所有的漏洞都能卖得出去,倒不是我发现的漏洞价值大小的问题,这要看ZDI有多少经费,如果当年的奖金经费已经用得差不多了,他们就不会再继续收购我的漏洞,基本上每年卖给他们10个左右。”在吴石看来,ZDI的收购价格是目前最合理的,他另有一部分卖给了VeriSign公司,“但他们要求多,要求提供能够成功攻击的代码,这还要花费我三四天的时间,他们给的价格也不具有竞争力。”

还有一些剩余的漏洞找不到买家,他就干脆直接发送给出现漏洞的厂商。“Google原来只给500美元,不过现在为了鼓励人们发现了漏洞直接跳过安全公司提交给他们,将奖金提高到3000美元了。苹果过去压根儿不给钱,现在每个漏洞在两三千美元。”吴石认为出售给出现漏洞的企业是最理想的选择,“感觉这比卖给安全公司更加合法。”

跟国内的IT企业做买卖让吴石觉得不划算,“腾讯、迅雷、搜狐也都跟我联系过,希望我帮他们给软件找漏洞。”吴石开价50万元,吓走了这些企业,“其实他们让我做的工作很简单,但是比较繁琐,他们企业的安全人员水平还是和国外的有很大差距,一个程序,我写得清清楚楚,他们还是会不停地问。”
  
  这种寻找漏洞的经历已经颇具收获。ZDI从吴石那里购买了50个漏洞,每个价格至少5000美元,而iDefense也偶尔支付过1万多美元,购买了少量的漏洞。吴石没有透露至今为止在此方面的具体收益数量,但简单计算即可知道,其在此方面的收益应当超过25万美元,这在中国可算是一笔不小的数目。ZDI还为吴石授予“白金 ”奖,该奖项的获得者可以拿到2万美元的奖金,并免费参加在美国拉斯维加斯举行的“黑帽”安全大会。
  
  吴石称其是经过了一系列的工作失败经历之后才在发现漏洞方面实现了突破。在这期间,吴石一个人发掘超过100个Safari的CVE(“Common Vulnerabilities&Exposures”,公共漏洞和暴露)漏洞。他曾创造过单年申报微软漏洞数量全球占比10%、独自发掘15个iOS漏洞的成绩,这个数字甚至比同期苹果自家研究人员发现漏洞(6个)还要多。没多久又提交了数十个漏洞,这甚至超过了微软自家安全团队,就这样,吴石被微软注意到了,微软的一位技术总监直接给了吴石一份Offer。  
2008年,吴石加入微软,从此吴石开始了专业的漏洞挖掘之路。进了微软的吴石火力全开,他从不去微软办公室,每年部门领导从美国飞到吴石家里看他一次,他每年20多个可用漏洞的工作量,累计一个月就能完成,剩下的时间不断改进漏洞挖掘系统。”
“我对这份offer很满意,因为基本不限制我做任何事情,不用坐班,每年 20 多个可用漏洞的KPI只用一个月就能完成,还顺便买了套房”。不断取得瞩目成绩,是否有“飘飘然”过?吴石坦诚地表示:有。“曾经一个月内我连续收到了微软、苹果、谷歌的offer,这是对从业者的极大肯定,”吴石说,“不过这种念头只是一闪即过,因为在一日一变的互联网世界,未知的领域太多了。”

“吴石很强大。他的技术好,基本功很扎实,他发现的漏洞价值也大。”美国VeriSign网络安全公司东亚地区总监周铭这样评价吴石。“我们有一个评测的系统来评判漏洞的商用价值,这跟它的普遍性、普及性、感染力都有关系的,然后给予数额不同的奖金。评测下来,他发现的漏洞级别就比较高。再一个,这个工作有一定的运气成分在里头,有的人,一辈子可能只发现一两个漏洞,你没法预计自己在多长的时间内能发现漏洞。但是,吴石发现的漏洞的确很多。”
  
  ZDI研究经理亚伦·波托尼(Aaron Portnoy)这样评价吴石的漏洞挖掘方法:“这些文件中的相关项目有着复杂的层次结构。他可以改变关系树结构的工作方法,而不仅仅是其中的一个项目。很多人只是Fuzz数据,而他则是Fuzz关系。”
  
  吴石发现的Office漏洞和IE浏览器的漏洞分别有十几个,但更多的是关于苹果Safari浏览器的漏洞。吴石在年终时获得了ZDI颁发的“白金奖”,可以获得额外的两万美元的奖金。

“现在像我这样独立做漏洞挖掘的人越来越少了,因为难以竞争得过大公司。比如微软,他们的安全人员可以拿到内部的文档,同时Fuzzing要求的计算量特别大,大公司机器多显然有优势。”不过吴石对自己的技术相当自信,他说:“单纯依靠企业内部,或者安全公司,总是会有漏网之鱼出现。一个漏洞很可能就会造成上亿美元的损失。2002年的‘红色代码’病毒出现,大企业一半的工程师都跑去接电话,听用户的投诉去了,网络直接堵塞,甚至瘫痪。”

美国VeriSign网络安全公司东亚地区总监周铭说:“在他身上,我看到了另外一面的自己。他自由的生活是我的一种向往。”

的确,习惯了自由自在生活的吴石不愿意为了稳定的收入而委身于大企业。“现在的收入每年在三四十万元,我打算结婚,但还没买房子。现在一座100平方米的房子要300万元。”

从 Pwn2Own 到科恩实验室

2012年,吴石受到几位已离职的微软同事的邀请,开始担任keenteam的技术顾问,这是世界范围内由厂商官方确认发现计算机漏洞数量最多、最了解突破现代安全保护技术的专业安全团队之一。

“我们当时主要是希望找到苹果手机越狱的方法,可惜这个目标没实现,但是我们凭借着当时的研究成果去打了一场 Pwn2Own,拿到了冠军。”

那一年的Pwn2Own,keenteam 攻破了当时苹果最新的iOS 7.0.3,成为国内安全领域的第一个世界冠军。获奖当天,世界知名的安全企业法国Vupen通过推特公开祝贺(Vupen曾在多届类似赛事中拿到冠军),本次比赛受到了中国、美国、日本、英国、法国、韩国等媒体的高度关注,同时引起了腾讯的关注。2014 年,keenteam 被腾讯收购。
KEEN Team 走进了吴石的生活。王琦、陈良、方家宏一众微软同事建立的这家公司,在2013年之前经营着并不赚钱的企业安全业务。

受邀加入公司的“漏洞批发商”吴石建议,可以用手上的漏洞去参加由 ZDI 举办的著名黑客大赛 Pwn2Own。话虽如此,但是包括吴石本人在内,几乎所有人都没有漏洞利用的经验,“奉旨”编写漏洞利用程序的陈良也满心忐忑。

然而,数学再一次拯救了吴石,还有 KEEN Team。

UAF 漏洞(Use After Free),是系统漏洞的一个类型,这种漏洞通过对两个函数进行操作,某个数值在第一个函数里被释放,却在第二个函数里被引用,由此造成崩溃,闪现出那道漏洞之门。

2013年8月的一天,吴石突然拍案而起。他发现了一种数学规则,可以让这种 UAF 漏洞大规模地被产生;而诸多的 UAF 漏洞,有一定比例可以在特殊情况下被利用。

当时除了我们还有一个老外在研究同样的利用方式,但是这种实现并不容易,他最后以失败告终。当陈良写出第一个应用实例的时候,我就知道这个事能成了。公司当时很穷,但我们还是在路边吃了烤串来庆祝。

吴石紧急找到了国内著名黑客会议Xcon的掌门人呆神,在会议开始前十几天要求“加塞”来演讲这个重大的成果。KEEN Team 由此声名鹊起,第二年全世界的黑客用类似方法掀起了挖掘 IE 漏洞的狂潮。

怀揣这样的“硬货”,团队决定参加当年11月举办的 Pwn2Own Mobile。甚至出乎自己的意料,他们用两种不同的姿势搞定了 Safari,拿到了数万美金的奖金。

就在团队回国不久,腾讯向他们伸出了橄榄枝。至此,包括吴石在内的 KEEN Team 的核心成员加盟腾讯,成立了科恩实验室。

独特的Fuzzing算法

吴石之所以能挖这么多漏洞,与他自己发展出的一套Fuzzing方法有关。Fuzzing技术应该是安全行业里非常重要的一个里程碑,它用构造大量样本并执行测试、捕获异常的思路,代替了直接逆向看反汇编代码挖漏洞的思路。而吴石在这方面的造诣是独步全球的。

最开始,我喂给这个程序随即的数据,看它是否会崩溃。然后,我会详细学习程序语言,例如 JavaScript,根据程序能听懂的语言,构建一些奇怪的数据。第三步,我会分析程序的处理过程,把输入数据可能产生的情况分类最后,我会根据程序的结构对输入的数据做变化,让它尽可能地覆盖奇葩的运行状态。

面对不断涌来的奇葩数据,程序也许会招架不住,内心是崩溃的。这个崩溃的瞬间,正是吴石伺候已久的时机。在这个瞬间,赛博空间里突然闪现出一扇新的门。吴石打开它,从代码的海洋中猛然浮起,成为这个世界的上帝。
这种漏洞的原理是通过对两个函数进行操作,某个数值在第一个函数里被释放,却在第二个函数里被引用,由此造成崩溃而出现漏洞。就在诸多顶级黑客束手无策之时,正是吴石灵光一现,发现了一种数学规则可以让这种 UAF 漏洞大规模地被产生,大量的UAF漏洞有一定比例可以在特殊情况下被利用。这个漏洞的挖掘让当时吴石率领的KeenTeam,也就是腾讯安全科恩实验室的前身在圈内声名鹊起。看,这就是“数学之光”,数学在信息安全领域的延展性可见一斑。

需要向软件中输入大批经过修改的文件, 吴石通过即时通讯和电子邮件解释了如何使用一种名为“fuzz方法来收集这些漏洞的使用这种方法时。以便检查哪些文件会导致软件解体。之后再对这些解体事件进行分析,以便了解哪些情况会允许黑客注入代码并控制浏览器。

然后将他抛入ApachTomcat服务器。通过这种方法, 吴石使用他自己的独特算法来生成这些测试文件。就可以获得更快的频率,从而比普通研究人员测试更多的样本。与以往只更改文件中的单一变量不同,吴石表示,方法会更改整个样本,而且能够在进行尽可能多的更改的同时,仍然让浏览器将文件识别为HTML文档。fuzz框架关注的软件架构,而不是细节。吴石说。

ZDI研究经理亚伦波托尼(AaronPortnoi对吴石发现的漏洞进行了研究。吴石不会对他所发现的漏洞进行深入分析。但他认为,这名中国研究员使用的方法可以捕获到其他方法无法发现的漏洞。这些文件中的相关项目有着复杂的层次结构。可以改变关系树结构的工作方式,而不仅仅是其中的一个项目。波托尼说,很多人只是fuzz数据,而他则是fuzz关系。

据ZDI研究部门经理阿伦-波托尼对吴石发现的漏洞进行研究后表示,吴石不会对他所发现的漏洞进行深入分析。但他认为,这名中国研究员使用的方法可以捕捉到其它方法所无法发现的漏洞。“这些文件中的相关项目有着复杂的层次结构,但他可以改变复杂的关系树结构的工作方式,而不仅仅是其中的某一项目。”波托尼说,“很多人只是fuzz数据,而他则是fuzz数据间的关系。”

总结

本文还未写完,诸如吴石的漏洞挖掘模型介绍,如何迭代和优化的,相关算法是什么,以及他使用了哪些工具,需要哪些技能,这些技术人员比较感兴趣的问题还没有找到确切的答案。

参考

  • 吴石大学期间玩的Mud游戏
  • 腾讯科恩实验室官方博客

【安全】漏洞挖掘之王的传奇人生相关推荐

  1. 揭秘三位图灵奖得主Hinton、LeCun、Bengio的传奇人生

    2019年3月27日,ACM(国际计算机学会)宣布,三位"深度学习之父"约书亚·本吉奥(Yoshua Bengio).杰弗里·辛顿(Geoffrey Hinton)和杨乐昆(Yan ...

  2. [华商韬略] 拉里·埃里森(Larry Elison) 的传奇人生

    拉里·埃里森(Larry Elison) 的传奇人生 开战机.玩游艇.盖皇宫,挑战比尔·盖茨,干掉50多家硅谷豪强--全世界比拉里·埃里森更有钱的只有5个,像他这样的硅谷"坏孩子" ...

  3. c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...

    作者 | 绿盟科技格物实验室 陈杰 前言 近年来网络安全形势日渐严峻,国内外都开始对工控安全越来越重视,而工控领域由于常年来对安全的忽视,导致暴露出数量惊人的严重安全漏洞,更为严重的是,相当一部分厂商 ...

  4. 【安全牛学习笔记】手动漏洞挖掘(三)

    手动漏洞挖掘 Directory travarsal / File include(有区别/没区别) 目录权限限制不严 / 文件包含 /etc/php5/cgi/php.ini allow_url_i ...

  5. shodan 渗透测试 漏洞挖掘 一些用法

    渗透测试中,第一阶段就是信息搜集,这一阶段完成的如何决定了你之后的进行是否顺利,是否更容易.而关于信息收集的文章网上也是有太多.今天我们来通过一些例子来讲解如何正确使用Shodan这一利器. 想要利用 ...

  6. ie 打开后端发过来的pdf_某办公软件PDF阅读器漏洞挖掘及Crash分析

    摘要 本文主要讲述如何利用winafl对***pdf阅读器程序进行漏洞挖掘的过程. 准备 winafl.DynamoRIO ***pdf(11.6.0.8537)32位 测试环境:win7 32位.4 ...

  7. 某设备产品漏洞挖掘-从JS文件挖掘RCE

    前言 某次渗透过程中碰到了个设备产品,通过一些黑盒测试小技巧获取目标权限 信息收集 [点击获取网络安全学习资料·攻略] 2000多本网络安全系列电子书 网络安全标准题库资料 项目源码 网络安全基础入门 ...

  8. 【安全漏洞】一次前台任意文件下载漏洞挖掘

    1.起因 日常闲逛,翻到了某后台系统 先是日常手法操作了一番,弱口令走起 admin/123456 yyds! U1s1,这个后台功能点少的可怜,文件上传点更是别想 不过那个备份管理的界面引起了我的兴 ...

  9. 漏洞挖掘 符号执行_简述符号执行

    前言 符号执行 (Symbolic Execution)是一种程序分析技术,它可以通过分析程序来得到让特定代码区域执行的输入.顾名思义,使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般 ...

最新文章

  1. 动态规划-最优二叉查找树
  2. 一个不经意的问题引发的小思考
  3. Linux 软件的安装
  4. 【渝粤教育】国家开放大学2018年秋季 1063t现代货币金融学说 参考试题
  5. LeetCode 1282. 用户分组(桶排序思想)
  6. QML工作笔记-在Row布局中如何进行稍许移动(图片Row布局会遇到)
  7. java final static
  8. [NAACL16]RNN文法
  9. JAVA结构化处理开源库SPL
  10. 【尚学堂】IO流精讲,必学的Java基础
  11. 对QQGame-大家来找茬的辅助工具的改进
  12. 拾方易公众号运营成本低么?
  13. Hive left semi join ,select 和 where中不能出现右表字段/不会生成笛卡尔积
  14. 11 款超赞的 MySQL 图形化工具,好用!
  15. 【前端库】favico.js 浏览器消息提示 【待更新】
  16. 协方差矩阵的齐性检验(接上一篇文章)
  17. 分布式和大数据有什么区别?
  18. 安搭Share爱情人生
  19. react 接入企业微信登录组件
  20. linux 安装php curl 扩展

热门文章

  1. linux命令 ln命令 ln -s命令
  2. Vue3实现将页面转成PDF并下载或直接打印
  3. 二极管ss14测量_开关二极管怎么测量好坏
  4. ASEMI快恢复二极管FR207参数,FR207图片,FR207应用
  5. 抖音关键词排名优化技巧,手把手教你怎样优化抖音关键词
  6. 面试真题纠错(京东、爱奇艺)
  7. 什么是个人热点?安卓手机怎么开启个人热点?
  8. opencv历史BUG
  9. 如何用Excel做一个战斗模拟器(一)升级经验表
  10. Arduino_OLED-0.96游戏机