恩施土家族苗族自治州网站建设_网站建设公司_自助建站_seo优化
2026/1/1 20:11:51 网站建设 项目流程

如何成为一名渗透测试专家

引言

我收到大量电子邮件。不幸的是,我没有过去那么多,或希望拥有的空闲时间,因此通常别无选择,只能将问题重定向到我们的论坛或IRC频道,希望社区的其他成员能介入并帮助我回答这些问题。最常被问到的问题之一是“如何成为一名渗透测试员”。

根据你向谁提问,你可能会得到不同的结果,或者被告知采取特定的方法。通过这篇文章,我试图阐述我对这个问题的看法,希望能为处于类似情况的人提供一个良好的起点。

需要说明的是,我本人并非渗透测试员……但我尝试运用常识来解决挑战和生活中的各种情况。

从哪里开始……或者?

开始信息安全领域有几种方法。随着时间推移、技术变化、新平台的设计和实施等,方法也会改变。所有这一切都影响着应该投入的最新“热门”主题。在此之前,无论你采取哪种方法,都应该问自己两个基本问题:

  1. 我愿意为此投入多少精力?
  2. 我的目标是什么?

目标可以很遥远,看起来更像梦想。但好消息是,有雄心壮志和梦想是完全可以的。然而,根据我的经验,通过将梦想分解成更小的目标和步骤,更容易实现你的抱负。

假设你的梦想是成为一名渗透测试员。这个概念相当令人兴奋,但同时也很模糊。你到底想做什么?你想测试什么类型的目标?你为什么想做这个?

如果你还没有答案,与渗透测试员交谈,了解他们所做的工作类型,看看你是否感兴趣,这可能会很有用。

为什么我要如此哲学化地谈论它?毕竟,成为精通所有类型审计的渗透测试员可能并不现实。技术变化如此之快,不可能立即成为所有领域的专家。试图理解并掌握一切可能不是一个现实的目标。

成为一名渗透测试员也不仅仅意味着擅长使用工具。它关乎理解事物的工作原理、配置方式、人们常犯的错误以及如何通过创造性思维发现这些弱点。渗透测试不仅仅是针对互联网发动 Metasploit。

几年前,我对摄影产生了兴趣。在用智能手机拍了很多照片,并得到家人不断鼓励说我的照片很棒之后,我决定买一台单反相机。猜猜怎么着。买更好的相机或镜头并不会让我成为更好的摄影师。事实上,情况变得更糟,因为我不理解光线如何工作,相机如何调整以处理光线,以及我们如何影响光线以获得更好的照片。智能手机的设计让你无需思考这些。这是初学者的错误。现实是,学习事物的工作原理是耗时且令人沮丧的……但最终会有回报。我仍然不是一个好的摄影师,但我也毫不介意承认这一点。我认为这是一段旅程,至少我决心首先理解基本原理;尝试并犯很多错误;并且不害怕寻求帮助。

所以,这让我回到了最初的问题:“从哪里开始”。现在应该很清楚,也许你应该先尝试回答“你想达到什么终点”,因为这将告诉你从哪里开始。别担心,即使你犯了错误,即使你发现你选择了错误的目标,你仍然在进步。你获得的任何知识在某种程度上都是有价值的,并且可以在过程中提供帮助。

看待“目标”还有第二种方式。你也可以将你的目标定义为“你产生收入的能力”。为了本文的讨论,假设你想作为一名渗透测试员赚钱。这意味着你可能需要选择某些能提供经济价值的技术目标。这可能由某些类型技术的流行度驱动;或者相对较新的领域驱动。所以,即使你想做很多事情,你很可能会不得不专攻特定领域。

在继续之前,我想引用 @thelightcosine 引用 HD Moore 的话:“如果你不认为自己是个菜鸟,说明你不够努力。”挑战自己。尝试学习更多东西,尝试温和地推动你的极限,但要现实地去做。永不放弃。这是一段痛苦、漫长但非常有价值的旅程。

好了,明白了。那么,从哪里开始呢?

正确的态度与心态

假设你知道你想达到什么目标,并且有一个涉及投入时间和精力的现实计划;你应该用你的时间做什么?

