开始使用开源安全工具Info Monkey

2020-11-04 20:35:43

由Guardicore提供支持的Infation Monkey是一个流行的开源项目,本质上是一个入侵和攻击模拟(BAS)工具,用于分析和分解基于云的开发环境的健壮性,无论它们是私有类型还是公共类型。

Shay Nehmad,一位经验丰富的开源开发人员,和Shreya Malviya,一位感染猴子的贡献者,向与会者讲述了Swimm如何使为项目做出贡献和发挥作用变得更容易。

对入侵后攻击和横向移动的恢复能力是在自动攻击模拟的帮助下实现的,该模拟向随机机器注入专有的感染猴子代码,这有助于衡量和发现安全漏洞和漏洞。可以将其视为自动笔测试工具。

这个48小时的在线活动致力于鼓励对开源项目的贡献,由Github的Brian Douglas主持,由Open Sauced社区组织,并得到Swimm的支持。

感染猴是非常直截了当和用户友好的。Monkey是一种专有工具,可感染目标环境中的随机机器并传播给它们。还有猴岛,这是一个专门的中央仪表盘,用来监控结果和发现。有关感染猴子安装过程的更多信息,请单击此处。

除了是一个非侵入式和即插即用的工具,感染猴子不需要维护,并全天候运行,进行全面的安全分析。此外,用户还可以根据自己的要求定义警报,从而获得可操作的见解和建议。

Swimm让开源项目的贡献者入职变得更容易。由于与Swimm相关的所有内容都在感染Monkey(以下简称:IM)存储库中,因此您所要做的就是克隆该repo,启动终端,并在您的终端上运行命令“swimm start”。

一旦服务器启动,它会自动打开Swimm主页,该主页已经有IM播放列表。目前,存储库包括三个播放列表(违规后操作、配置和系统信息集合)。在本教程中,我们将使用一个额外冗长的播放列表,名为“在5个简单步骤中添加PBA”。

简而言之,感染猴子是一个渗透测试工具,它模拟一个人侵入你的系统。一旦此人进入您的系统,他们就可以在实施入侵后执行其他操作。在IM术语中,这些被称为“违规后行为”或PBA。

这是实际的编码步骤。顾名思义,它基本上定义了你的新PBA做什么。因此,简单地说,您必须定义此步骤将在IM中做什么(如描述中所述)。此步骤还为您提供了在完成后运行手动测试的说明。但首先,让我们来做主要的编码部分。

您所要做的就是从Swimm界面复制命令并在您的终端上运行它。这会给你一些关于这个特殊单位的信息。

例如,“完成的定义”说您需要一个新的常量来定义PBA做什么。现在,您可以通过运行命令“Swimm Files”让Swimm告诉您哪些特定文件与此特定单元相关。它向您显示与此单元相关的一个文件的名称。

“如果你想一想,你会如何与某人进行个人入职培训,这是相当酷的。你应该引导他们阅读与你所教内容相关的文件。“--谢伊·内马德(Shay Nehmad)。

因此,我们必须了解如何定义PBA的名称,该名称将在此文件中完成。这确实说明了如何正确地构建单位可以“模仿”或取代个人入职流程。另外,我们在这里应该注意的另一件事是,这个特定的文件位于名为“common”的模块中。

这表明我们在这里要做的每一件事都将同时影响Monkey和Swimm服务器。打开此文件。

Swimm生成的注释向您显示需要添加代码的位置。但是如果您不确定下一步要做什么,Swimm会通过命令`swimm hint`提供提示。

如果您返回到该文件并查看该PBA,它基本上会告诉您名为“Timestomping”的PBA执行什么操作。这也是您定义新PBA名称的方式。添加新的PBA“POST_BREAK_SCHEDUE_JOBS”并保存该文件。你改进了你的新PBA,但我们怎么知道这是有效的呢?

当你使用Swimm时,这是相当容易的。让我们回到Swimm界面,了解一些运行测试的简单而直接的说明。

无论您添加到PBA定义文件中的是什么,您都应该能够在测试报告中看到。一旦你完成了学习,你就可以用‘swimone’命令将它标记为完成了。这将把您带到一个Swimm状态页面(见下文),该页面还允许您将您的解决方案与原始代码库进行比较。

现在,我们知道排定作业PBA是相当危险的,因为如果有人能够在您的系统上排定作业,他们就可以打开后门,或者确保病毒在被删除的情况下自动下载。

那么,您现在是否必须在操作系统中安排作业?幸运的是,感染猴在代码库中已经有了这些命令。

同样,此单元的描述还显示了编写代码后要运行的手动测试。就像在前面的单元中一样,我们可以通过从Swimm界面复制命令并在您的终端上运行它来播放单元。您还可以使用相同的命令请求Swimm告诉您相关文件。

这一次,它告诉您相关文件在一个名为“INFICTION_MOUNK”的模块中,这表明我们将要做的任何事情都将影响Monkey(即,由Informance Monkey模拟的虚拟入侵者)本身。这是有意义的,因为基本上您将添加新功能。

因此,打开文件后,您将看到一条注释,告诉您需要将新代码添加到何处。这是一件容不得出错的事情。

