美文网首页
整合Shuffle与Virustotal和thehive -开源

整合Shuffle与Virustotal和thehive -开源

作者: Threathunter | 来源:发表于2021-02-16 08:05 被阅读0次

    来源:https://medium.com/shuffle-automation/integrating-shuffle-with-virustotal-and-thehive-open-source-soar-part-3-8e2e0d3396a9

    在信息安全领域,从业者和领导者之间的不协调是正常的。领导可能决定购买从业者不喜欢的产品或服务,但要求实现。这意味着您需要将其完全集成到您的流程和过程中。但是你是怎么做到的呢?这是一个困难的问题,通常需要花费大量的时间和精力。但如果没有必要呢?

    Shuffle为您提供了从编程的角度探索平台的选项,无论您是否具备技术能力,并且提供了访问开放标准以在几分钟内构建实现的机会,而不是几个月或几年的时间。在这篇文章中,我们将快速了解如何在Shuffle中实现一个新服务。

    服务来来往往,无论你是小型中小企业还是大型企业。变化是唯一不变的。在接下来的十分钟里,我们的重点是完成为Shuffle创建一个应用程序并将其集成的过程。我们的想法是继续前一篇文章中创建的工作流,并在此基础上构建Virustotal和hive功能。由于Virustotal并不是OpenAPI规范之外Shuffle的一部分,所以我们必须从创建应用本身开始。这些是我们将遵循的步骤。

    (1)为Virustotal创建一个应用程序能够得到一个IP报告

    (2)将虚拟的“获取IP报告”操作添加到我们的工作流程中

    (3)如果您还没有,设置TheHive ()

    (4)使用Virustotal提供的IP历史记录在hive中创建警报

    1. 创建一个Virustotal应用

    假设您已经安装了Shuffle,我们将在https://localhost:3443/apps上进行应用程序选择。我们看到了一个视图,可以创建、编辑、删除、搜索、下载以及其他所有与应用程序相关的内容。这个地方可以访问我们需要的一切,包括从github存储库下载应用程序,无论是公共的还是私有的(下图右上方),从OpenAPI生成应用程序(左下角)或从头开始创建应用程序。在我们的例子中,由于Virustotal没有公开的OpenAPI规范,我们将使用“从头创建”函数。

    PS:如果你想跳过创建过程,可以在Shuffle的应用搜索栏中搜索“virustotal”并激活它,或者单击“从OpenAPI创建”并使用virustotal.yaml文件。

    首先:我们需要了解Virustotal使用哪种身份验证,以及它们的API URL是什么。最常用的API认证选项有 Bearer auth(特定头)、基本认证(用户名和密码)、API-keys(自定义头或查询)和Oauth2(特殊、多层)。要找到特定平台的API文档,可以先搜索或访问他们的网站。在Virustotal中,它在标题栏中。

    下面是Virustotal对身份验证的看法。

    这告诉我们必须使用自定义头,这意味着我们应该使用API键。接下来,我们必须找到URL。为了找到它,我们将滚动到我们正在构建的函数,它有一个包含完整URL的示例。下面是我们将要创建的函数的一个亮点,它返回关于IP地址的数据。

    回到Shuffle,我们现在有了为Virustotal(基础URL和认证方案)创建应用所需的信息。我已经在这里为Virustotal添加了一张图片和一个名字。

    请注意,基本URL是可选的,这使得定制应用程序的本地托管成为可能。Authentication是一个可以从中选择的下拉菜单,在我们的例子中,我们选择了“API key”,然后按照文档中描述的“x-apikey”绘图。

    完成第一步后,让我们为应用程序创建第一个动作。向下滚动一点,点击“NEW ACTION”按钮。

    打开新操作的视图后,下一步是填写操作“Get IP report”的特定信息。在复制以下内容之前,填写名称和描述(可选):

    curl --request GET \

      --url https://www.virustotal.com/api/v3/ip_addresses/{ip} \

      --header 'x-apikey: <your API key>'

    该命令使用curl——一种常用的命令行工具来发出网络请求(例如HTTP)。我不会深入研究curl或HTTP的工作原理,但其本质是不同软件之间的一种对话方式。Shuffle支持CURL解析,这意味着我们可以直接使用这个命令来执行操作。

    简而言之,创建一个动作:

    给它起个好名字

    在URL字段中粘贴CURL命令

    点击提交按钮!

    第一个操作的创建过程完成后,就可以进行保存了。通过点击红色(橙色)保存按钮,Shuffle将创建三样东西:OpenAPI规范、带有APP SDK的Python代码和完成的Docker映像。这可能需要一分钟,但您可以立即开始修改工作流。

    创建过程完成后,我们现在应该测试我们的应用程序。频繁测试是在向工作流引入新部件时避免遗留问题的最好方法。创建新工作流后,我们首先将Virustotal V3应用拖到工作流视图中,选择它,然后填充“apikey”和“ip”参数(如下图所示)。要处理api键或可重用数据,最好的方法是使用工作流变量。要找到Virustotal的API密钥,请在选择右上角的“API密钥”之前登录。

    Using the workflow variable “Virustotal APIkey” with the API key in it

    保存并执行,然后检查结果。记住,根据所选的IP,结果可能很大。如果有什么问题,找我,希望我能帮上忙。

    2. 添加Virustotal“获取IP报告”动作到我们的工作流程

    测试结束后,我们现在可以进入真正的工作流,也就是我们在第二部分中创建的“我的第一个工作流”。

    在这里,我们首先添加节点,然后将其连接到最后一个节点—“Print IP”。这里的目标是使用我们自己的IP(通过“Get URL”节点传递),并在Virustotal中搜索它。我们通过写$Get URL来做到这一点。因为从“Get URL”节点返回的数据是以{" ip ": " your_ip "}的形式返回的。

    为了测试,我们使用执行参数{" url ": " https://api.ipify.org/?(PS:我修改了我们获取IP的URL,因为另一个URL经常失败)。结果是来自Virustotal节点的关于IP的JSON格式数据。

    为Virustotal创建了应用程序并从Virustotal检索了数据,现在就可以使用数据了。接下来的步骤和博文将把我们的注意力从Shuffle的基本用法转移到一般的集成和真实的用例上。

    3.设置thehive(如果你有一个测试实例就跳过)

    在这一步中,我们将快速设置thehive,授予用户创建警报的权限,并获取API-key以供以后使用。

    thehive有很好的文档,可以通过多种方式安装。将以下内容复制到一个名为“docker-compose”的文件中。然后键入“docker- composition -d”。这需要几分钟,具体时间取决于您的网络速度。

    version: "2"

    services:

      elasticsearch:

        image: elasticsearch:6.8.8

        environment:

          - http.host=0.0.0.0

          - discovery.type=single-node

        ulimits:

          nofile:

            soft: 65536

            hard: 65536

      cortex:

        image: thehiveproject/cortex:latest

        depends_on:

          - elasticsearch

        ports:

          - "0.0.0.0:9001:9001"

      thehive:

        image: thehiveproject/thehive:latest

        depends_on:

          - elasticsearch

          - cortex

        ports:

          - "0.0.0.0:9000:9000"

        command: --cortex-port 9001

    1、完成docker-compose执行后,转到http://localhost:9000(或您选择安装它的主机)。

    2、点击“更新数据库”

    3、设置一个管理员用户并登录

    4、单击右上角“Admin > Users”

    5、选择您的用户(或创建一个新用户),并让它访问创建警报。

    6. 复制API键并将其保存为Shuffle中的变量

    PS:如果你遇到与Elasticsearch相关的错误,这是一个测试实例,运行以下命令来删除常见错误:

    docker exec -u 0 -it thehive_elasticsearch_1 curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } }'; curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

    4. 使用Virustotal数据在hive中创建警报

    有了我们的API密钥,我们现在可以创建一个警报。由于Shuffle已经为thehive开发了一个应用程序,唯一缺少的就是将我们的“创建警报”动作添加到工作流中。在连接到Virustotal节点之前,从左侧拖动它。

    thehive需要注意的是:type、source和sourceref每次必须是唯一的组合。在我的例子中,我的外部IP更改得非常频繁,所以我决定使用我自己的IP作为引用(源文件):这也有一个很好的副作用:如果我的IP发生了变化,它将在日程表上生成一个新的警报。

    后一个字段是可选的,但如果对分析人员来说不是很重要,则非常有用。标题和描述被大量用于帮助决定如何处理警告。这里是我在我的可选字段中使用的,但您可以放置任何您想要的内容。

    title: Info for $Get URL.ip

    description: * IP owner: $Virustotal v3_1.data.attributes.as_owner \n * Country: $Virustotal V3_1.data.country \n* Reputation: $Virustotal V3_1.data.attributes.reputation \n* Whois: $Virustotal V3_1.data.attributes.whois

    执行会产生一个新的警报,如下所示。为了确保每次外部IP更改时它都会创建一个新的警报,我们需要重新启用调度程序。我将自己的游戏设置为每5分钟(300秒)运行一次,导致每天都会在the hive中发出警告,因为这是我的IP租期。如果您想继续扩展此构建,我建议检查现有的安全定义,包括我们完整的Virustotal OpenAPI规范。

    正如你可能已经注意到的,第一步比后三个步骤要长得多,因为它是唯一的“新”步骤。后三个都是关于工作流版本和安装,而第一个试图解释一个新概念。通过了解如何通过curl命令或手动在几分钟内创建一个应用程序,您可以在几天内为您的资源实现工作流,而不是几个月或几年的专有内部开发时间。

    只要使用OpenAPI或其他标准,它就会使事情变得更简单、更容易理解、最后也是最重要的;你并不局限于技术本身。Shuffle中的OpenAPI可以导入、导出、生成等,并且(与JSON API一起)将成为下一代安全行业Rest API事实上的标准。信息安全/IT自动化通常是由开发人员的“独角兽”单独完成的,如果我们一起工作,甚至都无法达到我们能达到的程度。

    接下来,我们将继续与hive的合作,专注于实时数据传输(Webhook /消息队列)和真实的集成,而不是虚构的例子。我们还将快速查看MSSP的Shuffle、潜在的多租户和其他触发器。

    我欢迎您进一步探索Shuffle,尝试它并在它的基础上构建它。如果没有社区,它就无法生存,这里有一些帖子来帮助它启动。

    相关文章

      网友评论

          本文标题:整合Shuffle与Virustotal和thehive -开源

          本文链接:https://www.haomeiwen.com/subject/idnsxltx.html