Zeek Agent:为网络安全监控注入终端语义上下文

Zeek Agent是一款开源终端数据采集工具,通过连接Zeek网络安全监控平台与终端设备,提供进程、用户账户等主机级语义信息,增强加密流量分析与安全决策能力,支持Linux和macOS系统。

宣布 Zeek Agent - Trail of Bits 博客

Mike Myers
2020年3月23日
engineering-practice, osquery

(本文同步发布在 Zeek 博客和 Trail of Bits 博客)

Zeek 网络安全监控器提供了一个强大的开源网络流量分析平台。然而,从其网络视角来看,Zeek 缺乏对主机级语义的访问能力,例如负责观察到的连接对应的进程和用户账户。全新的 Zeek Agent 通过将 Zeek 直接与您的终端接口,填补了这一空白,提供了对安全决策极具价值的语义上下文。该代理通过自定义探针收集终端数据,并可选择性地与 osquery 接口,将其大部分表提供给 Zeek 使用。

我们在宽松的 BSD 许可证下将 Zeek Agent 作为开源代码发布。请前往发布页面,立即在您的 macOS 和 Linux 终端上试用;Windows 支持即将推出!请通过在 GitHub 上提交问题或加入新 Zeek Slack 的 #zeek-agent 频道,与我们分享您的想法、请求和其他反馈。

新特性及其价值

传统上,网络安全监控器仅被动截获主机(终端)之间的网络流量。虽然这种视角非常强大——网络不会说谎!——但它无法提供完整的画面,并且理解终端上谁在做什么的更广泛上下文可能具有挑战性。这种方法使得分析加密流量尤其困难:由于被动监控无法评估通信的实际内容,防御者往往对其合法性一无所知。

Zeek Agent 通过添加终端级视角来监控主机活动,填补了这一空白。就像 Zeek 本身一样,这个策略中立的代理不执行任何检测。相反,它收集主机端事件流(“新进程”、“套接字打开”、“用户登录”),并将这些事件输入到 Zeek 的标准处理管道中,在那里它们就像传统的网络衍生事件一样,可供 Zeek 脚本使用。通过在同一事件抽象中表示网络和主机活动,这种设置使用户能够部署 Zeek 的所有强大机制来交叉关联这两个视角。例如,Zeek 现在可以用发起网络连接的终端端服务(例如 sshd)来标记网络连接。代理还可以让 Zeek 创建记录终端信息的新日志,如以下示例所示:

Zeek 的网络连接和监听端口日志,丰富了来自终端(由 Zeek Agent 提供)的相关进程上下文

项目简史与背景

2018 年,Steffen Haas 在汉堡大学开发了该代理的初始原型。这个原型最初称为 zeek-osquery,是代理方法的一个强大演示,但它存在某些技术限制,阻碍了其生产使用。

2019 年,Corelight 聘请 Trail of Bits 更新和改进 Haas 的 zeek-osquery 软件原型。虽然该原型是作为一组直接在 osquery 核心内实现功能的补丁开发的,但 Trail of Bits 提出了一种更适用于长期开发且更符合现有部署的不同方法。新版本首先将现有代码移植到可以独立打包和分发的 osquery 扩展中。最终,这个过程演变为一次彻底的重写,产生了一个全新的代理,既可以独立运行,也可以与 osquery 配合使用。代理的内置数据源利用了与 osquery 相同的基础进程监控能力,但更兼容 Linux 系统在现实世界中的配置方式。Trail of Bits 还设计了代理,以便未来轻松支持更多自定义数据源。

Zeek Agent 的工作原理

与 osquery 类似,该代理使用 SQLite 库以数据库的形式提供系统信息。表插件发布实际数据,并在启动期间分配和注册。一旦它们导出必要的方法来报告模式并生成数据,内部框架将创建所需的 SQLite 表抽象并将其附加到数据库。