让我们向Swimm询问有关如何在本单元中进行编码的更多提示。

Swimm为您提供了两个提示。让我们继续讨论第一个问题,它建议您查看“践踏时间”的PBA,以了解其实现情况。

我们在这里可以看到,我们基本上是从一个名为`get_timestomping_Commands`的函数中获取Linux和Windows命令。然后,您将使用PBA的名称、Linux命令和Windows命令作为参数调用父类的构造函数。

在这里,您可以看到代码从描述中给出的函数获取命令,并调用父类的构造函数。

Swimm给了您第二个提示,通知您通过删除计划作业来删除PBA。

你真的可以遍历解决方案的每一行,看看构建单元是如何正确地推动正在解题的人写下每一行。因此,从第13行到第18行,这是告诉您如何在IM中实现基于shell命令的违规后操作的一般结构的第一个提示。

按照提示,您将看到一个如何编写该代码的示例。当我们查看第16行时,会弹出另一件很酷的事情。我们可以看到,代码正在从我们在前面的Unit中定义的变量中提取PBA的名称。最后一行来自第二个提示。

你可能决定不看这些提示,然后盲目地试图解决这个问题。在这种情况下,当您在Swimm中标记您的单元已完成,然后将其与实际解决方案进行比较时,您会发现这种差异。如果您忘记删除计划的作业,您会在差异中找到它。作为游泳运动员,你可以选择看不看暗示。

现在您已经添加了代码,让我们按照单元描述中的说明运行手动测试。

您可以在攻击报告中看到它使用`crontab`成功调度作业。让我们用命令‘swimm doned’将该单元标记为在Swimm中完成。就像上一步一样,您将被带到一个页面,该页面提供有关您刚才所做更改的更多信息。

此摘要指导解决该单元的人员阅读代码的其他部分。现在您已经做出了一些贡献,您已经更熟悉了词典,并手动测试了您的更改,现在您有了上下文,可以更快地计算出代码,并在为感染Monkey做出贡献时提高您的工作效率!

再一次,Swimm将允许您将您的解决方案与原始代码库进行比较。现在您已经命名了PBA并实现了它,下一步是确保它确实显示在配置中。那么,让我们进入第四步,在这里您将添加有关您的PBA的详细信息。

这实际上是一个很好的例子,说明了学习是如何产生学习的。每当你试图学习新的东西时,你就会遇到新的术语,新的术语,你就会去查找和研究它。MITRE ATT&;CK技术是你会经常遇到的,你需要做好准备。

“MITRE ATT&;CK框架是一个源自真实场景的攻击战术和技术的开源知识库。这是网络安全行业的专业人士经常提到的。";--Shreya Malviya。

在此特定示例中,“调度作业”PBA与描述中所示的两个MITRE技术及其ID相关。它们基本上做PBA做的事情-为Linux和Windows调度作业。

在这里,您可以看到Finder测试应该是什么样子的简短记录,这样可以更容易地确保您所做的一切都是正确的。现在,您可以通过从Swimm界面复制命令并使用‘swimm files`命令检查相关文件来了解钻取-运行单元。

这一次您可以注意到,您正在触摸的模块是`money_island`,这意味着我们所做的任何事情都会影响服务器。

它显示您需要添加更多代码的位置。但是,再说一次,您并不是真的确定要在这里做什么。那我们现在怎么办?是的,我们请斯维姆给我们一个提示。它告诉您查看其他技术的细节。连同Swimm界面中对此单元的描述一起,您可以非常清楚地了解下一步要做什么。

例如,有一个名为‘info`的字段,它包含对PBA实际工作的详细说明。还有一个名为‘ATTACK_TECHICHES’的字段,您可以在其中将您的PBA链接到适当的MITRE技术ID。

我们创建新字段:类型、枚举、标题、信息和攻击技术。然后,我们将使用‘swimm doned’命令将此单元标记为已完成。

此屏幕显示您最新操作的摘要以及一些详细信息。花点时间仔细阅读这些总结,以了解到底发生了什么。现在,我们将继续到第五个也是最后一个单元,它将围绕最近的拉取请求(PR)展开。

由于您已经了解了所有的文件和内容的工作原理,现在我们来看一个实际的拉取请求(PR)。这里的好处是看到你新获得的知识在现实世界中的适用性。您可以通过查看发生的对话(包括代码审查注释)来获得二手体验。

例如,如果您想知道为什么Inhibition Monkey中的POST拒绝是通过Shell命令实现的,您可以看到有人查看Pull请求,询问该问题,然后问题就会得到回答。在阅读完单元之后,这段对话实际上会给你额外的洞察力。

因此,当您确实使用自己的Pull请求做出贡献时,您可以避免可能出现的所有现有陷阱或瓶颈。

该演示清楚地展示了现代入职工具如何帮助提高工作效率、改善跨部门协作以及创建更健康的代码贡献。

“开源项目并不会带来太多的责任,但公司必须做好尽职调查。”每一个LoC都应该被仔细检查。大型电子商务、医疗保健和金融/银行公司需要有强大的安全态势。他们可以使用像Swimm这样的工具来优化他们的产品。