如何成为渗透测试员
引言
我收到大量电子邮件(请别再增加了,谢谢!)。遗憾的是,我的空闲时间不如以往充裕,因此常常只能将问题转至我们的论坛或IRC频道(freenode上的#corelan),希望社区其他成员能协助解答。
最常见的问题之一是“如何成为渗透测试员”。根据询问对象的不同,你可能得到不同答案或被建议采取特定方法。本文试图阐述我对这一问题的看法(侧重过程而非技术细节),希望能为处于类似境况的人提供良好起点。
需要说明的是,我并非渗透测试员……但我尝试用常识(辅以纯粹逻辑)应对挑战和生活中的各种情况。欢迎提供反馈、建议修改或直接批评。任何建设性的补充或修改均受欢迎,我将根据需要更新本文。
从哪里开始?
信息安全入门有几种途径。随着时间推移、技术变革和新平台的涌现,这些途径不断变化。在深入之前,无论采取何种方法,都应先问自己两个基本问题:
1. 我愿意投入多少精力(时间等)?
我从事漏洞开发多年。事实上,我并无系统编程的高级背景,也未接受过最新技术培训。所需的是大量时间与奉献精神,以及学习和吸收新事物的强烈意愿。学习速度取决于大脑处理与记忆能力,以及实践巩固效果。有人学得快,有人需更长时间,这均无妨。但清醒认识自身能力,理性评估可投入的学习时间至关重要。另一需考量的因素是生活各方力量的平衡。若有家庭,请确保与家人沟通,在陪伴家人与学习时间间找到平衡。即使独居,也需适时外出放松。勿急于求成,应合理分配时间,让大脑处理、思考,从容推进。
这一“时间”因素引向第二点:
2. 我的目标是什么?
人们常设定目标。目标可能在知识与经验层面遥不可及,甚至看似梦想。好消息是,怀有抱负和梦想无可厚非。但根据我的经验,将梦想分解为更小的目标更易实现。因此,我对目标或靶子的(有限)定义是:通过一个或多个步骤(行动)可实现的现实事物。语义讨论非本文重点,让我们将梦想/目标逻辑应用于本主题。假设你的梦想是成为渗透测试员。这一概念令人兴奋,但同时模糊。你具体想做什么?想测试何种目标?为何想做?
若尚无答案,不妨与渗透测试员交流,了解其工作内容,确认是否感兴趣。假设你的理想场景包括测试企业网络整体安全水平、对Web应用程序进行审计,并因他人推荐而涉及“移动设备”。或许是社会工程学。选择无关紧要,这些是你的目标。它们属于“渗透测试员”定义的一部分,但您已将梦想分解为目标。
为何如此哲学化?成为精通所有审计类型的渗透测试员可能不现实。技术变化太快,难以立即成为万事通。试图理解并掌握一切并非现实目标,但仍可是梦想,最终或可实现。这取决于你愿意投入多少努力。进一步而言,勿因他人言论气馁或过度兴奋。时间安排因人而异,无好坏之分。好消息是:你能做任何事,只是某些事需更长时间。问题非“能否”做到,而是“何时”做到,以及该“何时”是否现实。
成为渗透测试员亦非仅关乎善用工具,而在于理解事物运作方式、配置方法、人为错误及如何通过创造性发现弱点。渗透测试非仅对互联网启动Metasploit。
几年前,我对摄影产生兴趣。在用智能手机拍摄大量照片并获家人盛赞后,我决定购买单反。结果如何?更好的相机或镜头并未让我成为更好摄影师。事实上,情况更糟,因我不理解光线原理、相机如何调节光线及如何影响光线以获更佳照片。智能手机设计使您无需思考此问题。此乃初学者误区。现实是,学习事物原理耗时、挫败……但终有回报。我仍非优秀摄影师,但不介意承认。我视此为旅程,至少决心先理解基础;勇于尝试和犯错;不惧求助。
至此,应清晰的是:或许应先回答“你想达到何处”,这将告知你从何开始。别担心,即使犯错或发现选择了错误(“欠佳”)目标,你仍获益。任何获得的知识均有价值,可沿途助益。
目标亦有第二层视角:可将目标定义为“生成收入的能力”。假设本文中你想作为渗透测试员赚钱,这意味着你可能需选择具经济价值的技术目标(知识)。这可能由某些技术类型(如Web应用)的流行度或相对新兴领域(物联网、移动等)驱动。因此,即使你想做多事(且应视野广阔),很可能需专攻特定领域。
继续前,我想引用@thelightcosine引述的HD Moore之言:“若你不认为自己菜鸟,说明你未足够努力。”挑战自我,尝试学习更多,温和推动极限,但以现实方式进行。永不放弃。此乃痛苦、漫长但回报丰厚的旅程。
好了,明白了。那么,从何处开始?
假设你知目标所在,并有包含投入时间与精力的现实计划,你应如何利用时间?
谈可能路径前,我想简要提及将成为你旅程最重要部分的事物:你及你的态度与心态。你将完成工作,你设定目标并欲开始行动,你使此成真。但这需特定态度,即所谓的“黑客”态度。“黑客”一词有诸多定义,但多数归结为:渴望理解事物真实运作方式,以优化/改变行为,或应用理解弯曲规则。黑客倾向破坏事物;渗透测试员亦如此。目标应为通过破坏提出改进方案。若目的仅为证明可破坏事物,且系统/人存缺陷……新闻快报:我们已知此点。你在浪费时间。你是破坏者,非黑客。若你真想成为黑客,因欲修复、改进而破坏。“黑客”一词可应用于多学科,非必绑定计算机,亦可应用于广义科学。事实上,无黑客则无医药或技术演进。
批判所见,尝试理解,提问并拒接“我不知道,就是这样运作的,别人这么说,接受并继续”。自问“若我须设计X或Y会怎么做”。将思维过程置于他人心态中将助你理解事物为何如此运作、如何设计及人们如何使用。运用同理心并理解他人有不同观点将拓宽你对事物的理解,进而助你发现强弱项。
好了好了,别废话了,从何处开始?
稍安勿躁。我们快到了。在给出如何着手旅程的提示前,我想分享关于提问的一些思考。事实上,除非生而知之,你很可能最终需提问。即使知终极目标,你可能不知如何达到或需何条件。唯一弄清方法是提问。有趣的是,你提问的方式及问题类型将决定你是否获得所需答案。
我常活跃于IRC各频道,并长期订阅多个邮件列表。我见人每日提问及他人尝试答题。你或认为提问或答问琐碎,但有趣的是,人们因尝试寻找未知答案而被吼叫、踢出IRC频道或当众羞辱。许多人因未获满意答案而挫败,他人则因觉浪费时间而沮丧。
究竟何引起此冲突?双方如何更有效提问与答问,避免痛苦局面?以下多数项基于可直接互动的情况(IRC、即时消息等),但易泛化并适用于任何沟通形式(电子邮件、支持表格、论坛)。
提问
提问很容易。提出好问题似乎远非易事。何使问题引发有价值答案?如何避免人们因你只想获答案而向你扔桌子、自行车和电梯?我尝试收集一些关于如何更有效提问并增加获答案(且为有帮助答案)机会的想法。几年前,我在Twitter进行小调查,以发现人们认为“坏”问题的要素。结果包括:
- 无迹象表明提问者做过任何研究或尝试寻找答案(谷歌搜索、必应搜索或必应谷歌);
- 问题模糊时;
- 当你忘记提问时;
- 大量前言才到问题。
有几件事可做以避免常见陷阱并使问题被标为“坏”。首先,我认为不存在坏问题。问题总有原因或背后逻辑,可能仅因沟通差或其他原因而不清晰,但这不使问题变坏。我以下列出一些想法,无特定顺序。
避免明显答案。 思考你的问题。在线、维基百科、简单谷歌搜索或阅读产品文档多易找到答案?若你懒,勿期望人欣赏。相信我,诚实承认懒惰亦无助。若因懒而被踢出IRC,你活该。
展示你值得答案并预作准备。 做功课。网上查找关于你问题的内容,自己尝试一些事并记录所做。准备展示所做。诚实准确。若你展示已尝试并愿尝试更多,人更可能帮助。一旦人觉你只想被喂食,支持渠道将在你面前爆炸。人可能要求你重现导致当前情况的步骤,故你可预作准备。提问前将文档和程序放Pastebin或Pastie,并准备在需要时提供链接。
勿遗漏关键信息或因所做之事尴尬,即使你认为不应做。 这很可能是问题的一部分,若你想要解决方案,最好诚实。尽可能事实性描述问题,勿让思维过程主导。描述症状及重现症状的确切步骤比解释你认为问题所在更有效。你可能遗漏明显之处,若未分享所有事实,人可能无法发现真正错误。
若你尝试程序或工具并获错误消息,很可能他人遇过相同情况。谷歌错误消息(省略特定部分如IP地址等),自己查看能找到什么。确保构建问题的方式让人相信你只需正确方向的轻推。 而非问“我不明白这如何工作”或“我想黑Gmail”,你可问“你推荐我应学什么以做这或那”,或“有人有关于针对Oracle数据库的SQL注入的推荐资源吗”?你试图实现相同目标,几乎问相同事,但将焦点转向学习与寻找解决方案的过程,而非吸引注意问题或目标本身。问“正确方向的一些指针”完全没问题。有著名中国谚语云:“授人以鱼不如授人以渔”。若有问题,你可选最快最容易路径,让人通过立即给你解决方案来为你修复。若被教如何解决问题,你可增加洞察力并提高自己预防和修复未来问题的能力。你越将问题焦点放在自己能做和应做的事上,越易说服某人帮助你。
常有效的是先向朋友解释问题。 某些情况下,解释问题并让朋友尝试理解问题或暴露解决方案。这在我身上发生并多次助我。简言之,你投入自己寻找解决方案的工作越多,问题越精确,人越欣赏。
分解事物并自我批判。 提问前,将问题分解为技术层和组件。你完全理解重现问题所需的其他组件或先决条件吗?若你问关于攻击远程计算机的问题,确保理解网络层并检查你的设备与远程计算机间一切设置正确。若你对网络知不足,不应攻击使用网络的事物。
勿忘记或忽略他人曾经历与你相同的学习经历并为之努力。若你的问题暗示你只想跳过学习基础知识,人可能被冒犯,因你基本不尊重他们过去所做的艰苦工作。
考虑你可能仍有长路要走,且“理解”某事未必意味你以正确方式应用。 而非问为什么某种技术对某种情况不工作,你可能需思量是否完全理解该技术。
勿以道歉开始。 无需为不知某事道歉。这通常仅让人短暂挑眉并继续。你只应因未问恰当问题或未准备学习工作而向自己道歉。勿因英语说或理解差道歉。人不在乎。若差,他们会注意到差。你有机会通过阅读文档、与人互动提高英语,故不妨做些事。若不确定,提前准备问题并放松。若你问好且准备充分的问题,无人会注意。当然,若支持以母语提供,这应是你的首选。我非试图说道歉是坏事。它是成熟与尊重的象征,在冲突情境和谈判中非常强大。我只是不信它将助你获答案。勿躲在语言不好背后侮辱人。我见过此发生:有人进入IRC频道,先为英语差道歉,然后公然地侮辱房间每个人。坏主意。借口非愚蠢的魔法补丁。
友好、礼貌且勿不耐烦。 即使问题紧急,若你决定依赖社区支持,也需意识到并接受人亦有生活,可能有比回答你问题更优先的事。10分钟后问“为什么”未获答案可能触发人忽略你,故勿做。或许你需重新思考问题,或寻找其他信息或支持源。公共论坛和IRC频道非私人支持渠道。勿期望全世界人口关心你的问题,故确保不用你的问题淹没频道。尽管IRC和即时消息工具允许直接沟通,这不保证沟通在你想要时并以你想要的速度发生。时区真实存在,有答案的人可能睡着。接受它。
即使你认为工具糟透,聚焦于你可能做错什么。他人将欣赏若你问“我做错了什么”或“你应做何不同”,即使这是应用程序或工具中的真正错误。若你以说某工具坏掉或问“为什么”工具坏掉开始,你将以坏方式吸引注意。工具中一个错误不使工具变坏,故勿不尊重可能阅读你评论的许多人的工作。你是开启讨论者,你永无第二次机会制造第一印象。讨论的其余部分的基调将在你发起沟通时设定,故友好并尊重。
关于自己或处境的玩笑自是例外,常被良好感知。抱怨糟糕互联网连接及它如何让你考虑再发传真,或评论你的狗太胖以致干扰家中Wi-Fi信号,仅是帮助设定友好基调的几个例子。
创造性,勿过度并谨慎选择时机。 或许你对你将提问的人的技能印象深刻。勿开始喊叫你认为他们多“牛”或“专业”,以及回答你问题对那些人多容易。这可能引发一些红旗并让人认为你是巨魔。做自己,行为正常,礼貌,你将没事。
使答案容易。 若你的问题太宽泛或包含太多可解释、模糊、可疑或含糊的元素,勿期望任何人休假几周带你参观。
选择听众。 何处是找到问题答案的最佳地点?谁将是回答问题的合适人选?论坛和IRC频道常聚焦特定主题,故尝试挑选合适媒体和频道提问。若你的问题与工具使用相关,找其他用户可能是好主意,而非立即将问题发送给工具开发者(或使用他们提供的支持机制)。
提问。 勿以问是否能提问开始。无需问某人是否在线或可回答问题。直接问该死的问题。若某人在线且你的问题合理,你将获答案。除非你从先前讨论处接续,勿针对特定人。若你暗示仅特定人可回答问题,其他人可能忽略你的问题。若你想获答案,确保问题完全清晰。若你仅陈述“我有X或Y问题”、“此工具不工作”或“我的漏洞被防病毒检测”,你技术上仅作陈述而非提问。问你做错了什么或你能做什么使某事工作(更好)更可能让你得所欲。即使你必须解释问题背景,尝试保持简短、切题,并尽快转向提问。
倾听、互动并在需要时寻求澄清。 尝试理解答案并勿立即回复。若有人告诉你调查其他事,做它。勿继续锤击,忽略给你的建议。若答案不清晰,请求澄清,但以暗示你尝试学习(过程)而非被喂食(解决方案)的方式进行。如早先解释,你越善于设定正确基调并暗示你只想要正确方向的一些提示,某人帮助你的机会越高。请求澄清时,尝试以解释你理解与未理解部分的方式表述。重述或总结某些部分常有助于显示答案的哪些部分清晰,哪些需要进一步澄清。重述/考虑以以下方式开始新问题:
- 若我正确理解你,
- 你说的是……
- 换句话说,
- 如果
- 这是否意味……
若你完全未理解答案,勿害怕这样说。请求该人换种方式重述、解释或阐述答案的某些部分,并以礼貌方式进行。
感恩并在可能时回馈。 若有人尝试帮助你,告诉该人你欣赏帮助,即使未完全回答问题。意识到许多人有事做而非回答问题。若他们尝试帮助,是因他们想帮助,尽管日程紧张、工作截止期和其他优先事项。因他们花时间而赞扬他们。以简短、清晰、高效的方式做。提及答案如何有帮助。若你印象中你所问问题是非常常见的问题,且直觉告诉你回答问题的人实际上已厌倦不得不反复处理此问题,你可能考虑助他一臂之力。记录你的问题与解决方案并放网上某处。这将助你理解原因与解决方案,你可请帮助你的人验证你的文档以确保准确,并可仅通过指向你的在线文档来帮助他人。这证明你想学习、你已倾听并想回馈。勿等到有所有答案才分享。猜猜看,你总将找到另一个问题。
回答问题
问好问题绝对是需些许准备的艺术。答问,若你真想帮助某人,亦非琐事。尽管某些案例暗示相反,无专用提问者与专用回答者之分(不确定这是否甚至有效词)。无论你多经验丰富,你可能仍不时发现自己在故事双方。当你能回答问题处位时,你实处于独特情境。想想看,你有权决定是否回答问题,此外,你可选择如何回答问题,这将直接影响答案是否有价值。若你决定花时间以帮助某人的意图回答问题,你不妨做对事。或许以下一些指南可能有助:
友好。 问题以某种方式提出有原因。你应能感知追求快速胜利者与真诚、真想学习但不知如何良好沟通者间的区别。当你不确定时,给予该人疑点利益,你仍可后来吼他。若他们太模糊或未使己清晰,有简单方法帮助某人。仅重述问题并问是否他们想知道,或直接告诉他问题无意义并要求该人更具体。这将确保你正确理解问题,并向该人展示下次如何正确表述问题。无理由取笑某人或使他/她感觉糟。他或她已承认对某事无知。
答前思考,请求更多信息。 你真理解问题吗?你的答案将有帮助吗?若问题不清晰,请求澄清。重述;请求示例。尝试重现导致问题的步骤,并请求更多细节和文档。
勿因必须而回答。 仅因你想帮助并有时间帮助而回答问题。尽管第一个问题可能合理,它可能很容易变糟。若你决定介入帮助某人,至少你必须尝试使提问者走上正确道路,且很难提前估计你需要多少时间。若你做对事并良好理解问题,立即回答问题或指向提问者正确资源应不太难或耗时。
以问题回复。 棘手。有些人喜欢一直这样做,这可完全吓坏人并破坏正常沟通,故确保仅在特定情况下使用此技术。以问题回复肯定有很多价值,前提是问题暗示解决方案或旨在获得更多信息。让我们看一个快速示例:
问题:“我对目标计算机运行漏洞利用,漏洞利用说未能获得反向shell。”
此场景许多事可能出错,使仅用几句话回答问题困难。问几个短问题可能让该人回去工作,尝试获取其程序未工作的更多细节。例如,你可问两台主机是否能相互连接。这暗示可能存在网络相关问题。它显示你理解与利用远程计算机相关的各个层,并帮助他使用结构化方法排查此类问题。关于问题本身的问题可能揭示潜在原因和动机。有时人太尴尬承认某事,因他们几乎能感觉到他们做错事,或或许他们知道他们在做非法事。通过询问关于他们为何想做某事的特定问题,或建议他们以不同方式做事(不涉及潜在非法活动的方式),可能给你关于该人的一些有帮助信息以及他的意图是否合法。若某人对互联网上的机器运行漏洞利用有问题,你可能建议他在私人实验室模拟程序。若该人选择忽略你的建议并坚持他想通过互联网做,你几乎肯定他意图不轨。尝试发现该人试图做什么。若某人问是否可能做某事,问他试图实现什么。理想情况下,它将迫使该人解释并揭示任何潜在动机。
诚实。 若你不确定答案,仅说如此。承认你不确定某事无错。猜测可接受,只要你明确你在猜测。它可能暗示可能解决方案并或许已使该人走上正确轨道。
激励,非烧毁。 你可通过提供有帮助答案展示技能,而非炫耀、强调你多聪明。基于问题多具体及它反映询问者知识水平的方式,你可相应调整答案的细节水平。若你需要解释某事错或坏,勿忘记解释为什么错或坏,并给出如何避免或修复问题的指针。你无需详细回答问题,如同在读教程给他们。正确方向的轻推常足以激励学习过程。将某人放正确道路并指向他应学习的资源若他想未来进步是可的,但勿仅向他扔URL。若对方理解为何需要学某事,将更易说服他付出努力这样做。当然,若同一人仅继续提问且不愿花时间适当学习,你的答案显然不再有帮助,且该人可能不想被帮助。他只想有人为他做工作。此情况下,尝试无价值。等到该人已明白他需为之工作,并忽略他直到他证明它。
语言。 英语是国际IT或信息安全社区的重要语言。然而,这并非意味每个人是母语者或甚至接近。使用常见和通用术语完全没问题,但尝试保持句子尽可能简单。我们不想让可怜的家伙遭受超过必要的痛苦,对吗?若你在对话期间注意到对方未真正理解你的答案,挑战他并验证他理解你所说。尝试弄清是语言问题还是知识问题。若这是你们第一次交谈,仅问询问者是否理解你所说可能是可接受的,以便你可根据需要调整词汇。看是否能举例澄清,或仅问关于你解释的问题。若你心情好,你可说些暗示如果需要问更多问题是可的的话,这应可打破询问者有点害羞的冰。
发现巨魔。 当然,有人手头时间太多,无真实生活,试图通过结合愚蠢和智能问题浪费每个人时间,仅为乐趣。所谓巨魔中的一小部分实际上非常精通涉及的微妙之处,并可能使他们听起来有真实问题,然后继续将愚蠢问题与好问题结合。若做得好,这些人可能实际上让你忙一阵。幸运的是,大多数巨魔忍者技能差,易被识别。浪费勇敢志愿者和真想帮助的人的时间不很好。被踢禁,他们应。
提供反馈。 若无任何奏效且你有片刻时间,解释为什么某个问题或备注未工作。或许询问者说了不尊重的话或暗示他不想适当学习。最坏情况,他将忽略你的建议,而你可选择也忽略他。最好情况,他将从你的反馈中学习并下次以不同方式处理事情。
更新:查看http://xyproblem.info/
叹气。好了。请问,从何处开始?
水平或垂直?
我实在不在乎你学习新事物时喜欢站立还是平躺。“水平或垂直”标题意即:你应首先聚焦学习广泛多样事物(水平),还是应直接深入你感兴趣的领域(垂直)?
好问题。两种场景肯定有优缺点,意见比人多。鄙人亦有意见,故我将分享个人观点。首先理解大局有用。若你的目标是成为Web应用程序渗透测试员,学习所有涉及层可能有意义,范围从操作系统、网络、Web服务器和应用程序技术、常用数据库平台和常见开发语言。这是大动物。你感兴趣的信息量通常取决于你需要什么。同时,你越理解事物如何工作,越易理解如何弯曲规则。我的建议是:尝试首先尽可能理解各层。勿不耐烦并立即深入发现错误或利用的繁琐细节。特别是工具的可用性将使你手痒并降低立即攻击系统的门槛。始终记住工具非魔法。它们仅自动化事物。你越理解它们做什么,越易使用它们。勿误解我,工具有用。仅在你理解它们做什么、如何配置、如何正确使用前勿使用它们。
故,我相信尝试理解系统的系统工程方面有很多价值。理解事物如何通信、如何设置、保护、操作。亦勿过度。你无需是理解所有RFC规范的IP专家。你可能需要比你滥用它所需更多。你将需要足够使用和滥用它。
此外,理解你可采取分阶段方法。你无需是BGP路由专家来执行Web应用程序测试。如果你是也无妨,但你仍可在你准备扩展视野并深入安全审计其他方面时学习它。在设定的目标中现实,并尝试准确确定到达那里所需的先决条件。若不确定,询问多个意见,并勿害怕学太多而非不足。
如何学习?
学习新事物有多种方式,其中一些相当个人化(即:它们仅对某些你有效,对他人无效)。有些人能通过阅读书籍或博客文章学习新事物。有些人需要可视化事物,其他人需要有人在视频或面对面设置中解释事物。每种方法学有解决方案。你可购买书籍或在线阅读出版物。你可参加课程(在线或真实生活),并可找到许多在线挑战练习新技能。
这些方法均无错,只要你理解什么最适合你,以便你能相应调整策略。所有这些学习方法学的共同方面是获得实践。自己尝试事物(引导或非引导)将使其更易记住并最终将知识转化为理解与经验。
无论如何,搭建虚拟实验室环境可能极其有用。如今,虚拟化技术可用于大多数常见平台,它便宜/免费并允许很大灵活性。VirtualBox、VMWare、Parallels、Xen、Hyper-V仅是少数例子。
尽管这不是万能建议,通过安装Windows和*Nix/Linux系统,你将走很长的路。当然,理解如何管理和操作这些系统根本重要。你不想花时间与应支持你学习经验的工具斗争。
喂食
喂食听起来像我们对婴儿做的事,对吗?若你问经验丰富的人喂食对错,我打赌大多数将告诉你它坏。我相信答案非黑白。这取决于。首先,我们都被喂食过。(或至少大多数我们)。这是我们无法自己喂食时父母所做的。这是当你全新于某物时老师所做的。这是我们应将人放正确轨道所做的。我们都被告知某些事以允许我们练习、变得更好,并进入下一阶段。支持性激励与不留任何帮助抛下人之间存在细线。
在《领导力与一分钟经理 – 通过情境领导力II提高有效性》中,Ken Blanchard解释4种不同“发展水平”。其中之一由高承诺和低能力定义。这可能正是你现在所处位置。你对学习新事物相当兴奋,但不知从何开始。对于像这样的场景,一些喂食可能有用。这并非意味他人将为你做所有艰苦工作,但仅被告知“自己去搞清楚”而不给定向指针或提示亦无用处。一旦你学更多(并变得更有能力),你将发现还有更多要学。此时,你可能发现自己变得不那么承诺,因你开始意识到仍有长路在前(这可相当挫败)。这也正常。此时,喂食无帮助。此情况下,辅导更合适。问正确问题将迫使人思考、应用他们已有的知识,并寻找答案。若他们毕竟卡住且无法自己发现答案,或许是时候退一步并毕竟获得一些详细帮助。故 – 请谨慎对待关于喂食的负面看法。情况(发展水平)决定它是否正确方法。
还有其他吗?
不,真的没有。谢谢询问。是时候开始绘制将成为你旅程的树了。
1. 网络与操作系统
我建议从学习系统如何工作和通信开始。尝试获得对TCP/IP、OSI层、临时和服务器端口、路由、端口转发、NAT、防火墙等的良好理解。尝试连接目标、使用工具和配置环境以允许你的安全审计成功时将需要它。
你还需要能够管理和操作常见操作系统。与网络一起,这应是你的主要起点。我们大多数熟悉一个操作系统,但理解如何使用和配置Windows和Linux/Unix“无妨”(=轻描淡写)。你应熟练设置网络配置、基本安全功能和实现,使用命令行实用程序和GUI工具。开始使用这些系统作为你的主要桌面,日常使用它们以迫使自己熟悉它们。
我知道,我知道,你想立即开始攻击系统,而不花太多“开销”,对吗?我完全理解立即开始使用端口扫描器或其他工具听起来非常令人兴奋,但如果你不知道工具输出意味什么,使用工具有何意义?更糟的是,如果你不知道自己在做什么,很容易造成损害。
2. 多用途资源
接下来,尝试对攻击景观获得广泛理解。或许你已下定决心成为Web应用程序渗透测试员,但理解还有其他什么仍无妨。关于此主题有许多资源,但我决定列出最重要的(至少覆盖广泛技能范围的):
- 动手黑客介绍
- 灰帽黑客 – 道德黑客手册
- “黑客曝光”系列
- 专业渗透测试
(若你觉得重要资源缺失,让我知道。哦,对出版商/作者:若你想向我们的读者提供折扣优惠券代码,请联系我 :-) )
除了获得对景观的更好视图,你将学习一些关于渗透测试方法学和途径的知识,包括将技术发现转化为客户或业务可使用和理解的东西的困难艺术。成为渗透测试员确实也涉及文书工作。只是说说。再次,应用真正黑客心态。因你想使其更好而破坏事物,非因你想破坏它。若未真正尝试在现实中“使事物更好”,你仅是破坏者。(故 – 勿抱怨他人所犯错误。思考并修复。增加价值。学习如何保护、加固和保护亦如此。)
3. 脚本与工具
无论你看多久,你最终将使用自动化某些事物的脚本和工具。你甚至可能想更改现有工具或编写自己的以使生活更轻松。毕竟,这是脚本的目的。它们是工具,非目标。熟悉如Python和Ruby的脚本语言是必须的。你无需是专家,你将随着开始使用它们而变得更好。理解一些C / C++也可能有用,因有些人倾向于用低级语言编写工具(主要出于性能原因)。无论如何,理解工具做什么比编写自己的更重要。编写自己的可能有用,因它证明你理解需要做什么。
这可能是开始使用所谓“渗透发行版”的好时机,一个预配置系统,包含大量安全评估工具。尝试从零创建自己的系统可能有帮助,它也耗时且可能不必要,直到你完全掌握已存在的那些。Kali Linux是最常用/流行的发行版之一。它有大型用户群并得到大多数工具开发者的良好支持。
除了更多攻击者导向的工具,扩展你的实验室环境并包括设计为易受攻击的本地和在线系统也是好主意,允许测试你的知识,使用可用工具。若你进入Web应用程序安全,一个好起点是https://www.pentesterlab.com/exercises 或 http://www.amanhardikar.com/mindmaps/PracticeUrls.html。你将在下面列出的网站上找到更多链接。
4. 深入潜水
仅当你准备好时,挑选你想要的目标,并创建实现目标的现实行动计划。某些主题将需数天,其他将需数周、数月,可能数年来理解。从容进行,一步一个脚印。对于每种类型的目标,你将找到特定资源(书籍、在线出版物、课程、虚拟实验室等)。
一些好资源包括此处列出的网站:
- https://code.google.com/p/pentest-bookmarks/wiki/BookmarksList
- http://www.vulnerabilityassessment.co.uk/Penetration%20Test.html
- http://wiki.securityweekly.com/wiki/index.php/Penetration_Testing_Tips_&_Tricks
- https://github.com/enaqx/awesome-pentest
- https://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents
- http://www.dfir.org/?q=node/8
- https://www.owasp.org/index.php/The_OWASP_Testing_Framework
- http://www.pentest-standard.org
(勿忘记在你学习资源与材料时提问。)
尽管我鼓励每个人找到自己的专业领域,但若你认真对待成为专业渗透测试员,你将必须学习关于Web应用程序安全的一两件事。毕竟,许多公司使用Web应用程序服务向员工、客户、合作伙伴、供应商等提供应用程序。由于Web应用程序在许多情况下需要暴露给外部世界,它们也是重要目标(和犯罪分子的进入方式)。理解HTTP如何工作、Web应用程序如何开发、保护以及底层数据库平台如何工作,将构成旅程的大部分。你的任务,若你选择接受它,是找到你需要深入关注的领域所需的依赖项和先决条件,并将它们转化为行动计划。再次,只需在需要时提问。
5. 倾听、参与、帮助
使用社交媒体关注影响者、启发他人的人,以及只是更经验丰富的人。与人互动,友好。提问并在你学习时帮助。
若你有机会参加信息安全会议/研讨会:请这样做。这是会见更经验丰富的人并与他们交谈的好方法。问他们正在做什么。分享你正在做的事并寻求提示。问他们敬仰或受谁启发,并也查看他们。成为社区的一部分。(哦顺便 – 会议也是找新工作的好地方)
开设网站/博客,分享你的发现。当然,你可能不是走特定道路的第一人……但你也不会是最后一人。环境与技术变化,故当你应用新获得的知识时,尝试跟踪你的进度并记录它如何应用于最新技术。事实上,你可能最终在学习时记笔记。你不妨构建它们并为他人放在线。潜在雇主可能不那么感兴趣于你发布什么,而是聚焦于你如何构建笔记、你的思想,以及你对事物的潜在创新方法。使你的工作可见并教给他人。
勿害怕犯错。你将到达。所需只是时间和努力。
祝好运。
6. 勿愚蠢
除非你攻击自己的系统,或你已获得适当许可,攻击系统(网络上、本地、物理上等)是犯罪。勿愚蠢。
接下来是什么?
尝试获得渗透测试员工作时考虑什么
老实说,闯入信息安全并获得渗透测试员工作可能不那么容易。事实上,专业进入该领域相当困难(除非你有欲望和商业计划证明自雇合理)。通常,公司倾向于雇佣经验丰富的渗透测试员。毕竟,大多数公司想尽可能快获得“投资回报”,这意味着他们不想投入太多时间培训你并先变得更有经验,然后才能依赖你承担任务。
但并非全失。一些公司可能提供(夏季)实习或给初级档案一个机会……但无物击败经验。同意,这听起来像catch22情况。我猜关键是找到获得更多“经验”或“可信能力”的方法。
你可通过玩CTF、在模拟环境中测试你的技能和/或获得认证来获得经验。成为“Offensive Security”认证渗透测试员或通过SANS考试可能是好投资,因它在行业中被高度重视……并且肯定有其他类似“头衔”你可在过程中获得。我同意,经过验证的经验/知识比头衔更重要(且某些头衔甚至不保证知识),但不幸的是,你可能无法首先无头衔获得工作面试席位。
故,为鼓励公司发声,我决定发推文:
所以……若你阅读此帖子并在愿意雇佣(相对)无经验的渗透测试员(至少,无大量专业经验)的公司工作,请让我知道(即给我正式声明、包含更多信息的你的网站链接),我将添加链接到此帖子。若你有(夏季)实习计划,也请让我知道。任何帮助均非常感谢。
事实上,我坚信公司往往低估团队中拥有初级档案的真正力量。好处包括对挑战的新鲜视图(新鲜=较少受常规影响)、推动每个人伸展舒适区,并鼓励高级档案分享他们的知识和经验。每个人赢。
至今,以下人员/公司响应并允许我在此发布链接(或发推文他们的政策):
欧洲
- KPN // 荷兰
- ERNW // 德国(实习):ernw.de / info@ernw.de
- Kyos // 瑞士(实习)
- NetXP // 法国巴黎(初级/实习):netxp.fr / recrutement@netxp.fr
- Nettitude // 英国和美国(实习)
- Solucom // 法国巴黎(初级/实习):solucom.net/careers
- EdgeScan // 爱尔兰
- Securify // 荷兰(初级):https://www.securify.nl/jobs
- Toreon // 比利时:https://www.toreon.com/category/news/ – https://twitter.com/toreon_BE
- ESET // 荷兰(Sliedrecht):donny@eset.nl
- Cogiceo // 法国巴黎(实习):http://www.cogiceo.com/fr/carrieres/
- 7Elements(英国)
- TheSecurityFactory // 比利时:初级档案 – @securityfactory info@thesecurityfactory.be
- CERT-XMCO // 法国巴黎(初级/实习)– recrutement@xmco.fr – https://www.xmco.fr/recrutement/
- Fox-IT // 荷兰(初级档案)– vacatures@fox-it.com
- Madison Gurkha // 荷兰(初级档案)
- Intrinsec // 法国巴黎(初级和实习,渗透测试/SOC):https://www.intrinsec.com/fr/form/rejoignez-nous-securite-informatique.html
- Kudelski Security // 瑞士(初级/实习)– @KudelskiSec
- MDSec // 英国(初级/实习)– https://www