谈黑客

发现问题与避免问题

因为大多数人对黑客精神的崇拜,我也曾经对黑客这个称呼心存敬畏,但接触了更多的人和事之后,越发觉得黑客技术并不高端,某些黑客也不值得敬畏。在最近两年,总有一批人跳出来为黑客洗白,而且会把黑客洗成“黑帽子”,“白帽子”,“骇客”,“红客”或者其他各种颜色。这样挺无趣的,有太多的词已经不是它本来的含义了,而且黑客这个词很模糊,总是被用来制造神秘感。如果是为了显示自己的专业性,介绍自己的职业,不如换成QA,代码审计,服务器运维等更具体的词。

我这么说是有原因的,让我们来想一想,“信息安全”的最终目的是什么呢?我认为目的是为了减少程序的漏洞,但是现在业界的普遍目标是“发现更多的漏洞”。的确,发现漏洞是减少漏洞的前提,但是现在业界对于“发现漏洞”的热情实在太高了,以至于忘记了真正的目的。

比如说前一阵的Heartbleed事件,首先发现这个漏洞的人值得喝彩。但是随后几天,就开始有很多人在乌云上提交各种网站没有更新OpenSSL的问题。在这些人看来,这有必要吗?那些人只是没有及时打一个已经被发现的漏洞的patch。可是许多所谓白帽子认为发现漏洞就是自己的目标,但他们从未想过如何能够减少漏洞。

这种思潮在发展,许多根本不了解软件设计,甚至不会编程的人也加入了白帽子的行列当中,他们的思维都很僵化。他们很难认识到“XSS”和“SQLInjection”其实是同一类攻击手法——注入HTML和注入SQL。也很难区分加密,编码和散列——他们认为这些操作都是在把一个可读的字符串“加密”成一个不可读的字符串,所以没区别。所谓SQL注入不过是SQL的一个特例而已,如果你没有用过SQL,而直接学习如何注入,那你恐怕得一直按照“大牛”们总结的注入方法来实施,甚至仅仅是照着教程使用软件。而很难自己发现新的攻击方式,最后进行的所谓攻击,就是一个一个的试一些基本没人看的网站,看看哪个网站没打patch,好,拿下。但这没有任何意义。

有市场就有商品,所以现在很多Web安全方面的书,在繁复地罗列一些很相似的攻击手法,并未抽象出其中的联系和规律,使读者只能照着做,而很难有所启发。更不要说这些书将安全与编程完全割裂了开来,并传达“代码只是工具,会写就行了”的思想。这样的书却被一些人奉为神作,这又印证了我之前的观点:太多人在以发现漏洞为目标,而不是减少漏洞。

有很多人吐槽过某某知名Web安全界人士的编程水平不过关,当然,很多时候,他们也确实不过关。会写代码是最低的标准,代码应当首先是写给人看的,顺便能在机器上运行。无论多么短小的程序,都应当考虑可读性和可维护性,并应用各种用于避免错误的技巧。对于如何提高可读性,如何避免错误,不同的人可能会有不同的观点,但是作为代码的作者,在写代码的时候至少应当考虑过这些问题。我认为绝大部分信息安全相关的工作,都需要首先是一名程序员,有过构建真正应用的经验才行。

所以我认为减少漏洞的途径应当是培养更多具有安全意识,能够写出高质量代码的程序员,专职的信息安全专家当然也要有,但至少他们应当曾经是一个“具有安全意识的程序员”。我算是一个非主流程序员,除了写代码之外,我还花了更多时间学习新的技术,和新的知识——虽然这些知识可能我永远也不会在工作中用到。我虽然从未专门学习过有关“信息安全”的技术,但是因为我一直在追求编写更安全的代码,所以我对“信息安全”也算是略略触类旁通,审查代码时发现漏洞的水平也在一些人(通常被经常给黑客洗白的人称为“脚本小子”)之上。

 

另一个世界

