前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何检测TLS beaconing

如何检测TLS beaconing

作者头像
FB客服
发布于 2019-05-29 07:42:04
发布于 2019-05-29 07:42:04
76000
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

ee-outliers 是用于检测存储在 Elasticsearch 中的事件的异常值的工具,这篇文章中将展示如何使用 ee-outliers 检测存储在 Elasticsearch 中的安全事件中的 TLS beaconing 连接。Beaconing 连接是定期发起的连接,可能表示计算机已经被感染在进行控制通信,例如从 C&C 服务器中获取指令或者静默地在网络中外传数据。

预备 ee-outliers

ee-outliers 完全在 Docker 上运行,因此对环境的要求接近于零。唯一的要求是对 Docker 和 Elasticsearch 集群的连接配置,使其可以访问数据。

该项目的 GitHub 的README页面已经包含了所有细节,无需赘述。

创建配置文件

GitHub 上 ee-outliers 的默认配置文件中包含了所需要的所有配置选项。首先修改 general 部分中的参数,确保 ee-outliers 可以连接到 Elasticsearch 集群。使用时可以保留所有默认值,包括 beaconing_batch_eval_size

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[beaconing]# 在查找异常值前,需要同时定义处理多少事件# 事件数量的增多通常意味着会有更好的结果,但会导致内存使用量增加beaconing_batch_eval_size=1000000

将参数 print_outliers_to_console 设置为 1,就可以直接在命令行输出中看到检出的异常值,这便于进一步调试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
############################### DERIVED FIELDS##############################[derivedfields]timestamp=%{YEAR:timestamp_year}-%{MONTHNUM:timestamp_month}-%{MONTHDAY:timestamp_day}[T ]%{HOUR:timestamp_hour}:?%{MINUTE:timestamp_minute}(?::?%{SECOND:timestamp_second})?%{ISO8601_TIMEZONE:timestamp_timezone}?

接下来增加一部分新配置,用于定义统计 TLS beaconing 的检测模型,此用例已在示例配置文件中定义过了,如下所示:

############################### BEACONING - DETECT OUTBOUND SSL BEACONING - TLS##############################[beaconing_ssl_outbound]es_query_filter=BroFilter.event_type:"ssl.log" AND _exists_:BroFilter.server_name aggregator=BroFilter.server_name,BroFilter.id_orig_h,timestamp_daytarget=timestamp_hourtrigger_sensitivity=1 outlier_type=suspicious connectionoutlier_reason=beaconing TLS connectionoutlier_summary=beaconing TLS connection to {BroFilter.server_name} run_model=1test_model=0

让我们逐行解释一下,方括号之间的部分是要运行的模型名,名字都以 beaconing_ 为开头,这样 ee-outliers 就知道应用统计 beaconing 检测模型了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[beaconing_ssl_outbound]

模型将为每个单独的 aggregator 字段计算目标字段的所有唯一实例。在这个特定场景下,这意味着 ee-outliers 为一天中的每小时都创建 buckets(前文创建的派生字段之一——timestamp_hour),并用 aggregator 的每个唯一实例组合填充这些 buckets

aggregator=BroFilter.server_name,BroFilter.id_orig_h,timestamp_daytarget=timestamp_hourtrigger_sensitivity=1

例如,假设集群中关于域名 sneaky.com 的 TLS 连接事件每小时大约出现 5 次,都是针对特定源 IP 地址(192.168.0.2)和特定的日期(19/12)的。然后 ee-outliers 将会创建下列 buckets 来发现异常值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Aggregator: "sneaky.com - 192.168.0.2 - 19/12"Target: 00 (midnight)Total count: 5
Aggregator: "sneaky.com - 192.168.0.2 - 19/12"Target: 01 (01:00 AM)Total count: 4
Aggregator: "sneaky.com - 192.168.0.2 - 19/12"Target: 02 (02:00 AM)Total count: 5...

触发灵敏度定义了允许存在多少“标准差”。在上面的例子中,凌晨 1 点只存在 4 个而不是 5 个请求,如果不容忍一些偏差的存在,就不会被视为异常!通过将触发灵敏度设置为 1 或者更高,将不会错过那些微小偏差的异常值。例如,在 trigger_sensitivity 设置为 1 的情况下,下面 24 个计数值(一天中每小时一个)都是 beaconing。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
5 5 5 4 4 5 5 5 5 3 5 5 5 2 5 5 5 5 4 5 5 5 5 5

标准差是 0.74,小于设置值 1,所以这个 24 个 buckets 的所有事件都会被标记为异常值。

此外,beaconing 模型的内置要求是至少需要 10 个 buckets,否则不会检测到 beaconing。换句话说,上面如果只有 9 个值而不是 24 个,或者不满足最少的 10 个值的任意个值都不会被标记为异常值。

然后指定异常值类型、成因和摘要。请注意,摘要中可以包含占位符字段,这些字段都会在异常事件中得到丰富,并且将使分析师更容易在以后对其进行可视化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
outlier_type=suspicious connectionoutlier_reason=beaconing TLS connectionoutlier_summary=beaconing TLS connection to {BroFilter.server_name}

