测试环境
- 操作系统: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由此还原出的攻击时间线如下:
- 数据连接准备(时间:1240198114.246531):客户端发送
PORT命令,指定数据连接端口(192.150.11.111:1080),服务器响应200 PORT command successful。 - 恶意文件下载(时间:1240198114.384010):客户端发送
RETR命令,请求下载文件ssms.exe。服务器响应150 Opening BINARY mode data connection。 - 文件传输完成(时间范围:1240198114.516921 至 1240198114.648099):下载成功,传输了约 158720 字节。
至此,完整还原了攻击者通过 FTP 下载伪装为ssms.exe的恶意后门程序的整个网络取证过程。
五、 总结与反思
回顾这次对 Zeek 的实操演练,有以下几点心得:
- 工具选型:源码编译适合定制化需求,但日常分析强烈建议使用 Docker 部署 Zeek,效率极高。
- 日志关联分析:网络取证的核心在于“关联”。通过
files.log的文件ID,结合conn.log和ftp.log,可以精准还原文件的来龙去脉。 - 安全意识:FTP 协议采用明文传输,攻击者不仅可以通过其传输恶意文件,若抓取到包含密码的流量,还会导致凭据泄露。在生产环境中,应尽量使用 SFTP 或 FTPS 替代。
- 威胁情报联动:提取出的样本借助 VirusTotal 等威胁情报平台,可以快速定性,为应急响应争取时间。