DataAnalyze - 网络流量采集与分析解决方案

Security Classification: 【C-1】 | Publish Time:2024-12-22 | Category:Coding | Edit
Old Version | Diff |
Expiry Notice: The article was published three months ago. Please independently assess the validity of the technical methods and code mentioned within. :)

AI Summary: 本文介绍了一个用于Web安全领域的流量分析框架DataAnalyze。框架通过代理地址和信任证书收集流量,包含数据引擎、服务中心、分析引擎等模块,利用消息队列服务(NATS)和存储引擎(Redis和MySQL)处理数据。目标是提升漏洞挖掘效率,减少依赖经验与运气的过程。 --- (From Model:gpt-4o-mini-2024-07-18)

框架背景

在web安全领域,数据流量对于漏洞的挖掘至关重要。

如果我们有一种方式或者工具,劫持使用者日常的web流量,对其进行高效率的存储、加工、分析,那么一定能够对我们理解业务逻辑、找到潜在网络资产、提取敏感信息等工作上有巨大的帮助。

笔者在web安全领域并不是一个大师,但通过总结自己所挖掘的漏洞列表,发现重复性工作的占比过多。对于一个漏洞挖掘TASK的流程,并没有进行细致的处理。这也导致了笔者总是能够在重复Review后发现新漏洞,但实际这个新的漏洞本应该在更早的阶段就应获得。熬夜通宵对所有的功能接口都做一遍处理,一定能够有所收获,但任何人的精力总是有限的。

笔者目前在一家大型互联网公司从事反爬蓝军的工作,日常会遇到海量的请求流量分析场景。这也让笔者逐渐认为,不应该让漏洞发现是一个靠经验和运气的过程。并且AI技术的普及时刻让人感觉到焦虑,如何使用上这一先进技术也值得去思考。

HaE是由笔者的好友key所开发的burpsuite插件。由于天然受限于burpsuite工具,导致分析引擎并未解耦。并且burpsuite似乎并没有插件顺序加载的启动方式,导致遇到流量加密场景,插件会直接失去作用。使用时就需要二次开发源代码,并且不具备适配性。

针对以上所有的情况,笔者在10月左右开始设计功能模块,目前已经完成DataAnalyze框架雏形。

在开发过程中,学习了非常多前人的技术方法,引用了多个功能强悍的开源组件。并尽可能做到低耦合、高内聚,减少模块间的异常干扰。目前的效果是,通过自动集成部署的分析引擎节点在线上运行一周、处理超过200W+流量后依然稳定与服务端保持通信。

开发思路

接入方式

最终希望通过提供代理地址+信任证书的方式提供服务。

数据引擎(DataEngine)

数据引擎用于采集数据,它由一系列插件组成。插件并不依赖某一中间人框架,任何可以捕获明文流量的环节,只要使用者有能力按照规范传递数据至消息队列服务器即可成为数据引擎。

流量采集定义两种方式:

1、消息队列服务器(使用消息队列服务器协议)
2、分析引擎的流量上传接口(使用Restful API)

过滤环节至关重要,明确什么样的资源对我们是有用的。所以在数据引擎采集环节,需要做一定过滤。媒体资源、字体、样式表等资源做无条件过滤放行。

具体的开发规范可参考此文

服务中心(Service Center)

功能为对每个分析引擎节点做服务发现与配置下发。同时对存储引擎中的数据进行基础的展示,使用户可以简单索引流量,查看敏感信息匹配结果。

DEMO如下:

分析引擎(AnalyzeEngine)

分析引擎是整个框架的核心部分,整体由GO语言开发,并使用plugin模块加载用户插件。

主流程

启动阶段:

1、启动注册云端,获取配置(云端规则库、消息队列服务器、绑定Topic)
2、初始化Mitm中间人插件
3、持续请求消费数据

消费数据阶段:
1、插件回调接口循环处理(按顺序、按触发时机)

数据存储阶段
1、将最终形态的请求响应数据上报
2、将正则分析结果数据上报

中间人代理流程

用于捕获监听端口流量,按照规范上报消息队列,触发主流程

消息队列服务

目前直接使用NATS作为消息队列服务端。在采集引擎使用负载均衡模式消费数据。

存储引擎(StorageEngine)

目前使用Redis这一非关系型数据库存储临时的网络流量。
使用Mysql关系型数据库持久化存储永久流量。

架构图

//todo


Comment List

© Copyright: This article is an original work and the copyright belongs to the  Depy's docs  unless marked as Reproduced

Please contact the blogger for authorization to reprint