渗透测试与安全从业指南:调查结论(第一部分)
至少每月一次(有时更频繁),我会被问到以下问题之一:
- “我想找一份安全领域的工作,该如何开始?”
- “成为渗透测试员需要学习哪种编程语言?”
- “我应该考取什么认证?”
我通常尽力回答,但逐个回复效率低下、耗时,且难免带有个人偏见——我是一名Web开发人员,使用Ruby编程,持有两个GIAC证书,我的答案与那些用bash编写脚本、持有CEH证书的前系统管理员会大相径庭。因此,我决定通过社区投票来获取这些问题的权威答案,这样当有人询问时,我可以直接提供数据供其参考。本文旨在总结这些结果,并作为我在BSides London 2012演讲的补充。
为收集数据,我创建了一项在线调查,并通过多种渠道分发。截至目前,已收到超过300份回复,非常感谢所有完成调查和帮助宣传的人。如需查看完整原始数据,我已公开发布,并计划随更多回答保持更新。
尽管本意是获取无偏见结果,但很快有反馈指出,部分问题偏向渗透测试或安全技术层面,而非广义安全。回顾问题,我同意某些问题存在偏向,但我认为多数答案仍能为初学者提供有价值的参考。
首先需要现实检查:如果你认为安全工作是这样的,可能会非常失望:
如果你期待的是这样的场景,有些人偶尔会做到,但这远非常态:
不幸的是,对大多数人来说,现实更可能是这样的——无论是在办公室的工位还是服务器房的临时桌子:
另外,根据你的角色,可能还需要花费大量时间在这样的环境中:
以及很可能大量时间在这些地方:
在继续阅读前,你需要理解为何想进入安全领域。如果仅因为认为这是高薪职业或机会多,那么虽然可能属实,但安全工作会像其他工作一样,很快变得枯燥常规。如果是出于对安全的热情、对事物工作原理的兴趣、破解或保护事物的渴望,或一直以来的兴趣,那么它可能远超一份朝九晚五的工作。
那么,你还感兴趣吗?如果是,请继续阅读,我将尽力提供关于入门这一优秀职业的尽可能多信息。
我的问题可分为两部分,第一组是定量问题,以下是一些统计数据:
从业时间
时间 | 人数 | 百分比 |
---|---|---|
7年以上 | 138 | 43% |
4-7年 | 87 | 27% |
1-3年 | 70 | 22% |
少于1年 | 24 | 8% |
如你所见,多数受访者从业至少七年,意味着这些结果汇集了丰富的行业经验。少于一年的从业者数量虽少,但也提供了新鲜视角,有助于了解当前而非七年前的相关信息。
职位类型分布
职位类型 | 人数 | 百分比 |
---|---|---|
渗透测试员 | 187 | 59% |
漏洞审计员 | 156 | 50% |
系统管理员 | 134 | 43% |
IDS/防火墙管理员 | 106 | 34% |
策略编写员 | 104 | 33% |
日志分析员 | 102 | 32% |
事件响应 | 82 | 26% |
经理 | 73 | 23% |
其他 | 73 | 23% |
恶意软件分析师 | 53 | 17% |
IT取证 | 55 | 17% |
逆向工程师 | 41 | 13% |
PCI审计员 | 35 | 11% |
漏洞利用开发员 | 36 | 11% |
帮助台员工 | 36 | 11% |
第一个回答月度常见问题是:
成为渗透测试员需要会编程吗?
答案 | 人数 | 百分比 |
---|---|---|
不需要,但有帮助 | 194 | 61% |
需要 | 87 | 27% |
其他 | 17 | 5% |
不知道 | 14 | 4% |
不需要 | 8 | 3% |
从结果看,绝大多数人认为编程肯定有帮助,但“不需要,但有帮助”的回答表明,许多人在安全领域没有编程能力也能胜任。
关于“编程”一词,我们并非指编写商业级软件,安全中的编程多是创建小脚本,用于自动化任务或分析数据。脚本通常一次性使用,可以粗糙拼凑,无需通过全面同行评审。阅读代码的能力也有帮助,尤其在测试中获取应用源代码时。你可能无法完全理解,但能粗略理清工作流或发现明显错误非常有用,例如当你拿到试图访问的Web应用源代码时。
相关问题是“什么语言?”。单独回答时常引发争论,但通过汇总300多人的响应,这里的答案虽非绝对,但至少是社区共识。
编程语言
语言 | 人数 | 百分比 |
---|---|---|
Python | 245 | 81% |
Bash脚本 | 241 | 79% |
Ruby | 127 | 42% |
C | 123 | 40% |
Windows Powershell | 111 | 37% |
Batch脚本 | 108 | 36% |
PHP | 107 | 35% |
C++ | 66 | 22% |
Java | 65 | 21% |
Perl | 57 | 19% |
其他 | 57 | 19% |
VB | 29 | 10% |
C# | 26 | 9% |
Lua | 23 | 8% |
如你所见,Python和Bash脚本居首。Bash脚本的高排名支持了我关于编程用于自动化而非编写完整应用的观点。想学习Python的人,我强烈推荐“Securitytube Python脚本专家(SPSE)课程与认证”(http://www.securitytube.net/video/3786)。
下一个问题是关于认证:它们对实践学习有用,还是仅用于通过HR?结果如下:
答案 | 人数 | 百分比 |
---|---|---|
是 | 162 | 51% |
是——但仅用于通过HR | 141 | 44% |
否 | 17 | 5% |
调查进行一段时间后,我意识到有些人可能对某些认证答“是”,但对其他认证答“是,仅HR用”,因此虽主流回答是“有用”,但两者分割可能未准确反映受访者真实观点。
关于哪些认证有用,前两名是SANS/GIAC和CISSP。这里上述分割变得明显,许多人评论说SANS提供非常好的实践培训和认证,而CISSP对大多数人更用作通过HR的方式。
特定供应商认证开始一个趋势,后续将深入讨论,但不仅涵盖安全供应商,还包括通用IT供应商。思科(CCNA)、微软(MCSE及其新替代品)、Linux和OSSTIM等都被提及,完整列表见原始数据。普遍观点是,任何能展示你超出特定工作技能的方式都有用。
两个CHECK证书的低分符合预期,这些主要是英国认证,因此英国以外的人很少投票。我个人持有这两个证书,可以说它们对申请英国工作有帮助。
最后一个定量问题是会议是否值得参加。压倒性回答是“是”,许多人评论说虽然会议能获取技术技能,但对多数人的主要用途是社交。后续将进一步讨论,但总结来说,你认识的人越多,认识你的人越多,在需要时获得帮助的机会就越大——无论是问题解答还是求职推荐。
本文已比预期长很多,且仅覆盖了可量化结果,因此在此暂停,下周第二部分再回答更主观的答案。