在谈论可能的道路之前,我想简要提及将成为你旅程中最重要部分的东西。那就是你和你的态度及心态。你将是做这项工作的人。你是设定目标并想要开始工作的人。你是让这一切实现的人。但这需要特定的态度。这就是所谓的“黑客”态度。关于黑客这个词有很多定义;但大多数都可以归结为:渴望理解事物真正的工作原理,以便你能优化/改变行为,或运用这种理解来改变游戏规则。黑客倾向于破坏东西;渗透测试员也倾向于破坏东西。目标应该是为了破坏而破坏,然后提出如何改进的解决方案。如果目的是为了破坏而破坏,并且系统/人存在缺陷……新闻快讯:我们已经知道这一点。你在浪费你的时间。你是一个破坏者,而不是黑客。如果你真的想成为一名黑客,破坏东西是因为你想修复它,让它变得更好。黑客这个词可以应用于许多学科。它不一定与计算机绑定,也可以应用于一般的科学。事实上,没有黑客,我们就不会有药物或技术进步。

批判性地看待你所看到的。尝试理解你所看到的。提出问题,不要接受“我不知道,它就是那样工作的,别人告诉我的,接受它并继续前进”。问自己一个问题:“如果我必须设计 X 或 Y,我会怎么做?”将你的思维过程置于他人的心态中,将帮助你理解事物为何以某种方式工作,它们是如何设计的,以及人们如何使用它们。运用同理心并理解他人有不同的观点,将拓宽你对事物的理解,这反过来将帮助你发现优势和劣势。

成为一名黑客不是技术性的。它是一种心态,是心理学。它是美丽的。它是非常强大的。

好了,好了,别废话了,从哪里开始?

如何提问与寻求帮助

等等。我们快到了。在给你一些关于如何规划旅程的提示之前,我想分享一些关于提问的想法。事实上,除非你生来就知道所有答案,否则你最终可能会提出问题。即使你知道你的最终目标是什么,你可能也不知道如何到达那里,或者需要什么才能到达那里。弄清楚的唯一方法就是提问。有趣的是,你提问的方式和你提出的问题类型,将决定你是否能得到你需要的答案。

我经常在IRC的各种频道中闲逛,并且订阅了很多邮件列表很长时间。我看到人们每天提问和回答问题。你会认为提问或回答问题是微不足道的事情,但有趣的是,人们因为试图找到他们不知道的答案而被吼叫、从IRC频道踢出,或在公共场合被羞辱。许多人最终感到沮丧,因为他们没有得到满意的答案,而其他人则感到沮丧,因为他们觉得在浪费时间。

到底是什么导致了这种冲突,双方如何能更有效地提问和回答问题,并希望避免痛苦的情况?下面的大部分内容基于可以直接互动的情况,但它们可以很容易地推广,并适用于任何形式的沟通。

提问
提问很容易。提出一个好问题似乎远非易事。一个问题如何才能引出一个有价值的答案,以及如何避免人们因为你只想得到一个答案而开始向你扔桌子、自行车和电梯?我试着收集了一些关于如何更有效地提问以及增加不仅得到答案,而且得到有帮助答案的机会的想法。几年前,我在Twitter上做了一个小调查,以了解人们认为“糟糕”问题的要素是什么。结果包括:

  • 没有迹象表明提问者做了任何自己的研究或试图寻找答案;
  • 当问题含糊不清时;
  • 当你忘记问问题时;
  • 为了问问题而进行冗长的铺垫。

