u1timate
发布于 2025-12-02 / 6 阅读
0
0

基于Wazuh的安全检测-SOAR

0x01 什么是soar

SOAR(安全编排、自动化和响应)是一种技术,旨在提高安全操作的效率和效果。根据Gartner的定义,SOAR解决方案整合了事件响应、编排和自动化以及威胁情报(TI)管理功能于一个单一平台中。这种集成的平台使得组织能够更快速和有效地处理安全威胁,减少对人工干预的依赖,同时提高事件处理的准确性和速度

SOAR平台的主要组成部分包括:

  • 安全编排:将不同的安全工具和程序通过集成和API连接起来,实现数据的集中管理和自动化流程的触发。

  • 安全自动化:自动执行安全任务和工作流程,如威胁检测、响应和报告,减少重复性和常规性的手工操作。

  • 事件响应:提供一个统一的界面,用于规划、管理、监控和报告安全事件的处理过程,增强团队间的协作和信息共享。

  • 告警核实:SOAR内置不同威胁类型的核实剧本,确保真的能够自动化封禁IP。

通过使用SOAR工具,企业能够提升安全操作中心(SOC)的工作效率,加快对安全事件的响应速度,同时降低整体的安全运营成本

以下为事件响应过程中,soar所做的工作。

Figure 4.1 – The flow of the incident response and SOAR

  1. 告警生成

  2. 告警分流和优化:soar平台使用预定义的安全规则和逻辑,根据传入alert的严重性、来源和潜在影响对传入alert进行优先级排序。

  3. 调查和事件回溯:此步骤涉及三个子步骤——剧本执行、自动丰富和手动分析。

    1. 剧本执行:对于每个alert,SOAR 可以使用事件响应手册。剧本是一组自动和手动操作,可指导分析师完成调查过程。

    2. 自动丰富:SOAR 平台可以自动向通知添加上下文,例如威胁情报数据、历史日志和资产信息。此上下文信息可帮助分析人员确定警报的准确性和严重性。

    3. 手动分析:确定告警的真实性

    4. 安全人员在调查完成后,就可以触发 SOAR 剧本来执行不同的操作

  4. 遏制、根除和恢复

0x02 开源方案

1 Shuffle

Shuffle 是 SOAR 的开源方案。它是由 Fredrik Oedegaardstuen 设计实现的。它通过即插即用企业应用程序带来自动化。 Shuffle 依赖 Docker 和微服务,使其设计得更加模块化且功能强大

功能介绍:

  • 应用创建器:允许用户快速创建应用程序,支持Swagger/OpenAPI,可以处理任何HTTP方法的认证。

  • 工作流设计器:Shuffle的核心部分,允许用户将应用程序和默认应用(HTTP和Shuffle工具箱)组合在一起,实现无限的自动化可能性。

  • 标准工作流和应用:Shuffle预装了大量的应用和工作流,易于使用和扩展。

  • 托管:Shuffle可以在本地、云、混合环境中部署。

  • 多租户和多组织:支持用户与多个组织关联,以及从父组织控制子组织。

  • 多环境:支持在多个物理隔离的数据中心中运行单个工作流。

  • 文件存储:Shuffle可以处理文件,支持连接到沙箱或使用Yara分析电子邮件。

  • 键值存储:Shuffle提供了“Shuffle缓存”,用于存储数据,支持分页、时间戳管理、IOC列表等。

  • 加密认证存储:所有数据都是加密的,只有在应用程序需要使用时才实时解密。

  • 内置文档:提供了易于访问的文档,帮助用户了解如何使用应用程序。

  • 触发器:包括Webhooks、计划任务、子流程、用户输入等多种触发方式。

  • SSO和MFA:提供了单点登录和其他认证机制,如Okta、Auth0、PingID、AzureAD等。

  • 开发中的AI:Shuffle正在开发基于文本的应用程序和工作流构建技术,使用GPT-4,使自动化更加容易。即将开源

安装

  • 使用docker安装

git clone https://github.com/Shuffle/Shuffle
cd  Shuffle
  • 创建数据库文件夹用着docker映射

mkdir shuffle-database
sudo chmod +x shuffle-database
sudo chown -R 1000:1000 shuffle-database 
  • 启动

sudo docker compose up [-d]
  • 成功,访问地址

前端 ReactJS

后端 Golang

数据库 Opensearch

Orborus Golang

Worker Golang  部署应用程序以运行工作流中定义的操作

app sdk Python由应用程序用来与后端对话

案例

  • 获取来自wazuh指定的告警信息

    • 在shuffle中新增一个工作流

    • 获取该webhook的url连接, 通过配置wazuh server ,将满足该工作流的告警发送到soar平台中,进行后续编排

  • 通过平台主动管理wazuh

    • 当通过增加一个app来远程管理wazuh以达到响应的目的(比较鸡肋)。

  • 联动thehive进行事件处理

shuffle中已经内置了thehive相关的接口,我们可以直接使用。

该工作流主要目的是为了丰富告警数据,首先接收 Wazuh 警报,然后在 TheHive 中创建一个case,向 TheHive case添加一个可观察对象,最后针对 MISP 和 VirusTotal 运行 TheHive/Cortex 分析器。

2、n8n

n8n 是一个工作流程自动化平台,它为技术团队提供了代码的灵活性和无代码的速度。凭借 400 多个集成、原生 AI 功能和公平代码许可证,n8n 使您能够构建强大的自动化,同时保持对数据和部署的完全控制。

社区版不包含以下功能:

  • 自定义变量

  • 环境

  • 外部密钥

  • 二进制数据的外部存储

  • 日志流式传输(包含日志记录)

  • 多主模式(包含队列模式)

  • 项目

  • SSO (SAML, LDAP)

  • 共享(工作流、凭据)(只有实例所有者和创建它们的用户才能访问工作流和凭据)

  • 使用 Git 进行版本控制

  • 工作流历史记录(注册后,社区版可以获得一天的工作流历史记录)

可以通过注册您的 n8n 社区版来解锁额外的功能。您可以使用您的电子邮件进行注册并接收一个许可证密钥。注册后,社区版将解锁以下功能:

  • 文件夹:将您的工作流整理到整洁的文件夹中 在编辑器中

  • 调试:在处理工作流时复制并固定执行数据

  • 一天的工作流历史记录:24 小时的工作流历史记录,以便您可以恢复到以前的工作流版本

  • 自定义执行数据:保存、查找和注释执行元数据 要注册一个新的社区版实例,请在首次创建帐户时选择该选项。

安装

基于docker部署

参考:https://github.com/n8n-io/n8n-hosting/tree/main/docker-compose/withPostgres

修改.env中的数据

POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n

POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword

docker-compose.yml

version: '3.8'

volumes:
  db_storage:
  n8n_storage:

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_NON_ROOT_USER
      - POSTGRES_NON_ROOT_PASSWORD
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
      - GENERIC_TIMEZONE="Asia/Shanghai" 
      - TZ="Asia/Shanghai" 
    ports:
      - 5678:5678
    links:
      - postgres
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy
  • 运行

docker-compose up -d

参考

SOAR技术背后的浮躁 - FreeBuf网络安全行业门户

Shuffle Automation - An Open Source SOAR solution (shuffler.io)


评论