Zeek使用手册翻译——介绍部分

时间:2024-05-19 09:01:24

介绍
0x00总览
Zeek是一个被动的开源网络流量分析器。 它是一种网络监视器,可以深入检查连接中所有流量以查找可疑活动的迹象。 但是,通常,Zeek甚至在安全领域之外也支持各种流量分析任务,包括性能测量和帮助进行故障排除。

一个网站从Zeek部署中获得的最直接的好处是大量日志文件。这些日志文件以高级的方式记录了网络的活动。 这些日志不仅包括网络上看到的每个连接的全面记录,还包括应用层记录,例如所有HTTP会话及其请求的URI,**标头,MIME类型和服务器响应; 带回复的DNS请求; SSL证书; SMTP会话的关键内容, 以及更多内容。 默认情况下,Zeek将所有这些信息写入结构合理的制表符分隔的日志文件中,这些文件适用于使用外部软件进行后续处理。 但是,用户还可以从输出格式和后端中进行选择,以直接与例如外部数据库进行交互。

但是,使用Zeek的关键在于认识到,即使该系统自身就有的强大功能,从根本上来说,它还是一个可完全自定义和扩展的流量分析平台:Zeek为用户提供了特定于域的脚本语言编写脚本用于表达任意分析任务的。 从概念上讲,您可以将Zeek视为“特定于域的Python”(或Perl):就像Python一样,该系统具有大量的预构建功能(“标准库”)。您不仅限于 系统附带的功能,但是可以通过编写自己的代码使Zeek以新颖的方式使用。 实际上,Zeek的所有默认分析(包括所有日志记录)都是此类脚本的结果。 没有指定到系统核心中的特定分析。

Zeek在商品硬件上运行,因此提供了昂贵的专有解决方案的低成本替代方案。 尽管价格昂贵,但是Zeek实际上远远超出了其他网络监视工具的功能,这些工具通常只限于一小组硬编码的分析任务。 我们特别强调,Zeek不是经典的基于签名的入侵检测系统(IDS)。 尽管Zeek的脚本语言也支持这种标准功能,但确实促进了范围更广的各种发现恶意活动的不同方法,包括语义滥用检测,异常检测和行为分析。

各种各样的站点都在运营中部署Zeek来保护其网络基础设施,包括许多大学,研究实验室,超级计算中心,开放科学社区和大型公司。 Zeek专门针对高速,大容量网络监控,现在越来越多的站点正在使用该系统来监控其10GE网络,其中一些站点已经转移到100GE链路。 Zeek通过支持可扩展的负载平衡来适应这样的高性能设置:大型站点通常运行“ Zeek群集”,其中高速前端负载平衡器在适当数量的后端PC上分配流量,所有这些后端PC在其各自上运行专用的Zeek实例。个别流量切片。*管理器系统负责协调流程,同步后端的状态并为操作员提供用于配置和访问汇总日志的*管理界面。 Zeek的集成管理框架ZeekControl开箱即用地支持此类群集设置。

 

0x02特征
Zeek通过其脚本语言支持广泛的分析。即使没有进一步的自定义,它也具有强大的功能集。

部署方式

在标准UNIX风格的系统(包括Linux,FreeBSD和MacOS)上的商用硬件上运行。
通过网络分接头或监视端口进行完全被动的流量分析。
用于捕获数据包的标准libpcap接口。
实时和离线分析。
集群支持大规模部署。
统一管理框架,可用于独立和群集设置。
在BSD许可下开源。
分析

全面记录活动,以进行离线分析和取证。
与端口无关的应用层分析。
支持许多应用程序层协议(包括DNS,FTP,HTTP,IRC,SMTP,SSH,SSL)。
分析通过应用层协议交换的文件内容,包括用于指纹识别的MD5 / SHA1计算。
全面的IPv6支持。
隧道检测和分析(包括Ayiya,Teredo,GTPv1)。 Zeek将隧道解封装,然后继续分析其内容,就好像没有适当的隧道一样。
在协议分析过程中进行全面的完整性检查。
支持IDS样式的模式匹配。
脚本语言

