Zeek 不存储文件,即使在加载脚本之后也是如此。我错过了什么?

Zeek is not storing files, even after script was loaded. What am I missing?

我正在尝试配置 Zeek 以便将文件(每个文件)存储在光盘上,但没有成功。 OS 我正在使用:Debian 10。

到目前为止我做了什么:

检查 loaded_scripts.log

后,我可以看到脚本已加载

我是 Zeek 的初学者,我想学习如何启用 zeek 来保存文件(即遍历网络)和存储在磁盘上。唯一存储的文件类型:HTTP 和 SSL。

我确定我犯了很多错误,但我找不到正确的方法。


编辑

我使用的 Zeek 版本:zeek 版本 4.1.0-dev.545.

我正在处理流量。我还没有用 pcap 尝试过任何东西,但我会尝试你用“zeek -r the.pcap policy/scripts/frameworks/files/extract-all-files.zeek”的建议。

在 Zeek 服务器上,我安装了(为了测试)一个 FTP 和一个 HTTP 服务器。在 html 文件夹中,我创建了一个 pdf 文件(以便稍后下载)。 我放了两个文件(一个 pdf 和一个纯文本文件),然后我下载了(使用本地网络中另一台计算机上的浏览器)那个 pdf 文件。 结果,我可以看到(查看 ftp.log 和 http.log)我提到的所有文件,但这些文件并未存储在光盘上。我的疑问是:它们应该由 Zeek 存储吗?

运行通过 Zeek 传输流量时的一个常见问题是数据包可能具有无效的校验和。 Zeek 默认情况下会跳过此类数据包,因此最终结果会丢失用户期望的 logs/files/artifacts。通常那些无效的校验和是由校验和卸载引起的,其中数据包捕获过程在 NIC 有机会修复校验和之前抓取传输的数据包。

Zeek 通常会在遇到无效校验和时发出警告——在 stderr 或 reporter.log:

中查找类似于以下内容的内容

Your trace file likely has invalid TCP checksums, most likely from NIC checksum offloading. By default, packets with invalid checksums are discarded by Zeek unless using the -C command-line option or toggling the 'ignore_checksums' variable.

(这来自 find-checksum-offloading.zeek,包含在 Zeek 的默认配置中。)

这里有很多选择。您可以:

  • 运行 Zeek 与 -C,按照上述
  • 在脚本中说 redef ignore_checksums=T;(通常是 local.zeek)
  • 在命令行添加redef:zeek -r the.pcap ... ignore_checksums=T
  • 修复 pcap 中的校验和,例如使用 tcprewrite -C -i input.pcap -o fixed.pcaptcprewrite 附带 tcpreplay)——如果其他人也会使用您的 pcap,这是最好的。