news 2026/10/27 1:51:55

网络取证实战:基于 Zeek 与 Docker 追踪 FTP 恶意流量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络取证实战:基于 Zeek 与 Docker 追踪 FTP 恶意流量

测试环境

  • 操作系统:Kali Linux 2025.2
  • 工具版本:Zeek 8.0.4
  • 测试文件:attack-trace.pcap
  • 运行环境:本地 Docker 容器

一、 安装与部署:从源码编译到 Docker 的救赎

安装 Zeek 通常有两种选择:源码编译或 Docker 部署。起初,我尝试了最原始的方法——源码编译:

sudoaptupdate&&sudoapt-getinstallcmakemakegcc g++ flex bison libpcap-dev libssl-dev python3-dev swig zlib1g-devwgethttps://download.zeek.org/zeek-8.0.4.tar.gztarzxf zeek-8.0.4.tar.gzcdzeek-8.0.4 ./configuremake&&makeinstall

虽然通过./configure和make成功生成了构建文件,但源码编译的速度极其缓慢。对于追求效率的安全分析场景,等待漫长的编译显然不划算。

踩坑与解决:
为了快速投入实战分析,我果断放弃了本地源码编译,改用 Docker 拉取官方镜像:

dockerpull zeek/zeek:latest

这一招立竿见影,极大缩短了环境部署的时间。


二、 自动化分析 PCAP 文件

环境就绪后,使用 Docker 挂载本地目录并自动化分析流量包:

sudodockerrun-it--rm\-v$(pwd):/data\-w/data\zeek/zeek\zeek-rattack-trace.pcap

运行结束后,当前目录下会生成一系列结构化的日志文件。

Zeek 生成的日志概览:

  • conn.log:所有网络连接记录
  • dns.log:DNS 查询记录
  • ftp.log:FTP 会话记录
  • http.log:HTTP 请求记录
  • files.log:文件传输记录
  • packet_filter.log:包过滤日志
  • extract_files/:提取出的文件目录

三、 恶意文件提取与识别

在生成的目录中,需要重点关注extract_files文件夹。

ls-laextract_files/# 输出:extract-1240198114.648099-FTP_DATA-FWJKP01BEDXIkaz831

提取出来的文件名称很长,这是 Zeek 按照内部规则命名的。先通过file命令识别它的真实类型:

fileextract-1240198114.648099-FTP_DATA-FWJKP01BEDXIkaz831

结果显示:这是一个32位的 Windows PE 可执行文件。在流量中隐藏 PE 文件,通常是恶意软件传播的常见特征。

文件验证:
为了确认其恶意性质,我将该文件上传至 VirusTotal 进行扫描。

  • 检测结果:67/73 引擎报毒。
  • 文件类型:Win32 EXE。
  • 威胁判定:后门程序 / 远程访问工具(RAT),高风险等级。

四、 流量溯源与取证分析

确认了恶意文件后,接下来的重点便是溯源:它从哪里来?是怎么传过来的?

1. 解析文件命名规则

通过阅读 Zeek 源码/usr/local/zeek/share/zeek/base/files/extract/main.zeek,可以了解到提取文件的命名规则:

function on_add(f: fa_file, args: Files::AnalyzerArgs) { if ( ! args?extract_filename ) args&extract_filename = cat("extract-", f&last_active, "-", f&source, "-", f&id); ... }

即格式为:extract-<时间戳>-<源类型>-<文件ID>。其中最后的FWJKP01BEDXIkaz831是files.log中的文件唯一标识。

2. 关联 files.log

利用文件ID在files.log中进行检索:

grep"FWJKP01BEDXIkaz831"files.log

可以获得该文件的传输信息:

  • 时间戳:1240198114.516921
  • 协议源:FTP_DATA
  • 传输状态:SF(Successfully Completed,成功传输)
  • 发送/接收字节数:165088 / 4488
  • 传输时长:9.95秒
3. 追踪 FTP 会话(ftp.log)

进一步,通过files.log中记录的IP(98.114.205.102)在ftp.log中挖掘完整的FTP交互过程:

grep"98.114.205.102"ftp.log

由此还原出的攻击时间线如下:

  1. 数据连接准备(时间:1240198114.246531):客户端发送PORT命令,指定数据连接端口(192.150.11.111:1080),服务器响应200 PORT command successful。
  2. 恶意文件下载(时间:1240198114.384010):客户端发送RETR命令,请求下载文件ssms.exe。服务器响应150 Opening BINARY mode data connection。
  3. 文件传输完成(时间范围:1240198114.516921 至 1240198114.648099):下载成功,传输了约 158720 字节。

至此,完整还原了攻击者通过 FTP 下载伪装为ssms.exe的恶意后门程序的整个网络取证过程。


五、 总结与反思

回顾这次对 Zeek 的实操演练,有以下几点心得:

  1. 工具选型:源码编译适合定制化需求,但日常分析强烈建议使用 Docker 部署 Zeek,效率极高。
  2. 日志关联分析:网络取证的核心在于“关联”。通过files.log的文件ID,结合conn.log和ftp.log,可以精准还原文件的来龙去脉。
  3. 安全意识:FTP 协议采用明文传输,攻击者不仅可以通过其传输恶意文件,若抓取到包含密码的流量,还会导致凭据泄露。在生产环境中,应尽量使用 SFTP 或 FTPS 替代。
  4. 威胁情报联动:提取出的样本借助 VirusTotal 等威胁情报平台,可以快速定性,为应急响应争取时间。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 1:50:03

如何用tts API打造AI配音应用:JavaScript与cURL调用实战

【免费下载链接】tts 一个基于 Microsoft Edge TTS 的免费在线语音合成服务&#xff0c;支持 20 种中文声音&#xff0c;一键将文字转换为自然流畅的语音。 项目地址&#xff1a; https://gitcode.com/gh_mirrors/tts25/tts 点击查看 免费下载 tts 是一个基于 Microsoft Edge …

作者头像 李华
网站建设 2026/10/27 1:49:50

UE5魂系游戏开发教程02

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华