0x01 什么是soar
SOAR(安全编排、自动化和响应)是一种技术,旨在提高安全操作的效率和效果。根据Gartner的定义,SOAR解决方案整合了事件响应、编排和自动化以及威胁情报(TI)管理功能于一个单一平台中。这种集成的平台使得组织能够更快速和有效地处理安全威胁,减少对人工干预的依赖,同时提高事件处理的准确性和速度
SOAR平台的主要组成部分包括:
安全编排:将不同的安全工具和程序通过集成和API连接起来,实现数据的集中管理和自动化流程的触发。
安全自动化:自动执行安全任务和工作流程,如威胁检测、响应和报告,减少重复性和常规性的手工操作。
事件响应:提供一个统一的界面,用于规划、管理、监控和报告安全事件的处理过程,增强团队间的协作和信息共享。
告警核实:SOAR内置不同威胁类型的核实剧本,确保真的能够自动化封禁IP。
通过使用SOAR工具,企业能够提升安全操作中心(SOC)的工作效率,加快对安全事件的响应速度,同时降低整体的安全运营成本
以下为事件响应过程中,soar所做的工作。

告警生成
告警分流和优化:soar平台使用预定义的安全规则和逻辑,根据传入alert的严重性、来源和潜在影响对传入alert进行优先级排序。
调查和事件回溯:此步骤涉及三个子步骤——剧本执行、自动丰富和手动分析。
剧本执行:对于每个alert,SOAR 可以使用事件响应手册。剧本是一组自动和手动操作,可指导分析师完成调查过程。
自动丰富:SOAR 平台可以自动向通知添加上下文,例如威胁情报数据、历史日志和资产信息。此上下文信息可帮助分析人员确定警报的准确性和严重性。
手动分析:确定告警的真实性
安全人员在调查完成后,就可以触发 SOAR 剧本来执行不同的操作
遏制、根除和恢复
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=changePassworddocker-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参考
Shuffle Automation - An Open Source SOAR solution (shuffler.io)