r0bepr
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
引言
降本增效始终是安全发展的核心目标,而自动化处置则是实现这一目标的关键。本文作为W5系列基础文章,将对SOAR工具的功能进行简要介绍和学习。
1.安装
鉴于学习需求,我们将采用Docker来构建所需的开发环境!
测试环境:
CentOS-8.5.2111-x86_64-boot.iso
1.1.网络配置
1.配置dns
vim /etc/resolv.conf
namespace 8.8.8.8
1.2.安装redis
1.安装redis
yum install -y redis
2.启动redis
systemctl start redis
3.验证
redis-cli
1.3.安装mysql
1.安装mysql
yum install -y @mysql
2.启动mysql
systemctl start mysqld
3.初始化mysql
mysql_secure_installation
4.查询是否安装成功
mysql -uroot -p12345678
5.开启数据库远程管理
use mysql;
update user set host='%' where user='root';
flush privileges;
6.开放防火墙
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
7.命令行导入库表结构
# 建立数据库
mysql>create database w5_db;
# 使用数据库
mysql>use w5_db;
# 设置数据库编码
mysql>set names utf8mb4;
# 导入数据,SQL 语句在下面(注意sql文件的路径)
mysql>source /tmp/w5.sql;
sql文件:https://github.com/w5teams/w5/blob/main/docker/sql/w5.sql
1.4.配置linux相关组件
1.安装必要组件
yum install -y gcc gcc-c++ automake autoconf libtool openssl-devel bzip2-devel libffi-devel make
2.下载 Python 3.8.2 && 解压压缩包
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz&& tar -zxvf Python-3.8.2.tgz && cd Python-3.8.2/
3.检测编译环境
./configure prefix=/usr/local/python3 --enable-optimizations
4.编译安装
make && make install
# 有时候一起执行会卡主,分开执行即可解决
make
make install
5.设置软连接
# 删除已经存在的软链接
rm -rf /usr/bin/python3 && rm -rf /usr/bin/pip3 && rm -rf /usr/bin/gunicorn3 && rm -rf /usr/bin/supervisord3 && rm -rf /usr/bin/supervisorctl3 && rm -rf /usr/bin/echo_supervisord_conf3
# 创建新的软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 && ln -s /usr/local/python3/bin/gunicorn /usr/bin/gunicorn3 && ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisord3 && ln -s /usr/local/python3/bin/supervisorctl /usr/bin/supervisorctl3 && ln -s /usr/local/python3/bin/echo_supervisord_conf /usr/bin/echo_supervisord_conf3
6.验证安装是否成功
python3 -V && pip3 -V
1.5.部署w5
1.拉取项目
git clone https://github.com/w5teams/w5.git
2.安装依赖
# 默认国外源,国外服务器使用
pip3 install -r requirements.txt
# 使用国内源,国内服务器使用
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 如果遇到以下错误,请升级 pip
# ERROR: Could not build wheels for cryptography, bcrypt which use PEP 517 and cannot be installed directly
pip3 install -U pip
3.修改配置文件
[setting]
lose_time = 259200
max_instances = 5
[mysql]
host = 127.0.0.1
port = 3306
database = w5_db
user = root
password = 12345678
[redis]
host = 127.0.0.1
port = 6379
database = 0
password =
4.启动服务
nohup python3 run.py > w5.log
5.部署完成按照如下地址访问web平台
访问地址:
ip:8888
,(访问不了请检查服务器防火墙)账号密码:账号:
admin
,密码:12345678
(登录后请及时修改密码)
1.6.其它
部署w5 soar的过程中,发现docker部署mysql容器一直restart,一直成功不了,建议按照常规方法先部署测试。
2.基础功能介绍
2.1.剧本创建
1.首先创建一个新剧本
2.在进入剧本编写功能界面后,用户会发现左侧列出了大量的应用程序(即功能函数)。每一个应用程序均对应一个或多个特定的功能。
3.这里使用在此处采用IP查询作为示例,一个结构完整的脚本应当包含明确的起始与终止部分,并在其中嵌入应用程序的相关逻辑。
依据图示所示,该测试脚本的流程为:启动--》执行IP查询--》完成。
4.然后右键IP查询APP就会弹出配置信息,这里需要配置动作和参数,并且配置完成后进行保存。
动作:功能函数
ip:args
5.点击执行剧本即可完成查询。
2.2.APP功能查询
1.点击应用中心,可以看到当前已经有的应用。
2.点击查看文档,即可看到APP的使用方法和功能。
IP查询 v0.1:
whois v0.1
2.3.执行日志
1.执行日志则是包含了剧本执行的日志。
2.4.用户管理
1.通过用户管理功能,可以实现用户权限的配置与用户账户的创建。
管理角色:
**添加用户:**创建一个editor账号
2.创建后的用户只能看到被分配的功能
3.剧本基础用法
3.1.变量传递
为了实现数据的传输,W5 提供了以下三种应用场景:
变量格式:
全局变量:@{key}
局部变量:@[key]
APP 变量:@(uuid.参数名)
3.1.1.全局变量
1.按照顺序全局变量--》添加
2.调用全局变量**@{accesskey}**
3.1.2.局部变量
1.按照如下步骤创建剧本变量:剧本列表--》创建剧本--》剧本变量--》局部变量--》加号添加即可。
2.局部变量调用**@[tmpkey]**调用变量
3.1.3.APP变量
1.在开始介绍APP变量使用前,首先需要了解APP应用的参数。APP应用的代码在W5目录的
格式:/w5-main/apps/app应用名字/main/run.py
eg:/w5-main/apps/base64/main/run/py
2.通过审阅run.py
脚本,可以发现该文件实际上是一个用于处理输入数据并生成相应输出的应用程序脚本。分析参数可得:
输入变量:text
输出变量:status 、result
3.为了更好地理解APP变量,我们可以借助一个简单的剧本来进行说明。这个剧本的核心在于加密部分,而这一过程主要包括两个步骤:
首先,接收用户的输入参数。
然后,通过函数处理这些参数,并最终输出结果。
剧本图:
用户传参:用户点击复制获取该应用的uuid1
base64加密:使用**@(uuid1.text)**获取用户输入参数
base64解密:使用**@(uuid2.result)**获取加密后的结果
结果:通过**@(uuid.变量)**的格式即可完成APP变量的传递。
3.2.IF控制器
W5设备配备有内置的IF控制器。当该控制器接收到的输入数据满足预设条件时,系统将自动执行后续步骤;若条件未被满足,则数据传输过程将被终止。
1.在讲解IF控制器前,先使用一个demo进行演示。
当用户输入为1时,输出hello world 111
当用户输入为2时,输出hello world 222
当用户输入不在IF控制器中,直接结束
剧本:
输入1:
输入2:
输入3:
从例子中可以看出,用IF控制器可以决定剧本怎么发展或者什么时候结束。下面这张图展示了IF控制器的用法,它默认会和上一个 @(UUID.result) 的结果进行比较。
满足条件:继续
不满足条件:停止
参考
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
