如果说,滴滴出行(以下简称滴滴)是近几年来让大家出行发生翻天覆地变化的一家公司,想必你不会反对。
据滴滴给出的官方数据,滴滴全平台上每天超过2000万订单。与此而来的是,这么多乘客的消费数据和个人信息,滴滴怎么守护?
快速增长的滴滴意识到了这一点。2016年9月底,硅谷安全教父弓峰敏与网络安全资深专家卜峥加盟滴滴,弓峰敏出任滴滴信息安全战略副总裁和滴滴研究院副院长,负责制定信息安全战略和研发下一代信息安全技术,卜峥则担任滴滴信息安全副总裁,全面领导信息安全团队。今年3月9日,滴滴又宣布在加利福尼亚硅谷成立滴滴美国研究院,重点发展大数据安全和智能驾驶两大核心领域。
弓峰敏表示:“滴滴平台从乘客到司机到合作伙伴,涉及大量金融付费交易的过程,带来信息保护以及类似身份信息偷盗、欺诈犯罪等有关问题,滴滴需要保护客户信息、避免付费和交易过程中的欺诈以及个人账户信息泄露等,而最让人振奋的是,滴滴不只是解决出行问题,同时还能解决更大的问题,从国家到全球层面,包括城市发展、交通、环境保护等社会问题,这是极大的挑战!”
随后,滴滴在 5 月 17 日启动了首届滴滴信息安全闯关赛 (DDCTF),5月30日已结束。
先挖网络安全大佬,再通过大赛寻找优秀的网络安全人才进行储备,滴滴走了一条“肉眼可见”重视安全的道路。
但是,别人怎么分析都是“边角料”,我们看滴滴自己怎么说。
6月8日,雷锋网(公众号:雷锋网)宅客频道(微信ID : letshome)邀请滴滴公司三位安全研究人员来一场硬创公开课,聊了聊如何看待当前网络安全新趋势,以及滴滴接下来怎么做。
嘉宾介绍
王宇 : 在 Black Hat USA2014 演讲和出任 GeekPwn 活动评委
杨军锋 : 获微软 MitigationBypass Bounty
翟津健:斯坦福大学计算机专业
刘潇锋:滴滴出行信息安全工程师,多年Web安全建设、攻防溯源、安全研究经历。
[从左到右依次为翟津健、杨军锋、王宇、刘潇锋]
以下是公开课总结文实录+视频,在不妨碍原意的表达上,雷锋网略有删节,并分为上下两篇,视频均有:
若想获得此次公开课完整PPT,请在雷锋网网络安全频道的微信公众号宅客频道(微信ID:letshome)回复“滴滴公开课”。
接上篇
刘潇锋:这个题如果大家不知道是代码审计题的时候,还要搞一段时间,才知道这是一个代码审计的题目,可能以为它是一个很高级的source注入或者是一道组合渗透的题目。我来讲讲。
这个页面访问的时候看到的是一个类似于博客或者是发布网站的页面,这个页面里面有很多地方可以点,有注册、登录,下面还有一个地方是显示开源的地址,这个博客用哪个开源的php框架搭的。
如果大家用目录便利这样的一些工具去扫描的话,可以发现有一个test目录,在test页面上面写了一些系统、环境的信息,下面有一个php infer的链接,点进去以后这个链接是-test-2 function-php infer。我们简单地把这个php infer删掉一些字母,或者说我们就像我的ppt里面写上xxx的形式,会看到php报错,报错这个错误看起来就是这个xxx是没有定义的,我们就可以认为xxx这个地方应该就是一个方法和函数,会把我们输入的字符串当成一个函数去执行,function这个地方可能是一个controller。下面我就把这个php infer这个地方截了一个图,给大家看一下,这个地方好像对这道题没有什么用处。
我们进一步做一些下面的工作,function既然php infer是可以执行的,它是一个php的内置函数,那我们是不是考虑去调用一些其他的php内置函数。
这个时候我们想到了有get-defined-function,就是脚本里定义了哪些函数,我们调用一下发现前面很长的都是php的内置函数,最后倒数的这几行是用户定义的函数,像addslashes、sample-waf函数。
这里面我们看到了一个很敏感的叫show-source-code,就是看原代码的这么一个函数,我们直接访问这个链接,直接把这个show-source-code放在刚才function后面的部分。这个时候我们就会下载一个压缩包,我们把它解压以后就发现了这样一个目录的结果,看起来是doctor上搭建的,里面的文件目录框架是有一个文档,里面应该是web的主目录,有一些njx的配置,还有这个框架安装时候要执行的insor的脚本,还有一个sh脚本。
这个时候我们就是想到了这个框架是下面写的开源框架是speed的框架搭建的,这个时候我们访问一下speed框架,就会跳转到gitignore,我们发现这个gitignore上面的speed框架和我们下载的源码的目录结构是一致的,那么我们现在就可以断定就是用这个框架搭的。所以我们可以推断出这是一个源码审计题。所以我刚才问军锋,我说这个题如果不告诉大家是代码审计题,可能大家真的要找好久才知道。
接下来我们有了开源的框架原代码,还有了从工具服务器上下载的原代码,这样我们首先想到的是做一个对比,我们下载的代码和网上的开源代码有什么区别,因为网上的代码已经push上面已经有两年了。比较一下这个代码最核心的部分是一个叫speed的php的文件,在那个lib目录下,它比网上的版本多了几十行,最重要的部分就是我截图的这个部分,多了一个addslashes这样的函数,多了一个sample-waf函数。最下面就是全局的,把get-post-cookie全局的输入变量都做了转义,有一个全局的JPC转义。
接下来我们看一下MainController里面的php,因为这个controller是在未登录状态下的一些逻辑,都在这里面。这里面要提一下,大家到这个地方有没有一些什么脑洞或者是什么想法?为什么这是一个源码审计的题,我们要从网上下载了这么一个源码,又要加全局转义的功能?感觉上好像是对这个开源框架更增加了一些安全防护的方式,因为转义了,可以防止source注入。会不会大家想到的,这样做其实题目已经对你进行了提示?既然他做了转义,我们反方向想,是不是这个转义由于这么做了,反倒是容易被绕过了,可以被我们source注入攻击利用。然后我们就去找,找哪些函数可能跟这个转义有冲突,就是就找到了json-encode,就是json编码的这样一个函数。
我们知道JPC转义是把单引号、双引号、斜线、空字符会在前面加一个斜线做一个转义,但是json-encode也是会对斜线做再一步,在前面再加一个斜线。所以说这样的话,就相当于是json-encode加了斜线吃掉了前面那个addslashes斜线,这样的话到数据库之前,相当于是这两个斜线互相吃掉了,剩了一个引号,我们的引号就会保留下来,类似于source注入里面的宽字节,由于前面多了一个东西,就是把本来转义的字符给转义掉了,我们的注入字符反倒留了下来。
这样可能说得比较抽象,如果大家不看原代码,我们一般拿到这样一个web程序,都会对各个接口和参数做便利,灌入各种特殊符号,如果大家在这里加一个单引号,也会发现这个问题,这就是在右边的箭头标出的。
单引号在addslashes的时候就已经被转义了一次,这个斜线,然后再在json-encode前面又加了一个斜线。所以说这个语句如果推到数据库那边执行的话,相当于这个单引号会被保留下来,和最前面的单引号配成一对。
我们相当于已经找到了这个注入点,就是在这里,我们可以利用它。但是这里有一个问题,可能大家容易忽视的,就是说在这个php代码的逻辑上,如果你要能执行最下面的update这一步的逻辑,一定要先通过上面这个slect的逻辑。如果在执行slecl逻辑的时候,实际上还没有执行json-encode这样一个编码。这就是说到前面这个slecl语句的时候,我们输入的单引号实际上是只做了一次转义的,这样的话到了数据库里面,它是不是会报错,因为这个ID没有查到的话,就不会往下面执行了,也就是说我们可能执行不到下面了,这就设计到source对类型的一个强制转换。
左边的截图就是大家从源码里下载下来以后看到的我们在数据库里面创建的source语句,这个ID实际上是一个整形,如果我们的引号前面又被转义多了一个斜线字符的话,在做整形转换的话,只要前面有整数,后面那个字符串就都忽略掉了。即使大家没有注意到,但是这个地方的整形也是没有问题,不会触发错误、冲突。
接下来我们怎么去注入,我们发现有sample-waf这样一个函数,前面是对一些关键字做过滤,这个过滤还好,最要命的是下面有一个我们这个字符串的长度还受到了限制,35个字符,看起来基本上复杂的source语句都构造不了了。这个时候怎么办?感觉注入点很鸡肋,注入不了任何东西。这个时候我们就想一下,框架我们是用的PDO驱动来实现的跟数据库的通信,PDO和masecal通信的时候,实际上是支持堆叠查询的,也就是stacked queries,如果是masecal I的话,这个还不支持,PDO是可以的。
所以我们想的是,我们用insert的方式去插入到数据库当中,插入一个验证码,就是邀请码,正好凑了一个不到35个字符的Payload,正好通过了,就是插入到code这张表里,code这个字段值是117,这个表、字段都可以从源码当中找到。
这样成功以后,我们就可以走注册那个流程,把我们刚才的那个insert进去的邀请码填写进去,随便写一个用户名和密码,就可以登录了。登录以后还是在页面里面没有找到任何关于flag的信息,这时候我们就会审计UserController这个脚本,因为这是登录以后的Controller。我们会找到这里有一个文件包含,但是这个文件包含也是比较鸡肋的,因为它的前后端全部写死了,就是受限制了,所以说后面只能是php的文件,我们有全局的转义,所以你做空字符00这种就不能被截断。这个东西怎么用呢?
既然文件包含不能包含出一些恶意的脚本,那我们就想想能不能用文件包含漏洞去提取出一些明摆的信息。这个时候我们发现有一个admin这样一个目录,就是管理员,我们猜这个flag在这个管理员的目录下会存在一些信息,我们找到了这个管理员的一个模板,叫index-index.html。
这个框架如果大家审计了一下它的代码,会发现它基于这些html模板做了一些处理,生成一个中间文件,这个中间文件是一个php文件。这个时候我们就怀疑能不能根据他的代码规则生成中间的php文件,从里面找到flag,这是我们的思路。
我们就继续看原代码。在编译生成中间文件的时候,就是conpio的时候,这个是对模板文件的绝对路径做了一次MD5,再加上模板文件最后修改时间的时间戳,再加上文件名和php。实际上这个文件已经在后台生成了,我们怎么去构造出这个文件名,然后去访问它,就可以了。
下面其他的文件路径、文明什么的都好办,就是最后的修改时间,静态文件的修改时间可以在HTTP的返回头有一个Last-Modified的字段里面提取出来。
大家看一下上面那个代码里面,filemtime这个地方返回的是一个unist的时间戳,但是我们下面是JMT的标准时间,所以说这个需要调用STR to time的函数转化成unist的时间戳,最后我们生成了这样一个脚本,这个脚本我们用booker去抓包,然后把name的参数给改成脚本,我们最后再返回到页面里面就发现了这个flag,这道题就结束了。
杨军锋:谢谢刘老师。接下来由我来给大家讲讲,这道题目叫FindKey,其实是Win32的程序。通常我们分析第一步是什么,就是搜集信息,就是从字符串、导入表等等各方面去搜集信息,你会在查看字符串引用的时候,可能会留意到OpenSSL的这个版本,静态链接了OpenSSL的库。
你可以自己选择制作IDA的FLIRT签名文件,也可以下载别人制作好的,上面的link就给了很多OpenSSL的IDA的签名,你可以下载这个库。其实整个代码整个程序是非常短小的,IDA里面你把签名弄好之后,一看就很清晰。把它化简之后的整个逻辑就是这么一个数学题,很多同学可能要骂我,这其实就是一个求离散对数的题目。
眼尖的同学可能一眼就看出来这个P很明显就不是素数,我们尝试去分解的时候,发现它常常被分解成比较小的因子,这个问题就可以在短时间内轻易求解。
我们看的一个最简单的解法是来自玩这次CTF比赛第二名的复旦大学这位同学,他提供了这么一个很短小的方案,其实就是一个数学求解软件,应该是求解类的软件,借助于它的帮助,就这么一句话,就能够求出这里的P其实就是前面的X。
这个函数使用了这两个算法,一个叫Pohlig-Hellman,然后大步小步这个算法求解。数学原理我在这里就不展开了,因为它确实比较长,涉及到的数学原理的东西比较复杂,感兴趣的同学可以去了解这道题目所涉及到的这些离散对数求解、攻击的算法和原理,都可以去了解了解,去看一看。
有两、三位同学问到这道题目的意义在哪儿。是这样的,2015年的时候我们在野外见到一些Exploit Kit,尝试阻碍研究院的研究员重放流量,里面就使用了这么一个不安全的模数,最后导致研究员可以轻而易举地分解这个模数把问题降级之后再快速求解。
很奇怪的是,在2016年,也就是说在去年OpenSSL想要出现了一个基本上是完全跟我们这个题目数学抽象描述完全一模一样的漏洞——CVE20160701,虽然说看起来这个问题确实很低级,所有的密码学课本里面都告诉我们要选一个大的数的P,也就是说模数避免被攻击,但是事实上我们在现实里面实验室的实践里面能够到处看得到不安全的实现。
这就是为什么我们出了这道题目,希望每一个同学都知道在你实现这个算法的时候,最好最好不要自己去实现,因为你自己去实现,很有可能会因为你的一些疏忽导致了不安全的因素。
接下来下一道题目是翟老师的比较难的一道安卓题目。
刘潇锋:其实我觉得这个漏洞是很有意思的,就是CVE20160701这个东西我感觉是故意的吗?
杨军锋:我也很难说它是不是故意玩无穷平方,但是它确实出现了这么一个低级的漏洞。
刘潇锋:我觉得这帮人的水平不至于犯这么低级的问题。
杨军锋:所以说这个问题很有趣,你跟大家说一下你对这个漏洞的看法吧。
刘潇锋:不用了,我只是觉得这帮人应该不至于这么简单的一个漏洞放在这个地方,像是留了一个坑。
杨军锋:所以说在这里我们只能猜测,无法推测最初这个漏洞是怎么产生的,我们只是想用这道题来让所有的同学都意识到安全的理论不代表有安全的实现,更多时候我们看到一个久经考验的算法在我们实现里面确实存在这样或者是那样的问题,怎么去降低这种风险?尽可能用成熟的,尽管OpenSSL出过很多问题,就像刚才教授说的,但是我还是应该选择成熟的库、成熟的算法、成熟的实现库去写程序,来避免犯一些低级的错误。
下面把时间交给翟老师。
翟津健:是这样的,这道题最关键的是要找到里面有一个strite,就是112行,我们翻到Android Hard有两页PPT,第一页右边第一行,就是122行这个if53,看129行,是跳着的,两个两个的,每四个头两个把它做了一下位移,数量就是53,这样的话就把0到9给映射到了E.rn上面了,所以说这个if其实映射回去的是数字,就是415374的这个。
这个是两个素数的成绩,花几分钟的时间把这个成绩给破开,破开之后就得到了一个P和Q,这是两个素数,这个P和Q的长度足够长。
接下来我们就翻到Android Hard的PPT第二页,右边上面这个方框就是99行到113行,素数不够长,你要是想cover这个T的话,就是把它重复写了五遍,就是第112行这个,其实是一个while lud,编译出来是这样子的。写了五遍之后就成了一个mask。在第77到93行右下脚这个code方框,就是把mask Apeline这个XOR,最后就出来了这个结果。
杨军锋:翟老师这道题目就这么简单地讲完了?
翟津健:这里面主要的坑就是P×Q,基本就是这样,一开始我们写的时候是一个比较大的素数,然后可能要花久一点的时间,可能要花几个小时,后来我们把它改小了几位,可能几分钟就可以了。
答疑环节
杨军锋:有一位同学问到,如何看待国内公司都有各种以攻击挖洞为主比赛的现状,两位老师你们怎么看待这个现象?第一个问题就是现在国内打 Pwn2Own 很火,很多国内的实验室可能一整年的时间就在挖洞打比赛,你们是怎么看待这个现象的?
王宇:我个人觉得有点儿浪费,或者不叫浪费吧,你花了一年多的精力,别人只给你大概十万美元,或者是一共总奖金也就是一百万美金,实际上是买了整个一个团队一年多的投入和智力的产出。你从一个更高的角度或者是更商业的角度来看,实际上这是一种变相的从中国市场的套利,套廉价智力的结果,把我们觉得很花精力出来的东西以一个相对比较低廉的价格拱手贡献给别人了,我是觉得有点儿可惜。
但是如果反过来从另一个角度说的话,比如,一个新的创业公司,类似于像长亭,他们想在国内打出一片天地的话,最好的切入点可能 Pwn2Own 是一个很好的展示舞台,确实他们去年做得非常棒。几个人的投入就拿到了三个平台的冠军,实际上我觉得从个人能力上来讲已经是最顶级的水平了。
但是可能这件事情本身来讲我觉得还是有更多值得去做的事情,比如,推动整个这个产业的进步的角度来讲,但是这个就比较虚了,我还是觉得这种级别的贡献智力确实是中国和韩国两个现在势头比较强的国家在做贡献。
这是我的个人看法。
翟津健:我对这方面没有什么理解,我觉得王教授讲得挺好的。
杨军锋:我很认同教授说的这几个点,但是,我在某一种程度上认为国内的这种存在,不管我认同也好,不认同也好,都会以这种形式继续存在。对个人来说,我觉得这可能是挺有意思的,你挖洞也好,打比赛也好,对个人来说不是一个坏事,至少我认为可能是你干得开心,又有钱拿,这个是无可厚非的一个事情。但是对企业来说,对公司来说,它的意义和价值可能是比较有限的。对于个人来说,从比较长远的角度来看,我们不知道这种模式能够走多远,我们都缺乏这种预见性,但是至少在目前看来,它还会继续存在。
我觉得他们代表了二进制顶级的水平,确实是二进制的漏洞研究也好,各方面的安全研究也好,他们确实是代表了一个很前沿的水平。
我对这些同学(能搞定并且乐于去搞的同学)是非常尊重的,我们要知道安全除了漏洞之外还有很多其他有趣的方向,因为这几年这些东西比较火,国内很多实验室都一直在打,给很多在校的学生造成了一种错觉,好像现在不打比赛就不叫搞信息安全,不是这样的。你看翟老师,翟老师就是属于正经科班出身,一直奋斗在信息安全前线的,他做了很多东西非常有价值。
但是我们想要传达一种观念,除了挖洞、打比赛之外,还有很多,比如说做的防御,或者是非漏洞挖掘以外的一些安全防护,都会产生巨大的价值,不是说安全只有漏洞挖掘这一条路可以走,不要把安全理解得这么窄,因为安全是计算机上面的一个分支,但是安全上面又有无数的分支,挖洞比赛只不过是无数分支当中的一条分支。
就是这样的,这个问题我们的理解就是这样的。
王宇:以后的安全人才趋势是否需要同时具备web安全、二进制安全机器学习的能力?
这个问题问得挺好的,我个人的感觉,因为业界是在快速发展的,可能有一些东西是万年不变或者是百年、十年不变的,比如说像操作系统的原理、编辑器,但是也有的东西在非常快速地做迭代和变化。所以可能待过的几家公司给我的感觉,就是工业界可能需要的人才是那种能快速应变,并且基本功扎实,我相信这次比赛如果能打到最后几关,甚至能把大素数分解的人都能搞定的人,他一定是既熟悉web,也熟悉安卓,哪怕不属于web,也能用迂回的方法去解决。
实际上他们不会把自己限定在特定的平台或者是特定的领域,遇到了陌生的环境、全新的挑战,他有迎难而上的勇气,我觉得这一类的人应该是企业最受欢迎的。不是说万金油最受欢迎,而是说有勇气去挑战未知的领域,并且把这件事情做成的人,这些人绝对是企业最受欢迎的。
所以想达到这个要求,可能既需要你掌握web的东西,二进制的东西也不能完全不会,这两年机器学习工业界起来得这么火,完全不懂的话也不是个事。所以我是觉得可能是深度和广度都需要。
翟津健:我讲一下机器学习吧。其实现在机器学习难度越来越低了,技术白菜化,这句话整体改成:其实现在机器学习难度并没有想象那么高,最近业界流传着技术白菜化的说法,
杨军锋:大学生一枚,想问问滴滴招聘安全人员的标准,不参加CTF有没有可能被我们注意到?
翟津健:这个可能也会注意到,不参加CTF的话,像其他各种各样技能我们都是需要的,比如说Medol CQT、大数据。
杨军锋:就像翟老师刚刚说的,其实我们CTF打不打其实并不重要,我们更看重基础能力、沟通能力以及对我们这个行业的热爱程度,这些都是我们考量的点。除了CTF打进到一个比较好的名次,你也可以通过正常的招聘途径给我们递简历,我们都是很欢迎的。
教授对这个问题有补充吗?
王宇:我觉得这两年的招聘应该是非常多样化,微博上各家都在疯狂地招人,实际上和CTF本身并没有太大的直接关系,只要自己准备好,递一份简历过来就OK了。
翟津健:我还想补充一点,比如,滴滴和一般企业招人招的是ciquty angner,就是说需要有人写程序,只不过正好这个程序是应用在安全领域上面的,所以需要有很多安全的领域知识。同时也要写程序写得很快。
王宇:在实际工作中,CTF比赛的技巧能否得到应用?比如说对实战、挖漏洞是有很大帮助。
翟津健:我觉得 CTF 的比赛还是一个比较抽象的、注重把各种基本的概念都 cover 的,这个技巧肯定工作中或者是这里、那里随机地会出现。
杨军锋:教授的看法呢?因为我知道教授以前也有打过一些CTF。
王宇:我觉得可能技巧这个东西只是一个点,有点儿像是特种部队和正规军的感觉,特种部队可能也需要,但是真正两个国家作战的话,正规军的感觉还是和斩首部队的感觉是不一样的,可能两方面都需要,有的时候写程序的时候需要一些灵感或者是需要一些技巧型的东西去解决。
但是我觉得就像之前有一个问题,是不是CTF才能被企业关注到,如果过于强调技巧,而忽视了另外一样东西,可能也是走不太远的,有大规模的工业界代码的编写能力。
实际上这两年CTF比较火之后,对于本科生大规模编码的能力强调得并不是那么多了,我记得我们当年毕业那会儿,强调的是毕业的时候要写十万行代码,现在可能是变成要拿CTF多少名,我们那时候强调十万行代码,如果你真的能写够这么大量的代码,并且这个代码是你这四年不断累计出来同一个项目或者是几个项目,对于大项目的管理、架构包括软件工程的这些感觉应该是有了。
所以我觉得两方面都需要,技巧的东西也需要,但是实战工作中正规的东西也是需要的。
另外挖洞的话,我这么几年至少感觉是有两到三类人在挖洞中是比较活跃的。
第一,腾讯科恩实验室的吴石老师强调的是用farsin的算法极大的覆盖目标所有的分支路径,找到尽可能多的有效组合反复打某些出问题的点。
第二,Google有几个家伙,他们的那些漏洞选的点,你一看他的漏洞,就发现这些漏洞不是那么好通过farsin的方法找到的,再去跟他聊你会发现他对于整个系统的架构很了解,特别是他对于系统的设计某些模块衔接的地方可能会考虑得不周到,这点他可能比写代码的人要考虑得过。所以反过来他是从更高的角度,或者是从设计的角度去反馈漏洞挖掘。所以我觉得这样的人可能对于程序的架构包括一个system应该怎样去设计,他可能更了解一些,但是这样的人就不是偏重于技巧型的人,我觉得这样的人是需要大量的时间累出来的。
但是我觉得不应该把任何一类人一棍子打死,如果能把向边结合得比较好的话,那应该是最顶级的人才。
杨军锋:接下来那道题目就是关于机器学习了,我相信这个翟老师有很多话可以讲。
翟津健:我可以简单讲一下,现在不但是有公司在用实际的基于机器学习的防护系统,而且我觉得这个市场已经比较拥挤了,我感觉我见到的大部分公司都在用实际的基于机器学习的防护系统,这个不但是一个有没有的问题,而是一个你做得好不好的问题,你做得不好,就被好的打下去了。
杨军锋:第七道题目是搞web的同学,web安全会不会像其他人说的那样子?因为相比二进制做的人多就没有未来了。
刘潇锋:因为现在国内互联网公司web安全的需求量还是很大的,而且现在大部分都是敏捷开发,所以一个公司有大量的产品线,每个产品线每天迭代的速度也很快,这样这个代码安全上的质量就需要web安全工程师来提供保障,其实这个挑战也是挺大的。
我觉得从技术上来说,可能它没有二进制研究系统化那么深入,但是从整体的难度来说,我觉得还是很有难度的,因为web安全还包括很多语言,包括很多服务端web的组建容器,这些都考虑进来的话,其实web安全工程师需要掌握的知识量还是很大的。
而且我再提一下,我觉得企业当中实战上来说,从web安全的角度和CTF的区别,我觉得CTF比赛每道题是有解的,但是实际的企业当中安全是无解或者是短期内无解的,我们要考虑到各种场景和各方的需求,然后去想到一个更综合能解决这些问题的方法,这个难度和挑战可能要比解一道CTF题更复杂,可能需要的能力像刚才教授说的,各方面沟通、快速解决问题的能力这方面都要经过训练,所以web安全我觉得未来还是很有前景的。
杨军锋:教授你对这个问题有补充吗?
王宇:我没怎么搞过web。
杨军锋:搞这样的肯定是他们说的黑站,挂一个黑页,说这个网站是我黑的,留一个QQ号。
王宇:想做好的话,他的知识储备绝对不会比做所谓的二进制要来得少。
我觉得刚才那点讲得非常棒,就是在企业里面很多东西实际上不是像做一道题一样一定会有一个答案,好多东西其实是一个折中的结果,特别是我们大家需要设计一套解决方案或者是设计一套系统,不可能解决现有的所有问题,一定是在各个问题间寻找一个平衡点,这种东西你想把某些东西做得更好的话,意味着你需要牺牲一些别的方面的能力或者是性能。所以可能确实打CTF的学生到企业来之后,可能会发现这点是有极大的不同。
翟津健:这点我理解挺深刻的,因为我觉得企业里面你不知道答案,你可能做到最后99%的时间都扔掉了,最后由于你的重大技术突破,有可能是你吃饭、走路的时候突然想起来了什么,把这个问题解决掉了,再加上最后还剩下1%的时间你可能就是凭code编得比较快,或者是手快,最后总算在 deadline 之前做好了,我觉得大部分人遇到的情况是这样的。
杨军锋:很好,我个人觉得这个问题是问web安全,刚才两位老师补充了一下,CTF和企业实际的需求之间的差异。我个人觉得市场需求会决定web安全持续地占有很重要的位置,我们现在很多数据,安全是什么?安全必须要附在信息上面才会有意义,没有独立的安全,你光是空谈安全是没有用的,我们所有的安全都是围绕着信息,我们如果画三个同心圆的话,信息是在最里面,安全是外围的,如果没有信息在中间,其实安全就没有意义了。
web现在承载的整个信息越来越多,承载有价值的东西越来越多,从个人电脑到云端的迁移,我们现在已经可以很明确地看得到了,我觉得web安全这一块会越来越重要,我个人是这么觉得的。因为有价值的信息在往更终端向云端迁移,所以我觉得搞web安全是有着光明前途的。
刘潇锋:我还想说一点,就是说像刚才军锋说的,它是跟着信息走,信息安全,更直白地说,安全也跟着价值走,跟着钱走。
杨军锋:对。
刘潇锋:其实有的时候黑客攻击的途径和手段并不是重要的,他的目标其实是重要的,他只是想拿到你服务器里的东西,就有很多种方式,可以通过web漏洞去攻击,也可以用一个零配直接打掉你的服务器,但是我觉得从钱或者是从价值的角度来说,web安全和二进制其实不需要区分那么多的。
杨军锋:对,因为黑客永远都是选那条成本最低、收益最大的路走,通往信息的路有无数条。
第八个问题,我总是觉得这个问题应该由翟老师回答,大规模攻防研究是什么样的现状?有重大突破吗?有应用吗?
翟津健:我只是单纯从大数据这个角度理解,可能通过各种各样的方式,控制很多电脑进行攻击或者是防护,再把这些电脑上所一点一滴搜集来的信息做一个集中汇总,主要方向是这样的。
杨军锋:后面我还看到有一些同学提了一些题目,给学习CTF新手们的一点儿建议,比如说先从哪些方向学习或者是推荐一些必读书目。这个我个人的建议,我打了一些CTF,也对CTF有一点点了解,但是我毕竟是入门级别的,给不了太多建议,我一点点不成熟的建议,你先做一些CTF的题目,去参与一些CTF的题目,很多过去的CTF赛,他们都会把题目以及一些解题思路放出来,我建议你去看什么类型的东西,你想做哪个方向,先选定你的目标,你觉得哪个方向最感兴趣,选定了再看看,知道自己欠缺哪些知识,就去看看有什么书可以看。书这种东西你多买点儿不会亏本的,中国的书很便宜,不像其他国家的书特别贵。随便买吧,多练,CTF这种东西要多打,就是勤练,不断总结,不懂的东西多去总结,看看别人是怎么总结的,你解不了的问题看别人是怎么做的,再锻炼中不断提升,不要忽略掉对基础知识的学习,这个毕竟还是最重要的。
两位老师和刘老师对这个学习CTF的新手都有一些什么建议?你们都可以补充一下。
翟津健:我觉得这个还是看个人兴趣吧,先挑一个个人最感兴趣的,像我入手的时候都是从安卓入手的,所以慢慢对这方面感兴趣越来越多,随着时间的过去,看一些书。
王宇:我觉得兴趣是最好的老师。
杨军锋:下一个问题,这位同学是想要学web安全,但是老师让他从CCNA网络学起,这样子对吗?就是那个认证考试。
王宇:我刚刚就想说这个,没有对错之分,从哪儿学起只是一个起点,我相信一定会有从CCNA开始学起的人学到业界最顶尖的水平,也有从CCNA开始学起,学了一本叫《从CCNA到放弃》这本书,不像刚才说的从什么样的学习资料开始入手,我觉得兴趣是最好的老师,没有兴趣根本坚持不下去的。
杨军锋:不要紧,我觉得学不学习CCNA这个并不是很重要的,我认识的很多搞web非常好的,或者是搞系统安全搞得非常好的,很多都没有学过CCNA,当然你如果有这个技能是很好的,艺多不压身,这句话永远都是对的,你如果有时间、有精力,在时间、精力允许的前提下,我建议你把这些全部都学了,都可以,没有问题,但是关键就是说每个人拥有的时间、可支配的时间和精力是有限的,你选择怎么去学,你觉得怎么学能够坚持下去,这个可能是你要考虑的问题。
可能你搞web安全可以挑不同的路,我觉得这是你可以尝试的,因为每个人走的路不一样,可能你学了CCNA之后很有兴趣,接着你又想学CCNB,那么我觉得你就继续学下去就挺好的,你可能最后成为一个顶级的网络专家,这也不是一个坏事。华为在大量招人,我们也正在招网络安全工程师。所以我们急需这种持有华为认证这些的人才也来加入我们,这也是可以的。
所以说可能你偶然间选了一条路,最后你沿着这条路走下去,发现是一条很光明的道路,这也是可以的。所以说先学什么、后学什么,这个其实对于我来说没有太严格的定义,可能学了之后你学了一半想放弃,没关系,再接着学下一本,接着放弃,最后找到适合你的道路。就像我一样,我学了很多之后发现最适合我的可能是养猪。
翟津健:我想补充一下,这个跟刚才做项目是类似的,有可能你花了几年的时间学完之后,突然你学到一定的程度才悟到了,你发现你学的这个东西好象有局限性,就把之前学的这些50%的东西都扔掉了,又赶快学新的更有用的东西。
所以,如何找时间学这些你觉得在五个方向里最有用的那个方向,如何找时间学这个,比你现在挑一个方向更重要,因为有的时候你可能找不到时间看书,如果你还在上学的话,可能随身可以带着书,去哪儿也可以看。比如说我在路上看见有的人为了看一会儿书,就停到等红绿灯30秒的时候,对面一个开车的人就拿出一本书在那儿看,他就是没有时间学,但是他突然看了这么多年才发现以前学的都没有用,他再想看的话,就只能找各种办法再来看这个新东西了。
杨军锋:其实小傅说过一段话,你学过什么东西,没学过什么东西,其实意义不是那么大,最重要的是怎么快速学,怎么快速去掌握一门新的东西,这也是给到我参考的。
接下来下一个问题,翟老师你来回答吧,信息安全这个专业适合留学吗?
翟津健:我觉得如果是信息安全这个专业的,我还鼓励可以去探索一下新的领域,因为留学的时候是一个好机会,你可以学你自己想学的东西,计算机只是工科里面20多个专业里面的一个,信息安全只是计算机里面十几个细分专业里面的一个。所以你其实不一定知道哪方面最有用,哪方面对你自己最适合,不一定非要找信息安全这个专业去留学。适不适合留学要看自己。
杨军锋:重要还是个人的意向,我觉得你要真的想留学,不管是什么,只要你喜欢、你开心就足够了,没有更多的,这种人生的选择,没有人有预见性,我反复说没有人能对未来有一个预判,有些人不留学也成功,有些人留学像翟老师这样子的也成功了,我们对未来永远都缺乏一个判断力,在这种人生选择上面我们基本上是没有任何的判断力的。如果你能选一条将来可以后悔的路,可能会好一点,比如说我今天出去留学了,明天不想留了,我跑回来,我觉得你去尝试更多的可能性之后,你的视野可能会不一样,我觉得是这样子,我本人没有留学过,我只是觉得是这样子,个人很愚蠢的一点点看法。
今天由于时间关系,我们最后做一下总结,这次CTF我们看到的一些问题以及玩的一些感受。我先说一下,这次CTF,刚才有人说CTF的技巧在工作中有没有用,我觉得还是会有一点点用的,至少它对很多你学的东西,你真正去实践、动手了,你去把它从书本上的知识搬到了实用中来,你在比赛当中把你的知识重新锤炼了一遍,其实就等于加强了你这方面的能力了,我觉得这是CTF对大学生的好处。
而我在这次看到了很多同学的知识面很广,对各种系统、各种题目web也好、系统安全也好都做得非常好。我个人感觉这是一个行业的进步,就像足球一样,它的方法一直在进步,包括我们今天信息安全的行业也是一样的,从十年前你学信息安全是摸爬滚打,到今天可以成体系的、比较好的接受这样子的学习,在这样子的系统里面进行学习和提炼,我觉得这是一个行业的进步。就像现在足球它的攻防能力可能比20年前的足球要强一些,整个行业在不断地变化、前进,这是一个比较好的消息。
两位老师有什么感言或者是看法也可以在这里跟同学们分享。
翟津健:我再补充一下,刚才说到信息安全专业适不适合留学,我觉得留学的时候他转系、自由选课都是很普遍的,所以说很有可能你申请的时候是信息专业,出来就不是了,就是其他的专业了。
王宇:我是几类人都见过,包括linrups的旋,他是来美国这边留学的,原来蓝莲花的王若愚他是去UCSB留学,实际上我相信他们一定是在CTF的同时也是能看这个行业最前沿的发展趋势的。好处肯定是有的,关键一点是看适不适合自己的道路,是不是自己真的愿意走这条路,还是绕一圈之后再回工业界,这个在于个人的选择,没有对错之分,只是个人适合不适合。
杨军锋:两位分别谈谈你们对这次DDCTF比赛的一些感受吧,我最大的感受就是累。
王宇:辛苦了。
翟津健:我每天看比赛,同学的人数和水平还是蛮高的。
杨军锋:教授呢?
王宇:我的感受和你一样,我觉得这两年通过各种CTF的竞赛,整个行业年轻人的水平成长得非常快。
杨军锋:这是这个行业的好消息。
王宇:就像足球一样,如果有更多的青少年以一种比较高强度、高水平的训练的话,我相信这个水平肯定是几年之内就能上一个台阶的。
杨军锋:对,这是行业的一个重大利好。