你可以做一些事情来避免常见的陷阱,并让你的问题被贴上“糟糕”的标签。首先,我不认为存在糟糕的问题。问题总是有原因的。可能只是因为沟通不畅或其他原因而不清楚到底是什么,但这并不意味着问题本身糟糕。

  • 避免显而易见的答案。 想想你的问题。在网上、维基百科上、通过简单的谷歌搜索或阅读产品文档找到答案有多容易?如果你很懒,不要指望别人会欣赏这一点。相信我,诚实地承认你的懒惰也无济于事。
  • 证明你值得获得答案并做好准备。 做好功课。在网上查找关于你的问题的信息,自己尝试一些事情,并记录你所做的。准备好展示你所做的。诚实而准确。如果你表现出你已经尝试过并且愿意尝试更多,人们更有可能提供帮助。一旦人们感觉到你只想被填鸭式喂食,你的支持渠道将会在你面前爆炸。
  • 不要遗漏重要信息。 即使你认为你不应该做某事,也不要对你所做的感到尴尬。这很可能是问题的一部分,如果你想要解决方案,你最好诚实。在描述你的问题时尽可能实事求是,不要让你的思维过程占据主导。描述症状和重现症状所需的确切步骤,比解释你认为问题是什么效果更好。
  • 将问题分解并对自己保持批判。 在提问之前,将你的问题分解成技术层和组件。你是否完全理解重现问题所需的其他组件或先决条件?
  • 不要以道歉开始。 没有必要为不知道某事而道歉。通常,这只会让人们短暂地扬起眉毛然后继续。你应该只为自己没有提出适当的问题或没有准备好工作或学习而道歉。不要为你的英语不好而道歉。人们不在乎。
  • 保持友善、礼貌且不要不耐烦。 即使你的问题很紧急,如果你决定依赖社区支持,你也必须意识到并接受人们也有自己的生活,并且可能有比回答你的问题更重要的优先事项。
  • 让他人易于回答。 如果你的问题太宽泛或包含太多可以解释、模糊或含糊不清的元素,不要指望任何人会花几周假期来指导你。
  • 选择你的受众。 哪里是找到你问题答案的最佳地点,谁才是回答你问题的合适人选?论坛和IRC频道通常专注于特定主题,因此请尝试选择正确的媒介和频道来提问。
  • 直接提问。 不要先问你是否可以提问。没有必要问是否有人在线上或可以回答你的问题。直接问那个该死的问题。
  • 倾听、互动并在需要时寻求澄清。 尝试理解答案,不要立即回复。如果有人告诉你要调查其他事情,那就去做。
  • 心怀感激并在可能时回馈。 如果有人试图帮助你,告诉那个人你感激他的帮助,即使它没有完全回答你的问题。意识到很多人除了回答问题之外还有其他事情要做。

回答问题
提出好问题绝对是一门需要一点准备的艺术。回答问题,如果你真的想帮助某人,也不是一件小事。虽然有些情况可能暗示相反,但没有专门的提问者和专门的回答者这回事。无论你多么有经验,你可能仍然会时不时地发现自己处于故事的两边。当你有能力回答一个问题时,你真的处于一个独特的情况。想想看,你有权决定是否要回答这个问题,除此之外,你可以选择如何回答问题,这将直接影响答案是否有价值。如果你决定花时间回答一个问题,目的是帮助某人,你最好把事情做对。

  • 保持友善。 问题以某种方式提出是有原因的。你应该能够感觉到那些追求快速胜利的人和那些真诚、真正想学习但不知道如何很好沟通的人之间的区别。
  • 回答前先思考,要求更多信息。 你真的理解这个问题吗?你的答案会有帮助吗?如果问题不清楚,请要求澄清。重新表述;要求一个例子。
  • 不要因为你必须回答才回答。 只因为你想帮助并且有时间帮助才回答问题。
  • 用问题来回复。 这是一个棘手的技巧。有些人一直喜欢这样做,这可能会让人完全抓狂并破坏正常的交流,所以请确保只在特定情况下使用此技巧。
  • 诚实。 如果你不确定答案,直接说出来。承认你不确定某事没有任何问题。
  • 激励,不要打击。 你可以通过提供有帮助的答案来展示你的技能,而不是通过炫耀或强调你有多聪明。
  • 注意语言。 英语是国际IT或信息安全社区的重要语言。然而,这并不意味着每个人都是英语母语者,甚至与之相差甚远。
  • 识别喷子。 当然,有些人有太多时间,没有真正的生活,试图通过提出愚蠢和聪明问题的组合来浪费每个人的时间,只是为了好玩。
  • 提供反馈。 如果什么都没用,而你有几分钟时间,解释为什么某个问题或评论不起作用。