最后,让 ee-outliers 运行该模型。在配置文件的 general 部分中全局启用或禁用运行与测试的开关。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
run_model=1test_model=0

运行 ee-outliers

配置好模型后,运行 ee-outliers 来查看结果。按照 GitHub 上的 README 页面所述运行 ee-outliers。以交互模式运行时,我们可以在命令行输出中看到结果。按照需要,可能需要配置 Docker 网络使得 ee-outliers 能够访问 Elasticsearch,按照 README 页面配置即可,接下来称该网络为 sensor_network

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 构建镜像docker build -t "outliers-dev" .
# 运行镜像docker run --network=sensor_network -v "$PWD/defaults:/mappedvolumes/config" -i outliers-dev:latest python3 outliers.py interactive --config /mappedvolumes/config/outliers.conf

查看输出,似乎已经发现了显示为 beaconing 行为的事件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2018-12-11 23:32:02 - INFO - ===== evaluating ssl_outbound outlier detection =====2018-12-11 23:32:02 - INFO - analyzing 6,001 events2018-12-11 23:32:05 - INFO - ssl_outbound - evaluating beaconing model [100.00% done]2018-12-11 23:32:05 - INFO - evaluating batch of 6,001 terms2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com2018-12-11 23:32:05 - INFO - outlier - beaconing TLS connection to rules.emergingthreatspro.com

如果在配置文件中启用了 es_save_results 选项,这些事件会被在异常值字段中被标记,就可以对其进行可视化。

可视化结果

我们使用 Kibana 来可视化新标记的异常事件,基于包含 outliers.reason 的所有事件创建直方图。此外还创建了两个表来展示异常值类型与成因,分析师可以快速筛选出感兴趣的内容。

过滤 beaconing TLS connection(这是在之前定义的 outlier_reason 字段的名称),接下来创建一个过滤 outlier_summary 字段的表:

深入展示列表的第二个命中,再次进行过滤 rules.emergingthreatspro.com 就可以得到以下的直方图了。

看起来就像是 beaconing 行为,事实上这是我们实验室的设备,定期在 Emerging Threats 网站中提取新的 IDS 规则

通过检查 aggregator 的值,我们可以看到计算出了哪些 buckets(格式:server_name - IP - hour,与之前定义的完全一致)

最后下钻 terms 字段,可以看到每小时发出了多少请求。请注意,outliers 对每天都进行分析,因为 timestamp_day 是配置的 aggregator 字段的一部分

结论

在这篇文章中,展示了 ee-outliers 检测存储在 Elasticsearch 中的任意字段组合的 beaconing 行为的能力。beaconing 模型可以被用于更多场景:Windows 登录、HTTP 和 DNS beaconing 等。配置触发灵敏度可以决定模型以多严格的标准检测异常值,也为分析师提供根据需要调整和定制的能力。最后,通过使用新字段丰富每个异常事件,在任何喜欢的可视化工具中制作显示异常值的仪表板。

