用于安全研究的 Elastic Container Project

作者:来自 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 容器项目

如上所述,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

从 Kibana 访问堆栈管理

单击 “License Management”,然后单击 “Start a 30-day trial”。

开始 30 天试用

创建 Fleet 策略

现在我们已经启动并运行了整个 Elastic Stack,我们可以制定 Fleet 策略了。Fleet 是 Elastic Agent 的子程序(它是在运行 shell 脚本中的 start 选项时构建的),它使你能够管理其他 Elastic Agent、策略和集成。

Fleet 在 Kibana 中进行管理,Kibana 是允许你与存储在 Elasticsearch 中的数据进行交互并管理 Elastic Stack 的 UI。如果你有兴趣了解有关 Kibana 的更多信息,请查看免费培训视频。

登录你的 Kibana 实例并单击左上角的 “汉堡包” 菜单,然后向下导航到 “Management” 部分下的 “Fleet”。

访问 Fleet

接下来,单击 “Agent policies” 选项卡,然后单击 “Create agent policy” 按钮。

创建 angent policy

为新 policy 命名并添加描述(可选)。通常,我们会取消选中“收集代理日志”和“收集代理指标”选项,因为这些是进入堆栈的额外数据,而对于我们的特定用例,我们通常不需要这些数据。如果你正在进行故障排除或对幕后发生的事情感兴趣,这些数据可以帮助你理解这一点。

定义 agent policy

接下来,点击你的新策略和蓝色的 “Add integration” 按钮。

打开 Fleet policy​
添加 integration

有数百种集成,但在本博客中我们最感兴趣的是 Elastic Security。

要安装 Elastic Security,只需单击主集成页面上的图块或搜索 “security”。

Endpoint 及 Cloud Security integration

接下来,单击 “Add Endpoint and Cloud Security” 按钮将此集成安装到我们刚刚创建的策略中。

添加 Endpoint 及 Cloud Security

命名集成并单击蓝色的 “Save and continue” 按钮。

将 integration 保存到 policy

虽然 Endpoint 和 Cloud security 及系统集成将收集与安全相关的日志,但如果你在 Windows 主机上使用 Sysmon,则可能需要添加 “Windows” 集成来收集这些日志。

安装集成后,系统会提示你添加更多代理或稍后再添加。选择 “Add Elastic Agent later” 选项,以便我们可以对我们的策略进行一些更改。

之后添加 Elastic Agents

现在我们将返回到我们的策略页面。

我们的政策应该有两个集成:security 和  system-1

审查 Windows 策略

在添加任何代理之前,我们需要将 Elastic Agent 设置为 Detect(以便允许恶意软件完全执行),将 Elastic Agent 注册为受信任的 AV 解决方案(仅限 Windows),并指示 Endpoint 和 Cloud Security 集成从安全事件中收集内存样本。这对于直接注入内存的 “fileless” 恶意软件(如 Cobalt Strike)非常有帮助。

如果你想了解有关从 Elastic Agent 生成的事件中提取恶意软件信标的更多信息,请查看我们的其他出版物和存储库。

为了允许恶意软件继续执行,请在 “Windows” 策略页面上,单击集成的名称(在我们的示例中为 “security”),将保护级别设置为 “Detect”。

设置保护级别为 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”。

访问 Alerts 部分

接下来,点击蓝色的 “Manage Rules” 按钮。

进入 Manage rules 则界面

进入规则页面后,你可以通过点击 “Update Elastic prebuilt rules” 按钮来更新 Elastic 提供的所有预建规则。首次进入 “Manage rules” 部分时,将启用更新框架,如果 “Update Elastic prebuilt rules” 按钮不存在,请刷新屏幕。

更新 Elastic 预建规则

一旦规则更新完毕,你就可以浏览可用的检测规则,通过多种不同的模式进行搜索,或者简单地通过标签进行过滤,这就是我们在这里通过搜索 Windows 规则所要做的。

过滤 Windows 规则

现在我们可以选择所有的 Windows 规则。

选择所有 Windows 规则

一旦选择了所有规则,我们就可以批量启用它们。

批量启用 Windows 规则

由于 Elastic Container Project 完全在单个 Docker 容器内运行,因此如果启用所有可用规则,可能会注意到性能影响。探索不同的规则,并根据你的基础设施和用例启用或禁用它们。

启用这些规则后,它们将生效,并针对你的终端代理发送到堆栈的数据运行。当触发检测引擎规则时,它们将在安全解决方案中的警报页面中显示。

注册 Elastic Agent

仍然在 Fleet 中,我们有几种方法可以添加 Elastic Agent。最直接的方法是在我们想要注册 Elastic Agent 的策略中注册(否则你必须指定要使用的策略)。使用哪种方法并不重要,但单击 “Actions” 按钮,然后单击 “Add agent” 几乎可以在 Fleet 的任何地方使用。