学习路径:横向还是纵向?

“横向还是纵向”的意思是:你应该首先专注于学习广泛的事物,还是应该直接深入你感兴趣的领域?

这个问题很好。两种方案肯定都有利弊,而且意见比人还多。鄙人也有幸拥有自己的观点,所以我将分享我的个人看法。首先理解大局是有用的。如果你的目标是成为一名Web应用程序渗透测试员,了解所有涉及的层可能是有意义的,包括操作系统、网络、Web服务器和应用程序技术、常用数据库平台和常用开发语言。这是一个庞大的领域。你感兴趣的信息量通常取决于你的需求。同时,你越了解事物的工作原理,就越容易理解如何改变规则。我的建议是:首先尝试尽可能多地了解各个层面。不要不耐烦,立即深入研究寻找漏洞或利用的细节。特别是工具的可用性会让你手痒,并降低了立即开始攻击系统的门槛。始终记住,工具不是魔法。它们只是自动化事物。你越了解它们的作用,就越容易使用它们。别误会,工具是有用的。只是在你理解它们的作用、如何配置、如何正确使用之前,不要使用它们。

所以,我认为尝试理解系统的系统工程方面非常有价值。理解事物如何通信、如何设置、保护、操作。但也不要过度。你不需要成为理解所有RFC规范的IP专家。你可能需要比你滥用它所需更多的知识。你需要足够的来使用和滥用它。

此外,要明白你可以采取分阶段的方法。你不需要成为BGP路由专家来进行Web应用程序测试。如果你是,这没有坏处,但当你准备好扩展视野并深入研究安全审计的其他方面时,你仍然可以学习它。在你设定的目标中要现实,并尝试准确确定到达那里所需的先决条件。如果你不确定,请征求多种意见,不要害怕学得太多而不是不够。

如何学习?
学习新事物有很多方法,其中一些相当个人化。有些人能够通过阅读书籍或博客文章来学习新事物。有些人需要可视化事物,而其他人则需要有人通过视频或面对面环境来解释事物。每种方法都有解决方案。你可以购买书籍或在线阅读出版物。你可以上课,并且可以找到许多在线挑战来练习你的新技能。

只要你知道什么最适合你,你就可以相应地调整你的策略,那么这些方法中的任何一种都没有错。所有这些学习方法的共同点是进行实践。自己尝试事物将使你更容易记住,并最终将知识转化为理解和经验。

在任何情况下,建立一个虚拟实验室环境都非常有用。如今,虚拟化技术可用于大多数常见平台,它价格低廉或免费,并且具有很大的灵活性。VirtualBox、VMWare、Parallels、Xen、Hyper-V 只是几个例子。

虽然这不是一个万能的建议,但通过安装一个 Windows 和一个 *Nix/Linux 系统,你会走得很远。当然,理解如何管理和操作这些系统是根本重要的。你不想把时间花在与本应支持你学习体验的工具作斗争上。

填鸭式教学
填鸭式教学听起来像我们对婴儿做的事情,对吧?如果你问有经验的人填鸭式教学是对是错,我敢打赌大多数人会告诉你这是不好的。我认为答案不是非黑即白的。这要看情况。首先,我们都曾被填鸭式教学过。这就是当我们无法自己进食时,父母所做的。当你对某事完全陌生时,这就是老师所做的。这就是我们应该做的,以引导人们走上正确的道路。我们都曾被告诉某些事情,以便我们能够练习、变得更好,并进入下一个阶段。在支持性的激励方式和完全不给任何帮助之间,只有一线之隔。

