《白帽子讲Web安全》读后感
——Deep Blue
(一个安全小兵的感受)
这是一篇作业;这是一篇读后感;这是一篇记录安全的感悟;这是一篇对道哥的敬仰;这是我安全启蒙的钥匙......
和《白帽子讲Web安全》的缘分来自一个小意外,在来大学之前的我选择了信息安全这个专业。通过各种渠道吧,我在方方面面了解到这个行业的那些事儿,一点一滴的积累这我的安全观。指导我遇见这本书,第一次觉得安全原来是那么清晰的展示在我眼前。“互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了”当我看到这一句的时候,毫不犹豫的把它作为我的签名,原来我们才是让互联网变得不安全的人啊!
初来大学,第一次进入图书馆。当我发现AUST图书馆也藏有这本书的时候,我是多么激动,转便了所有的书架找到这本书。可以说是笑着抱回宿舍,开始了我的第一次阅读。
第一次看道哥的作品难度还是很大的,整本书四篇十八章,包括世界观安全、客户端脚本安全、服务端应用安全以及互联网公司安全运营四大部分。当时还是大一小萌新的我只看了世界观安全,第一次彻底了解到ROOT是个啥,以前只知道手机ROOT能删除一些系统应用。当我知道“root”对黑客的吸引,就像大米对老鼠,美女对色狼的吸引的时候,立下一个小flag拿下一个网站的root。不想拿到“root”的黑客,不是好黑客。说到黑客我也又不得不多说点,在黑客的世界里,有的黑客,精通计算机技术,能够自己挖掘漏洞,并编写“exploit”(黑客们使用的漏洞利用代码叫做exploit);而有的黑客,只是对攻击本身感兴趣,对计算机原理和各种编程技术的了解比较粗浅,因此只懂得编译别人的代码,自己并没有动手能力,这种黑客被称为“Script Kids”(脚本小子)。在现实世界中,真正造成破坏的,往往并非那些挖掘并研究漏洞的“黑客们”,而是这些脚本小子。在安全的道路上总是有人疑惑自己已经到了那一步,曾看到这样一个分级:会使用工具找漏洞就属于初级,能写自己的黑客工具应该就是中级阶段,能自动化“挖漏洞”就属于高级的大牛了。谈黑客,这本书中的黑客简史真的深深的吸引了我。
中国黑客发展分为三个阶段:启蒙时代、黄金时代、黑暗时代
启蒙时代
20世纪90年代,也正是中国互联网刚刚起步阶段,热爱新兴技术的青年收到国外黑客技术影响,开始研究安全漏洞。启蒙时代的黑客大多由于个人爱好走上这条路,好奇心和求知欲是他们前进的动力,没有任何利益瓜葛。这个时期的中国黑客们通过互联网,看到了世界,因此与西方发达国家同期诞生的黑客精神是一脉相传的,他们崇尚分享、自由、免费的互联网精神,并热衷于分钟自己的最新研究成果。
黄金时代
以2001年中美黑客大战为标志(感兴趣的同学可以百度一下“中美黑客大战”,相信大家都记得2001年中国飞行员王伟为了捍卫国家主权,被美国侦察机撞毁事件,起因正是这件事,这次事件中,中国黑客空前团结,与美国黑客开展了一场激烈的黑客大战,非常轰动,也这是世界第一次黑客大战),这次事件大大推动了中国黑客的发展,崛起了一批黑客、红客联盟,也让黑客这个特殊群体一下吸引了社会的眼球,黑客圈子所宣扬的黑客文化和黑客技术的独特魅力也吸引了无数的青少年走上黑客这条道路。这次事件之后,各种黑客组织如雨后春笋般冒出,他们普遍的特点是:年轻、有活力、充满激情,但技术上也许还不够成熟。此时,黑客圈子里贩卖漏洞、恶意软件的现象开始升温,因为黑客群体良莠不齐,开始出现以赢利为目的的攻击行为,黑色产业链逐渐成型。
黑暗时代
这个时代大概从几年前开始一直持续到现在(PS. 是哪一年呢?个人觉得大概是07年底左右开始吧),也许还将继续下去。这个时期的黑客组织也遵循社会发展规律,优胜劣汰,大多数黑客组织没有坚持下去,20世纪非常流行的黑客技术论坛也越来越没有人气,最终走向没落。所有门户型的漏洞披露站点,再也不公布任何漏洞相关技术细节。随着安全产业发展,黑客的功利性越来越强,黑色产业链开始成熟。在20世纪技术还不太成熟的黑客们,凡是坚持下来的,都已经成为安全领域的高级人才,要么,在安全公司贡献自己的专业技能,要么带着非常强的技术进入黑色产业。此时期的黑客群体因为互相之间缺失信任,已经不再具有开放和分享的精神,最纯粹的黑客精神实质上已经死亡。整个互联网笼罩在黑色产业链的阴影之下,每年数十亿经济损失和数千万网民受害,黑客精神的死亡,让我们没有理由不把这个时代称为黑暗时代。也许,黑客精神所代表的Open、Free、Share,真的一去不复返了!
真羡慕那个令人热血的时代,但如今依旧是互联网充满机遇的时代!
不过你知道吗? “黑客”是有好坏之分的!白帽子、黑帽子,他们是谁:在黑客的世界中,往往用帽子的颜色来比喻黑客的好坏。白帽子,是指那些精通安全技术,工作在反黑客领域的专家们;而黑帽子,是指利用黑客技术造成破坏,甚至进行网络犯罪的群体。
白帽子和黑帽子工作的心态完全不同:正是因为白帽子和黑帽子的目标不同,所以他们在工作时的心态是完全不同的。对于黑帽子来说,只要能够找到系统的一个弱点,就可以达到入侵系统的目的;而对于白帽子来说,必须找到系统的所有弱点,不能有遗漏,才能保证系统不会出现问题。白帽子要求全面宏观、黑帽子思考问题是有选择性的、微观的:白帽子一般为企业或安全公司服务,工作的出发点就是要解决所有的安全问题,因此所看所想必然要求更加的全面、宏观;黑帽子的主要目的是要入侵系统,找到对他们有价值的数据,因此黑帽子只需要以点突破,找到对他们最有用的一点,以此渗透,因此思考问题的出发点必然是有选择性的、微观的。
从对待问题的角度来看,黑帽子是不断组合问题,白帽子是不断分解问题:黑帽子为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题;而白帽子在设计解决方案时,如果只看到各种问题组合后产生的效果,就会把事情变复杂,难以细致入微地解决根本问题,所以白帽子必然是在不断地分解问题,再对分解后的问题逐个予以解决。这种定位的不对称,也导致了白帽子的安全工作比较难做。“破坏永远比建设容易”,白帽子选择的方法,是克服某种攻击方法,而并非抵御单次的攻击。
安全问题往往发生在一些意想不到的地方:上述一切都是理想状态,在现实世界中,存在着各种各样不可回避的问题。工程师们很喜欢一句话:“No Patch For Stupid!”,在安全领域也普遍认为:“最大的漏洞就是人!”。写得再好的程序,在有人参与的情况下,就可能会出现各种各样不可预知的情况,比如管理员的密码有可能泄露,程序员有可能关掉了安全的配置参数,等等。安全问题往往发生在一些意想不到的地方。防御技术在不断完善的同时,攻击技术也在不断地发展。这就像一场军备竞赛,看谁跑在前面。
世界安全观不仅仅讲的是黑客是理念,更多的是思想。道哥也点出安全问题的本质是信任的安全问题。一切的安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会如无源之水,无根之木,无法设计,也无法完成。
把握住信任条件的度,是安全的艺术魅力:在现实生活中,我们很少设想最极端的前提条件,因为极端的条件往往意味者小概率以及高成本,因此在成本有限的情况下,我们往往会根据成本来设计安全方案,并将一些可能性较大的条件作为决策的主要依据。
从另一个角度来说,一旦我们作为决策依据的条件被打破、被绕过,那么就会导致安全假设的前提条件不再可靠,变成一个伪命题。因此,把握住信任条件的度,使其恰到好处,正是设计安全方案的难点所在,也是安全这门学问的艺术魅力所在。
安全的世界里,没有一劳永逸的银弹:在解决安全问题的过程中,不可能一劳永逸,也就是说“没有银弹”。任何人想要一劳永逸地解决安全问题,都属于一相情愿,是“自己骗自己”,是不现实的。
安全是一个持续的过程。 自从互联网有了安全问题以来,攻击和防御技术就在不断碰撞和对抗的过程中得到发展。从微观上来说,在某一时期可能某一方占了上风;但是从宏观上来看,某一时期的攻击或防御技术,都不可能永远有效,永远用下去。这是因为防御技术在发展的同时,攻击技术也在不断发展,两者是互相促进的辩证关系。以不变的防御手段对抗不断发展的攻击技术,就犯了刻舟求剑的错误。在安全的领域中,没有银弹。
我的世界安全观就这么建立了吧,安全问题的本质是信任的问题。并且安全是一个持续的过程,并不存在所谓的银弹。也知道一个安全评估的过程可以分为4个阶段:资产等级划分、威胁分析、风险分析、确认解决方案。虽然懵懵懂懂但总算是读下来了,还有那几个不太懂的白帽子兵法 1.Secure By Default 原则(白名单黑名单、最小权限原则)2.纵深防御原则 3.数据和代码分离原则 4.不可预测性原则
可喜可贺的是我也拥有了一本自己的《白帽子讲Web安全》这本书了,再也不用担心图书馆的这本书会被借走了。也在慢慢接触Web安全的一些漏洞。
Web 攻击技术发展的几个阶段:①Web 1.0时代,人们更多的是关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称webshell)上传到服务器上,从而获得权限。动态脚本语言的普及,以及 Web 技术发展初期对安全问题认知的不足导致很多“血案”的发生,同时也遗留下很多历史问题,比如PHP 语言至今仍然只能靠较好的代码规范来保证没有文件包含漏洞,而无法从语言本身杜绝此类安全问题的发生。②SQL注入的出现是Web 安全史上的一个里程碑。SQL注入最早出现在 1999年,并很快就成为Web 安全的头号大敌。通过SQL 注入攻击,可以获取很多重要的、敏感的数据,甚至能够通过数据库获取系统访问权限,这种效果并不比直接攻击系统软件差,Web 攻击一下子就流行起来。(SQL 注入漏洞至今仍然是Web 安全领域中的一个重要组成部分。)③XSS (跨站脚本攻击)的出现则是 Web 安全史上的另一个里程碑。实际上,XSS 的出现时间和SQL 注入差不多,但是真正引起人们重视则是在大概 2003年以后。在著名的是2005年的MySpace的XSS 蠕虫事件后,安全界对 XSS 的重视程度提高了很多。④随着Web 2.0 的兴起,XSS 、CSRF(跨站请求伪造) 等攻击已经变得更为强大。Web 攻击的思路也从服务器端转向了客户端,转向了浏览器和用户。黑客们天马行空的思路,覆盖了Web 的每一个环节,变得更加的多样化。⑤互联网的蓬勃发展,也催生出许多新兴的脚本语言,比如Python 、Ruby、NodeJS等,敏捷开发成为互联网的主旋律。而手机技术、移动互联网的兴起,也给HTML 5 带来了新的机遇和挑战。Web安全技术,也紧跟着互联网发展脚步,不断地演化出新的变化。(以上名词:SQL注入、XSS跨站、CSRF跨站伪请求伪造等,不明白意思没关系,先熟悉个名词吧,知道它们是WEB应用安全的重要敌人就行,后面慢慢讲解他们具体是什么,有什么危害,怎么防范)
暂且研究了这么多,互联网公司的安全运营还得需要一个更坚实的基础去学习。
给自己一个小目标
目标一:让工程师写出的每一行代码都是安全的。
目标二:让所有已知的、未知的攻击,都能在第一时间发现,并迅速报警和追踪。
目标三:让安全成为公司核心竞争力,深入到每一个产品的特性中,能够更好地引导用户使用互联网的习惯。
目标四:能够观测到互联网安全趋势的变化,对未来一段时间内的风险做出预测。
最后再提起安全问题的本质:
安全问题的本质是信任问题。
把握信任条件的度,使其恰到好处。
安全是一个持续的过程。
安全是为业务服务的。
Find and Fix, Defend and Defer, Secure at the Source.
待我第三次阅读我想一定会有新的收获,届时我会继续更新这篇文章。