一、项目介绍
TH-Nebula
通过解析企业的网络流量 (包括
http
和
https
) 来还原企业内部的各种事件, 从而进行深层次的分析来发现各种风险
,并快速的实施攻防对抗,星云采用旁路流量的方式进行数据采集,无需在业务逻辑上做数据埋点或侵入,同时支持本地私有化部署和
Docker
镜像云端部署;出于数据隐私和敏感性的考虑,我们不做任何数据的上传;
另外考虑到部分使用者风控经验不足,星云会提供基础的风控策略模板,使用者可以结合业务实际情况,灵活的进行配置和调整。考虑到攻防对抗的时效性,策略调整之后实时生效,无需重新编译和上线。
二、项目特点
1.轻量级部署
星云采用完全旁路流量解析的方式来采集业务信息,企业只需要与运维配合即可完成部署。值得一提的是,即使在业务增加、变化的情况下企业都可快速地获取到网络访问、登陆、注册、下单、参与活动等业务行为。
2.内置风险识别规则,简单易用
在「星云」上内置了大量业务场景下的攻防规则,并采用可视化规则编辑的方式,企业可以快速编辑策略并进行实际环境下的测试。
3.无埋点,无敏感数据泄漏风险
星云不需要企业研发埋点即可实现访问、登陆、注册、信息修改等的数据实时采集,无敏感数据外泄风险,更好的保护企业数据隐私。
三、技术选型
前端环境
n ode.js: 11.x
npm: 6.x
webpack: 4.x
后端环境
java: 1.8
maven: 3.x
python: 2.7.x
四、架构设计
TH-Nebula
是一个互联网风控分析和检测平台, 可以对包括流量攻击, 账户攻击, 支付攻击在内的多种业务风险场景进行细致的分析, 找出威胁流量, 帮助用户减少损失.
与常见的一些简易安全防护软件不同,
TH-Nebula
本质上应该是一套完整且独立的数据分析平台, 逻辑上, 它需要提供以下几个方面的功能:
数据采集与集成平台. 负责对接客户现有系统不同形式存在的各种原始数据, 包括流量, 实时日志, 日志文件等.
数据规整化与业务日志提取系统.
TH-Nebula
对原始数据进行清洗和标准转换, 并根据配置抽象出各种标准的业务日志, 方便后续进一步的分析.
数据持久化功能.对于进入系统的日志, 进行持久化, 方便后续的离线计算以及攻击溯源操作.
海量数据实时计算引擎. 对进入系统的海量数据, 进行大规模实时并行计算, 得到关于用户的实时统计特征
海量数据离线批处理计算引擎. 对进入系统的海量数据, 间隔性地进行离线批处理计算, 得到关于用户的固定特征
高性能策略引擎. 利用实时计算和离线计算的数据, 对所有用户访问进行策略判别, 识别出风险流量, 方便后续进一步处理
风险事件和黑白名单管理功能. 对于系统中识别出的风险事件, 以及与之相关的黑白名单进行管理和查询
数据可视化和风险数据自助式分析系统. 方便对原始数据进行
review
, 对风险情况进行溯源
数据导出和
API
集成. 用于将黑白名单和风险事件导出, 集成到客户系统; 同时可以进一步将系统内部数据导出.
系统配置和管理功能. 复杂的系统需要配合相应的管理工具.
系统粗略的架构设计如下图所示:
整个
TH-Nebula
系统, 功能比较完整和复杂, 无法用单个进程或软件的形态来提供这样一整套平台.在物理实现上, 将由多个独立的组件组成, 纯业务模块包括:
数据采集和转化模块. 数据采集和规整化由单个物理模块提供.
数据实时计算模块和规则引擎. 提供了系统中实时处理的功能, 包括实时计算, 准实时计算, 策略引擎等.为了简化, 目前统一在实时模块.
数据离线计算模块. 离线计算负责离线数据的统计计算, 数据呈现以及数据持久化等.
系统配置和管理模块. 配置和所有的数据管理都由单独的web应用负责.
TH-Nebula
前端展现模块.
TH-Nebula
的前端采用
JS
+
API
的模式, 大量的数据展现功能由前端模块来提供支撑.
当然, 系统还用到了许多底层的平台支撑:
系统缓存
Redis
.
Redis
提供了缓存数据的支撑, 主要包括消息中间件和监控数据的存储.
文件系统. 通过文件数据库, 可以提供海量数据的存储和查询.
数据存储
MySQL
.
MySQL
提供了所有具备强持久化需求的数据落地和读取.
用户画像辅助
Key-Value
数据库
AeroSpike
.
AeroSpike
是一个
Key-Value
数据库, 为用户画像数据的高性能存取提供了支撑.
其他. 包括负载均衡
Nginx
, 离线管理脚本, 进程监控平台, 定制内核模块等多个其他功能.
下图描述了系统的物理模块组成, 以及逻辑模块在其中的划分
五、功能
总览:观察网站流量和风险事件的情况
风险名单管理:由你设置的某个具体的策略出发而产生,风险名单管理页面展示了风险名单的列别,通过这个页面可以进行风险名单的查询、删除和人工添加等操作。
风险事件管理:风险事件由一组关联风险名单的基础事件组成,风险事件可以对不同的攻击进行整理成组,以便分析人员快速的针对一组风险事件进行查看。
风险分析:风险分析页面提供了IP、USER、PAGE、DEVICE ID四个维度的分析视角、允许分析人员通过不同的维度去查看某个IP、用户、设备或页面的细节以还原风险事件的整个流程。
日志查询:通过自定义的方式去搜索历史日志中的数据
策略管理:提供了可视化策略编辑功能,允许用户通过界面方式创建或编辑策略,并且可通过对策略状态的编辑快速的测试策略的有效程度,以及生产策略的下限。
六、场景介绍
对于公司业务细分到不同的场景, 再到定制策略, 以及
TH-Nebula
脚本可能会有些模糊, 对于一开始认识
TH-Nebula
系统可能会对此概念模糊不清, 所以接下来对于不同的场景分别制定策略, 来深入了解策略的定制, 以及
TH-Nebula
脚本的定制.
IP撞库登陆
假设同一个
IP
, 不断的用不同的账号或者密码一直访问登陆页面, 那么设定次数之后就可以捕获到这个
IP
, 之后对此
IP
进行弹验证码, 封
IP
等处理.
策略的制定
首先对公司的登陆接口在新建策略的时候, 以 [事件-动态资源请求] 选定属性 [
page
] , 也就是
URL
中包含了
login
字段的, 即认定为登陆接口, 此处要根据公司的登陆接口做相应的改变, 每家公司业务的登陆接口不尽相同. 在 ①处填公司的登陆接口
接下来选择点击图片中②所全选的+号, 选择 [
条件判断
-
条件统计
-
动态资源请求
]
然后编辑参数, 选择同一个
IP
的访问次数, 这样才可以达到计算的效果
以上是实时计算5分钟内统计同一
IP
访问登陆接口则对次
IP
进行判定为审核或者是黑名单, 通过
TH-Nebula
查询接口可以查询到黑名单, 审核名单, 可以对其做进一步处理.
IP大量请求却不加载静态资源
假设一个
IP
大量的请求却不加载静态资源, 那么可以认定此
IP
是通过机器程序登陆的操作的, 只对接口访问, 这种
IP
存在一定的风险.
策略的制定
选择新建策略, 选择 [
事件
-
动态资源请求
] 选定属性
c_ip
, 包含 [ . ] , 这样表达的意思是所有的
IP
都会被捕获到, 接下来通过条件筛选出同一个
IP
大量请求却不加载静态资源的
IP
.
选择 [
条件判断
-
条件统计
-
IP请求量5M
] 然后编辑参数设定为 [
c_ip
] 大于50, 表示在5分钟内某个相同的
IP
访问50次网站 接下来选择 [
条件判断
-
条件统计
-
静态资源请求量
] 编辑参数设定 [
c_ip
] 等于 [0]
IP
在5分钟内大量请求接口却不加载静态资源, 进行判定为审核或者是黑名单, 通过
TH-Nebula
查询接口可以查询到黑名单, 审核名单, 可以对其做进一步处理.
IP关联多个用户
假设一个
IP
以多个用户登陆, 那么可以认定此
IP
是通过机器程序操作多个用, 这种
IP
存在一定的风险.
策略的制定
选择新建策略, 选择 [
事件
-
动态资源请求
] 选定属性 [
c_ip
] , 包含 [ . ] , 这样表达的意思是所有的
IP
都会被捕获到, 接下来通过条件筛选出同一个
IP
关联多个用户
随后增加条件筛选
需要注意编辑参数
之后增加处置措施
以上三个例子从3个不同的业务场景说明了制定场景的方法, 希望可以从这些例子帮助到理解根据业务制定策略.
源代码下载地址:
https://gitee.com/threathunter/nebula.git
看到最后,如果这个项目对你有用,一定要给我点个「 在看和赞 」。