在“一分钟经理人和领导力”中,肯·布兰查德解释了四种不同的“发展水平”。其中一个水平被定义为高承诺和低能力。这可能就是你现在的处境。你对学习新事物感到非常兴奋,但不知道从哪里开始。对于这样的情况,一些填鸭式教学可能是有用的。这并不意味着别人会为你做所有艰苦的工作,但仅仅告诉你去“自己解决”而不给出直接的提示或线索也没有用。一旦你学到更多,你会发现有更多东西需要学习。在这一点上,你可能会发现自己变得不那么投入,因为你开始意识到前面还有很长的路要走。这也是正常的。在这一点上,填鸭式教学将无济于事。在这种情况下,指导更合适。提出正确的问题将迫使人们思考,应用他们已经拥有的知识,并寻找答案。如果他们在尝试后仍然卡住,并且无法自己找到答案,也许是时候退一步,寻求一些详细的帮助了。所以——在对填鸭式教学持负面看法时,请小心。情况决定这是否是正确的方法。

具体学习步骤

  1. 网络与操作系统
    我建议从学习系统如何工作和通信开始。尝试很好地理解 TCP/IP、OSI 层、临时端口和服务端口、路由、端口转发、NAT、防火墙等。当你尝试连接到目标时,你将需要它;在使用工具时,你将需要它;在配置你的环境以使你的安全审计成功时,你也需要它。
    你还需要能够管理和操作常见的操作系统。与网络一起,这应该是你的主要起点。我们大多数人都熟悉一个操作系统,但了解如何使用和配置 Windows 和 Linux/Unix 并没有坏处。你应该熟练掌握设置网络配置、基本安全功能和实现,使用命令行实用程序和 GUI 工具。开始将这些系统用作你的主要桌面,每天使用它们,以迫使自己熟悉它们。

  2. 多用途资源
    接下来,尝试广泛了解攻击面。也许你已经下定决心成为一名 Web 应用程序渗透测试员,但了解还有什么其他内容仍然没有坏处。关于这个主题有很多资源,但我决定列出最重要的几个:

    • 动手黑客入门
    • 灰帽黑客 - 道德黑客手册
    • “黑客大曝光”系列
    • 专业渗透测试
      除了更好地了解整体情况外,你还会学习一些关于渗透测试方法和途径的知识,包括将技术发现转化为客户或企业可以使用和理解的东西的困难艺术。成为一名渗透测试员确实也涉及文书工作。再次强调,运用真正的黑客心态。破坏东西是因为你想让它变得更好,而不是因为你想破坏它。如果没有真正尝试“让事情变得更好”,你只是一个破坏者。
  3. 脚本与工具
    无论你看多久,你最终都会使用脚本和工具来自动化某些事情。你甚至可能想要更改现有工具或编写自己的工具,以使你的生活更轻松。毕竟,这就是脚本的用途。它们是一种工具,而不是目标。熟悉 Python 和 Ruby 等脚本语言是必须的。你不需要成为专家,当你开始使用它们时,你会变得更好。了解一些 C/C++ 也可能有用,因为有些人倾向于用低级语言编写工具。无论如何,理解一个工具的作用比编写自己的工具更重要。编写自己的工具可能有用,因为它证明你理解需要做什么。
    这可能是一个开始使用所谓的“渗透测试发行版”的好时机,这是一个预配置的系统,包含一系列安全评估工具。尝试从头创建自己的系统可能很有帮助,但也很耗时,而且在你完全掌握现有系统之前可能没有必要。Kali Linux 是最常用/最流行的发行版之一。它拥有庞大的用户群,并且得到大多数工具开发者的良好支持。
    除了更多面向攻击者的工具外,扩展你的实验室环境,包括本地和在线设计为易受攻击的系统,以便使用可用工具测试你的知识,也是一个好主意。如果你对 Web 应用程序安全感兴趣,一个好的起点是 pentesterlab.com/exercises 或 amanhardikar.com/mindmaps/PracticeUrls.html。你可以在下面列出的网站上找到更多链接。

  4. 深入钻研
    只有当你准备好了,选择你想要的目标,并制定一个现实的行动计划来实现目标。有些主题需要几天时间,其他主题则需要几周、几个月甚至几年来理解。慢慢来,一步一步来。对于每种类型的目标,你都会找到特定的资源。
    一些好的资源包括这里列出的网站:

    • pentest-bookmarks 书签列表
    • 漏洞评估资源
    • 安全周刊的渗透测试技巧与窍门
    • 优秀的渗透测试资源列表
    • OWASP 测试指南
    • DFIR 资源
    • OWASP 测试框架
    • 渗透测试执行标准
      尽管我鼓励每个人找到自己擅长的领域,但如果你认真想成为一名专业渗透测试员,你将不得不学习一些关于 Web 应用程序安全的知识。毕竟,很多公司使用 Web 应用程序服务向员工、客户、合作伙伴、供应商等提供应用程序。由于 Web 应用程序在很多情况下需要向外界公开,因此它们也是一个重要的目标。理解 HTTP 如何工作、Web 应用程序如何开发、保护以及底层数据库平台如何工作,将成为旅程的重要组成部分。你的使命是,找到深入研究你想专注的领域所需的依赖项和先决条件,并将其转化为行动计划。再次强调,只需在需要时提问。
  5. 倾听、参与、帮助
    使用社交媒体关注有影响力的人、激励他人的人以及通常更有经验的人。与人互动,保持友善。提问并在学习过程中提供帮助。
    如果你有机会参加信息安全会议/研讨会:请务必参加。这是结识更有经验的人并与他们交谈的好方法。询问他们正在做什么。分享你正在做的事情并寻求建议。询问他们仰慕或受到谁的影响,并也关注他们。成为社区的一部分。会议也是找新工作的好地方。
    开设一个网站/博客,分享你的发现。当然,你可能不是第一个走某条路的人……但你也不会是最后一个。环境和技术在变化,因此在你应用新获得的知识时,尝试跟踪你的进度并记录它如何应用于最新技术。事实上,你可能最终会在学习时做笔记。你不妨将它们结构化并放到网上供他人查看。潜在的雇主可能不会对你发布的内容感兴趣,而是更关注你如何构建笔记、你的想法以及你对事物的潜在创新方法。让你的工作可见,并教给别人。
    不要害怕犯错。你会成功的。只需要时间和努力。
    祝你好运。

  6. 不要做傻事
    除非你攻击的是你自己的系统,或者你已经获得了适当的许可,否则攻击一个系统是一种犯罪行为。不要做傻事。