*参考来源:nviso,FB 小编 Avenger 编译,转载请注明来自FreeBuf(FreeBuf.COM)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql数据实时同步到Elasticsearch
业务需要把mysql的数据实时同步到ES,实现低延迟的检索到ES中的数据或者进行其它数据分析处理。本文给出以同步mysql binlog的方式实时同步数据到ES的思路, 实践并验证该方式的可行性,以供参考。
bellen
2018/06/08
19K0
mysql数据实时同步到Elasticsearch
基于IF的网站异常流量检测
IF全称为Isolation Forest,正如字面含义,在一片森林(数据集)中找到被孤立的点,将其识别为异常值。
HsuHeinrich
2023/05/25
9430
基于IF的网站异常流量检测
ELK安装
https://blog.csdn.net/magerguo/article/details/79637646
dogfei
2020/07/31
6640
离群点异常检测及可视化分析工具pyod测试
找到了一个对Outlier Detection (Anomaly Detection) 异常值检测(异常检测)的比较好的工具(https://github.com/yzhao062/Pyod),该工具集成了多个算法。
sparkexpert
2019/05/26
1.5K0
ELK学习笔记之Logstash详解
官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
Jetpropelledsnake21
2018/12/05
5.6K0
ELK学习笔记之Logstash详解
Hive-1.2.1_03_DDL操作 1.1. Create Database1.2. Drop Database1.3. Use Database2.1. Cre
  注意:各个语句的版本时间,有的是在 hive-1.2.1 之后才有的,这些语句我们在hive-1.2.1中是不能使用的。
踏歌行
2020/10/15
7630
Hive-1.2.1_03_DDL操作
    




        1.1. Create Database1.2. Drop Database1.3. Use Database2.1. Cre
时间序列异常检测的方法总结
时间序列数据是按一定时间间隔记录的一系列观测结果。它经常在金融、天气预报、股票市场分析等各个领域遇到。分析时间序列数据可以提供有价值的见解,并有助于做出明智的决策。
算法进阶
2023/08/28
1.7K0
时间序列异常检测的方法总结
Elasticsearch 日志监控方案
现在大部分公司都会选择将应用、中间件、系统等日志存储在 Elasticsearch 中,如何发现日志中的异常数据并且及时告警通知就显得十分重要。本文将会介绍两种主流的日志监控方案,分别是 Yelp 公司开源的 ElastAlert 和 Elastic 官方的商业版功能 Watcher。
Se7en258
2021/08/20
1.4K1
一文读懂!异常检测全攻略!从统计方法到机器学习 ⛵
异常值是偏离数据集中大多数样本点的数据点。出现异常值的原因有很多,例如自然偏差、欺诈活动、人为或系统错误。不过,在我们进行任何统计分析或训练机器学习模型之前,对数据检测和识别异常值都是必不可少的,这个预处理的过程会影响最后的效果。
ShowMeAI
2022/11/29
3.9K0
一文读懂!异常检测全攻略!从统计方法到机器学习 ⛵
将腾讯云安全威胁情报数据接入腾讯云 ES 的参考指南
本文旨在指导用户如何将腾讯云安全威胁情报(Threat Intelligence,简称 TI)数据接入腾讯云 Elasticsearch Service(简称 ES)。文章从背景与价值出发,逐步介绍所需的环境准备、数据格式设计、索引映射与数据接入策略,并通过 Ingest Pipeline 示例说明实际落地方式。在参考官方文档与实际操作经验的基础上,本文为用户提供具有可操作性的步骤与建议。
点火三周
2024/12/10
1440
将腾讯云安全威胁情报数据接入腾讯云 ES 的参考指南
收藏!14 种异常检测方法总结
来源:宅码本文约7800字,建议阅读10分钟本文收集整理了公开网络上一些常见的异常检测方法(附资料来源和代码)。 本文收集整理了公开网络上一些常见的异常检测方法(附资料来源和代码)。不足之处,还望批评指正。 一、基于分布的方法 1. 3sigma 基于正态分布,3sigma准则认为超过3sigma的数据为异常点。 图1: 3sigma def three_sigma(s):     mu, std = np.mean(s), np.std(s)     lower, upper = mu-3*std
数据派THU
2022/06/29
1.2K0
收藏!14 种异常检测方法总结
KMeans+降维,实现用户聚类!
基于Python Outlier Detection库进行异常值处理(Kmeans对异常值敏感)。
皮大大
2023/11/09
7980
ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例
最近公司分了个ELK相关的任务给我,在一边学习一边工作之余,总结下这些天来的学习历程和踩坑记录。
雨临Lewis
2022/01/12
5040
熔断与异常检测在 Istio 中的应用
在微服务领域,各个服务需要在网络上执行大量的调用。而网络是很脆弱的,如果某个服务繁忙或者无法响应请求,将有可能引发集群的大规模级联故障,从而造成整个系统不可用,通常把这种现象称为 服务雪崩效应。为了使服务有一定的冗余,以便在系统故障期间能够保持服务能力,我们可以使用熔断机制。
米开朗基杨
2019/08/29
2K0
熔断与异常检测在 Istio 中的应用
logstash的各个场景应用(配置文件均已实践过)
1) datasource->logstash->elasticsearch->kibana
Jetpropelledsnake21
2019/05/19
3.8K0
ElastAlert监控日志告警Web攻击行为
由于公司需要监控web攻击行为,而因某些原因搭不了waf,才不得不用ElastAlert进行告警,此为前提。 一、ELK安装 Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。 它能从项目一开始就赋予你的数据以搜索、分析和探索的能力。 Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置, Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜
FB客服
2018/02/24
4.5K0
理论结合实践,一文搞定异常检测技术
数据集汇总的异常数据通常被认为是异常点、离群点或孤立点,特点是这些数据的特征与大多数数据不一致,呈现出"异常"的特点,检测这些数据的方法称为异常检测。
数据STUDIO
2021/07/21
1.4K0
CKS 习题
误入歧途
2025/03/21
670
CKS 习题
Python异常值的自动检测实战案例
异常值检测(outlier)是一种数据挖掘过程,用于确定数据集中发现的异常值并确定其出现的详细信息。当前自动异常检测至关重要,因为大量数据无法手动标记异常值。自动异常检测具有广泛的应用,例如信用卡欺诈检测,系统健康监测,故障检测以及传感器网络中的事件检测系统等。今天我们就通过使用Python来实现异常值的自动检测系统的实战开发。我们将会使用以下技术来实现异常值检测:
算法进阶
2023/08/28
5590
Python异常值的自动检测实战案例
使用PyOD进行异常值检测
异常值检测各个领域的关键任务之一。PyOD是Python Outlier Detection的缩写,可以简化多变量数据集中识别异常值的过程。在本文中,我们将介绍PyOD包,并通过实际给出详细的代码示例
deephub
2024/02/21
3020
使用PyOD进行异常值检测
相关推荐
mysql数据实时同步到Elasticsearch
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文