渗透测试入门指南:编程语言、认证与行业现状解析

本文基于300多名安全从业者的调查数据,深入分析渗透测试所需的编程技能、认证价值以及行业真实工作状态,为安全领域新人提供实用参考和建议。

渗透测试入门指南:调查结论第一部分

至少每月一次(有时更频繁),我会被问到以下问题之一:

  • “我想在安全领域找工作,如何入门?”
  • “要成为渗透测试员,我需要学习哪种编程语言?”
  • “我应该考取什么认证?”

我通常尝试回答这些问题,但单独回答效率低下、耗时,而且即使我努力保持客观,也难免带有个人偏见——我是一名Web开发人员,使用Ruby编程,并拥有两个GIAC证书,我的答案与一位使用bash编写脚本、拥有CEH认证的前系统管理员会有很大不同。因此,我决定对社区进行问卷调查,试图为这些问题找到明确的答案。这样,当有人询问时,我可以指向数据,让他们自己决定。本文旨在总结这些结果,并作为我在BSides London 2012演讲的补充。

为了收集数据,我创建了一个在线调查,并通过尽可能多的渠道分发。截至目前,我已收到超过300份回复,非常感谢所有完成调查和帮助宣传的人。如果您想查看完整的原始数据,我已发布并打算随着更多人回答调查而保持更新。

尽管我设置这项调查是为了获得无偏见的结果,但很快收到反馈,指出有些问题偏向于渗透测试职业,或至少是安全的技术方面,而不是一般安全领域。回顾这些问题,我同意某些问题确实存在偏见,尽管如此,我仍然认为大多数答案能为想要入门的人提供良好的指导和一些有用的信息。

我想先进行现实检查:如果您认为安全工作是这样的,那么您会非常失望:

(图片:想象中的炫酷黑客场景)

如果您期待的是更像这样的场景,那么有些人偶尔会做到,但这远非常态:

(图片:偶尔的刺激工作时刻)

不幸的是,对于大多数人来说,情况更可能是这样的,无论是在办公室的办公桌还是在服务器室的临时办公桌:

(图片:普通的办公桌工作)

此外,继续泼点冷水,根据您的角色,您可能最终会花很多时间在这样的地方:

(图片:数据中心或服务器房)

以及很可能花很多时间在这样的地方:

(图片:会议或培训室)

在继续阅读之前,您需要理解为什么想进入安全领域。如果仅仅是因为您认为这是一个可以赚大钱的职业,或者您听说这是一个充满机会的领域,那么虽然这可能属实,但安全领域的工作就像任何其他工作一样,可能会相对快速地变得无聊和常规。如果您是因为对安全的热情、对事物运作方式的普遍兴趣、闯入或保护事物的欲望,或者只是因为这是您一直感兴趣的事情而进入这个领域,那么它可以远远超出一份朝九晚五的工作。

那么,在所有这些之后,您仍然感兴趣吗?如果是,请继续阅读,我将尽力为您提供尽可能多的信息,帮助您入门这个我认为非常优秀的职业。

我设置的问题可以分为两部分,第一组是定量问题,让我们看一些统计数据…

从业时间

时间 人数 百分比
7年以上 138 43%
4-7年 87 27%
1-3年 70 22%
少于1年 24 8%

如您所见,大多数受访者在该行业至少工作了七年,这意味着这些结果收集了大量的行业经验。行业经验少于一年的人数较少也很有用,因为它有助于提供新鲜的视角,并可以帮助告诉什么是与今天的新手相关,而不是7年多以前。

工作部门 breakdown

工作部门的细分也有助于解释答案的来源,我们有来自不同部门的答案,从渗透测试员和漏洞审计员到帮助台工作人员。

工作类型 人数 百分比
渗透测试员 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供应商。Cisco(CCNA)、Microsoft(MCSE及其较新的替代品)、Linux和OSSTIM都得到了提及,以及许多其他,查看原始数据获取完整列表。普遍观点是,任何能显示您拥有超出特定工作范围的技能的方式总是有用的。

两个CHECK证书的低分如我所料,这些主要是基于英国的认证,因此不会得到英国以外许多人的投票。我个人拥有这两个证书,我会说它们都有助于申请英国 based 的工作。

最后一个定量问题是会议是否值得参加。这里的压倒性回应是“是”,许多人评论说,虽然它们作为获取技术技能的地方有用,但对许多人来说,它们的主要用途是社交网络。这将进一步讨论,但总结来说,您认识的人越多,认识您的人越多,您在需要时获得所需帮助的机会就越大。这种帮助可能是问题的答案或申请新工作时的推荐。

这篇文章已经比我预期的长得多,并且只涵盖了可量化的结果,因此我将在这里暂停,并在下周的第二部分中回答更主观的答案。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计