刚刚过去的十一假期,大家都在忙着四处玩耍,我们京东安全的研究员心中却只有工作,远赴比利时,参加了年度黑客大会BRUCON。并在大会现场分享了牧者实验室正在研究的新成果。
这是一个怎样的研究成果呢?要从一道高中数学题讲起。
有红、蓝、黄三种颜色的球各7个,每种颜色的7个球分别标有数字1、2、3、4、5、6、7,从中任取3个标号不同的球,这3个颜色互不相同且所标数字互不相邻的取法有多少种?
熟悉不?会做不?
反正我不会,学生时期就是数学黑洞。
![你数学好吗?](http://p2.ttnews.xyz/loading.gif)
记得高中刚接触排列组合时,遇到刚入门的题目,比较笨的办法是把所有的可能组合项都在草稿纸上列出来,然后统计总共有多少种答案。
这个笨办法有几个的问题。
一、费纸(主要还是费时间);
二、容易漏算;
还有一个致命的问题,应对最基础的题目尚可,稍微增加难度,就废了!
所以,老师教了我们应对各种排列组合问题的解题思路和公式。
![你数学好吗?](http://p2.ttnews.xyz/loading.gif)
啰嗦这么多,是要讲数学么?
本着爱岗敬业的态度,当然还是要一本正经把安全故事进行到底。今天要说的是一种操作,跟排列组合题有些类似。这种操作就是白帽子非常熟悉的模糊测试。
模糊测试 (fuzztesting, fuzzing)是将自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,以发现可能的程序错误。
检测软件或计算机系统的安全漏洞比较常用的办法就是模糊测试。 这个模糊测试的过程比较像用笨方法做排列组合题。先列举所有可能导致系统崩溃的数据,然后输入系统不断试错。
所以,笨办法的弊端也是显而易见的,不仅费时、容易遗漏,还有致命的缺点,不能支持多系统架构。
做题可以套公式,模糊测试当然也有得有套路,因此,京东安全牧者实验室研究了一种操作,并在BRUCON大会的现场分享了这个操作。这套操作可以让模糊测试支持多CPU架构,还解决了现有fuzzer对非开源程序不友好,处理速度非常慢的问题。
看到这,恐怕很多同学会不屑,市场上的自动测试程序已经很成熟了,你们研究的这个没啥新鲜。
这里,必须要插播一句,现有的模糊测试工具我们统称为fuzzer,现有的fuzzer有三个比较鸡肋的问题。
第一、对非开源程序非常不友好;
第二、对非开源程序处理非常慢;
第三、除了X86系统不支持其他架构。
当然,不屑的不止是你,还有BRUCON现场的黑客们,对此,KJ老师这么说。
敲 · 黑 · 板
在X86架构下,对于有源代码和开源的软件,现有的fuzzer可以说足够用。但是,在没有源代码的情况下,现有的fuzzer只能依靠虚拟机来指挥,这势必会大大降低fuzzer的速度,同时也带给系统不必要的负荷。此外,现有的fuzzer仅支持X86系列系统,对于IoT的处理器框架并不支持。
而IoT安全是京东安全牧者实验室重点研究的方向,为了解决这些问题,我们就需要在技术上动些“手脚”,给模糊测试的过程做些改良。
改良版还是用了老招牌的AFL,但是中间的接口和指挥程序(instrumentation) 都是由京东安全KJ和南洋理工的Quynh博士共同研究的,而接口和指挥程序上的改良,让fuzzer的处理速度更快、兼容更多CPU架构(如:X86 、X86_64 、ARM 、ARM 64、MIPS、SPARC)。
KJ和Quynh博士有多年合作关系,他们合作的项目有业界称之为逆向三套件 capstone engine, unicorn engine, keystone engine。
对于白帽子而言,这个改良操作可以说是继DEFCON GROUP上推出的固件分析方式之后的又一福音,不了解上一次福音的点这里
新操作,了解一下?
。
BRUCON是一个年度安全和黑客的会议,汇集国际黑客、安全从业者,聚焦最新的安全技术,到今年已经举办了10年,在欧洲享有盛誉。
今年10周年纪念版长这样
我们热爱工作的安全研究员KJ长这样
KJ透露,DEFCON GROUP和BRUCON上分享这俩研究项目,将在10月29日-11月2日的#2018 JD-HITB安全峰会#上公开更多进展。
所以,是不是期待一下!
“2018 JD-HITB安全峰会”早鸟购票扫描下方二维码
点击“阅读原文”了解BRUCON发言详情~
閱讀更多 京東安全 的文章