黑客你怂了,看到这个工具你眼圈红了

品牌
腾讯数码
2018年08月17日 12:05

记一个黑客看了会流泪,白客看了会沉默的工具

文 | 史中

前两天逛知乎,看到两张 gif 图。

2002年世界杯,小罗吊射英格兰门将希曼,球直挂后角,断送了英格兰的世界杯旅程。

十多年后,小罗再次吊射希曼,球却高出横梁。

已经中年发福的希曼伸手一指,仿佛在说:臭小子,你又来?两人相逢一笑,十年恩仇烟消云散。中哥笑着笑着,眼角却有点湿润。

就在准备拂去泪水之时,作为一个科普作者,不忘初心砥砺前行的中哥突然想到了一些有趣的观点,于是一边流泪一边给你们打字。。。

其实我一直觉得,好的球员和好的黑客是一样的

好的球员同时掌握两个技能:不仅能绕过对方防守,还能用极骚的脚法一击致命。

好的黑客也同时掌握两个技能:不仅能找到系统的漏洞,还能用极骚的代码利用这个漏洞,拿下对方的系统控制权。

以防你没 get 到中哥的重点,我用骚粉的字再说一遍:

黑客攻击一个系统,要分两步。

第一步,找到一个漏洞。这相当于小罗各种花式踩单车绕开对方的防守队员;

第二步,利用这个漏洞。这相当于小罗绕开对方的防守队员之后,吊射希曼那临门一脚。

注意,这两步缺一不可。

缺了任何一步,小罗就秒变李毅大帝。

说到这,就该进我们今天的主线故事了。

今天,中哥给你介绍一个“神器”,这个神器可以把“黑客中的李毅”加持成为“黑客中的亨利”。。。没错,就是这么神奇!

朕护球像亨利

Let's ROCK

(0)先介绍主角

邢新宇,邢叫兽是我的好盆友。

虽说是好盆友,但我们从没面基过,因为我在北京,他在宾州(注意,不是山东滨州,是米国宾州,我暂时还没想到有神马好的理由让我跨过大半个地球来他)。

邢新宇 邢叫兽

邢叫兽可不是一般的叫兽,我称他是“网络安全界的爱迪生”。他工作在美国宾州州立大学,每隔几个月,总有一个骚极了的发明问世。比如前两天他就发明了一套“人工智能读心术”,可以读懂人工智能在想什么。。。(如果你有兴趣,可以点鸡下面的链接:《对于人工智能,一万个我爱你,不如一个我懂你》)

他有一位“好基友”,也是我的盆友,叫做 Jimmy Su。此人身形魁梧,力能扛鼎。。。

京东安全 Jimmy Su

Jimmy 是京东安全硅谷研究院的老大,同样是一位网络安全大牛,他的日常是为京东研究反黑客的最新武器。这么说吧,黑客在代码世界被他完虐,换到现实世界直接撸袖子跟他约架,还是会被他扔出五米远。这是一个字典里没有“撸瑟”二字的男人。

就在刚才,这两个神一样的男人同时跟我语音通话,介绍了他们合作研究的这个“黑客神器”。神器有多叼呢?这么说吧,我是全程跪着听完电话的。。。

下面正式开始介绍这个工具。

(1)谜一样的操作系统

把操作系统比作一个“黑暗迷宫”是最恰当不过的了。

为什么这样说呢?

中哥给你画图解释解释:

每当你输入一个数据,它就会在程序里顺着流程前行。你可以想象,自己举着这个数据,在伸手不见五指的迷宫里顺着路向前走;

遇到分叉路口,系统就会根据你手上数据的值为你选择一个方向,然后推你过去;

每一次遇到分岔路口,你都会被指派一个方向。最后的最后,你会走到一个光明的出口。一旦出去,你手里的“数据”就变成了一个“结果”,系统就完成了一组运算。

所以说,你进入迷宫的时候手里拿了怎样的数据,其实就几乎注定了你会在哪个出口出来。(是几乎,不是绝对)

