在我的职业生涯中,刻意练习被证明是无价之宝。而我过去几个月的经历再次证明,这个经验同样适用于安全测试领域。
由于我们无法在不造成损害的情况下进行任何系统上的安全相关技能练习,所以我们需要专门的空间来进行安全练习。幸运的是,现在有很多现成的选择,太多了,无法一一列举。因此,这里只介绍几个网站,它们不仅提供了很好的起点,而且还提供了尽可能深入的机会。
- OWASP Juice Shop:这是一个被故意制造的有漏洞的web应用程序,它模仿了一个相当常见的电子商务场景。在此基础上,你会遇到一系列挑战,这些挑战任务允许你尝试查找和利用现有漏洞的技术。这是我自己进入安全应用实践的切入点,特别是这款应用背后的游戏化功能,深深地吸引了我。
- OWASP WebGoat:这是另一个经常被引用的OWASP项目,它为你提供了一个练习场所。在这种情况下,你可以通过专门的课程来了解漏洞,了解它们是如何工作的,以及如何减少它们。
- Hack The Box: 这项服务为你提供大量准备好的虚拟机(又称 “盒子”),让你安全地在上面练习。我非常喜欢他们的起点机器,它可以引导你找到你想找到的秘诀(又称标记),并向你介绍识别和利用漏洞的常用工具。
- TryHackMe:另一项服务是提供大量机器供用户练习。它有大量的主题学习路径可供选择,并且有很多详细信息来引导你学习。Hack The Box 和 TryHackMe 在 Discord 上都有活跃的大型社区,为你提供强大的支持网络。
- PortSwigger’s Web Security Academy:这是由 BurpSuite 开发人员提供的一个很好的资源,其中有很多挑战任务等着你去解决,它会让你学到更多有关网络安全的知识。
- PentesterLab:该平台提供的课程包含了大量解释说明,它可以指导你逐步学习渗透测试所需的技能。感谢 Yianna Paris 向我介绍这项服务!
除了这些全天候可使用的专用应用程序和实验室,您还可以关注它们主办的公开夺旗(CTF)活动。我最近参加了 Huntress 举办的一次活动,我还看到即将到来的节假日宣布了几项活动,如 TryHackMe 的Advent of Cyber或 SANS 的Holiday Hack Challenge。加入以安全为目标重点的社区,并在社交媒体上关注更多的安全领域专业人士,这些都十分有助于你了解这些CTF活动。此外,你还可以查看CTFtime等专门网站,了解下一次CTF活动的时间安排。
在这类空间中进行此类挑战任务练习时,我体验到了以下的好处:
- 减少恐惧感。一开始涉足安全领域确实很可怕。你甚至可能不知道从何入手,因此,这类练习空间正好可以作为你所需要的起始点。通常情况下,它们包含专为初学者设计的挑战任务,提供进一步的解释和指导,引导你进入这个空间。
- 增长知识。通过这些练习应用程序,我经常会接触到一些以前不知道的东西,无论是概念、工具还是其他的东西。例如,它们还为了解以安全为重点的Unix系统(如Kali Linux、Parrot security或Mobexler)及其各自的工具箱提供了很好的理由。
- 磨练技能。我们练习得越多,我们的技能就越强,我们就越能在我们所知道的事物之间建立联系。有了更多的碎片,才能完成拼图,或者说,才能迎接下一个挑战。创造性地解决问题绝对是我们在这里正在练习一项技能!
- 树立信心。我们获得的接触点越多,抓住的练习机会越多,我们就越能增强自己的信心,相信自己也能解决下一个挑战任务。
- 传播意识。我们可以利用学习到的知识和技能,与他人一起提高对脆弱性的认识。更好的是,通过一起练习,我们可以实时提高意识。这类挑战任务可以帮助人们了解什么是可能的,以及为什么我们需要捍卫我们的系统、保护价值并远离伤害。
- 寻找快乐。安全可能被认为是一个沉闷乏味的主题。然而,寻找到安全挑战任务的解决方案本身就令人感到非常有成就感。共同完成挑战任务可以进一步将安全与乐趣联系起来,使人们更有兴趣参与其中。同时,它还有助于你找到社区,和志同道合的人一起学习和成长。
所有这些优势我都亲身经历过,因为我一直在尝试各种易受攻击的应用程序、一些提供专门挑战任务的实验室,以及第一次参加公开的 CTF活动。在 SoCraTes、FroGS Conf 和 Agile Testing Days等会议上,我和与会者一起参加了许多 “共同夺旗 “的活动。在过去与同事们一起举办实践活动时也是如此,我希望能与我们目前的信息安全团队进行再次合作。
因此,只要在这些场所进行练习,我们就能获得所需的一切吗?可惜的是,这听起来好得令人难以置信。然而这类挑战任务也有其弊端。感谢Dave van Stein让我对这个问题有了更多的思考!
- 人为的挑战任务。所有这些空间都有一个特设的目标,通常是为了教育或提供一个安全的练习场所。因此,挑战任务本质上是人为的,不能完全代表现实生活中的场景。
- 思维方式不同。攻击者的思维方式往往不同。我的意思是,他们通常不会在受限的环境中找到一个明确的旗帜来宣布他们的胜利。相反,他们可能会在一段时间内收集各种信息,并在此基础上制定策略,决定是否利用已确定的路径进入系统,以及从中获得什么好处等等。这在很大程度上也取决于他们的动机和目标。
- 不确定性代替解决方案。在实验室和 CTF 活动中,你会知道什么时候走对了路,什么时候会得到奖励。但是在现实生活中,没有小抄,没有攻略。只有潜力和模糊性,而且永远无法完全确定你找到的东西(如果你找到了任何东西的话)就是你要找的全部。
- 过于专注于渗透测试。上面列出的所有网站主要是用来提供渗透测试练习的。这可能是一个吸引大多数人的热门话题,但你真正需要这些技能的频率有多高呢?与其他领域相比,这个领域的工作机会又有多少呢?安全领域还需要更多的技能。那么,安全编码、秘密存储、漏洞评估、威胁识别和事件响应等方面的挑战在哪里?目前,越来越多的练习应用程序正在被开发出来,虽然其中一些的确已经存在,但它们并不总是备受关注。当然,也可以进行正式的官方培训(不过费用可能会很高)。
权衡利弊,我认为像上面列出的这些刻意练习的机会仍然是非常宝贵的。不过,我们必须谨慎使用,正确看待它们,明确它们的目标和局限性。这就给我留下了另一个问题:我们能否在练习中更贴近现实?以下是我认为我们可以尝试的几种方法。如果你有更多的选择,欢迎补充进来。
- 回顾过去的真实事件。我思考的是公司实际面临的安全问题。我们可以从攻击者和防御者的角度回顾这些非常真实的场景,从中了解到我们哪里可以做得更好—这非常具体地针对特定的情况。
- 进行开放性思维练习。通过有意识地练习威胁建模、攻击树等类似方法来提升我们的思维能力,使其尽可能适用在我们实际的工作环境中。
- 举办特定的CTF活动。一个人在自己的系统上隐藏一个自定义旗帜,让大家去寻找。虽然这可能仍然是一个人为的场景,但它却可以放置在非常真实的环境中。当然,这需要相当多的准备工作,比如一个专门的练习环境,以及遵从惯例征求所有相关方的明确同意。由此所获得的启示也许仍然我们值得付出努力。
就我个人而言,我相信我会继续充分利用各种练习机会。同时,我还在考虑加入或组建一支CTF活动团队,让练习变得更加细节深刻。如果有人感兴趣或者有什么好的地方可以找到一个热情、包容和多样化的团队,请告诉我。现在让我们把这个问题带回社区:你如何练习你的安全技能?