Skip to main content

搭建 EDR 测试环境


 

Microsoft Defender for Business

除了 Windows 自带的 Windows Defender,微软还有着 EDR 和 XDR 产品。

image.png

XDR 乃至 EDR 的购买主要面向中大型企业,销售会验证企业资质,以及往往有着最低设备数量的要求。因此,对于我们做安全研究与测试有些不便与奢侈。

image.png

不过,Microsoft Defender for Business(https://www.microsoft.com/en-us/security/business/endpoint-security/microsoft-defender-business#Microsoft-defender-plans-and-pricing) 为我们提供了个门槛很低的选项,每个月 3 美元即可。

image.png

我们点击 Buy now,左边的套餐即可。我们输入一个有效的邮箱地址。

image.png

确认使用该邮箱地址

image.png

填写相关信息,之后需要接收手机验证码。

image.png

设置一个初始账户,记住自己的企业域名,是 *.onmicrosoft.com 的形式。

image.png

之后,我们可以选择需要购买的数量,1 个即可,输入支付方式信息,需要有借记卡或者信用卡。

image.png

核对信息,确认支付。

image.png

然后,我们便可以登录到管理员中心了。

image.png

我们不需要该订阅的时候,可以在 Billing -> Your products 这里选择取消。

image.png

接下来,我们需要注册设备。访问 https://security.microsoft.com/,进入 Settings -> Endpoints

image.png

首次配置,微软会建议我们分配用户权限和通知,但我们可以暂时跳过,因此我们只是用于个人研究,而非真正管理企业。

image.png

这里,我们选择 Local Script,即本地脚本。通过运行脚本,这会与 Entra ID 建立信任。

image.png

在高完整度下运行命令行,执行脚本

image.png

然后,我们可以运行一个检测测试来验证设备已经注册成功。我们在 C 盘下创建名为 test-MDATP-test 的文件夹,然后运行下述 powershell 命令:

powershell.exe -NoExit -ExecutionPolicy Bypass -WindowStyle Hidden $ErrorActionPreference = 'silentlycontinue';(New-Object System.Net.WebClient).DownloadFile('http://127.0.0.1/1.exe', 'C:\\test-MDATP-test\\invoice.exe');Start-Process 'C:\\test-MDATP-test\\invoice.exe'

image.png

如果运行后,命令行自动关闭,那么意味着检测测试通过。这里,在运行后,powershell 程序确实被关闭了。

我们可以在面板中看到注册后的设备,以及查看相应的告警。

image.png

检测日志的出现可能存在延迟,不过几分钟后,我们便能看到对应的告警。

image.png


Elastic EDR

Elastic EDR 是一款易于部署,业内有着良好声誉,免费的 EDR 产品。当然,Elastic 也有面向企业的更加高级的方案,对此我们也有着 30 天的免费试用。

不过,手动配置 Elastic 栈以及 EDR 是个比较繁琐的任务,因此我们将用 Docker 简化这一过程,elastic-container 项目(https://github.com/peasead/elastic-container) 帮了大忙。

我们将在 Ubuntu 服务器上部署,用到 Docker 来安装和运行 Elasticsearch,Kibana,和 Fleet。

首先卸载所有冲突的包:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

image.png

然后,设置 Docker 仓库:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

image.png

添加 Docker 的官方 PGP 密钥。

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

image.png

使用下述命令配置仓库:

echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

image.png

更新 APT 包索引:

image.png

安装 Docker 引擎

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

image.png

接下来,我们就该安装 Elastic 了。首先,安装依赖:

apt-get install jq git curl

image.png

克隆仓库:

image.png

编辑项目中的 .env 文件

image.png

根据自己需要修改账号密码,用户名需要是 elastic,否则会无法启动检测引擎。

image.png

开启 Windows 检测,并且根据需要调节 basic 或者 trial,其中 trial 是30天,提供高级检测特性。

image.png

赋予脚本执行权,并且启动所有组件,脚本将下载和配置容器。

image.png

几分钟后,配置完成。

image.png

于是,我们可以访问 kibana 与 elasticsearch 面板了。

image.png

image.png

我们进入左侧导航栏的 Management -> Fleet

image.png

配置 Settings 里的 Outputs Actions,确保 Advanced YAML configuration 的值如图所示。

image.png

添加一个 Agent

image.png

创建一个新的 policy

image.png

然后,在受控的 Windows 主机上运行下述命令,记得改成自己的 IP。

image.png

$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.12.2-windows-x86_64.zip -OutFile elastic-agent-8.12.2-windows-x86_64.zip
Expand-Archive .\elastic-agent-8.12.2-windows-x86_64.zip -DestinationPath .
cd elastic-agent-8.12.2-windows-x86_64
.\elastic-agent.exe install --url=https://192.168.1.165:8220 --enrollment-token=U1dHZnBvOEJlTFFfLVFjampldW46a3EzU3VqV2NSc2VVTlRxeVBvSkt1QQ== --insecure


image.png

安装完成后,我们便能在列表里看到新注册的设备了。

image.png

选择刚才新建的 Policy,点击 Add Integration,选择 Elastic Defend

image.png

image.png

添加一个名称,选择 Complete EDR,作用于该 Policy,保存。

image.png

左侧导航栏进入 Security -> Alert

image.png

点击 Manage rules,我们可以看到已经安装的规则,确保他们都是启用的状态。

image.png

尝试运行一个恶意软件作为测试,我们发现 Elastic EDR 能立即拦截了。 

image.png

我们也能在面板里看到相应的告警:

image.png

有趣的是,Elastic 公开了其检测规则(https://github.com/elastic/detection-rules),我们可以根据检测规则中的 gap 来实现对 Elastic EDR 的绕过。