刚才说的,是一个正常系统工作的样子。那么假设你是个黑客,攻击系统时,它是神马样子呢?

是这个样子滴:

你捧了一个特别奇葩的数据进入这个迷宫;

开始遇到分岔路口,系统还知道怎样为你分配路线;

你一直走走走走啊走,走到九月九,突然到了一个路口。程序说,纳尼?好像前面那几条路都不适合你,你走墙吧。。。

于是,你就被程序一个骚操作,从墙里推出去了。。。

现在,你到了一个“未知的空间”。所谓“未知空间”,就是一个你在迷宫里正常地走,永远不会到达的地方。。。

恭喜你大佬,这时你已经成功找到了一个系统漏洞~~~~

别急,你还记得中哥在文章一开始让你注意的骚粉字体吗?找到系统漏洞,只是攻击系统的第一步,你还需要更难的第二步:利用这个漏洞!!!!!

(2)神器登场

我们接着上面的图说。

你虽然到了未知的空间,但是并没有离开这个迷宫,而你如果想彻底控制这个迷宫,需要找到一个隐秘的出口。

我把刚才那张图再给你看一下,你看,从有些“未知空间”是可能通向有隐秘出口的。

这个出口无法得到正常的结果,

却可以让你逃离“迷宫”,

用上帝视角控制程序。

当然在现实的程序里,这个迷宫比灵魂画手中哥画的复杂一万倍。

所以,未知空间分为两类:

有一种是可能让黑客走向迷宫之外的,例如 A 区域;(这种区域对于系统来说才危险)

有一种是会把黑客困死在迷宫里的,例如 B 区域。(这种区域对于系统来说不危险)

所以,从一个顶级黑客的角度看,要完成一次漂亮的进攻,首先要从正常的迷宫里发现“未知空间” A 区域(这对应着漏洞发现),然后再从 A 区域找到脱离迷宫的隐秘出口“X”(这对应着漏洞利用。。。)

好的,各位屏幕前突出的腰间盘同志们,现在给你们提个问题:

在一个非常非常非常肥肠复杂的迷宫里,你即使发现了一个“未知空间”,也很难知道这个未知空间究竟有没有可能通向隐秘出口“X”,这肿么办呢?

在以往的经验中,是这样操作哒:

黑客一旦进入“未知空间”,之后都会根据自己的经验,手动在黑暗里探索,左摸右摸,七上八下,九浅一深。

但是这样有个弊端,它其实很考验具体黑客的技巧:

一个身经百战经验丰富的NB黑客,可能几下就找到了出口“X”;

一个腰膝酸软体力不支的弱鸡黑客,可能走一天还是在“鬼打墙”。

如果因为黑客找不到出口,就说明这个“未知区域”是个无害的 B 类,未免有点武断。因为这个区域很可能是有出口的,只是这位黑客没有找到。。。

这就比较烦了呀。一个系统漏洞被爆出来,它到底是可以被利用的高危漏洞呢?还是根本没前途的低危漏洞呢?这个判断对于进攻一方的黑客来说很重要,对于防守一方的企业来说也很重要啊!

肿么办?

你说肿么办,找邢叫兽和 Jimmy Su 呗!!

呼~~~长舒一口气。。。说了这么多,他们研究的神器可算要登场了。。。(阿鲁表情)

神器名为:

对不起,掏错了。。。重来。神器名为:

FUZE,它怎么用呢?

首先,你要有一个洗净备用的漏洞。如果还沿用迷宫的比喻,就是说,在迷宫里你要已经找到了一个“未知区域”。(这事儿靠自己,爱莫能助。。。)

然后,从“未知区域”到出口“X”的事儿,就交给“自动化程序”吧!

自动化程序的操作分为两步。

@@@这第一步,叫做“模糊测试”。

模糊测试,其实是一种开挂的玩法。

它相当于你玩游戏的时候,快遇到 BOSS 之前存一个档。存档之后就不怕了嘛,可以用各种姿势随便浪,总有一次偶然的机会,你能浪过这个 BOSS。