图灵完备的语言,用于表达任意分析任务。
基于事件的编程模型。
特定于域的数据类型,例如IP地址(透明地处理IPv4和IPv6),端口号和计时器。
长期支持跟踪和管理网络状态。
界面

默认输出为结构良好的ASCII日志。
ElasticSearch和DataSeries的备用后端。正在准备其他数据库接口。
外部输入实时集成到分析中。正在准备实时数据库输入。
外部C库,用于与外部程序交换Zeek事件。带有Perl,Python和Ruby绑定。
能够从脚本语言内部触发任意外部进程。

0x03发展历程

Zeek使用手册翻译——介绍部分

Zeek的历史可以追溯到比许多人意识到的要远得多(它以前被称为“ Bro”,而不是“ Zeek”)。范恩·帕克森(Vern Paxson)于二十多年前设计并实施了初始版本。范恩(Vern)于1995年在劳伦斯伯克利国家实验室(LBNL)担任研究人员,着手编写该代码。伯克利实验室于1996年开始进行业务部署,而USENIX安全研讨会于1998年发布了原始的Bro论文(此后在随后的期刊中进行了完善)。 2003年,美国国家科学基金会(NSF)开始在国际计算机科学研究所(ICSI)上支持Bro的研究和高级开发,Vern现在领导该网络和安全小组。多年来,不断增长的ICSI研究人员和学生团队不断增加新功能,而LBNL在能源部(DOE)的资助下继续提供支持。

Zeek的大部分功能都来自学术研究项目,其结果通常在*会议上发布。但是,Zeek成功的关键在于它能够从早期就弥合学术界和运营机构之间的传统鸿沟,这为研究提供了至关重要的基础,以确保发达的方法能够应对现实世界的挑战。但是,随着Zeek的运营用户社区的不断发展,以研究为中心的开发模型最终成为系统发展的瓶颈:研究资助并没有倾向于支持软件开发和维护的较普通部分,即使事实证明这些对软件开发和维护至关重要。最终用户体验。尽管Zeek的功能始终超越传统系统,但成功部署通常需要大量的技术知识,通常需要大量的前期投资来解决Zeek陡峭的学习曲线。 NSF在2010年着手解决这一差距,通过向ICSI授予SDCI计划中专门用于Zeek开发的赠款。有了这种支持,美国国家超级计算应用程序中心(NCSA)成为该团队的核心合作伙伴,并且该项目开始为2.0版本完全检修系统中许多用户可见的部分。自从发布该版本以来,Zeek在各种设置的新部署中都经历了巨大的增长,并且Zeek团队现在正在努力通过进一步提升系统功能来应对未来网络的挑战,以此取得成功。

0x04框架结构

Zeek使用手册翻译——介绍部分

架构上,Zeek分为两个主要部分。它的事件引擎(或核心)将传入的数据包流减少为一系列更高级别的事件。这些事件以政策中立的方式反映了网络活动,即,它们描述了已看到的内容,但没有说明原因,也没有说明是否有意义。例如,网络上的每个HTTP请求都变成一个相应的http_request事件,该事件带有所涉及的IP地址和端口,所请求的URI以及所使用的HTTP版本。然而,该事件不传达任何进一步的解释,例如,该URI是否对应于已知的恶意软件站点。

此类语义是由Zeek的第二个主要组件脚本解释器派生的,该脚本解释器执行一组用Zeek的自定义脚本语言编写的事件处理程序。这些脚本可以表示站点的安全策略,即,当监视器检测到不同类型的活动时应采取的措施。通常,他们可以从输入流量中得出任何所需的属性和统计信息。 Zeek的语言具有广泛的针对特定领域的类型和支持功能;并且至关重要的是,允许脚本随着时间的推移保持状态,从而使它们能够跟踪并关联跨连接和主机边界观察到的内容的演变。 Zeek脚本可以生成实时警报,还可以按需执行任意外部程序,例如,触发对攻击的主动响应。