此分析器可以解析并检测 Google 实现的 QUIC(此处简称为 GQUIC),其使用的线上格式描述于:
https://www.chromium.org/quic。
在编写此分析器时,Chrome 所使用的 GQUIC 版本为 Q039,部分 Google 服务器(以及可能的 Chrome canary 版本)也能够使用 Q043。 在测试期间,此分析器能够检测到上述两个版本。
当时(2018 年 5 月 4 日至 5 日)GQUIC 文档中描述的线上格式,似乎也与实际环境中的真实实现不同步。
此外,似乎一直有持续的努力将 GQUIC 迁移到 IETF 的 QUIC 草案标准,相关描述见:
https://github.com/quicwg/base-drafts https://datatracker.ietf.org/wg/quic/documents/
该草案与此分析器所测试的 GQUIC 实现之间存在重大差异,并且其线上格式最近也已发生变化。
总而言之,如果这一 GQUIC 分析器将来不进行更新,预计它将无法继续适用于以后演进的 QUIC 协议。
通过 zkg <https://docs.zeek.org/projects/package-manager/en/stable>_::
zkg install corelight/zeek-quic
否则,您需要自行构建并安装(假设 zeek-config 已在您的 PATH 中)::
./configure
make
make install
默认情况下,该分析器仅检测某个 UDP 连接是否看起来像 QUIC 协议,将 “guic” 字符串添加到 conn.log 的 “service” 字段中,然后停止解析。
如果您希望编写自定义脚本,以处理此分析器提供的其他事件,则可能需要让分析器在协议确认后继续解析连接::
redef GQUIC::skip_after_confirm = F;
所提供的事件可以给出关于数据包类型(常规数据包 vs 版本协商 vs 公共重置)的粗略信息,以及公共头部的内容(如数据包编号、QUIC 版本、连接 ID 或多样化随机数)。
工具:https://github.com/quicwg/base-drafts/wiki/Tools
实现:https://github.com/quicwg/base-drafts/wiki/Implementations
Chromium:https://www.chromium.org/quic/playing-with-quic
此前的 QUIC 分析器工作由 Mike Dopheide 完成:https://github.com/dopheide-esnet/bro-quic