具体来说是酱紫的:

从“未知区域”开始往前走,遇到前面有岔路的时候就存档,然后把此时的系统状态复制很多份,形成无数个平行世界,在每一个平行世界分别随便丢一个不同的数据过去,看看系统分别会指示我们往哪里走。

总有一次,我们会被指引走到一个地方,这个地方有点特殊。虽然还在黑暗的迷宫里,但是,我们能感觉到不远处有光线通过缝隙照进来。此时,不要犹豫,马上把接力棒交给第二步!

@@@这第二步,叫做“符号执行”。

符号执行相当于什么呢?相当于“穷举法”。

不太明白是不是,听我给你解释。

你还记不记得,当年 Windows95 上有一个神·屏保程序,就叫做“迷宫”。

Win95 这个迷宫屏保长这样。

中哥似乎暴露年龄了。。。

不管了,为了科普拼了!!!

这个迷宫是自动生成的,有一个人用第一人称视角在走。他是怎么走的呢?有三个原则:

遇到路口就向左拐,

没机会左拐就直走,

只能右拐时才右拐。

最终,它一定能走出这个迷宫。因为遇到路口就向右拐,就可以“遍历”这个迷宫(就是走遍这个迷宫),既然能遍历,肯定早晚能找到出口啊。。。

所以,所谓符号执行,意思就是遍历这个迷宫剩余的部分。如果它果真有出口的话,最终肯定能找到出口。如果它真的没出口的话,我们就宣布放弃。

如此一来,我们就借助自动化的工具完成了从“未知空间”到迷宫出口“X”的探索过程!

(3)几个烧脑的问题

我知道,可能有同学到这里已经掉队了,没关系,回去再复习一下小标题(2),相信你会理解的。已经理解的童鞋,可能会有一些小疑问。

疑问1:你这种 FUZE 的方法,首先用的是“模糊测试”而不是“符号执行”,这说明你一开始并没有遍历每一种路径,也就是说即使理论上存在出口“X”,你也不能百分之百保证找到它吧??

答:没错。

在黑暗中进行“模糊测试”,并不能保证能试探出每一条理论上存在的路径。这就好像你虽然在打 BOSS 之前存档了,但就是打了一万次还是没能干掉 BOSS。遇到这种情况,中哥只能说:

好像又暴露了年龄

在 FUZE 程序里,每一次重新来过,都需要耗费时间和算力。如果你算了几个小时,甚至算了几天,都没有结果,也许就想放弃了。

但是请注意,理论上 FUZE 程序可以无限期一直运行。程序跑的时间越长,找到出口的可能性就越大。(这就像生活,咬牙多坚持一秒,就可能迎来人生的转折,但很多人倒在了黎明)

疑问2:等等,“符号执行”这种方法不是可以遍历迷宫吗?既然这样,为神马不在一开始就用它??如果在一开始就用,岂不是肯定可以找到出口?

答:没错。

但是,还是刚才那个道理:遍历迷宫需要尝试每一条路,每走一条路,都需要耗费时间和算力。

如果从一进入“未知空间”,就开始使用“遍历”的符号执行,岔路太多,要消耗的计算资源是天文数字。很可能走到死你都出不去。

说到这里中哥想到了一个电影《暗袭》,讲了几位少女在地下迷宫里,由于寻找出口的策略不佳,被怪兽当点心吃光光的悲惨故事。。

《暗袭》

非常醒脑的一张插图

看中哥的文章

你!睡!不!着!

邢叫兽还告诉我,如果过早地使用“符号执行”方法,还可能会遇到很多“死循环”的漩涡(程序从A到B到C再到A),但是,一旦在迷宫里走过了某些特殊的点位,往后就不太会遇到死循环的状况了,这时就应当果断地把探索方法换为“符号执行”。

上面这个示意图里,

你走着走着就会鬼打墙,

在一个地方空转,

永远出不去。

疑问3:吹了半天牛,你这套 FUZE 自动漏洞利用系统真的比黑客“人肉操作”更好使吗?

