Google Project Zero成员谈如何入门安全工作

新浪微博 QQ空间

已经有很多人(包括我谷歌的同事,ParisaMichal已经就这个话题写过自己的感受,我建议你仔细阅读。我知道我写的这些可能已经有人说过了,但是每隔一段时间,我总是会再次遇到这个问题,于是我决定写下自己的经验。

首先,我是一个应用安全研究员,我是从 漏洞研究/安全审查/bug寻找/黑客攻击 等角度来阐述安全入门的。在安全领域还有很多其他的方向,比如安全研发,恶意软件分析等等,这些我并不熟悉。

那么,我是谁?为什么你要在这个话题上信任我呢?嗯,首先我不是说你应该完全信任我,因为每个人的经验和每个人的道路都是有所不同的。但如果您对我感到好奇,我可以告诉您,我现在是 Google Project Zero 的成员,我曾经是谷歌安全团队的成员,是多个安全工具的作者多个安全工具的作者,如果你在这个博客上滚动足够长的时间,你会发现我已经从事安全工作十多年了。

我认识的安全研究员来自很多不同的背景,但是我的背景有所不同,我有相当强的学术背景,这在我的同行中是非常不典型的,当然这并不是进入安全领域的要求。然而,我所知道的安全研究员中的大多数人都有一些共同点,这里我们来看第一条:

自己做点东西

对于我所知道的业内大多数人来说,在从事相关工作之前,安全只是一项业余爱好。当然,如果你只是考虑如何学习安全,在告诉你如何开始之前,告诉你自己做点东西并不会有什么帮助。继续阅读,我会在下面提到如何开始。 但是首先,还有一件事你应该注意 (不要让它阻碍你,我们将在后面看到如何解决它)

现在开始学习安全,比十年前困难的多

我怀疑不是每个人都会承认,但是安全在过去这些年,确实有了很大提高。是的,如果你足够深入的话,你将会发现用十多年前的技术仍然可以运行的软件或者硬件,例如 Web 浏览器。当我正在研究我的第一个 Windows 漏洞利用(堆溢出)时,我感到十分沮丧,因为微软最近引入了新的safe unlink 机制,所以我读到的一些众所周知的堆漏洞利用技术已经不再有效。 10 年后,刚开始学习安全的人们不仅需要处理 safe unlink 和 stack cookie ,还需要知道 SafeSEH / SEHOP,DEP,ASLR,CFG,ACG 还有浏览器的 sandbox 等等。并不限于 Web 浏览器,如果你对比一下十年前和现在的 Web 应用框架,你会发现在安全技术上已经了显著的不同。

不要害怕上面这一段文字,那么你应该如何对付日益陡峭的学习曲线呢?

利用好学习资源

一般而言,刚开始入门的难度比较高,实际上,现在的学习资源也比以前要丰富。

但是另一个警告是: 你需要能够走出去并且自主学习,没有人会牵着你的手,或者成为你的导师 (可能总是有厉害的师父来帮助学徒,但是黑客很少这样做)。 如果你喜欢按照预先设定的课程进行 (就像我承认的我的大部分教育所做的那样) ,那么你可能就不会在安全方面走得太远。

在获得正确的学习资源之前,您需要正确地提问。 谷歌搜索 “如何成为黑客” 和类似的问题,在现在仍然会得到与以前一样的胡说八道。 相反,请尝试更加细致的问题,例如:

我感兴趣的这个软件/硬件是如何工作的? 它基于什么技术? 有我可以阅读的源代码?教程? 图书吗?
有人已经设法成功破解了我想要破解的这一软件/硬件吗? 他们发布了 WriteUp 吗?Exp 呢? 会议介绍呢? 我真的明白他们是怎么做的了么?
由此可见,你自己必须在技术上相当不错,以了解由别人制作的真实软件或硬件是如何工作的。 虽然编写代码和阅读代码的技能并不完全相同,但仍存在相当大的重叠,所以如果您不习惯写代码,在进一步深入研究安全之前,您可能需要改进这一点。

不要忘记第二点。 虽然之前我对技术性的东西还算是比较好的,但是直到我开始阅读其他人发布的漏洞研究和 Exp 后,我才真正理解安全。

还有另一个警告: 当你遇到你不了解的东西时,不要放弃。 特别是在刚开始阅读各种资源时,你遇到的很多问题。 跳过这些部分是简单的方法,但也是错误的方法。 相反,想想遇到的每一比特信息都是你不了解的,把它们作为线索,想想你还需要学习什么。

虽然我写到没有人会牵着你的手,但这并不意味着你不应该提问。 事实上,你应该自在一点。 人们不会为你而放下自己所做的工作,但如果你卡住了,他们可能会给你一个正确的方向。

使用推特

拥护一个特定的社交网络看起来很奇怪,但一个重要事实是很多安全团队都使用 Twitter 来分享新闻,而且更重要的是那些最近的研究、漏洞、 PoC 、会议演讲和其他类似的链接。 我真的不知道这些是怎么发生的,也许是短消息的形式让人们更方便地分享资源链接,而不用受到漫长而不必要的讨论的困扰。 所以,在 Twitter 上找那些研究或发表你感兴趣东西的人,然后翻阅他们的推特吧。

除了 Twitter 以外,你可以找到有趣资源的其他地方是 r / netsecHacker News (尽管它除了安全性外还有其他的东西)。 你还可以看看安全会议的演讲和录音 (它们有很多,但并不都是好的。 重点集中于技术性较强的那些会议)。

打 CTF 是一种很好的学习方式

另一个我给你们的奇怪建议是我自己几乎从不玩 CTF ,但是还记得我写的有关难度曲线的内容吗 ? CTF 可以让你的学习经历更加循序渐进,因为 CTF 的赛题有多种难度级别 (你通常可以通过每个赛题的分数来分辨) ,所以你可以从更简单的开始,然后从那里开始一点点学习。 举个例子,在关闭缓解措施之后练习漏洞利用。 知道这儿有一个 bug 或方式来解决它,也是一些安慰。

几乎每个星期在一个地方都有一个 CTF ,其中大部分都是可以在线解题,你可以在这里找到时间安排。 如果你不能解决赛题,不要忘了他人解题的 WriteUp。

CTF 可以成为一种很有趣的经历,但当你学会一些东西之后,别忘了继续研究真实世界的目标,你可能会感到十分惊喜!

但是不要害怕失败,哪怕一次又一次。

现在漏洞研究的工作常常是让人十分沮丧的,大部分你尝试的东西都不会成功,但你必须接受这一点。 但不要因此而泄气。 这不仅仅是发生在你身上,对于每一个富有经验的研究员来说也是如此。 我们往往只能看到别人的成功,却不知道背后的代价。 当你失败的时候,在继续前进之前一定要弄明白失败的原因。

你比你想象的更加聪明(反之亦然: 其他人并不像你想的那样聪明)。

这可能是一个有争议的观点,因为其他人提出了 “你不比开发者更聪明” 的建议。 虽然这是真实的,对于业内很多人来说,这是一个很好的建议,但对许多刚刚入门或正在考虑入门的人来说,这可能是错误的,事实是,在看到别的聪明人做什么之后,如果自己没有在这个领域做任何事情,就很容易怀疑自己的能力。 让我举个例子: 现在你可能听起来很奇怪,但是当我开始把安全作为一种爱好时,我认为我从来没有足够的能力去发现 Windows 中的漏洞。我从来没有尝试过,但是我偶然发现了我的第一个 Windows 漏洞:我 fuzz 了一些蹩脚的图像库,过了一段时间,我有一些崩溃样本。 而当我意外地点击 Windows 中的其中一个崩溃样本时,Windows 资源管理器崩溃了 – 这是 CVE-2008-3013。

另外一个例子: 在对一个软件进行审查的时候,你可能会有一个想法,然后想 “不,这太愚蠢了,开发人员肯定会想到这个”。 事实是,他们经常没有。 公平地说,那不是因为他们愚蠢,那是因为他们当时想到了其他问题,但是,如果“我比他们聪明”的思维方式有助于突破你为自己设定的人为限制。

当你和别人,特别是开发者交谈的时候,请记住,他们是代码方面的专家,但是你是安全方面的专家。

我如何证明自己的能力?

可以从赚钱开始: 很多公司都有 bug bounty program: Google,FB,MS,etc

即使你挖到的漏洞拿不到奖金,但能帮助到他人,仍然能够帮助证明你的实力。

挖漏洞并不是唯一的途径,开发安全工具,做防御性的研究,同样是很有价值的。

还有什么是我需要知道的?

安全研究员的人生可能并不像你想象的那么光鲜亮丽,为了成为一个大牛,你需要在电脑面前坐到天荒地老。 这是一份有挑战性的工作,并且需要花费相当大的精力。

原文地址: http://ifsec.blogspot.jp/…,翻译@Murasaki @爱发呆的sakura @Cytosine

新浪微博 QQ空间

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 这篇文章归档在:文字网摘, 软件应用, 软件技术 | 标签: , . | 永久链接:链接 | 评论(0) |

评论

邮箱地址不会被泄露, 标记为 * 的项目必填。

8 - 2 = *



You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <img alt="" src="" class=""> <pre class=""> <q cite=""> <s> <strike> <strong>

返回顶部