不过还有另一群黑客,在这里,完全是另一个世界。黑客技术与入侵划了等号,所谓黑客社区中充斥着“提权”、“破MD5”、“社工”、“数据库打包下载”,“入侵拿站软件破解全套教程”。这些黑客社区依然打着“自由”、“开放”的旗号,却在限制论坛的访问,更有甚者卖会员,收徒。除此之外。大部分所谓“黑客社区”是这样的模式,一个大哥,忽悠着一群小弟,大哥卖卖会员收收徒,发发小财。很多黑客组织,明明没多少人,没什么内容,就要先搞一套等级制度。还有一部分则是不懂装懂的小弟们互相忽悠。这个过程中,很多技术被神化了,如社工,又如XSS。他们将这些技术奉为圣经,凡是提到,必须围观一下;不挨边的,短时间用不上的,则不屑一顾。

这些黑客们不求甚解,只要找到的工具、代码能用,方法可行,能黑下来站,那就是好的。很多时候他们只是在“无差别日站”——看看哪个站自己黑得下来,那就先黑一下。如果可以的话,再给自己一个一定要黑掉它,而且看上去正义的理由。比如前一阵钓鱼岛扯出的一些事件,无外乎这种心理。

大部分黑客只是在混QQ群,混论坛,YY,读一些零散的文章。也有一些认真点的会系统地看一些书或者视频教程。然后——挑自己黑得下的站尝试一下。

大多数草根黑客只是把学黑客技术当作一种廉价的,体现个性的方式,交友的方式。他们也不需要多少时间的学习就可以进入一个与众不同的圈子。随自己心情黑几个站,盗几个号,很有成就感不是么?认为自己技术很牛X的人可以衡量一下自己到底花了多少时间来学习,有多少时间是在严肃地学习,别人又需要多少时间能达到你的水平,是否仅仅是为了融入黑客的圈子,寻找认同感。如果说上面的那种扭曲的白帽子没有意义的话,那这种黑客,更没有任何意义。实际上和刷空间刷贴吧刷陌陌,并没有什么区别。

 

传统黑客精神的迷思

黑客这个小群体首先是以其破坏性而进入大众眼球的。黑客精神的含义众说纷纭,但有几个最关键的核心要素:钻研、自由、分享。

专研是指对技术的钻研和探索,不达目的不罢休,对一个难题追求更多更巧妙的解法。

自由是指追求钻研(学习)的过程的自由,黑客们认为只要有助于探索和创新,应当被允许合理使用各种信息和工具,这也是许多黑客都是开源运动的忠实拥泵,甚至是反知识产权的原因。

我认为黑客精神并非是正义的。每个人对自由的理解都不同,每个人都可以追求自己所谓的自由。但有一个最基本的底线,就是不能影响他人的自由,而法律在保障我们追求自由的权利。

黑客精神诞生的背景是计算机行业才刚刚发展,计算机大牛很少被大多数人熟识,出于探索目的的适当破坏是可以容忍甚至鼓励的。而当时软件是硬件的附属品,没有多少人承认软件的版权。黑客们在呼吁源代码应当自由,至少应该自由地用于学习的目的。但显然,他们失败了,在现在,全世界都承认并保护软件的版权。有一些黑客转而以合法的方式继续他们的事业,如GNU计划等。还有一些黑客仍在坚持,如海盗湾等。

在当下,黑客精神是一种对规则(法律)的破坏。虽然不可否认,这样的破坏有时会起到一些积极的作用,如减少行业垄断,通过阅读更多受限资料来促进行业的发展等。

黑客更像是古时的侠客,以自己的道德标准行侠仗义,劫富济贫,在规则之外,实现自己的追求。

以上说的是传统意义上的黑客,黑客精神是一种模糊的生活态度,并非正义也并非总是邪恶,算是一种叛逆的生活态度。

试问传统意义上的黑客有没有可能合法化呢?我认为不能。如果需要遵守现有法律,那么自由和分享都会受到极大的限制,只会钻研,那不是黑客,是学霸。

 

猜你喜欢

转载自blog.csdn.net/FYZDMMCpp/article/details/39670459