作者:来自 Elastic Andrew Pease•Colson Wilhoit•Derek Ditch
使用 Docker 启动 Elastic Stack
序言
Elastic Stack 是一个模块化数据分析生态系统。虽然这允许工程灵活性,但建立开发实例进行测试可能很麻烦。建立 Elastic Stack 的最简单方法是使用 Elastic Cloud - 这是完全一站式的。但是,在某些情况下,Elastic Cloud 可能不适用于你的测试环境。为了帮助解决这个问题,本博客将为你提供必要的信息,以便快速轻松地建立本地、完全容器化、TLS 安全的 Elastic Stack,并启用 Fleet 和检测引擎。你将能够创建 Fleet 策略,在本地主机或 VM 上安装 Elastic Agent,并将数据发送到你的堆栈中进行监控或分析。
本博客将涵盖以下内容:
- Elastic Stack
- Elastic 容器项目
- 如何使用 Elastic 容器项目
- 如何导航 Kibana 并使用其相关功能进行安全研究
Elastic 容器项目不由 Elastic 公司赞助或维护。该项目的设计和实施考虑可能无法反映 Elastic 关于部署生产就绪堆栈的指导。
Elastic Stack
Elastic Stack 由多个不同的组件组成,每个组件都提供独特的功能,可用于各种用例。
Elasticsearch
Elasticsearch 是一个分布式 RESTful 搜索和分析引擎。作为 Elastic Stack 的核心,它集中存储你的数据,以实现闪电般的快速搜索、精细调整的相关性和可轻松扩展的强大分析。
Kibana
Kibana 是一个用户界面,可让你可视化 Elasticsearch 数据并管理 Elastic Stack。
Elastic Agent
Elastic Agent 是一个模块化代理,可让你从端点收集数据或充当从第三方来源(如威胁源)发送数据的工具。端点的 Elastic Security 集成可防止勒索软件和恶意软件、检测高级威胁并为响应者提供重要的调查背景。
Elastic 容器项目
如上所述,Elastic Stack 是模块化的,这使得它非常灵活,适用于各种用例,但这会增加实施的复杂性。
Elastic Container 项目是一个开源项目,它使用 Docker Compose 来构建一个功能齐全的 Elastic Stack 以供非生产环境使用。该项目不由 Elastic 公司赞助或维护。
简介
Elastic Container Project 包括三个主要组件:
- Elasticsearch
- Kibana
- Elastic Agent
该项目利用 Docker Compose,这是一种用于构建、集成和管理多个 Docker 容器的工具。
为了简化容器的管理,该项目包含一个 shell 脚本,允许暂存、启动、停止和销毁容器。
此外,该项目还在 Elasticsearch 和 Kibana、Kibana 和你的 Web 浏览器、Elastic Agent 和 Elasticsearch 以及 Elastic Agent 和 Kibana 之间使用自签名 TLS 证书。
先决条件
该项目是在 Linux 和 macOS 操作系统上构建和测试的。如果你使用的是 Windows,则无法使用随附的 shell 脚本,但仍可以运行本机 Docker Compose 命令并手动执行部署后步骤。
虽然没有经过彻底测试,但建议你为 Docker 提供 4 个核心和 8 GB 的 RAM。
你只需安装几个软件包:
- Docker
- Docker Compose
- jq
- Git
- cURL
macOS
如果你使用的是 macOS,则可以使用 Homebrew 安装必备软件,Homebrew 是 macOS 的开源包管理系统。如果需要,请查看 Homebrew 网站以获取有关安装它的信息。
brew install jq git
brew install --cask docker
Linux
如果你在 Linux 上运行,则可以使用包管理系统 ( DNF 、 Yum 或 APT ) 安装先决条件。
基于 RPM 的发行版
dnf install jq git curl
Ubuntu
apt-get install jq git curl
你还需要 Docker 套件(包括 docker-compose-plugin )。查看适合你操作系统的 Docker 安装说明
克隆项目存储库
Elastic Container 项目存储在 Github 上。只要你安装了 Git,就可以从你选择的 CLI 中收集它。
git clone https://github.com/peasead/elastic-container.git
cd elastic-container
该存储库包含使用单个 shell 脚本启动 Elastic Stack 容器所需的一切.
设置凭据
继续之前,请确保将位于存储库根目录中的 .env 文件中的 Elastic 和 Kibana 帐户的凭据从其默认的 changeme 更新。
.env
# Local Kibana URL
LOCAL_KBN_URL=https://127.0.0.1:5601# Local ES URL
LOCAL_ES_URL=https://127.0.0.1:9200# Username for Kibana
ELASTIC_USERNAME=elastic# Password for the 'elastic' user (at least 6 characters)
ELASTIC_PASSWORD=changeme# Password for the 'kibana_system' user (at least 6 characters)
KIBANA_PASSWORD=changeme# Version of Elastic products
STACK_VERSION=8.15.1
# Testing pre-releases? Use the SNAPSHOT option below:
# STACK_VERSION=8.11.0-SNAPSHOT# Bulk Enable Detection Rules by OS
LinuxDR=0WindowsDR=0MacOSDR=0# Set the cluster name
CLUSTER_NAME=elastic-container-project# Set to "basic" or "trial" to automatically start the 30-day trial
LICENSE=basic
#LICENSE=trial# Port to expose Elasticsearch HTTP API to the host
ES_PORT=9200
#ES_PORT=127.0.0.1:9200# Port to expose Kibana to the host
KIBANA_PORT=5601# Port to expose Fleet to the host
FLEET_PORT=8220# Increase or decrease based on the available host memory (in bytes)
MEM_LIMIT=2147483648
特别值得指出的是,我们需要指定 STACK_VERSION 的值以下载及安装我们需要的 Elastic Stack 版本。
Shell 脚本
如上所述,该项目包含一个 shell 脚本,可以简化容器的管理。
$ pwd
/Users/liuxg/docker/elastic-container
$ ls
LICENSE.md README.md docker-compose.yml elastic-container.sh kibana.yml
$ ./elastic-container.sh help
usage: ./elastic-container.sh [-v] (stage|start|stop|restart|status|help)
actions:stage downloads all necessary images to local storagestart creates a container network and starts containersstop stops running containers without removing themdestroy stops and removes the containers, the network, and volumes createdrestart restarts all the stack containersstatus check the status of the stack containersclear clear all documents in logs and metrics indexeshelp print this message
flags:-v enable verbose output
Stage
此选项从 Elastic Docker 中心下载所有容器。如果你要在不总是有互联网访问的系统上构建项目,这将非常有用。这不是必需的,你可以跳过此选项并直接转到开始选项,这将下载容器。
./elastic-container.sh stage
$ pwd
/Users/liuxg/docker/elastic-container
$ ls
LICENSE.md README.md docker-compose.yml elastic-container.sh kibana.yml
$ ./elastic-container.sh stage
8.15.1: Pulling from elasticsearch/elasticsearch
b14b0d0a7610: Pull complete
3ace270f12dc: Pull complete
70ede6162abf: Pull complete
4ca545ee6d5d: Pull complete
5947045bb3e1: Pull complete
7e2b3251dada: Pull complete
b664fed9a81d: Pull complete
ffc4c36e106f: Pull complete
29a7133f2a27: Pull complete
902484376a72: Pull complete
Digest: sha256:ca844065f663d0a91fe82b4d540ad1e6f4c4ddc58b354cd1724bf19e56f01409
Status: Downloaded newer image for docker.elastic.co/elasticsearch/elasticsearch:8.15.1
docker.elastic.co/elasticsearch/elasticsearch:8.15.1What's Next?1. Sign in to your Docker account → docker login2. View a summary of image vulnerabilities and recommendations → docker scout quickview docker.elastic.co/elasticsearch/elasticsearch:8.15.1
8.15.1: Pulling from kibana/kibana
b14b0d0a7610: Already exists
9c76979389f6: Pull complete
eb575f2d268a: Pull complete
a3ceeb406461: Pull complete
8fbb4917c8b8: Pull complete
59c458610001: Pull complete
4ca545ee6d5d: Pull complete
cc908d51a9a4: Pull complete
84fc098c07c0: Pull complete
0adedd631239: Pull complete
cab52551c4ae: Pull complete
58c3419bb885: Pull complete
40834e327d50: Pull complete
Digest: sha256:cc95727d74ddf69ee9aa278e60b676249350c7ae50b3707b194a6202aac767ad
Status: Downloaded newer image for docker.elastic.co/kibana/kibana:8.15.1
docker.elastic.co/kibana/kibana:8.15.1What's Next?1. Sign in to your Docker account → docker login2. View a summary of image vulnerabilities and recommendations → docker scout quickview docker.elastic.co/kibana/kibana:8.15.1
8.15.1: Pulling from beats/elastic-agent
b14b0d0a7610: Already exists
8cf8bae1370d: Pull complete
d58bef810687: Pull complete
f9f0cd53eee6: Pull complete
c7e10a2549a7: Pull complete
f4597cf68ac0: Pull complete
5e03020a73cc: Pull complete
ad763c8f7f7b: Pull complete
0cb997c657a9: Pull complete
ec1e73c6b8d4: Pull complete
4ca545ee6d5d: Pull complete
Digest: sha256:56a1f21d7b4dd97e3c136efb4bb8b2097602455ea68283e2afc5e699ca5d6c59
Status: Downloaded newer image for docker.elastic.co/beats/elastic-agent:8.15.1
docker.elastic.co/beats/elastic-agent:8.15.1What's Next?1. Sign in to your Docker account → docker login2. View a summary of image vulnerabilities and recommendations → docker scout quickview docker.elastic.co/beats/elastic-agent:8.15.1
我们可以通过如下的命令来进行查看:
docker images
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.elastic.co/beats/elastic-agent 8.15.1 ed404e4e9d06 10 days ago 1.21GB
docker.elastic.co/elasticsearch/elasticsearch 8.15.1 e7a72ffb675e 10 days ago 818MB
docker.elastic.co/kibana/kibana 8.15.1 2bedc69902ec 10 days ago 1.2GB
docker.elastic.co/enterprise-search/data-extraction-service 0.3.3 a81a99409aeb 5 months ago 299MB
alpine latest ace17d5d883e 7 months ago 7.73M
Start
此操作将创建容器网络、下载所有必需的容器、设置 TLS 证书,并启动和连接 Elasticsearch、Kibana 和 Fleet 服务器容器。此选项是启动和运行 Elastic Stack 的 “quick start”。如果你尚未更改 .env 文件中的默认凭据,则脚本将退出。
$ pwd
/Users/liuxg/docker/elastic-container
$ ls
LICENSE.md README.md docker-compose.yml elastic-container.sh kibana.yml
$ ./elastic-container.sh start
Sorry, looks like you haven't updated the passphrase from the default
Please update the changeme passphrases in the .env file.
我们接下来针对 .env 文件来进行修改。把 changeme 修改为 password 并保存。
我们再接着运行上面的命令:
$ ./elastic-container.sh start
Passphrase has been reset. Proceeding.
Starting Elastic Stack network and containers.
[+] Building 0.0s (0/0) docker:desktop-linux
[+] Running 0/0⠋ Network elastic-container_default Creating 0.0s
[+] Running 7/1t of type `volume` should not define `bind` option
[+] Running 9/9tic-container_default Created 0.0s ✔ Network elastic-container_default Created 0.0s ✔ Volume "elastic-container_fleetserverdata" Create... 0.0s ✔ Volume "elastic-container_certs" Created 0.0s ✔ Volume "elastic-container_esdata01" Created 0.0s ✔ Volume "elastic-container_kibanadata" Created 0.0s ✔ Container ecp-elasticsearch-security-setup Health... 0.0s ✔ Container ecp-elasticsearch Healthy 0.0s ✔ Container ecp-kibana Healthy 0.0s ✔ Container ecp-fleet-server Started 1.6s Attempting to enable the Detection Engine and install prebuilt Detection Rules.Kibana is up. Proceeding.Detection engine enabled. Installing prepackaged rules.Prepackaged rules installed!No detection rules enabled in the .env file, skipping detection rules enablement.Waiting 40 seconds for Fleet Server setup.Populating Fleet Settings.READY SET GO!Browse to https://localhost:5601
Username: elastic
Passphrase: password
上面显示我们可以使用 elastic/password 来登录我们的 Kibana:
请记得使用 https://localhost:9200。我们使用 https://localhost:5601 来访问 Kibana:
我们可以通过如下的命令来进行查看:
docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
656c7746db83 docker.elastic.co/beats/elastic-agent:8.15.1 "/usr/bin/tini -- /u…" 4 minutes ago Up 3 minutes 0.0.0.0:8220->8220/tcp ecp-fleet-server
973a25fa0a7b docker.elastic.co/kibana/kibana:8.15.1 "/bin/tini -- /usr/l…" 4 minutes ago Up 3 minutes (healthy) 0.0.0.0:5601->5601/tcp ecp-kibana
edab96b8f751 docker.elastic.co/elasticsearch/elasticsearch:8.15.1 "/bin/tini -- /usr/l…" 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:9200->9200/tcp, 9300/tcp ecp-elasticsearch
我们可以看到 fleet server,Elasticsearch 及 Kibana 都在运行中。我们也可以从 Docker Desktop 中进行查看:
Stop
此选项将停止项目中所有正在运行的容器,但不会删除它们。
./elastic-container.sh stop
$ pwd
/Users/liuxg/docker/elastic-container
$ ./elastic-container.sh stop
Stopping running containers.
[+] Stopping 4/3✔ Container ecp-fleet-server Stopped 1.3s ✔ Container ecp-kibana Stopped 0.2s ✔ Container ecp-elasticsearch Stopped 2.8s ✔ Container ecp-elasticsearch-security-setup Stoppe... 0.0s
Destroy
此选项将停止项目中所有正在运行的容器,删除容器网络,删除所有数据卷,并删除所有容器。
./elastic-container.sh destroy
$ ./elastic-container.sh destroy
#####
Stopping and removing the containers, network, and volumes created.
#####
[+] Running 9/9✔ Container ecp-fleet-server Removed 0.0s ✔ Container ecp-kibana Removed 0.0s ✔ Container ecp-elasticsearch Removed 0.0s ✔ Container ecp-elasticsearch-security-setup Remove... 0.0s ✔ Volume elastic-container_fleetserverdata Removed 0.2s ✔ Volume elastic-container_esdata01 Removed 0.1s ✔ Volume elastic-container_kibanadata Removed 0.1s ✔ Volume elastic-container_certs Removed 0.1s ✔ Network elastic-container_default Removed 0.1s
Restart
此选项重新启动所有项目容器。
./elastic-container.sh restart
先前状态必须是 stop 或者是 start 状态。如果是 destroy 状态不会有任何的作用。
$ ./elastic-container.sh stop
Stopping running containers.
[+] Stopping 4/3✔ Container ecp-fleet-server Stopped 1.4s ✔ Container ecp-kibana Stopped 0.2s ✔ Container ecp-elasticsearch Stopped 2.3s ✔ Container ecp-elasticsearch-security-setup Stoppe... 0.0s
$ ./elastic-container.sh restart
#####
Restarting all Elastic Stack components.
#####
[+] Restarting 3/3✔ Container ecp-kibana Started 0.2s ✔ Container ecp-fleet-server Started 0.3s ✔ Container ecp-elasticsearch Started 0.3s
Status
此选项返回项目容器的状态。
$ ./elastic-container.sh status
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ecp-elasticsearch docker.elastic.co/elasticsearch/elasticsearch:8.15.1 "/bin/tini -- /usr/l…" elasticsearch 14 minutes ago Up 28 seconds (healthy) 0.0.0.0:9200->9200/tcp, 9300/tcp
ecp-fleet-server docker.elastic.co/beats/elastic-agent:8.15.1 "/usr/bin/tini -- /u…" fleet-server 14 minutes ago Up 28 seconds 0.0.0.0:8220->8220/tcp
ecp-kibana docker.elastic.co/kibana/kibana:8.15.1 "/bin/tini -- /usr/l…" kibana 14 minutes ago Up 28 seconds (healthy) 0.0.0.0:5601->5601/tcp
Clear
此选项将清除日志和指标索引中的所有文档。
./elastic-container.sh clear
$ ./elastic-container.sh clear
Successfully cleared logs data stream
Successfully cleared metrics data stream
Help
此选项提供有关使用 shell 脚本的说明。
./elastic-container.sh help
$ ./elastic-container.sh help
usage: ./elastic-container.sh [-v] (stage|start|stop|restart|status|help)
actions:stage downloads all necessary images to local storagestart creates a container network and starts containersstop stops running containers without removing themdestroy stops and removes the containers, the network, and volumes createdrestart restarts all the stack containersstatus check the status of the stack containersclear clear all documents in logs and metrics indexeshelp print this message
flags:-v enable verbose output
入门
现在我们已经了解了项目概述和 shell 脚本,让我们来看看如何建立自己的堆栈。
更新变量
所有变量都在位于存储库根目录的环境文件 ( .env ) 中控制。你必须更改的唯一内容是 elastic 和 kibana 的默认用户名和密码。
使用你最熟悉的任何文本编辑器打开 .env 文件,并将 ELASTIC_PASSWORD 和 KIBANA_PASSWORD 变量从 changeme 更新为安全的内容。如果你没有从 .env 文件中的默认值更新凭据,脚本将退出。
如果你想更改其他变量(例如堆栈版本),你可以在此文件中进行更改。
启动 Elastic Stack
启动项目容器非常简单,只需使用启动选项运行 elastic-container.sh shell 脚本即可。
./elastic-container.sh start
访问 Elastic Stack
容器全部下载并启动后,你将看到一个输出,提示你浏览 https://localhost:5601。
注意:你需要接受自签名 TLS 证书。
启用白金功能
启用白金许可证功能完全是可选的。基本许可证中包含安全功能,如反恶意软件、EDR、EPP 等。内存、行为和勒索软件保护是白金许可证功能。如果你想更改许可证,我们可以使用 .env 文件或在 Kibana 中执行此操作。你可以更新到 Elastic Platinum 30 天。
如果你想使用 .env 文件以便在构建堆栈时启用这些功能,请将 LICENSE=basic 更改为 LICENSE=trial,然后正常启动项目。
如果你更喜欢使用 Kibana,请单击汉堡菜单,然后单击 Stack Management。
单击 “License Management”,然后单击 “Start a 30-day trial”。
创建 Fleet 策略
现在我们已经启动并运行了整个 Elastic Stack,我们可以制定 Fleet 策略了。Fleet 是 Elastic Agent 的子程序(它是在运行 shell 脚本中的 start 选项时构建的),它使你能够管理其他 Elastic Agent、策略和集成。
Fleet 在 Kibana 中进行管理,Kibana 是允许你与存储在 Elasticsearch 中的数据进行交互并管理 Elastic Stack 的 UI。如果你有兴趣了解有关 Kibana 的更多信息,请查看免费培训视频。
登录你的 Kibana 实例并单击左上角的 “汉堡包” 菜单,然后向下导航到 “Management” 部分下的 “Fleet”。
接下来,单击 “Agent policies” 选项卡,然后单击 “Create agent policy” 按钮。
为新 policy 命名并添加描述(可选)。通常,我们会取消选中“收集代理日志”和“收集代理指标”选项,因为这些是进入堆栈的额外数据,而对于我们的特定用例,我们通常不需要这些数据。如果你正在进行故障排除或对幕后发生的事情感兴趣,这些数据可以帮助你理解这一点。
接下来,点击你的新策略和蓝色的 “Add integration” 按钮。
有数百种集成,但在本博客中我们最感兴趣的是 Elastic Security。
要安装 Elastic Security,只需单击主集成页面上的图块或搜索 “security”。
接下来,单击 “Add Endpoint and Cloud Security” 按钮将此集成安装到我们刚刚创建的策略中。
命名集成并单击蓝色的 “Save and continue” 按钮。
虽然 Endpoint 和 Cloud security 及系统集成将收集与安全相关的日志,但如果你在 Windows 主机上使用 Sysmon,则可能需要添加 “Windows” 集成来收集这些日志。
安装集成后,系统会提示你添加更多代理或稍后再添加。选择 “Add Elastic Agent later” 选项,以便我们可以对我们的策略进行一些更改。
现在我们将返回到我们的策略页面。
我们的政策应该有两个集成:security 和 system-1。
在添加任何代理之前,我们需要将 Elastic Agent 设置为 Detect(以便允许恶意软件完全执行),将 Elastic Agent 注册为受信任的 AV 解决方案(仅限 Windows),并指示 Endpoint 和 Cloud Security 集成从安全事件中收集内存样本。这对于直接注入内存的 “fileless” 恶意软件(如 Cobalt Strike)非常有帮助。
如果你想了解有关从 Elastic Agent 生成的事件中提取恶意软件信标的更多信息,请查看我们的其他出版物和存储库。
为了允许恶意软件继续执行,请在 “Windows” 策略页面上,单击集成的名称(在我们的示例中为 “security”),将保护级别设置为 “Detect”。
对勒索软件、内存威胁防护和恶意行为部分重复这些步骤。
我们将 Elastic Agent 设置为 Detect,这样我们引爆的恶意软件将完全运行,以便我们能够分析整个执行链。如果你希望阻止恶意软件,可以将其保留为 Prevent 模式。
接下来,滚动到底部并选择 “Register as antivirus” 切换按钮,然后单击 “Show advanced settings” 超链接。
向下滚动到 windows.advanced.memory_protection.shellcode_collect_sample、windows.advanced.memory_protection.memory_scan_collect_sample 和 windows.advanced.memory_protection.shellcode_enhanced_pe_parsing 选项并将值设置为 true。
如上所述,这些步骤适用于实验室、沙箱、测试等。这些设置可以生成大量数据,因此为生产设置这些设置需要考虑资源和规模。
如果你要为 Linux 或 macOS 制定策略,请针对正确的操作系统重复这些步骤。
完成所有安装后配置后,我们可以单击蓝色的 “Save integration” 按钮。
启用 Elastic 的预建检测规则
现在我们已经创建了 Fleet 代理策略,我们需要启用与我们将要部署的操作系统或平台(例如 Windows)相关的一组预建检测规则。为此,你需要转到安全(security)应用程序中的 “Alerts” 页面。
单击汉堡菜单并选择 “Security solution” 下的 “Alerts”。
接下来,点击蓝色的 “Manage Rules” 按钮。
进入规则页面后,你可以通过点击 “Update Elastic prebuilt rules” 按钮来更新 Elastic 提供的所有预建规则。首次进入 “Manage rules” 部分时,将启用更新框架,如果 “Update Elastic prebuilt rules” 按钮不存在,请刷新屏幕。
一旦规则更新完毕,你就可以浏览可用的检测规则,通过多种不同的模式进行搜索,或者简单地通过标签进行过滤,这就是我们在这里通过搜索 Windows 规则所要做的。
现在我们可以选择所有的 Windows 规则。
一旦选择了所有规则,我们就可以批量启用它们。
由于 Elastic Container Project 完全在单个 Docker 容器内运行,因此如果启用所有可用规则,可能会注意到性能影响。探索不同的规则,并根据你的基础设施和用例启用或禁用它们。
启用这些规则后,它们将生效,并针对你的终端代理发送到堆栈的数据运行。当触发检测引擎规则时,它们将在安全解决方案中的警报页面中显示。
注册 Elastic Agent
仍然在 Fleet 中,我们有几种方法可以添加 Elastic Agent。最直接的方法是在我们想要注册 Elastic Agent 的策略中注册(否则你必须指定要使用的策略)。使用哪种方法并不重要,但单击 “Actions” 按钮,然后单击 “Add agent” 几乎可以在 Fleet 的任何地方使用。
向下滚动并单击要在其上安装 Elastic Agent 的操作系统,然后将说明直接复制/粘贴到要在其上安装代理的主机的终端窗口中。请注意,如果你使用的是 Windows,请使用以具有管理权限的帐户身份(或提升为该帐户)运行的 Powershell CLI。
值得注意的是,由于我们所有的 TLS 证书都是自签名的,因此我们需要附加 –insecure 标志。如果你使用的是受信任的证书,则无需这样做。
.\elastic-agent.exe install --url=https://[stack-ip]:8220 --enrollment-token=[token] --insecure
回到 Kibana,我们可以看到确认 Elastic Agent 已安装在主机上并且数据正在记录到 Elasticsearch 中。
我们可以看到 Elastic Agent 正在向 Fleet 报告并且运行状况良好。
如果我们进入 Discover 选项卡,我们可以看到各种事件类型报告到 Elasticsearch。我们可以通过在主机上打开 notepad.exe 、 calc.exe 和 ping.exe -t www.elastic.co 来生成一些测试数据。从 Discover 中,我们可以进行一个简单的查询来验证我们是否看到了数据:
process.name.caseless : (notepad.exe or ping.exe or calc.exe)
现在我们已经确认我们看到了数据。让我们启动一些恶意软件吧!
测试一些恶意软件
有很多地方可以下载恶意软件,但对于此测试,我们将仅使用行业标准 EICAR 反恶意软件测试文件来检查功能。
EICAR 测试是安全供应商普遍认可的文件,用于测试反恶意软件和平台的运行。它包含单个字符串并且是非恶意的。
在 Windows 主机中,我们将使用 Powershell 下载 EICAR 文件。
Invoke-WebRequest -Uri "https://secure.eicar.org/eicar.com.txt" -OutFile "eicar.txt"
正如预期的那样,该事件立即被 Elastic Agent 的安全集成识别。
几分钟后,事件将记录到 Kibana 中的安全解决方案中。你可以通过单击汉堡菜单然后单击 “Alerts” 部分来访问该部分。
在这里我们可以看到警报已填充。
如果我们点击 Analyzer 按钮,我们可以深入研究该事件以识别生成该事件的过程。
在我们的示例中,我们可以看到 powershell.exe 生成了事件,其中包括相关的网络事件 - secure.eicar.org ,EICAR 测试文件就是从这里下载的。
总结
在本文章中,我们向你介绍了 Elastic Stack 和一个开源项目,可用于快速安全地建立整个堆栈以进行测试、实验室和安全研究。
Kibana 和安全解决方案是功能强大的工具,由事件响应者、威胁猎手和情报分析师为安全从业者打造。要了解有关如何使用这些工具的更多信息,Elastic 有一些很棒的(免费和付费)培训,可以帮助你学习如何使用 Kibana 进行威胁猎手。
原文:The Elastic Container Project for Security Research — Elastic Security Labs