答:没错。

邢叫兽可是教授耶,出家人不打诳语。

他找来网上的15个漏洞。这15个漏洞都是以前被顶级黑客发现的,黑客们也分别对这些漏洞进行了利用的尝试。但是,他们只找到了其中5个漏洞的利用方法。(也就是说,他们找到了15个“未知空间”,最终却只从其中的5个空间成功离开了迷宫。)

邢叫兽用 FUZE 试了一下,您猜怎么着?发现了其中12个都有利用方法。这12个完整包含人类黑客找到的5个。也就是说,除了人找到的5个,机器还多找到了7个。这大概可以称得上“智商碾压”了。。。

疑问4:这个叫 FUZE 的工具,可以找到很多以前找不到的漏洞利用方式,岂不是会帮助黑客做坏事?

答:没错。

著名的宅男创业家王欣说过:技术无罪。

你应该这样看:这个 FUZE 可以让以前很多不能被利用的漏洞可以利用了。固然会让黑客多了很多武器,但是对于防御方——各个企业来说,他们也可以利用 FUZE 提前发现自己系统里的漏洞利用方式,从而在黑客进攻之前,就做好防御啊。

实际上,Jimmy Su 已经把 FUZE 这套系统用在自家京东服务器的防护当中了。他们先用 FUZE 把京东的服务器测试一遍,在重要的地方提前埋好地雷,如果有攻击者进来,肯定是枪林弹雨尸骨无存,中道崩殂驾鹤西归。

2018年8月,FUZE 刚刚实验成功,邢教授和 Jimmy Su 就把它拿到了世界顶尖黑客大会 BlackHat 上,向全世界做了一次扬眉吐气的演讲;然后,他俩手拉手把这个系统给开源了。全世界的人现在都能在 GitHub 上下载 FUZE 自己玩了。。。

疑问5:所以,邢教授和 Jimmy Su 是真爱吗??

答:没错。

接下来是高能预警,小标题(4)是给专业一点的人士看的,如果你不懂的话,没关系,可以直接跳到(5),不影响对本文的理解,么么哒。。。

(4)几个更烧脑的问题

能坚持到这里的童鞋,应该都是内行了。肯定知道我刚才说的模糊测试就是“Fuzzing”,知道我刚才说的符号执行就是“Symbolic Execution”。

这两种方法一点都不新鲜,很多玩二进制挖洞的黑客都在用。

你可能有几个小问题:

疑问1、挖洞用的模糊测试和符号执行,和邢教授说的漏洞利用中的模糊测试和符号执行,有啥区别呢?

答:我个人觉得,在漏洞利用这一步使用模糊测试和符号执行更难。

这是因为在漏洞利用中,涉及到各大系统都有的“漏洞利用缓解机制”。

举个小栗子:Linux 分为内核态和用户态两个空间。一般的漏洞利用,需要先把内核里的栈迁移到用户态。但是,有两种坑爹的“漏洞利用缓解机制” SMEP 和 SMAP,就是专门防止黑客搞这种小动作的。

说白了,在现在这个世道,挖漏洞容易,利用漏洞才难。

之前在 DEF CON 上火爆一时的 CGC 机器人安全攻防大赛,参赛选手们其实就已经在用自动化的软件来挖洞了。但是,这些机器人几乎没有考虑漏洞利用的事情,因为为了照顾机器人的水平,组委会已经把几乎所有的漏洞利用缓解机制都关闭了。

疑问2、FUZE 寻找漏洞利用的方式,应该不是纯模糊测试,而是融入了一些人类黑客的经验吧?

答:他们确实是融入了人类的经验。

邢教授告诉我,他们定义了20多个“内存空间状态”,一旦达到这样的状态,就认为是漏洞利用成功了。

举两个例子:

1、如果寄存器已经可以执行任意命令,说明“控制流”已经被劫持了,这就是一种理想的“内存空间状态”