添加 Elastic Agent

向下滚动并单击要在其上安装 Elastic Agent 的操作系统,然后将说明直接复制/粘贴到要在其上安装代理的主机的终端窗口中。请注意,如果你使用的是 Windows,请使用以具有管理权限的帐户身份(或提升为该帐户)运行的 Powershell CLI。

Powershell 命令添加 Elastic Agent

值得注意的是,由于我们所有的 TLS 证书都是自签名的,因此我们需要附加 –insecure 标志。如果你使用的是受信任的证书,则无需这样做。

.\elastic-agent.exe install --url=https://[stack-ip]:8220 --enrollment-token=[token] --insecure
将 Elastic Agent 注册到 Fleet

回到 Kibana,我们可以看到确认 Elastic Agent 已安装在主机上并且数据正在记录到 Elasticsearch 中。

验证 Elastic Agent 注册

我们可以看到 Elastic Agent 正在向 Fleet 报告并且运行状况良好。

验证 Elastic Agent 健康状况

如果我们进入 Discover 选项卡,我们可以看到各种事件类型报告到 Elasticsearch。我们可以通过在主机上打开 notepad.exe 、 calc.exe 和 ping.exe -t www.elastic.co 来生成一些测试数据。从 Discover 中,我们可以进行一个简单的查询来验证我们是否看到了数据:

process.name.caseless : (notepad.exe or ping.exe or calc.exe)
验证数据是否正在发送到 Elasticsearch

现在我们已经确认我们看到了数据。让我们启动一些恶意软件吧!

测试一些恶意软件

有很多地方可以下载恶意软件,但对于此测试,我们将仅使用行业标准 EICAR 反恶意软件测试文件来检查功能。

EICAR 测试是安全供应商普遍认可的文件,用于测试反恶意软件和平台的运行。它包含单个字符串并且是非恶意的。

在 Windows 主机中,我们将使用 Powershell 下载 EICAR 文件。

Invoke-WebRequest -Uri "https://secure.eicar.org/eicar.com.txt" -OutFile "eicar.txt"

正如预期的那样,该事件立即被 Elastic Agent 的安全集成识别。

Elastic Security 检测到 EICAR 测试文件

几分钟后,事件将记录到 Kibana 中的安全解决方案中。你可以通过单击汉堡菜单然后单击 “Alerts” 部分来访问该部分。

查看安全警报

在这里我们可以看到警报已填充。

安全解决方案中的警报

如果我们点击 Analyzer 按钮,我们可以深入研究该事件以识别生成该事件的过程。

分析器按钮

在我们的示例中,我们可以看到 powershell.exe 生成了事件,其中包括相关的网络事件 - secure.eicar.org ,EICAR 测试文件就是从这里下载的。

分析器视图

总结

在本文章中,我们向你介绍了 Elastic Stack 和一个开源项目,可用于快速安全地建立整个堆栈以进行测试、实验室和安全研究。

Kibana 和安全解决方案是功能强大的工具,由事件响应者、威胁猎手和情报分析师为安全从业者打造。要了解有关如何使用这些工具的更多信息,Elastic 有一些很棒的(免费和付费)培训,可以帮助你学习如何使用 Kibana 进行威胁猎手。

原文:The Elastic Container Project for Security Research — Elastic Security Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/423367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LLM text2sql】浅看大模型用于text2sql的综述

前言 之前笔者分享了text2sql & LLM & KG的有机结合实现KBQA的问答, 《【LLM & RAG & text2sql】大模型在知识图谱问答上的核心算法详细思路及实践》、 《【开源分享】KBQA核心技术及结合大模型SPARQL查询生成问答实践》。 我们再来看看大模型在te…

Axure RP实战:打造高效图形旋转验证码

Axure RP实战:打造高效图形旋转验证码 在数字产品设计的海洋中,验证码环节往往是用户交互体验的细微之处,却承载着验证用户身份的重要任务。 传统的文本验证码虽然简单直接,但随着用户需求的提高和设计趋势的发展,它…

【人工智能】OpenAI最新发布的GPT-o1模型,和GPT-4o到底哪个更强?最新分析结果就在这里!

在人工智能的快速发展中,OpenAI的每一次新模型发布都引发了广泛的关注与讨论。2023年9月13日,OpenAI正式推出了名为o1的新模型,这一模型不仅是其系列“推理”模型中的首个代表,更是朝着类人人工智能迈进的重要一步。本文将综合分析…

详细分析linux中的MySql跳过密码验证以及Bug(图文)

