开始使用Shuffle——一个开源的SOAR平台,第2部分
来源:https://medium.com/shuffle-automation/getting-started-with-shuffle-an-open-source-soar-platform-part-2-1d7c67a64244
开始使用任何新的闪亮的工具都是困难的,但令人兴奋。我的工作就是揭开它的神秘面纱,让它变得有趣而简单。如果做错了,SOAR和开源工具可能会变得复杂混乱,但是我们正在用Shuffle来避免它。这篇文章将为安装、用户创建和工作流编辑带来一些迫切需要的信息。它的目标用户是分析师、开发人员和任何想要学习自动化的人,它使您能够熟练地创建和运行基本的工作流程。
这篇文章是关于Shuffle系列博文的第二部分。我们之前已经深入研究了SOAR是什么(不是什么),以及应用程序、工作流程、触发器、行动等等的概述。这篇文章将以这些术语的例子为基础,下一篇文章将着重于使用Virustotal和TheHive的实际实现。
要直接进入它,请查看文档:https://shuffler.io/docs/features。让我们实现自动化。
一、部署Shuffle
所有与shuffle相关的东西都在Github上运行,在Docker、Docker、Docker-compose和git中开始。解决了这些问题之后,让我们深入研究一下设置本身。在运行docker- composition .yml中指定的docker容器之前,下面的命令将克隆存储库,输入它。
git clone https://github.com/frikky/Shuffle
cd Shuffle
docker-compose up -d
这可能需要几分钟,因为我们下载所需的image。当这些都准备好了,请登录https://localhost:3443。这将抛出一个预期的证书警告,因为它是一个自签名证书。如果你想使用HTTP,请访问http://localhost:3001。请联系我们或创建一个问题,如果有一个问题在任何这些步骤。
现在我们开始管理设置的第一步也是唯一一步:创建第一个管理用户。
除了这里,我们无法从平台之外注册用户。如果您在第一次登录之前忘记了,请删除数据库(/etc/shuffle)并重新启动后端。
注册管理帐户后,我们被重定向到登录屏幕,期待相同的凭据。
Creation of an admin account登录之后,我们会看到一个欢迎屏幕。它与cooking所需的一切都有联系。在这篇博客中,我们将只检查工作流程,但请确保检查应用程序,并阅读其他部分的文档。
Shuffle welcome screenPS:如果你从上周开始尝试安装Shuffle,在没有更新的情况下,其中一些将无法工作:
git pull
docker-compose down
docker-compose pull
docker-compose up
一、第一个工作流
如本系列的第一部分所述,工作流是Shuffle的一部分,所有的东西都汇集在一起。点击“新建工作流”按钮开始。一个视图会弹出来询问名称和(可选的)描述。
Creating the first workflow提交之后,我们就进入了工作流视图。这是一个空视图,在左侧有一堆应用程序。如果应用程序列表为空,等待几分钟并刷新窗口。有些应用程序是在第一次运行Shuffle时加载和构建的,这可能需要一些时间。同时,让我们来看看我们将要制作的节点:
(1)一个“hello world”节点。这将是我们的开始节点,也就是要执行的第一个操作。
(2)重复来自hello world节点的数据的node。这是为了展示在节点之间传递数据的基础知识。
(3)一个基于执行参数发出http GET请求的节点,试图解析JSON值“url”(参见节点点5)。
(4)一个节点试图从第三个节点读取JSON数据,并打印它找到的IP(在后面的博文中搜索virustotal)
(5)调度器。这将使我们的工作流每X秒执行一次,JSON数据{" url ": " http://ip.jsontest.com/ "},由节点3解析
1. hello world节点
上面的GIF显示了整个过程。我们滚动应用程序列表,找到“test”应用程序。这个应用程序有一个动作,“hello world”(预选),我们继续给它一个名称(可选),就是这样!
在测试节点之前,我们需要保存。点击保存图标,然后点击大红色(橙色)播放按钮。从这里开始,等待一段时间,然后执行就会自己运行。
如果在15秒内没有任何结果,那很可能是出了问题。联系我们或者提出一个问题,让我们来解决。
2. 第一个中继器节点
中继器节点的重点是展示更改操作和传递数据的工作原理。文档中对此进行了广泛的讨论,但是还是有价值的。
左边的图片有两个节点:初始节点(Hello world)和一个新节点。当将第二个节点拖到工作流中时,它们应该被自动连接。悬停其中一个并从蓝色小圆圈中拖动可以更改这些连接。
这些节点之间的区别在于,“Action”下拉菜单已从“Hello world”更改为“Repeat back to me”。这个函数对于调试节点给出的结果非常有用,所以在以后开发工作流时要记住这个函数。
接下来,我们需要选择要重复的数据。“Repeat back to me”只有一个参数“call”,它是要重复的值。我们可以只在字段中写入一些内容,或者如果我们想使用来自另一个节点的数据,我们可以选择文本字段上方的“app”图标,然后选择“Hello world节点”。这将从名为“Hello world node”的节点中选择结果并重复它。我建议经常进行测试,因此我们要保存并测试我们的新实现。
Choosing an action variable3.获取IP
我们有多种获取IP的方法,但在这次测试中,我们希望获得公共IP,这意味着我们应该从外部获取IP。我找到了http://ip.jsontest.com服务,它也返回JSON。为了发出GET请求,我们将使用另一个应用程序:HTTP。这个应用程序可以测试到不同服务的连接,并且理论上可以连接任何web服务,因为它支持GET, POST, PUT, DELETE等。
在下面的例子中,第一个节点同时连接到“first repeater”和“Get URL”。它们可以按你喜欢的方式放置。当HTTP应用程序被拖到视图中时,在从小蓝点拖动一条线到它之前,将其他节点之一悬停。现在,连接好操作后,点击操作列表中的“GET”。
GET接受三个参数,只有第一个参数是必需的,用橙色而不是黄色标记表示。在保存和执行之前,粘贴任何URL到那里。
Running a GET request稍后我们将对该节点进行轻微修改,以将其与调度程序连接起来。
4. 解析GET请求中的IP
当HTTP请求(节点3)通过URL http://ip.jsontest.com成功执行时,它返回{" ip ": "你的ip "}。为了展示使用前面节点的另一种方式,如果IP是1.2.3.4,我们将让这个节点写入“我的IP是1.2.3.4”。为此,与节点2的操作相同:添加“test”应用程序,并选择“repeat back To me”动作。
这一次,因为我们想要文本和我们的变量在一起,所以前面的解决方案不起作用。我们需要使用普通的文本字段。下面是如何使用来自前一个节点的数据:
从$开始,然后是节点名:$Get URL
我们需要JSON数据中的“ip”:$Get URL.ip
我的IP是$Get URL.ip
PS:当Shuffle被释放时,这将会对之前的动作和它们的数据给出建议。
5、调度工作流
调度一直是自动化的重要组成部分。原因很简单:我们需要定期更新(特别是如果他们的服务不支持webhook)。这可能来自我们的票务系统,邮箱,威胁情报或其他任何东西。在我们的例子中,我们将使用它来演示自动化的工作流执行。
添加一个触发
要添加触发器,请找到左侧应用程序下方的“触发器”按钮。如左图所示,目前有四种方法可以自动执行工作流:
Webhook:用于外部资源的实时执行(如hive)
用户输入:等待用户单击,然后继续执行
计划:按照计划执行工作流
电子邮件:当从指定的邮箱收到邮件时执行
与应用程序一样,触发器是可以拖动的。一旦进入工作流编辑器,调度将自动连接到启动节点,因为这是应该开始执行的地方(稍后,可以为子执行修改此节点)。单击节点后,它会显示需要两个参数:以秒为单位的间隔(执行之间的时间)和执行参数。
我们之前没有讨论过这一点,但你可能已经注意到“执行参数”字段旁边的大播放按钮:
该字段中的任何内容都会变成一个值,通过$exec变量对工作流中的所有节点都可用。在我们的示例中,我们之前决定希望能够在该字段中提供这样的URL: {" URL ": " http://ip.jsontest.com/ "}。然后在“Get URL”节点中使用该URL。下面是计划的执行,间隔为5。
要跟踪和跟踪执行,请单击底部的运行人员或返回到/工作流。这是显示以前执行的信息的地方。
接下来是什么?
在遍历了安装、管理设置和带有变量的工作流的创建之后,现在应该可以进行更深入的研究了。我们没有深入研究具体的应用,但下一篇文章将开始解释与TheHive的集成,并继续通过与App creator动态创建Virustotal应用来构建我们的工作流程。
在那之前,你当然可以自己做这些事情。这已经是修复bug、改进特性和整理文档的漫长一周了,我不指望它很快就会停止。按照这个速度,它应该很快就会进入一个稳定、安全、授权的阶段。