2、如果内存的任意地址已经可以被写入任意命令,说明“数据流”已经被劫持,这也是一种理想的“内存空间状态”。

而 FUZE 所做的,就是让机器来模拟人类的“套路”,努力让内存空间靠近这20种状态中的一种,从而达到击穿系统的目的。

目前邢教授和 Jimmy Su 开发的 FUZE 程序,只对 Linux 内核的漏洞利用进行了适配,至于 MacOS 和 Windows,理论上都是一致的,只不过需要更多的时间和额外的适配工程量。

(5)活在未来的人

经过中哥苦口婆心的解释,现在你应该明白:一个李毅般的黑客如何借助神器 FUZE 获得亨利一样的脚法了。

目测在 BlackHat 上演讲之后,这个世界级的安全神器,会在黑客的世界里掀起一个不小的波澜。因为,无论是对进攻者还是防御者来说,都有了一件 NB 的新武器。

在挂断电话之前,我认真地问了 Jimmy Su 最后一个问题:京东不是个百货商店么,为神马你们会对安全这么在意,以至于要研究出一个世界级的安全工具呢?

这个世界级的黑客工具,至少可以在两方面帮助京东:

1、知道优先修复哪个漏洞。

对于京东来说,治下有无数服务器和系统。这些服务器就像幼儿园的小朋友一样数量多,品种杂,有的还有点熊,所以这些服务器携带的漏洞也是多种多样的。

这么多漏洞摆在安全攻城狮面前,他们要怎么办呢?

你可能会说,都修了就行啊!对不起,你说的不是攻城狮,是钢铁侠。在人手有限的情况下,如何保证把有生力量用于加固最危险的地方,才是真实世界中我们要考虑的内容。

有了 FUZE,哪个漏洞可以造成致命伤害,就一目了然了。工程师只要按照危害程度从高到低,吹着口哨顺次修复就好了。

2、抵御高级攻击。

可以说,漏洞就是武器。普通的漏洞相对容易找到,它就算是常规武器;而一个系统级的漏洞非常难以找到,但它就像是核武器。

在以前,一家公司虽然被“核武器”攻击的概率很低,但现在看来,随着地下黑产的泛滥,核武器越来越多地被普通黑客拿到,用来进行高级攻击。一旦遭受“核武器”攻击,后果不堪设想。

而听完介绍你可能已经明白, FUZE 恰恰就是用来发现这种核武器攻击路径的。有了这个工具,可以让京东遭受“暗算”的可能性大大降低。

Jimmy Su 语重心长地说:

因为金钱的诱惑,黑客对于企业的攻击比你们想象中多得多。企业越大,被各种姿势攻击的可能性就越大。

而京东的服务器上,存储的并不仅仅是京东的资产,更多的是用户数据。而我们作为用户安全的守卫者,守土有责!!

听得出来,他的话言辞恳切。

从这个角度来说,作为京东的用户,我很欣慰。。。

没错,最近两年无数黑客大咖都在对外发出警告,黑客界“核武器平民化”的趋势越来越快。在未来,很可能一些心智不成熟的小黑客,或者十恶不赦的坏黑客,手里都能掌握“核武器漏洞”。

而为了应对这样的未来,必须从现在开始研制更先进的武器。

历史告诉我们,活在未来的人,从来都值得我们敬畏。

另:

文头的小罗和希曼,来自之乎用户 @于衷 在问题“历史上有没有令人感动的足球比赛?”中的回答。也许只有过来人,方知其中味。

李毅是值得尊重的球员。他像每个年轻人一样,忠于自己的梦想和失业,他始终没有借足球以外的东西宣传自己。退役后仍然踏踏实实地继续从事着解说、推广等足球领域的工作。

想要下载 FUZE 研究的,可以自行上GayhubGithub 上找找,找不到再问我要。。。

不想走丢的话,你也可以关注我的“浅黑科技”

家电之家©部分网站内容来自网络,如有侵权请联系我们,立即删除!
漏洞 黑客
你该读读这些:一周精选导览
更多内容...

TOP

More