大多数数据源会在查询时检查系统,并在该特定时间点报告其发现。然而,有些表可能希望即使在未执行查询时也持续监听系统活动。这通常称为事件表,通常使用线程/回调在后台持续记录系统事件。process_events 表正是这样工作的,并允许 Zeek 脚本查看过去的进程执行情况。

如果 osquery 碰巧安装并在同一系统上运行,则可以通过扩展套接字从 osquery 导入其他数据源。通过这种设计,一切似乎都来自一个统一的数据库,允许用户无缝地将内置表和 osquery 表连接在一起。

一旦代理连接到 Zeek 服务器实例,就可以通过脚本访问这些表。可以通过运行单次 SQL 语句或作为按指定间隔自动运行并报告数据的计划查询来请求数据。

在 Zeek 端,脚本通过定义相应的 SQL 查询来完全控制从代理请求的数据。结果持续流入 Zeek,并透明地转换为标准的 Zeek 事件,处理程序可以挂钩这些事件,就像事件是从网络流量衍生而来一样。

如何开始使用

Zeek Agent 文档总结了如何构建和安装代理。在 Zeek 端,有一个新的 Zeek Agent 框架,您可以通过 Zeek 的包管理器安装。有关安装和使用的更多信息,请参阅其文档。有关从代理请求信息的 Zeek 脚本示例,请参见此脚本,该脚本将进程活动转换为 Linux 上的 Zeek 日志。

Zeek Agent 的未来计划

目前,我们欢迎就 Zeek Agent 的可用性、功能和部署模型提供反馈。我们好奇地想知道 Zeek 社区会提出哪些用例,并鼓励用户发布利用代理功能的 Zeek 包。留下反馈的最佳地点是代理的 GitHub 问题、新 Zeek Slack 上的 #zeek-agent 频道以及 Zeek 邮件列表。

该代理是一个开源项目,因此我们也感谢代码贡献;只需提交 GitHub 拉取请求。如果您有兴趣赞助 Zeek Agent 的特定工作,请联系 Corelight。

我们继续扩展代理:我们刚刚完成了对 macOS 的初始移植,并且我们也在努力支持 Windows。我们将扩展 Zeek 端的代理脚本框架,并且我们还在 Zeek 的基础通信系统 Broker 中添加多跳路由层,以促进 Zeek Agent 在众多终端上的部署。

关于 Trail of Bits 安全工程服务

作为您的安全开发合作伙伴,Trail of Bits 帮助一些世界领先的安全软件公司将可靠的产品推向市场。我们工程团队的目标是编写安全代码并构建用户可信赖的工具来保护其组织和数据。凭借我们团队在软件开发方面的综合经验和对系统级安全的研究,我们经常发现基础性差距:缺失的能力、改进的机会,甚至潜在的漏洞。我们将审查现有软件架构并提供建议或修复,增强功能集或编写新功能,并使用最佳可用工具改进您的安全测试。

如果您的组织有安全软件计划,但缺乏时间或专门的工程资源来确保最终产品遵循安全编码的最佳实践,请联系我们。我们很乐意听取您的意见。

关于 Corelight

Corelight 提供强大的网络流量分析(NTA)解决方案,通过将网络流量转换为丰富的日志、提取的文件和安全洞察,帮助组织更有效地进行防御。Corelight 传感器基于 Zeek(以前称为“Bro”)构建,这是一个开源网络安全监控框架,为全球数千个安全团队生成可操作的实时数据。Zeek 已成为全球大型企业和政府机构中事件响应、威胁狩猎和取证的“黄金标准”。Corelight 由 Zeek 背后的团队创立,生产一系列虚拟和物理网络传感器,消除了部署开源 Zeek 的痛苦,并扩展了其性能和能力。Corelight 总部位于加利福尼亚州旧金山,其全球客户包括财富 500 强公司、大型政府机构和主要研究型大学。有关更多信息,请访问 https://www.corelight.com

如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计