目录 1.问题所示2. 基本知识3. 解决方法3.1 跳过验证Bug3.2 设定初始密码 1.问题所示 发现密码验证错误,遗失密码 2. 基本知识 停止MySQL服务:sudo systemctl stop mysql 以跳过权限表模式启动MySQL:sudo mysqld_safe --skip-grant-tables …

vulnhub靶机:Holynix: v1

下载 下载地址:https://www.vulnhub.com/entry/holynix-v1,20/ 打开虚拟机 选择下载解压之后的文件打开 新添加一张 NAT 网卡,mac 地址修改如下 00:0c:29:bc:05:de 给原来的桥接网卡,随机生成一个 mac 地址 然后重启虚拟机 信息收集 主…

【C++二分查找 容斥原理】1201. 丑数 III

本文涉及的基础知识点 C二分查找 容斥原理:组合数学汇总 LeetCode1201. 丑数 III 丑数是可以被 a 或 b 或 c 整除的 正整数 。 给你四个整数:n 、a 、b 、c ,请你设计一个算法来找出第 n 个丑数。 示例 1: 输入:n …

单机docker-compose部署minio

单机多副本docker-compose部署minio 简单介绍 如果服务器有限可以单机挂载多硬盘实现多副本容错(生产不推荐) 部署好的文件状态 有两个重要文件 docker-compose.yaml和nginx.conf docker-compose.yaml是docker部署容器的配置信息包括4个minio和1个ng…

HCIA--实验十三:VLAN间通信子接口实验/双单臂路由实验

一、实验内容 1.需求/要求: 将两个单臂路由通过两台交换机连接起来,成为双臂路由,并探讨这么做的原因。实现全网通,让任何一台主机之间都可以通信。 二、实验过程 1.拓扑图: 2.步骤: 1.给PC配置ip地址…

大数据新视界 --大数据大厂之HBase深度探寻:大规模数据存储与查询的卓越方案

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

如何将本地项目上传到GitHub(SSH连接)

在个人GitHub中新建项目(远程仓库),添加一个README文件,方便后面验证 记住这个默认分支,我这里是main,你的可能是master或其他 先复制下SSH地址 在项目文件夹中右键打开Git命令行 初始化本地仓库,同时指定默认分支为ma…

OA项目值用户登入首页展示

1.什么是OA 办公自动化(Office Automation,简称OA)是将现代化办公和计算机技术结合起来的一种新型的办公方式。办公自动化没有统一的定义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。通过实现办公自动化,或者说实现数字化…

Java 每日一刊(第6期):整数运算

文章目录 前言Java 的整数类型基本的整数运算符整数除法与取模自增与自减运算整数的进制表示整数溢出问题位运算整数的优化技巧类型自动提升(Type Promotion)强制类型转换(Type Casting)本期小知识 在有限的符号中,我们…

web基础之信息泄露

1、目录遍历漏洞 (1)原理:本质是没有过滤用户输入的 ../ 相关的目录跳转符,使得攻击者通过目录跳转符来遍历服务器中的任意文件。 (2)题解: eg:根据提示遍历网页目录信息,会在某一个…

文生视频算法

文生视频 Sora解决问题:解决思路: CogVideoX解决问题:解决思路: Stable Video Diffusion(SVD)解决问题:解决思路: 主流AI视频技术框架: Sora Sora: A Review on Backg…

Vue3 响应式工具函数isRef()、unref()、isReactive()、isReadonly()、isProxy()

isRef() isRef():检查某个值是否为 ref。 isRef函数接收一个参数,即要判断的值。如果该参数是由ref创建的响应式对象,则返回true;否则,返回false。 import { ref, isRef } from vue const normalValue 这是一个普通…

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘:异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…

STM32——看门狗通俗解析

笔者在学习看门狗的视频后,对看门狗仍然是一知半解,后面在实际应用中发现它是一个很好用的检测或者调试工具。所以总结一下笔者作为初学小白对看门狗的理解。 主函数初始化阶段、循环阶段和复位 众所周知,程序的运行一般是这样的&#xff1…

【面试八股总结】Redis持久化

Redis 实现了数据持久化的机制,这个机制会把数据存储到磁盘,这样在 Redis 重启就能够从磁盘中恢复原有的数据。 Redis 共有三种数据持久化的⽅式: AOF 日志:每执行一条写操作命令,就把该命令以追加的方式写入到⼀个文…

【计算机网络】HTTP相关问题与解答

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录 目录 一、HTTP请求和响应报文是怎样的? 1、请求报文 2、响应报文 二、HTTP请求方法有哪些? GET HEAD POST PUT DELETE PATCH OPTIONS TRACE CONNECT 三、GET请求与POST请…

菜单、工具栏 的基本使用

效果 代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QToolBar> #include<QDebug> #include<QPushButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupU…