原文是去年看到的系列文章,总共有8篇。文章详细介绍了SOCasS(SOC as a Service)的架构及相关部署方法。在国内,SOC的概念比较多见了——安全运营中心,很多安全厂商也有相关的产品。但是SOCasS的概念,比较少见,笔者在国内的一些安全论坛/社区好像都没有见过这个词,国外甚至都推出了SOCasS的相关产品/服务。当时挺感兴趣就收藏了文章,后面断断续续阅读完了。
什么是SOCasS呢?简单解释就是:企业可能由于时间/资源/安全人力不足,很难组建自己的内部安全团队。但是他们可以使用第三方的技术和软件工具构建一个适配企业的SOC(这个第三方可以理解为厂商的产品和技术、也可以理解为开源产品/技术)。
本文是由突尼斯INSAT大学的三名学生编写的,他们使用100%开源的软件和技术,构建了一套很完善的SOC:包括平台架构、各种日志收集、漏洞扫描、监控、日志处理、数据整合、dashboard图表、告警、应急响应事件管理等。涵盖内容丰富,值得一读。笔者也是抱着学习的目的,在阅读的同时,前前后后将这8篇文章翻译成中文,供国内安全同行更直观、便捷地去阅读和理解(文章将近25000字,很多内容都是开源软件的部署方法,理解起来并不难,读者也可根据各个章节标题选择性进行阅读)。
原文链接:
Deploying of infrastructure and technologies for a SOC as a Service ( SOCasS)
PS:笔者从事甲方安全建设工作多年, 也见过形形色色的领导/同事。从事技术工作,当然信守“技术是第一生产力”,但是有时候在安全厂商天花乱坠的宣传下,“买买买”成了第一生产力(当然,预算充足完全可以这么干)。国内很少能看到本文这样的实践型的文章,文字概念型的文章比比皆是,这是个蛮有趣的事情。安全之路漫长,安全非一日之功,我们的理想状态都是利用有限的资源实现安全建设的最大价值。当然,要多干实事,多学习多进步。
过去几年中,网络攻击的数量日益激增。这些攻击不仅针对个人,还针对企业,政府、关键基础设施等。由于攻击的复杂性和数量庞大,传统的解决方案(如防病毒、防火墙、NIDS和NIPS等)已经不能再满足需求。
大型企业通常会使用SIEM(Security Information and Event Management-安全信息和事件管理)的解决方案,集成到安全建设里,收集和关联网络设备、安全设备和其他终端产生的告警和日志。但是这样的方案不仅花钱而且费时费力,并且需要安全团队专门去分析误报、排查处理一些复杂的安全事件。
这就导致了Security Operations Center(安全运营中心)方法的出现,也就是我们熟知的SOC。它被认为是安全领域的一种新方法,以减少和缓解复杂度及复杂度日益增加的攻击数量。SOC是由技术人员、各种流程和技术的集成体,以提供端到端的安全能力。但现状是:组建一个SOC团队的成本太高,目前只有一些大的互联网公司在搞。
这时,安全运营中心即服务-Security Operation Center as a Service(SOCasS)的方法就应运而生了。SOCaaS就是将安全运营中心(SOC)外包给第三方(使用第三方的技术和软件工具)。这就使得资源有限的公司能以更便宜、更高效和更快速的部署方式来改善其安全现状,并增强对攻击面的防御能力。
该项目是由突尼斯INSAT大学的三名学生Ibrahim Ayadhi、Ghassen Miled和Mehdi Masri在Bassem Ben Salah教授的指导下完成的。所使用到的技术和工具100%都是免费和开源的。
为了感谢开源社区及他们的帮助,使得这个项目成为了现实。我们决定为社区公开项目文档和实施该项目的具体步骤。下图为该解决方案的详细架构图:
该解决方案可实现日志存储、分析、监控、告警生成、报告生成、IOC(通常指的是在检测或取证中,具有高置信度的威胁对象或特征信息)扩充和事件响应管理。
从上图可知,我们从主机和各个网络组件收集不同类型的日志和事件,然后通过安全通道(VPN隧道)将这些日志发到Logstash。我们使用ELK beats和Wazuh-agent来收集数据和日志,随后把他们发送到ELK SIEM。
经过Logstash对数据的汇总和处理,Elasticsearch将处理数据的索引,以优化存储锅从和数据搜索。随后,数据会被转发到Kibana,Kibana负责已存储数据的分析和可视化。
同时,Wazuh HIDS的agent将数据发回Wazuh Manager和Elasticsearch。随之,ElastAlert将监控关注的新事件,并在TheHive内部生成告警。
随后,通过Cortex分析器和MISP的额外查询来丰富事件,从而决定事件自动关闭或上报给分析人员处理。告警可供分析人员通过Cortex和MISP去声明和标记。
该解决方案部署时使用的硬件配置和软件:
硬件:
下表展示了我们项目中部署的整体基础架构、需求和服务。此外,该架构可以通过正确的配置和基础设施的拓展,部署在更大的环境中。
对于终端,它可以将任何可产生日志的设备与服务器进行连接(例如:路由器、交换机等)
托管在Microsoft Azure云上的机器 | 配置需求 | 系统版本 | 开放端口 | 部署服务 |
---|---|---|---|---|
服务器 | 2 Vcpus 8GB内存 |
Ubuntu 18.04 LTS | Wazuh: TCP 1514,1515,55000 Logstash: TCP 5044 Kibana: TCP 5601 Elasticsearch: TCP 8080 Praeco: TCP 8080 Nessus: TCP 8834 SSH: TCP 22 |
ELK stack Filebeat Nessus Vulnwhisperer Elastalert Praeco Wazuh-api Wazuh-manager |
服务器 | 2 Vcpus 8GB内存 |
Ubuntu 18.04 LTS | TheHive: TCP 9000 Cortex: TCP 9001 MISP: 443 SSH: TCP 22 |
TheHive Cortex MISP |
终端 | 2 Vcpus 4GB内存 |
Ubuntu 18.04 LTS | SSH: TCP 22 | Filebeat Packetbeat Metricbeat Wazuh-agent |
终端 | 2 Vcpus 4GB内存 |
Windows 10 | RDP: TCP 3389 | WinlogBeat Wazuh agent |
免责声明:
软件:
- ELK stack: ELK stack是一个缩写,用于描述一个由三个流行的开源项目组成的框架:Elasticsearch、Logstash和Kibana。ELK能够收集来自所有系统和应用程序的日志,并对日志进行分析,创建可视化对应用程序和基础架构进行监控,能有助于更快的排查一些故障和进行安全分析等。
- Beats: 是轻量级的数据传输器。可以安装在服务器上捕获各种操作数据(比如日志、各类指标及网络数据包)。Beats可直接或通过Logstash将操作数据发送到Elasticsearch,这样就可以用Kibana将其可视化。
- Elastalert: 是一个用于从Elasticsearch中的数据中对异常、峰值或其他感兴趣的内容进行告警的简单框架。它的工作原理是,将Elasticsearch与规则类型和告警这两类组件相结合。Elasticsearch被定期查询,查询的数据会与规则类型进行匹配,当命中规则,根据命中规则的情况就会产生一条或多条告警。
- Suricata: 是一个开源的威胁检测引擎,由OISF(开放信息安全基金会)开发。Suricata可作为网络入侵检测系统(NIDS)和入侵防御系统(IPS),也可用于网络安全监控。
- Elasticsearch的其他开源分支:
- Praeco: 是Elasticsearch的一个告警工具-ElastAlert的GUI版,使用的是ElastAlert API。通过Praeco,可以使用查询生成器为Elasticsearch中的数据交互式地建立告警功能,可将相关通知发送到Slack、邮箱、Telegram或其他的HTTP POST端,此外该工具还提供了许多其他的功能。
- Wazuh: 是一个用于威胁检测、安全监控、事件响应和合规监管的免费开源平台。可用于监控终端、云服务器和容器,并汇总和分析来自外部的数据。Wazuh agent扫描被监控的系统,寻找/监控恶意软件、rootkits和一些可以的异常行为。可以检测到隐藏的文件、隐蔽的进程和未注册的网络监听,以及系统调用响应不一致等问题。
- Nessus Essentials: 一个免费的主机漏洞扫描器,为漏洞评估提供一个切入点。可高速、深入的对环境进行无代理扫描。
- TheHive: TheHive的官方描述是:“一个可拓展的、开源的、免费的安全响应平台,旨在使任何信息安全从业人员能够轻松地处理安全事件,并快速地采取行动”。本质上,它是一个告警管理平台,用于管理从创建到关闭的事件告警。
- Cortex: Cortex与TheHive是一个团队开发的产品,对Cortex进行了丰富的数据补充。Cortex 使用分析器获取日志中有关指标信息的其他数据。允许在第三方服务中查询 IP、URL 与文件哈希等指标,并将第三方返回的结果作为附加信息丰富告警事件。无需我们手动发送文件哈希值到VirusTotal,分析器会自动帮我们做,并将结果标记在告警上。
- MISP: MISP(恶意软件信息与共享平台)是一个用于共享、存储和关联目标攻击、威胁情报、金融诈骗信息等指标的威胁情报平台。其 Feed 可以是某个组织提供的付费订阅,也可以是社区维护的开源订阅,这也是数据丰富的主要来源。MISP如今已被多个组织用于存储、知识共享,在网络安全指标,恶意软件分析方面进行协作,以确保更好的安全防护。
本节内容旨在介绍我们的工作准备,接下来的内容将会详细展开。
ELK Stack(Open Source) | ELK Stack(Basic) | |
---|---|---|
License | Apache 2.0 | Elastic Basic |
Free | Yes | Yes |
Alerting | No | No |
Authentication | No | No |
Access Control | No | No |
在我们的项目中,我们使用的是ELK Stack Basic (7.6.1)版本,并参考elastic.co提供的官方指南:
https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
在本节中,将介绍我们对于ELK Stack做的相关配置。
关于Elasticsearch的配置,都是在/etc/elasticsearch/elasticsearch.yml
配置文件中进行的。
使用如下命令打开该配置文件:sudo nano /etc/elasticsearch/elasticsearch.yml
下图中是elasticsearch数据和日志的默认路径:
然后定位到配置文件中的network部分。network配置非常简单,如果你要使用默认端口的话,port不用做任何修改。但是如果要更改端口的话,取消掉注释,修改http.port的参数。
network.bind_host: 0.0.0.0
这个配置将启用Elasticsearch服务的远程访问,可以帮助我们后续将beats(采集程序)连接到ELK Stack。
一旦修改了配置,我们需要重启Elasticsearch服务,命令如下:
sudo systemctl restart elasticsearch
声明:由于安全问题,不建议将network.bind_host设置为0.0.0.0,特别是在生产环境中。文中的配置只是在原型设计阶段。
关于Kibana的所有配置,都是在/etc/kibana/kibana.yml
这个配置文件中。使用如下命令打开:
sudo nano /etc/kibana/kibana.yml
要想配置Kibana可远程访问,我们必须配置:server.host: 0.0.0.0
。端口的话一般不会与其他服务重复,所以直接默认5601端口就行。现在重启Kibana:sudo systemctl restart kibana
。
现在,可以在浏览器访问Kibana了:http://服务器ip:5601
。
进入Kibana的页面后,享受它令人惊讶的用户体验,并尝试一些仪表盘样例和数据。
声明:因为安全问题,不建议将Kibana的server.host设置为0.0.0.0,特别是在生产环境中。文中的配置只是在原型设计阶段。
现在我们来解决logstash的配置问题:
sudo cat /etc/logstash/logstash-sample.conf
该配置文件包含了Logstash的必要配置。因此,我们需要将它复制到目录/etc/logstash/conf.d/
下,并将其名称改为logstash.conf。
不要忘记重启服务:sudo systemctl restart logstash
。
正确配置好logstash、kibana 和elasticsearch 的配置文件后,可以启动服务并检查它们:
你可以检查这些服务的端口监听,是tcp6还是tcp这都没有关系,不影响服务。
Kibana : 5601
Elasticsearch : 9200
Logstash : 5044
下载链接:https://www.elastic.co/fr/downloads/beats/winlogbeat
安装方法:https://www.elastic.co/guide/en/beats/winlogbeat/current/winlogbeat-installation.html
在我们的项目中,我们使用winlogbeat.yml的如下配置:
理解winlogbeat.event_logs:
winlogbeat.yml中的winlogbeat部分指定了所有针对Winlogbeat的选项。最重要的是,它包含了要监控的事件日志列表。我们可以看到Sysmon模块是默认启用的。要添加更多的模块,你可以参考如下链接:
https://www.elastic.co/guide/en/beats/winlogbeat/current/configuration-winlogbeat-options.html
理解分片数(shards)和副本数(replicas):
Output :
对于Elasticsearch output和Logstash output,在启动服务或检查配置时必须只启用其中一个。
Processors(处理器)和logging(日志)的配置:
下图包含winlogbeat使用的默认processors和一个logging设置的样例:
Index Lifecycle Managment ( ILM ) -索引生命周期管理:
最后,我们不得不禁用ILM(索引生命周期管理)。ILM是集成在ELK stack Basic版本中的一个免费的x-pack功能,但是在ELK oss版本里不是。你可以根据机器性能、服务韧性和是否保留的需求,使用ILM来自动管理索引。例如:每天、每周或每月创建一个新的索引,并对之前的索引进行归档。当一个索引达到一定大小时,运行一个新的索引,或者删除旧的索引以执行数据保留的标准。
ILM功能在ELK stack basic版本中是默认启用的。但是当你的beats没有直接到Elasticsearch时,它需要进一步的配置。ILM功能超出了本文的范围,所以我们将它禁用。
我们将在加载索引模板之前设定新的Sysmon配置,以确保新的Sysmon字段和配置在ELK stack中能被正确加载。
System Monitor (Sysmon)是一个Windows系统服务和设备驱动程序,一旦安装在系统上,在系统重启时仍然驻留。以监视和记录系统活动,记录到Windows事件日志中。它提供有关进程创建、网络连接和文件创建时间变更的详细信息。通过收集事件,它可以通过Windows Event Collection或SIEM代理生成并随后对其进行分析,从而识别恶意或异常活动,并了解入侵者或恶意软件如何在网络上运行。
MITRE ATT&CK是一个全球可访问的基于真实世界观察的对抗战术和技术的知识库。 ATT&CK知识库被用做在私人部门、政府和网络安全产品和服务社区开发特定威胁模型和方法的基础。
https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
参考链接:https://raw.githubusercontent.com/ion-storm/sysmon-config/master/sysmonconfig-export.xml
sysmon64 -accepteula -i sysmonconfig-export.xml
sysmon64 –c
A. 加载索引模板
索引模板允许你定义模板,这些模板将在创建新索引的时候自动应用。模板包括设置和映射,以及一个简单的模式模板,用于控制模板是否应应用于新索引中。
加载索引模板需要连接到Elasticsearch。如果输出的不是Elasticsearch,则必须手动加载模板。在我们的例子中,winlogbeat不会直接连接到Elasticsearch,因此我们必须在启动服务之前手动设置索引模板。
需要暂时禁用Logstash输出,并启用Elasticsearch输出。
B. 加载仪表盘和索引格式
https://www.elastic.co/guide/en/beats/winlogbeat/current/load-kibana-dashboards.html
索引模板、索引模式和仪表盘加载正确后,可以在Kibana界面查看。
加载成功后如下图所示:
现在,在打开配置文件后,我们将通过注释来禁用Elasticsearch的输出,然后我们将通过删除注释来启用Logstash的输出。
现在我们可以通过PowerShell或者使用services.msc(Windows服务)来启动winlogbeat和sysmon服务,并在Kibana界面查看数据。
当启动winlogbeat后,ELK Stack将使用Logstash中的配置来创建索引,从而实现数据的存储。
winlogbeat的默认dashboard(仪表盘):
在Discover下,我们可以使用新配置(MITRE引用)检查sysmon日志:
其他的beats无论在配置还是安装上都与winlogbeat差别不大。我们使用的beats有:
我们要提到的是,某些beats,如metricbeat或filebeat有几个模块可以使用。
例如,我们使用filebeat中的system模块来监控ubuntu机器上的ssh认证、sudo命令,我们使用Suricata模块来收集Suricata IDS的日志。
我们使用这个命令来启用filebeat中的Suricata模块:
sudo filebeat modules enable Suricata
要查看filebeat中可用的模块,可以查看如下目录:
/etc/filebeat/modules.d/
要查看正在使用的模块,使用如下命令:
filebeat modules list
在我们设备上安装Suricata的方法,参照如下链接:
https://www.alibabacloud.com/blog/594941
正常完成安装的话,你应该得到一个和这个比较相似的dashboard。如果你没有得到完全一样的页面也不用担心,我们会在接下来的文章中介绍如何处理dashboard。
也可以将Suricata接口集成到ELK stack中,可以参考下面的链接:
https://www.howtoforge.com/tutorial/suricata-with-elk-and-web-front-ends-on-ubuntu-bionic-beaver-1804-lts/
Open Distro可用的插件包括:
在这个项目中,我们只安装Security和Alerting两个插件。
Open Distro for Elasticsearch允许我们监控数据,并给相关人员自动发送告警信息。配置和管理起来是很简单的,并且它拥有强大的api去调用Kibana的接口。
Alerting功能允许我们配置规则,当数据中一些我们关注的内容发生更改时,可以收到通知。任何可以查询的东西,都可以配置Alerting。当一个或多个Elasticsearch索引的数据满足特定条件时,Alerting功能将会通知您。
下面的链接提供了Open Distro的历史版本(在我们本次案例中,使用的是1.6.0版本):
https://opendistro.github.io/for-elasticsearch-docs/version-history/
要安装Open Distro的 Alerting功能,得先管理elasticsearch和kibana的插件:
插件管理位于:
cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-sql/opendistro_sql-1.6.0.0.zip
cd /usr/share/kibana
sudo bin/kibana-plugin install — allow-root https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-alerting/opendistro-alerting-1.6.0.0.zip
Kibana:
sudo bin/kibana-plugin list sudo bin/kibana-plugin remove <plugin-name>
Elasticsearch:
sudo bin/elasticsearch-plugin list sudo bin/elasticsearch-plugin remove <plugin-name>
systemctl restart kibana elasticsearch
注意:安装完成后,移除或更新Kibana/Elasticsearch的插件后,大约需要几分钟才能正常重启成功,而且Kibana服务器会一直响应(”kibana is not ready yet“)。我们可以使用top
命令实时查看kibana和elasticsearch进程。
Slack是一个通讯工具——”一个用于传递消息、工具和文件的地方“。这意味着Slack是一个即时通讯系统,其中包含许多其他工作场景工具的附加功能。
Incoming Webhooks 是将消息从应用程序发布到 Slack 的一种简单方法。创建一个Incoming Webhooks,会给你一个独特的URL,您可以向其发送包含消息文本和一些选项的JSON payload。您可以使用Incoming Webhooks的所有常用格式和布局块 来使消息更突出。
下面是图形化配置的一个举例(Event ID: 4624的意思是”某个账户登录成功“):
现在你需要创建一个trigger(触发器),例如:
然后转到通知,并选择创建的目标(destination),然后点击创建:
现在,就可以在Kibana的Alerting界面中关注告警,并且每个告警将会发送到你的Slack频道:
转到你的Slack频道(本教程中是#test
频道),然后等待告警通知:
这个插件为管理用户、角色、映射、角色组和访客提供了一个界面。
之所以选择这个插件是因为Kibana在基础版本中未提供身份认证的面板。因此,为了确保接口的安全性,我们使用open distro提供的免费的身份认证面板。
Security插件的安装可以参照与安装Alerting插件相同的步骤(3.1.1-3.1.4)进行。只需要更改插件安装的url即可:
Kibana:
sudo bin/kibana-plugin install — allow-root https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-security/opendistro_security_kibana_plugin-1.6.0.0.zip
Elasticsearch:
sudo bin/elasticsearch-plugin install https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-security/opendistro_security-1.6.0.0.zip
安装过程可能有个警告信息:直接输入”y“:
securityadmin.sh
):cd /usr/share/elasticsearch/plugins/opendistro_security/tools/ # 修改权限 chmod +x install_demo_configuration.sh # 运行 ./install_demo_configuration.sh
安装过程中,所有的都直接输入”y“,默认用户名密码是(admin/admin):
在/etc/elasticsearch/elasticsearch.yml
配置文件中,Open Distro的Security插件会添加另外一个配置:
在本例中,我们为elasticsearch配置一个用户名密码和SSL证书(要提到的是,本部分和后面对于证书的验证不属于我们本次系列文章的范围)。
Elasticsearch:
禁用elasticsearch的x-pack安全功能:当你重启elastic的时候可能会得到一个报错,因为xpack安全功能在ELK Stack基础版本中是默认启用的,所以在重启之前,必须在/etc/elasticsearch/elasticsearch.yml
中禁用它。
Kibana:
禁用Kibana的x-pack安全功能:同样,对于Kibana,我们必须禁用xpack安全功能,并忽略/etc/kibana/kibana.yml
中的ssl验证。
注意:确保协议是https,而不是http:
Logstash:
由于我们的beats没有直接连接到elasticsearch,而是连接到了Logstash。所以我们不必管理beats或重新配置他们,我们只需要配置logstash的配置文件。
同样的,要确保协议是https,而不是http。
sudo nano /etc/logstash/conf.d/logstash.conf
注意:如果你正在重新配置beats或者设置另外一个beat的时候,你的elasticsearch已经安装了用户名,密码和SSL证书的security插件,你可以将此配置添加到你的beats中,使其可以访问。确保你的协议是https而不是http。
systemctl restart elasticsearch systemctl restart logtash systemctl restart kibana
如上文所述,可能需要几分钟才能正确重启,可以使用top
命令实时检查进程。同时,你的kibana服务会响应”kibana is not ready yet“。
现在,你的ELK stack使用新的安全凭证,已经能正常连接了。
可以使用Elasticsearch URL来检查(http不起作用,必须使用https):
https://your_elasticsearch_ip:9200
也可以在Kibana中进行检查:
在这里,你可以创建用户、分配角色和权限:
这将帮助你根据角色、操作和权限来管理和组织SOC团队。
下图是默认情况下定义的角色和内部用户数据:
本节内容将包含如下几个部分:
ELK SIEM演示
默认的仪表盘
创建你的第一个仪表盘
ELK SIEM最近是在2019年6月25日的7.2版本中添加到了elk Stack中。这是一个由elastic.co创建的SIEM解决方案,旨在让安全分析师的工作变得更加轻松。
在我们的解决方案中,我们决定创建我们自己的SIEM(安全信息和事件管理)并定制我们自己的仪表盘。但是,首先应该先了解了解ELK SIEM。
首先,我们将介绍主机部分。主机部分能够看到终端本身内部产生的事件。
点击查看主机后,应该会得到图中的类似信息(如上图所示)。很直观能看出,我们有三台主机连接到该机器:
1台Windows10和2台Ubuntu Server 18.04。
上图有几个可视化的图表,每一个显示的都是不同类型的事件。例如,中间的那个正在显示有关三台机器的登录数据。我们图中测试的数据量已经测试了5天,所以包含了很多成功和失败的登陆事件(你在自己实验的时候,可能日志量比较少,这个不用担心)。
转到网络部分,你应该能得到下图中类似的信息。这部分将使你能洞悉网络中发生的一切,从HTTP/TLS流量到DNS流量,以及其他外部的事件告警。
为了便利,elastic.co的开发人员已为ELK正式支持的每个beat都创建了一个默认仪表板。在这里,以Packetbeat的默认仪表盘为例。
如果你按照0x02文章中的步骤正确操作了,应该有设置好的仪表盘了。那么现在开始吧:
在Kibana左侧tab上选择“dashboard”,从上往下数第三个。在搜索框中输入beat的名称。如果beat有多个模块,将会创建其中每一个单独的仪表盘。每个仪表盘数据显示非空与否取决是否有数据。选择一个带有模块名称的模块。下图是PacketBeat的仪表盘:
这是网络流量的仪表盘。它将通知我们有关传入和传出数据包的信息、IP来源和目的地、以及对安全运营中心分析人员有用的许多信息。
A-仪表盘类型:
可以用来可视化数据的各种可视化类型。例如:
条形图、地图、Markdown小部件、饼状图
B- KQL (Kibana Query Language):
是一种友好的方式用户在kibana中搜索数据的语言。它可以用来搜索检查数据是否存在,以及许多其他有用的功能。要了解KQL的其他更多信息,可以查看如下链接:
https://www.elastic.co/guide/zh-CN/kibana/current/kuery-query.html
下图是使用Windows 10专业版系统搜索主机的查询示例:
C- Filters(过滤器/筛选器):
通过此功能,可以筛选某些参数,例如主机名,事件的代码或ID等。Filters将在调查阶段的线索搜索上,极大的减少花费的时间和精力。
D-Visulaization(可视化):
我们将为MITRE ATT&CK创建一个可视化。
点击:Dashboard → Create new dashboard→create new →Pie dashboard,将类型设置为索引(index)模式,选择你的beat名字,然后回车。现在,应该能看到一个绿色的圈。
在左侧的Buckets可以看到:
我们使用split slices。
我们将根据我们选择的term(值)来可视化我们的数据,在本案例中,term(值)将与MITRE ATT&CK有关。
在Winlogbeat中,将为我们提供这些信息的文件被称为:winlog.event_data.RuleName
。
我们将按顺序设置计数指标,根据事件的出现次数来排序。
启用Group other values in the separate bucket(就能显示剩余的值到一个单独的bucket里)。如果你选择的terms有很多来自beat的不同值,这将很容易实现。它可以帮助您将其他数据整体可视化,这将使您了解其余事件的百分比。
现在我们完成了data选项的配置,现在到options选项。
应该了解以下几点:
可以Truncate (截断)选择你想从事件中显示多少数据:设置你希望展示的开始时间,然后点击蓝色区域。
你应该得到像下图这样的图形:
还可以在可视化中添加过滤器,以过滤你想检查的某些主机或你认为对您的目标有用的任何参数。可视化将只显示与过滤器内的规则相匹配的数据。在本例中,我们将只显示来自win10主机的MITRE ATT&CK数据。
仪表盘是许多可视化的集合,你的仪表盘应该清晰易懂,并带有有用的确定性数据。这是我们从零开始为winlogbeat创建的仪表盘示例:
如果你需要了解kibana可视化更多的详细内容,建议查看官方文档:
https://www.elastic.co/guide/zh/kibana/current/tutorial-visualizing.html
......未完待续