从攻防角度谈黑客与程序员

常言道:“未知攻,焉知防”,然,“知攻未必知防”!

01 — 黑客的敌人是程序员

黑客所要攻破的任何一款产品,无论是网站、软件还是IoT硬件产品,这些都是由程序员开发的,所以他们要攻破的其实是程序员的安全思维缺陷。

所以说,黑客的敌人是程序员。但如果黑客本身就是程序员呢?

02 — 会开发的黑客:知己知彼,百战不殆

有时某些大厂的漏洞致谢公告放出后,可能会出现连续几个月,某类漏洞突然暴增。因为程序员也常常会出现习惯性错误,比如习惯用memcpy危险函数,且不校验size,那么有一必有二,有可能顺藤摸瓜找到一堆此类漏洞。

上面这种情况就是黑客从程序员的角度入手,去寻找突破口。

在之前的工作中,也遇到过一些不懂安全的程序员,在转入安全漏洞挖掘领域后,能够快速上手,挖到不少Android等大厂产品的漏洞。这也利益于此前的开发基础,具备开发能力的程序员比只懂安全的技术人员更容易在安全道路上走得更远更深。

黑客是否需要精通开发?这是个老生常谈的问题了。

如果你去看一些黑客大牛或漏洞挖掘高手写的代码,你会发现有时他们写得也跟我们一样烂。

但也不是说搞安全就不需要学编程开发了,而是必学课程。只是,很多情况下,黑客具备的是基础开发能力,而非开发产品的能力,两者还是有区别的。但其实也不是绝对,我说的只是一种普遍情况。

对于安全从业人员,掌握基础开发能力是必备的,而是否具备产品开发能力成了一道分水岭。即,产品开发能力是加分项,而非必备项。

03 — 懂安全的程序员:无存在感

先来看一幅漫画,估计这是许多安全开发同学的心声:防御住了,用户无感知;未防御住,用户就开始骂娘了,或者受公司处罚。

程序员开发的产品出安全事故,肯定会受到处罚。大家常调侃道:CSO就是用来背锅的,多少有些道理。

但如果懂安全的程序员开发出具有高安全性的产品,对用户,甚至对领导而言,都可能是无感知,跟不存在一般。

常说赏罚分明,但上述普遍情况明显是不对等、不完善的赏罚机制。所以现在也有一些公司慢慢地增设“开发之星”、“质量之星”之类的奖励机制,也算是对此的一种弥补措施。

04 — 攻防不对等:攻击的是短板,防御的是体系

黑客攻击时,只需要找到系统的一处短板,就有可能攻破系统。

业务防御时,则需要构建全面的防御体系,比黑客掌握更加全面的攻击点和防御策略,而非单一的技术点或者功能模块。

因此,防御比攻击更难,两者是不对等的。

有些大厂,比如微软就设有“纵深防御”奖励机制。纵深防御,通俗地讲,就是层层防御,一层防御失效后,仍有备用的其它防御策略生效。

比如电影《侠盗联盟》中,去城堡偷项链的场景:

翻过城墙后 =》还有保安 =》绕过保安后还有监控 =》绕过监控后还有防盗门 =》 进门后还有看门狗 =》最后还有指纹验证

05 — 知攻未必知防

常言道:“未知攻,焉知防”,对此我一直深信不疑。

但这是必要不充分条件,因为现在互联网越来越方便,工具化、教程化的资源网上遍地都是,很多脚本小子随手就可以拿来入侵网站,但让他们提供防御方案,基本都要歇菜。

之前面试过几个做渗透测试的同学,当问某个WEB漏洞的防御时,对方直接说,他只做攻击,不做防御,不懂这些。

对于企业而言,让你做攻击测试的目的,还是为了提前作防御,如果只知攻,不懂防,又有多大价值呢?

06 — 结语

对于不懂产品开发的黑客,以及不懂安全的程序员,我们均表示理解;对于即懂安全又懂开发的同学,我们则爱之、惜之。但无论你是黑客(白帽子:无任何违法乱纪行为),还是程序员,如对【微信支付安全】感兴趣,均可私信本账号,共讨职业发展大计,承诺每条有效私信必回,欢迎搭讪。