本文是我在探索和学习ATT&CK框架过程中,搭建本地实验环境的粗略过程。如果你也是跟着Elastic Stack官方文档无法搭建完成,不如回头翻一下我的这篇文章。
ATT&CK框架是什么相信大家都比较熟悉了这里我不做介绍了,选择部署Elastic 安全的原因有两个,一是在做红蓝对抗研究时缺少一款EDR产品用作行为分析和Bypass技术研究,二是Elastic 是唯一参加过ATT&CK官方的评估而且可以免费使用的。
Elastic Security介绍
Elastic Security在一个解决方案中将SIEM威胁检测功能与端点防护和响应功能结合在一起。这些分析和保护功能被Elasticsearch的速度和可扩展性所利用,使分析人员能够在损失和损失发生之前保护组织免受威胁。
Elastic Security提供以下安全优势和功能:
•用于识别攻击和系统错误配置的检测引擎•用于事件分类和调查的工作空间•交互式可视化以调查过程关系•内置的案件管理和自动操作•使用预建的机器学习异常作业和检测规则检测无特征的攻击
Elastic Security助力分析师防御、检测威胁,并就威胁做出响应。免费、开放的解决方案提供了 SIEM、Endpoint Security、威胁搜寻、云监测等功能。Elastic安全分为SIEM和Endpoint安全两个大“功能”。Elastic的终端安全方案主要由Elastic Agent(终端代理)、Elasticsearch(搜索和分析引擎)和Kibana(数据进行可视化)三大件。Elastic Agent是一种向所有主机添加对日志,指标和其他类型数据的监视的统一方法。单个代理使在整个基础架构中部署监视变得更加轻松快捷。代理程序的单一统一策略使添加新数据源的集成变得更加容易。Fleet在Kibana中提供了一个基于Web的UI,以添加和管理流行服务和平台的集成,以及管理Elastic Agent团队。集成提供了一种轻松的方法来添加新的数据源,此外,它们还附带了现成的资产,如仪表板,可视化效果和管道,可从日志中提取结构化字段。这使得在几秒钟内获得洞察变得更加容易。Elastic Security是Kibana的内置部分。要使用Elastic Security,您只需要部署一个Elastic Stack(一个Elasticsearch集群和Kibana)。
Elastic Security组件和工作流程
数据通过Beat模块和Elastic Endpoint Security代理集成从您的主机传送到Elasticsearch:
•Elastic Endpoint Security-弹性代理集成,可保护您的主机免受恶意软件的侵害并提供以下数据集:
•Windows:进程,网络,文件,DNS,注册表,DLL和驱动程序负载,恶意软件安全检测•Linux / macOS:进程,网络,文件
•Beat模块:Beat是轻量级的数据托运者。Beat模块提供了一种从常见来源(例如云和操作系统事件,日志和指标)收集和解析特定数据集的方法。
Kibana中的Elastic Security应用程序用于管理检测引擎、Cases和Timeline,以及管理运行Endpoint Security的主机:
•检测引擎:通过以下方式自动搜索可疑的主机和网络活动:
•检测规则:定期搜索主机发送的数据(Elasticsearch索引)以查找可疑事件。发现可疑事件时,将生成检测警报。生成警报时,可以使用外部系统(例如Slack和电子邮件)来发送通知。您可以创建自己的规则并使用我们的预建规则。•例外:减少噪音并减少误报次数。异常与规则相关联,并在满足异常条件时阻止发出警报。值列表包含可用作异常条件一部分的源事件值。在主机上安装Elastic Endpoint Security后,您可以从Security应用程序将恶意软件例外直接添加到端点。•机器学习作业:自动异常检测主机和网络事件。每个主机都提供异常分数,并且可以与检测规则一起使用。•时间轴:用于调查警报和事件的工作区。时间轴使用查询和过滤器来深入分析与特定事件相关的事件。时间线模板附加到规则,并在调查警报时使用预定义的查询。时间线可以保存并与其他人共享,也可以附加到案例中。•案例:直接在Security应用程序中打开,跟踪和共享安全问题的内部系统。案例可以与外部票务系统集成。•管理:查看和管理运行Elastic Endpoint Security的主机。
开启Fleet
Elasticsearch(以下简称es)和Kibana的安装非常简单,此处省略……下面主要记录如何开启Fleet并配置SSL/TLS。
证书生成
使用Elast Agent需要开启SSL,为ES生成私钥和X.509证书。其他的Beats程序(filebeat、winlogbeat等)也都需要添加相应的SSL配置。
1.同时生成CA和服务器证书
elasticsearch-certutil.bat cert ca --pem --ip 10.0.0.X --name master --keep-ca-key --out certs.zip
1.crt 转换成 pem格式:
openssl x509 -in ca.crt -out ca.pem
其他Beats只需要ca.pem即可。Windows系统中安装ca.crt证书时手动选择将证书导出受信任的根颁发机构。Linux系统中将ca.pem复制到/etc/ssl/certs/目录下,运行update-ca-trust或update-ca-certificates。
妥善保管ca.key,再次生成证书时需要。
1.elasticsearch.yml配置增加如下:
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.key: certs/master.key
xpack.security.http.ssl.certificate: certs/master.crt
xpack.security.http.ssl.certificate_authorities: certs/ca.crt
xpack.security.transport.ssl.key: certs/master.key
xpack.security.transport.ssl.certificate: certs/master.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca.crt
1.kibana.yml配置修改elasticsearch.ssl.certificateAuthorities如下:
elasticsearch.ssl.certificateAuthorities: [ "D:\elk\kibana-7.10.1-windows-x86_64\config\certs\ca.crt" ]
生成密码
生成密码前,需要已经启动ES。
PS D:ELKelasticsearch-7.10.1bin> .elasticsearch-setup-passwords.bat auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y
Changed password for user apm_system
PASSWORD apm_system = VfD5gOgdoJu3AeQCEk52
PASSWORD kibana_system = bo7AkvpKixyU9wOzZ9ob
Changed password for user kibana
PASSWORD kibana = bo7AkvpKixyU9wOzZ9ob
Changed password for user logstash_system
PASSWORD logstash_system = I8D0VG5H1csHDatR7bmB
Changed password for user beats_system
PASSWORD beats_system = Tyd1zP7T7a8WIF3fpZiR
Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = Kn77JNDaNuUMyvBOOfxI
Changed password for user elastic
PASSWORD elastic = wRdchJt8yNAOX8WHdCE6 已改为password
kibana-7.10.1 增加额外的配置,kibana.yml:
elasticsearch.hosts: ["https://10.0.0.X:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "bo7AkvpKixyU9wOzZ9ob"
xpack.fleet.enabled: true
xpack.fleet.agents.tlsCheckDisabled: true
xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"
xpack.security.enabled: true
Beats配置
winlogbeat、Filebeat等yaml格式的配置文件一般只需要添加或许该如下配置:
output.elasticsearch:
hosts: ["10.0.0.2:9200"]
protocol: "https"
username: "elastic"
password: "password"
ssl.certificate_authoritoes: "/home/ubuntu/ca/ca.pem"
安装Elastic Agent
Elastic Agent安装和注册已包含在Fleet中但是该功能目前处于Bata版本,官方文档也并不全。在agent的配置文件中写ssl配置根本不生效,好像代码还没有实现,而golang写的程序默认与系统的证书信任关系有关。所以在Windows上必须导入生成的ca.crt证书,必须是导入此计算机,不能是此用户。
添加Agent
从Fleet页面添加agent,自动生成注册命令。将elastic-agent安装包复制到目标系统,运行注册命令。
.elastic-agent.exe install -f --kibana-url=http://10.0.0.X:5601 --enrollment-token=d3dUQV9IWUJIOVlqUjN6OF9Za0k6MkJLYS1MQzhRSXViZzh5QmhhU3JlQQ==
确认Agent状态
需要确认三处:1. Status是Online,2. Data streams有数据,3. es的控制台实时日志没有报错。
如果出现bad_certificate错误,再检查证书生成和安装的步骤和过程。
查看Security/Overview是否有数据。
开启检测规则
Elastic Security的检测引擎规则已在GitHub上开源。开启规则需要手动点击每个要开启的规则,还好规则不多。
使用Elastic
Elastic Agent默认收集以下数据源:
•Process - Linux, macOS, Windows•Network - Linux, macOS, Windows•File - Linux, macOS, Windows•DNS - Window•Registry - Windows•DLL and Driver Load - Windows•Security - Windows
要用主机和网络安全事件发送到Elastic Security,需要在要从中提取安全事件的主机上安装和配置Beats:
•Filebeat用于转发和集中日志和文件•Auditbeat用于收集安全事件•Winlogbeat用于集中Windows事件日志•Packetbeat用于分析网络活动
可以使用Kibana UI或直接从命令行安装Beats。
代理策略
使用代理策略管理代理及其收集的数据。不同的操作系统可以使用集成应用不同,所以应创建不同的代理策略以应用于不同的系统。
新建一个命名为Windows的策略,添加“Endpoint Security”,“windows”集成,安装并配置Sysmon。
一个针对Windows系统的策略已配置完成。将策略下发给代理即可。
后续
在搭建完毕基本环境后,我们将在此环境中进行ATT&CK官方指导的APT29对手模拟。
参考链接
•https://www.elastic.co/guide/en/elasticsearch/reference/7.10/configuring-tls.html#node-certificates•https://www.elastic.co/guide/en/fleet/7.10/fleet-quick-start.html•https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash•https://github.com/elastic/kibana/issues/73483•https://www.elastic.co/cn/downloads/elastic-agent•https://www.elastic.co/guide/en/fleet/current/index.html•https://github.com/elastic/detection-rules
山石网科是中国网络安全行业的技术创新领导厂商,自成立以来一直专注于网络安全领域前沿技术的创新,提供包括边界安全、云安全、数据安全、内网安全在内的网络安全产品及服务,致力于为用户提供全方位、更智能、零打扰的网络安全解决方案。山石网科为金融、政府、运营商、互联网、教育、医疗卫生等行业累计超过18,000家用户提供高效、稳定的安全防护。山石网科在苏州、北京和美国硅谷均设有研发中心,业务已经覆盖了中国、美洲、欧洲、东南亚、中东等50多个国家和地区。
本文始发于微信公众号(山石网科安全技术研究院):ATT&CK系列之Elastic Security初体验
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论