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

Zeek Agent作为开源终端监控代理,通过收集进程、用户等主机级数据并与Zeek网络监控平台集成,解决了加密流量分析和安全上下文缺失的难题,支持Linux/macOS并即将推出Windows版本。

宣布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 设计