求职建议

老实说,进入信息安全领域并找到一份渗透测试员的工作可能并不容易。事实上,专业地进入这个领域相当困难。一般来说,公司倾向于雇佣有经验的渗透测试员。毕竟,大多数公司希望尽快获得“投资回报”,这意味着他们不想在你身上投资太多时间进行培训,让你先获得更多经验,然后才能依靠你承担任务。

不过,并非一切都失去了。有些公司可能提供实习机会,或者给初级求职者一个机会……但没有什么能比得上经验。是的,这听起来像是先有鸡还是先有蛋的情况。我想关键是找到一种方法来获得更多“经验”或“可信的能力”。

你可以通过参加 CTF 比赛、在模拟环境中测试你的技能和/或获得认证来获得经验。成为“Offensive Security”认证的渗透测试员或通过 SANS 考试可能是一项不错的投资,因为它在业界备受推崇……当然还有其他类似的“头衔”你可以获得。我同意,经过验证的经验/知识比头衔更重要,但不幸的是,没有头衔你可能无法获得面试的机会。

对渗透测试员工作的期望

嗯……我不知道,我不是渗透测试员……但我不指望能够在地下室躲藏多年。根据你的地理位置和客户群,你最终可能需要出差到客户那里,参加会议,撰写报告,将技术发现转化为可操作的信息,展示发现结果,与客户合作解决问题……

令人兴奋的时刻就在前方!

结语

我当然不是唯一一个想分享在信息安全领域找工作观点的人。事实上,hacks4pancakes 发布了一篇文章,几乎涉及相同的话题。去看看,我相信我们的文章互为补充。
NenwHD2KiNdxVV1sgh7y8UGB03OgVV/x8wFGW5rmpF/ojpf8KuaxSmfHAK2Z2cS52YcjNaK+fww313HM3oVpRnCIoA0dRU9mwsqVLhaluOABA5HmFuKXEg/gmHATvXVrkSgxxGcPzjEzlNsbCBaecncT2Q0vsmlwha8+YcH0Ne5kMAll32M4gF7j9Vz0+GET
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询