开源EDR调研及选型建议


终端安全一直是兵家必争之地,从十年前的传统PC端安全到如今的EDR、CWPP等概念,安全行业关于终端安全的研究从没停下过脚步。对于甲方安全工作者而言,从0开始研发一款终端安全软件现在几无可能。于是,笔者便把眼光投向了开源的主机安全解决方案。

本文针对Wazuh AgentElastic Agentelkeid(字节跳动)以及腾讯云主机安全免费版进行了一些探索。

先上结论

学习了一些开源EDR的皮毛内容。

如果需求偏审计:Elastic Agent可能是一个好选择。

如果需求偏安全攻防:字节跳动的火山引擎或许可以作为选择。

如果在使用腾讯云的服务:腾讯云原生的主机安全可以被推荐。

如果人力充足且愿意折腾:我会推荐基于OSSSEC的Wazuh Agent。

产品介绍

Wazuh Agent

Wazuh本身也是基于开源技术缝合起来的。

WAZUH的主机端由OSSEC二开得来(OSSEC是一个老牌开源的主机入侵检测系统,这里先不展开)。WAZUH的服务器端由Elastic和Kibana二开得来。

一些安全能力借助WAZUH运营的规则,可与VT继承补充其终端文件的能力。

Elastic Agent

ES Agent也是大名鼎鼎,由ElasticSearch公司开发,目前属于半免费的状态。笔者粗看了一下,感觉是从他的Beat系列-即数据采集器演变而来。

ELKEID

ELKEID是字节跳动开源的一个主机安全产品,说是开源,其实也不完全,比如前端源代码是不开放的,部分模块比如Hub也是闭源状态。

腾讯云主机安全

因为腾讯云的CVM便宜好用,本次测试在腾讯云上进行,于是顺便横向对比一下。

安装、配置对比

乙方安全产品经理常常有个被调侃的点:“你们做的产品,只有你们自己家的工程师会用”。产品的易用性一定是一个重点考虑对象。如果一个安全产品需要一个安全运营工程师脱岗半年才能耍起来,那一定不是一个合格的安全产品。(试想,如果这个安全运营工程师离职了,在市场上再找到一个能够理解这套架构的新人,那成本可太高了。)。

产品上手难度(星越少越好)备注
Elastic Agent🌟🌟🌟🌟🌟1)安装费劲 2)版本多,理解成本高 3)公开资料少
Wazuh🌟🌟🌟1)安装简单 2)上线简单 3)部分功能如漏洞检测非标配
Elkeid🌟🌟1)安装简单 2)上线简单 3)功能完备
腾讯主机安全🌟SaaS版本,上手成本低

下面逐一解释:
1) Elastic Agent

安装费劲:需要理解ElasticSearch架构。除了需要配置ES集群之外,在添加 Elastic Defender集成时还需要学习Fleet相关知识。(建议通过Fleet安装,Fleet非ES标配,需手动安装)。

如上图,什么是Integration,什么是policy?都需要学习和理解。

在添加Elastic defender作为集成时,有两类环境可供选择。

根据归类,一类是传统Endpoint如桌面环境,笔记本,传统虚拟机。另外一类是Linux 服务器或K8s环境。

对Linux服务器环境似乎无EDR相关字样。页面指引可去https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html 学习。

部分高级功能需要白金授权。

2) Wazuh Agent

Wazuh Agent安装起来则较为方便,根据官方文档指引,测试学习用途时,一条docker-compose指令即可实现开箱即用。

curl -sO https://packages.wazuh.com/4.3/wazuh-install.sh && sudo bash ./wazuh-install.sh -a

安装完成之后,会在屏幕上出现密码。

Once the assistant finishes the installation, the output shows the access credentials and a message that confirms that the installation was successful.

INFO: --- Summary ---
INFO: You can access the web interface https://<wazuh-dashboard-ip>
    User: admin
    Password: <ADMIN_PASSWORD>
INFO: Installation finished.

一切运转得很好, 但是漏洞数据为空,查看官方文档可知,需要手动开启。

https://pic.imfht.com/image/4a83336e37d06cfa99839f7e897b62b897e25bf3ae9d38b1f692ca8daae5c699.png

ELKEID安装起来比较简单,暂无槽点,腾讯云Agent开机自带,暂不多说。

开箱能力测试 – 密码破解

本次在腾讯云上使用4台面向公网暴露的CVM,均设置为弱口令(root / root),查看各产品在被爆破成功之后的表现。

ElasticAgent –无反应

https://pic.imfht.com/image/2cb9092f3f83d4ff3009807c58ea75a7f3de5ffd26861bd02ca992e1b7fdaabf.png

应该是命中了ElasticAgent一个Bug,在Fleet窗口显示已经配置成功了。但是在Security模块仍然要求Enroll Agent。

