关于
我的项目
相关阅读
热度排行
- [转] 宫崎骏用动漫教给我们的人生哲理,每一句都能说到心里! - (日期:[八月 24, 2013] 点击:[53,222])
- Google 网页爬虫报告无法连接站点解决办法 - (日期:[七月 20, 2014] 点击:[38,641])
- 架设Tiny Tiny RSS(TTRSS)阅读器,找回Google Reader! - (日期:[九月 27, 2013] 点击:[27,769])
- SkyDrive、DropBox和Google Drive三大公有云存储服务对比 - (日期:[六月 25, 2013] 点击:[25,574])
- 升级到至强E5440后,与i5 CPU笔记本性能对比 - (日期:[二月 18, 2014] 点击:[23,713])
- 公钥私钥加密解密数字证书数字签名详解 - (日期:[四月 19, 2014] 点击:[22,959])
- 本站建站技术合集 - (日期:[九月 20, 2013] 点击:[22,490])
- 使用OpenerDNS解决无法访问Google的问题 - (日期:[七月 5, 2014] 点击:[21,789])
- WordPress博客添加“返回顶部”按钮 - (日期:[七月 14, 2013] 点击:[21,203])
- Linux文件系统基础之inode和dentry - (日期:[三月 13, 2015] 点击:[20,167])
- 云存储中的HTTP鉴权算法分析 - (日期:[二月 7, 2014] 点击:[18,639])
- 存储基础知识之——磁盘阵列原理及操作实战 - (日期:[二月 9, 2014] 点击:[17,491])
- 精选37条强大的常用linux shell命令组合 - (日期:[九月 4, 2013] 点击:[17,429])
- DNS原理、架构和配置详解 - (日期:[九月 6, 2013] 点击:[16,803])
- Netty和Jetty的Java NIO 网络框架模型分析 - (日期:[七月 13, 2013] 点击:[16,333])
- CoreOS 初识之安装 - (日期:[十一月 16, 2014] 点击:[16,170])
- Windows与Linux文件系统互访的几种方法 - (日期:[八月 21, 2014] 点击:[15,733])
- Dijkstra算法求解最短路径分析 - (日期:[七月 12, 2014] 点击:[14,924])
- NAS解决方案实现多媒体文件共享播放 - (日期:[十二月 21, 2014] 点击:[13,915])
- 简介 - (日期:[九月 1, 2012] 点击:[13,757])
- 如何编程实现 2 + 2 = 5? - (日期:[六月 2, 2014] 点击:[13,269])
- 搭建了一个iNews程序 - (日期:[十月 15, 2013] 点击:[13,236])
- 2014年9月曝出的Bash ShellShock漏洞简析 - (日期:[九月 26, 2014] 点击:[13,138])
- 彻底解决WordPress博客垃圾评论的问题 - (日期:[八月 5, 2013] 点击:[13,086])
- 如何使用1M的内存排序100万个8位数 - (日期:[三月 27, 2014] 点击:[12,552])
- 全部日志列表 - (日期:[十一月 11, 2012] 点击:[12,328])
- 关于回调函数和this指针探讨 - (日期:[八月 24, 2014] 点击:[12,209])
- 给定一个long型常量,其值为x,给定long型变量a,要求a & x 的取值集合 - (日期:[九月 8, 2012] 点击:[11,703])
- WordPress建站必备实用插件 - (日期:[八月 7, 2014] 点击:[11,360])
- Amazon 云计算业务全面介绍 - (日期:[三月 9, 2014] 点击:[11,268])
分类目录
文章归档
- 2024年四月 (1)
- 2024年二月 (1)
- 2023年九月 (1)
- 2023年一月 (1)
- 2022年十月 (1)
- 2022年八月 (2)
- 2022年四月 (1)
- 2022年三月 (1)
- 2021年十二月 (2)
- 2021年十月 (2)
- 2021年九月 (1)
- 2021年八月 (1)
- 2021年五月 (1)
- 2021年三月 (2)
- 2021年一月 (2)
- 2020年十二月 (5)
- 2020年十一月 (2)
- 2020年十月 (2)
- 2020年九月 (1)
- 2020年八月 (5)
- 2020年七月 (2)
- 2019年九月 (1)
- 2018年八月 (1)
- 2018年七月 (1)
- 2018年六月 (1)
- 2018年五月 (1)
- 2018年三月 (1)
- 2018年二月 (1)
- 2018年一月 (2)
- 2017年十二月 (3)
- 2017年十月 (4)
- 2017年九月 (1)
- 2017年七月 (1)
- 2017年六月 (1)
- 2016年十二月 (1)
- 2016年十月 (1)
- 2016年九月 (1)
- 2016年七月 (2)
- 2016年六月 (1)
- 2016年二月 (3)
- 2015年十二月 (3)
- 2015年十一月 (2)
- 2015年十月 (1)
- 2015年八月 (2)
- 2015年七月 (4)
- 2015年六月 (1)
- 2015年三月 (2)
- 2015年二月 (1)
- 2015年一月 (4)
- 2014年十二月 (2)
- 2014年十一月 (2)
- 2014年十月 (5)
- 2014年九月 (8)
- 2014年八月 (11)
- 2014年七月 (17)
- 2014年六月 (7)
- 2014年五月 (15)
- 2014年四月 (16)
- 2014年三月 (14)
- 2014年二月 (5)
- 2013年十二月 (5)
- 2013年十一月 (3)
- 2013年十月 (13)
- 2013年九月 (13)
- 2013年八月 (13)
- 2013年七月 (9)
- 2013年六月 (8)
- 2013年五月 (1)
- 2013年三月 (3)
- 2013年一月 (1)
- 2012年十一月 (1)
- 2012年九月 (12)
- 2012年八月 (3)
- 2011年二月 (1)
- 2009年三月 (1)
- 2009年二月 (1)
- 2008年十一月 (1)
- 2008年六月 (1)
- 2008年四月 (1)
- 2008年三月 (1)
Google Project Zero成员谈如何入门安全工作
已经有很多人(包括我谷歌的同事,Parisa 和 Michal已经就这个话题写过自己的感受,我建议你仔细阅读。我知道我写的这些可能已经有人说过了,但是每隔一段时间,我总是会再次遇到这个问题,于是我决定写下自己的经验。
首先,我是一个应用安全研究员,我是从 漏洞研究/安全审查/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 / netsec 和 Hacker 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