如何成为一名渗透测试员
引言
我收到很多邮件。(请不要再增加了,谢谢!)不幸的是,我没有以前那么多空闲时间,或者希望有,所以我经常别无选择,只能将问题重定向到我们的论坛或IRC频道(freenode上的#corelan),希望社区的其他成员会介入并帮助我回答这些问题。
最常见的问题之一是“我如何成为一名渗透测试员”。
根据你问这个问题的对象,你可能会得到不同的结果,或者被告知采取特定的方法。通过这篇文章,我试图阐述我对这个问题的看法(侧重于过程而不是技术方面),希望能为那些处于类似情况的人提供一个良好的起点。
需要说明的是,我不是一名渗透测试员……但我尝试用常识(加上一点纯逻辑)来应对挑战和生活中的几乎所有情况。请随时提供反馈、建议更改或告诉我闭嘴滚蛋。任何有动机的补充或更改都非常欢迎,我会根据需要更新此页面。
从哪里开始……还是?
有几种开始信息安全的方法。随着时间的推移,技术变化,新平台被设计和实施等,方法也会改变。所有这些都会影响应该成为最新“热门”话题的内容。在此之前,无论你采取哪种方法,都应该问自己两个基本问题:
1. 我愿意投入多少努力(时间等)?
我从事漏洞开发多年。事实是,我没有系统编程的高级背景,也没有接受过最新技术的培训。所需要的只是大量的时间和奉献精神,以及学习和吸收新事物的强烈意愿。你可以根据大脑处理和记忆的速度来学习,并通过练习将其锁定在脑海中,将知识转化为经验。有些人学得快,有些人需要更多时间。两种方法都没有错,但自我意识、对自己的能力有自知之明,并对你能够并愿意投入支持学习过程的时间保持现实态度是很重要的。另一个需要考虑的因素是你在生活中各种力量之间的平衡。如果你有家庭,请确保与家人交谈,并在与他们共度和在学习体验上花费时间之间找到良好的平衡。即使你独自一人,也要时不时出去走走。不要急于求成,尝试剂量并应用健康的时间消耗模型。让你的大脑处理、思考,并慢慢来。
这个“时间”因素将我们带到第二点:
2. 我的目标是什么?
人们一直在设定目标。目标可能在所需知识和经验方面很遥远,甚至可能遥远到看起来更像梦想而不是其他任何东西。好消息是,有野心和梦想是可以的。然而,根据我的经验,通过将梦想分解为更小的目标,实现你的野心会更容易。所以,我对目标或目标的(相当有限的)定义是现实的东西,你可以通过一个或多个步骤(行动)实现的东西。我们可以讨论语义、词语和定义,但这不是我陈述的重点。让我们将梦想/目标/目标的逻辑应用于本文的主题。假设成为渗透测试员是你的梦想。成为渗透测试员的概念相当令人兴奋,但同时也相当模糊。你到底想做什么?你想测试什么类型的笔……呃……目标。你为什么想这样做?
如果你还没有答案,与渗透测试员交谈并询问他们做什么类型的工作,看看你是否感兴趣,可能是有用的。假设你的理想场景包括测试企业网络的整体安全级别,对Web应用程序执行审计,并对“移动设备”做一些事情,因为人们是这么告诉你的。也许是社会工程。你选择什么并不重要,那些是你的目标。它们是“渗透测试员”定义的一部分,但你刚刚将梦想分解为目标和目标。
为什么我对此如此哲学?嗯,成为一名专精于所有类型审计的渗透测试员可能毕竟不现实。技术变化如此之快,以至于不可能立即成为所有方面的专家。试图理解和掌握一切不是一个现实的目标。它可能仍然是一个梦想,你最终可能会达到那里。这完全取决于你愿意投入多少努力。再进一步,不要因为别人说的话而气馁或过于热情。时机是个人的,没有好坏之分。好消息是:你可以做任何你想做的事,有些事情会比其他事情花费更多时间。这不是关于“是否”你能做到,而是关于“何时”,以及这个“何时”有多现实。
成为渗透测试员也不意味着擅长使用工具。它是关于能够理解事物如何工作、如何配置、人们犯什么错误以及如何通过创造性找到这些弱点。成为渗透测试员不是关于对互联网启动Metasploit。
几年前,我对摄影产生了兴趣。在用智能手机拍了很多照片,并被家人不断重复我的照片有多棒之后,我决定买一台单反相机。猜猜怎么着。买更好的相机或镜头并不会让我成为更好的摄影师。事实上,它让事情变得更糟,因为我不理解光如何工作,相机如何调整以处理光,以及我们如何影响光以获得更好的照片。智能手机的设计让你不必考虑这些。初学者的错误。现实是,学习事物如何工作是耗时的、令人沮丧的……但最终会有回报。我仍然不是一个好摄影师,但我不介意承认这一点。我认为这是一段旅程,至少我决心先理解基础知识;尝试并犯很多错误;并且不害怕寻求帮助。
所以,这让我回到最初的问题:“从哪里开始”。现在应该很清楚,也许你应该先尝试回答“你想在哪里结束”,因为这会告诉你从哪里开始。别担心,即使你犯了错误,即使你发现你选择了错误(“不那么令人兴奋”)的目标,你仍然赢了。你获得的任何知识在某种程度上都是有价值的,并且可以在过程中有所帮助。
看待“目标”还有第二种方式。你也可以将你的目标定义为“你产生收入的能力”。为了本文的目的,假设你想作为渗透测试员赚钱。这意味着你可能必须选择某些将提供经济价值的技术目标(知识)。这可能由某些类型技术的流行驱动(例如Web应用程序);或相对较新的领域(物联网、移动等)。所以,即使你想做很多事情(并且应该着眼于更广阔的视角),你很可能会必须专精于特定领域。
在继续之前,我想引用@thelightcosine引用HD Moore的话:“如果你不认为自己是菜鸟,那你不够努力”。挑战自己。尝试学习更多关于某事,尝试轻轻推动你的极限,但要以现实的方式去做。永不放弃。这是一段痛苦、漫长但非常有回报的旅程。
好的,明白了。那么,从哪里开始?
假设你知道你想在哪里结束,并且你有一个现实的计划,包括投入时间和努力;你应该用你的时间做什么?
在谈论可能的道路之前,我想简要提及一些将成为你旅程最重要部分的东西。那就是你和你的态度与心态。你将是你做工作的人。你是设定目标并想要开始工作的人。你是将使这项工作成功的人。但这需要特定的态度才能做到。这就是所谓的“黑客”态度。黑客这个词有很多定义;但大多数都归结为:渴望理解事物如何真正工作,以便你可以优化/改变行为,或应用理解来弯曲游戏规则。黑客倾向于破坏东西;渗透测试员也倾向于破坏东西。目标应该是破坏东西,以便提出如何改进的解决方案。如果目的是破坏东西以便证明你可以破坏东西,并且系统/人有缺陷……新闻快报:我们已经知道这一点。你在浪费你的时间。你是一个破坏者,而不是黑客。如果你真正想成为黑客,破坏东西是因为你想修复它,让它变得更好。黑客这个词可以应用于许多学科。它不需要与计算机绑定,也可以应用于一般科学。事实上,没有黑客,我们就不会有药物或技术进化。
对你所看到的持批判态度。尝试理解你所看到的。提出问题,不要接受“我不知道,它就是那样工作的,那是有人告诉我的,接受它并继续前进”。问自己“如果我必须设计X或Y,我会怎么做”。将你的思维过程置于他人的心态中将帮助你理解事物为什么以它们的方式工作,它们是如何设计的,以及人们如何以他们使用的方式使用它们。使用同理心并理解他人有不同的观点将拓宽你对事物的理解,这反过来将帮助你发现优点和弱点。
好的好的,别废话了,从哪里开始?
等等。我们快到了。在给你一些关于如何接近你的旅程的提示之前,我想分享一些关于提问的想法。事实上,除非你生来就有所有答案,否则你最终可能会提出问题。即使你知道你的最终目标是什么,你可能不知道如何到达那里,或者需要什么才能到达那里。弄清楚的唯一方法是提出问题。有趣的是,你提问的方式和你提出的问题类型将决定你是否得到你需要的答案。
我经常在IRC的各种频道中闲逛,并且长期订阅了一堆邮件列表。我看到人们提问和其他人试图回答问题每天都在发生。你会认为提问或回答问题是微不足道的事情,但有趣的是,人们因为试图找到他们不知道的答案而被大喊大叫、被IRC频道踢出ban,或在公共场合受辱。很多人最终感到沮丧,因为他们未能得到满意的答案,而其他人感到沮丧,因为他们觉得在浪费时间。
究竟是什么导致了这种冲突,双方如何更有效地提问和回答问题,并希望避免痛苦的情况?下面的大多数项目基于可能直接交互的情况(IRC、即时消息等),但它们可以很容易地推广并适用于任何形式的通信(电子邮件、支持表单、论坛)。
提问
提问很容易。提出一个好问题似乎远非易事。一个问题需要什么才能引发有价值的答案,你如何避免人们开始对你扔桌子、自行车和电梯,因为你只是想得到一个答案?我试图收集一些关于如何更有效地提问并增加不仅得到答案而且得到有帮助答案的机会的想法。几年前,我在Twitter上做了一项小调查,以发现人们认为什么是“坏”问题的成分。结果包括:
- 没有迹象表明提问者做了任何自己的研究或试图找到答案,谷歌搜索Bing或Bing搜索谷歌;
- 当问题模糊时;
- 当你忘记问问题时;
- 大量前言才到达问题。
有几件事你可以做以避免常见陷阱并使你的问题被标记为“坏”。首先,我不认为存在坏问题。总是有问题的原因,或问题背后的逻辑。它可能不清楚到底是什么,因为沟通不畅或其他原因,但这并不使问题变坏。我在下面列出一些想法,没有特定顺序。
避免明显的答案。 思考你的问题。在线、维基百科、通过简单的谷歌搜索或阅读产品文档找到答案有多容易?如果你懒惰,不要指望人们会欣赏这一点。相信我,诚实地承认你的懒惰也不会有所帮助。如果你因为懒惰而被IRC踢出ban,并且你宣传或承认它,你可能活该。
表现出你值得一个答案并预期。 做你的功课。在互联网上查看关于你的问题可以找到什么,自己尝试一些事情并记录你所做的。准备好展示你所做的。诚实和准确。如果你表现出你已经尝试并愿意尝试更多,人们更有可能帮助。一旦人们感觉到你只想被喂食,你的支持渠道将在你面前爆炸。人们可能会要求你重现你采取以到达当前情况的步骤,所以你可以预期到这一点。在提问之前将你的文档和程序放在Pastebin或Pastie上,并准备好根据需要提供你的文档链接。
不要遗漏重要信息或对你所做的某事感到尴尬,即使你认为你不应该做它。它很可能是问题的一部分,如果你想要解决方案,你最好诚实。在描述你的问题时尽可能事实,不要让