https://pic.imfht.com/image/d17b661fc85c1b6da54f723d2da2a46d3ef323998b72820cffa2d3e78dac0f78.png
https://pic.imfht.com/image/a8186cb504de0f4f9ce171b821531e20a5dd70511befa2b9a68e6fba5c7991c5.png
https://pic.imfht.com/image/d7d7c6d45da0ff4b25176e9482e338dad6dcebf391540292cc51f51f71f9d674.png

更新,在ElasticCloud上试用了一下SaaS版本,依然无密码破解相关的告警。

可能的原因是:ElasticSearch将暴力破解等功能整合到了ML-JOBS中(收费功能),在机器学习模块可以看到可以根据日常的登陆行为绘制基线然后再告警。

Wazuh Agent – 产生高风险告警

WebUI可以看到有13个高危告警(6个爆破成功记录,其他为memory告警)。显示4台机器均被攻破

https://pic.imfht.com/image/2138781e391d537e31c168c2b96f1fc73d2523836210f10a2b2fc2f6b43e409d.png

ELKEID – 产生高风险告警

ELKEID产生3条高风险告警。显示有一机器连接异常,原因未知。猜测是挖矿木马上线,CPU利用率100%,触发Agent保护机制不上传数据。

https://pic.imfht.com/image/638fdaa4653d7e0141c/704557f98ebd3f042c480e88a40c54b4545cb78bf8b3b.png

如下图,掉线机器CPU显示为100%

https://pic.imfht.com/image/b0ea3424c7c35ecb0d0b00dfd0bf5d3a5afd8c0d7829d0dab1acf228c57989d0.png

腾讯云Agent-产生高风险告警

腾讯云Agent显示,产生5条告警,所有4台靶机均被攻破。

https://pic.imfht.com/image/1019b3e9e0ab0f08b6ee92db45ad2288d65817b8c755b65bcda9b7b595262a81.png

审计能力

当我们得知,4台靶机均被爆破成功,我们想得知以下信息:
1)攻击者是谁

2)攻击者攻击成功之后都做了什么

3)作为EDR里的R,能否有一些Response(例如自动隔离机器)

Elastic Agent – 满足50%需求

Elastic Agent虽然未检出爆破成功,但是得益于Elastic出色的beat功能,对于审计功能非常出色。

https://pic.imfht.com/image/55ff68a5ea4e83043220e24bf439f38fd7c35041951345bc2e54f4021cf31353.png

可以看到,Endpoint Security部分,收集了大量的信息,如DNS、文件、Image、网络、进程、注册表、安全事件等。

如下图,Event事件捕获了 cat /proc/meminfo指令,在事件溯源中,完备的日志记录是非常重要的。

https://pic.imfht.com/image/2584bc96658ac8fa6c2d97726c53d3c00f48935a05ec240f241aeec949e31eaa.png

Wazuh Agent -满足50%需求

  1. 攻击者是谁,符合要求

日志提供src-ip:

{
  "agent": {
    "ip": "172.22.16.9",
    "name": "VM-16-9-centos",
    "id": "002"
  },
  "data": {
    "srcip": "139.99.221.204",
    "dstuser": "root",
    "srcport": "43646"
  }
}
  1. 攻击者攻击成功之后都做了什么?

通过WebUI溯源成本高,无相关记录。进程日志也没有找到。

备注:通过查阅Wazuh的官方文档,命令记录主要通过配置ossec.conf实现。

<localfile>
    <log_format>full_command</log_format>
    <command>tasklist</command>
    <frequency>120</frequency>
</localfile>

官方提供的数据如上图,通过每120s执行1次tasklist指令来收集正在运行的指令。这个会漏掉相当的多的数据。

ELKEID -满足50%需求

攻击者是谁,符合要求。WebUI提供源IP数据如下图

https://pic.imfht.com/image/9f64c0adbafb45e40382b73bc4618de17f713de8302bbf3250f709d8db2a646e.png

攻击者攻击成功之后都做了什么:无相关数据,至少WebUI,Elkeid HUB中也未见相关数据。

腾讯云主机安全

攻击者是谁,WebUI数据满足需求

https://pic.imfht.com/image/bbce0c357d923d30cc7ff5ad32cedcb514f5f938bf59e7f1754caafc59ca3dd0.png

攻击成功之后干了什么,免费版本不支持,收费版本有ES日志,不确定是否有相关数据。

小结

学习了一些开源EDR的皮毛内容。

如果需求偏审计:Elastic Agent可能是一个好选择。

如果需求偏安全攻防:字节跳动的火山引擎或许可以作为选择。

如果在使用腾讯云的服务:腾讯云原生的主机安全可以被推荐。

如果人力充足且愿意折腾:我会推荐基于OSSSEC的Wazuh Agent。

append

  1. 字节Agent有一个弱口令基线检查,可以在事件发生前产生告警
  2. elasticsearch会绑定本地端口进行rpc通信,这样就会出现问题:和本地应用绑定的端口冲突时可能会有一个机器起不来. eg:https://github.com/elastic/beats/issues/28118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注