通过ZAT结合机器学习进行威胁检测
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
系列文章
机器学习概述
在机器学习中我们针对安全数据的处理显得异常重要,针对不同的攻击类型数据我们需要选择合适的算法但是大体过程都是分为以下几个步骤:
获取数据特征抽取特征预处理特征降维模型训练模型评估
通过zat处理zeek全流量日志数据
今天这篇文章主要是介绍通过zat处理zeek的全流量数据的分析方法。
zeek是开源NIDS入侵检测引擎,目前使用较多的是互联网公司的风控业务。zeek中提供了一种供zeek分析的工具zat。
zat工具包处理zeek输出具备了多种的方法其中如下:
处理日志数据动态轮询
Zeek记录到Pandas数据框和Scikit-Learn
动态监视files.log并进行VirusTotal查询
动态监控http.log并显示“不常见”的用户代理
在提取的文件上运行Yara签名
检查x509证书
异常检测
处理zeek的dhcp.log日志数据
输出带有时间戳的字典
处理zeek的dns.log日志数据,并使用 Pandas 将dns.log文件输出
接下来我们用sklearn进行数据集划分,这里展示部分代码
输出结果:
对zeek的file.log日志进行病毒文件查询,这里展示部分代码 。vt_query是查询VirusTotal的相关库
针对VirusTotal服务查询每个文件sha256 / sha1 值
针对zeek的http.log日志进行查询,这里主要是针对UA头的数据进行
输出结果用Yara 动态监视 extract_files目录,当Zeek删除文件时,代码将对该文件运行一组Yara规则
输出结果
对域名进行检测,并对这些url进行“病毒总数的查询”
当你的机器访问 uni10.tk 时输出效果如下
针对x509.log的数据,因为有些钓鱼或者恶意网站流量是加密的。这个我们可以通过证书来进行判断
运行后输出如下效果
针对异常检测我们可以使用孤立森林算法进行异常处理。一旦发现异常,我们便可以使用聚类算法将异常分组为有组织的部分,从而使分析师可以浏览输出组,而不用一行行去看。
输出异常分组
检测tor和计算端口号。通过遍历zeek的ssl.log文件来确定tor流量这里贴出部分代码
输出结果如下:
下一篇文章将会单独以zeek的dns.log日志为例介绍将dns.log数据进行sklearn特征工程并使用numpy进行矩阵运算和pca降维等等。
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