宣布Zeek Agent - Trail of Bits博客
Mike Myers | 2020年3月23日
engineering-practice, osquery
(本文同时发布在Zeek博客和Trail of Bits博客)
Zeek网络安全监控器提供了一个强大的开源网络流量分析平台。然而,从其网络视角来看,Zeek缺乏对主机级语义的访问能力,例如无法获取负责观察到的连接对应的进程和用户账户信息。全新的Zeek Agent通过将Zeek直接与终端端点对接,填补了这一空白,提供了对安全决策极具价值的语义上下文。该代理通过自定义探针收集终端数据,并可选择性地与osquery对接,将其大多数表数据提供给Zeek使用。
我们将Zeek Agent以宽松的BSD许可证发布为开源代码。立即前往发布页面,在您的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
页面内容
创新之处及其价值
项目简史与背景
Zeek Agent的工作原理
如何开始使用
Zeek Agent的未来计划
关于Trail of Bits安全工程服务
关于Corelight
近期文章
我们构建了MCP一直需要的安全层
利用废弃硬件中的零日漏洞
Inside EthCC[8]:成为智能合约审计员
使用Vendetect大规模检测代码复制
构建安全消息传递很难:对Bitchat安全辩论的 nuanced 看法
© 2025 Trail of Bits.
使用Hugo和Mainroad主题生成。