Zeek日志分析入门
概述
Zeek(原Bro)是一款被广泛使用的网络安全监控工具,诞生于1995年,最初由Vern Paxson开发。它通过被动嗅探网络流量,生成丰富的日志数据,用于入侵检测、取证分析和安全审计。Zeek不仅记录连接事件,还能解析多种应用层协议(如DNS、HTTP、TLS),并提取文件传输元数据。
关键日志类型与格式
日志格式
Zeek支持两种日志格式:
- Tab-Separated Values (TSV):默认格式,便于命令行解析和存储效率。
- JSON:适合集成到SIEM系统,但占用更多磁盘空间。
核心日志文件
- conn.log:记录所有连接尝试和已建立连接,包含时间戳、唯一连接ID(UID)、源/目的IP和端口等。
- DNS/HTTP/SSL日志:分别记录DNS查询、HTTP请求和TLS/SSL握手细节。
- files.log:记录文件传输事件,包含文件唯一标识符(FUID)和MIME类型识别。
唯一标识符解析
Zeek使用多种唯一ID关联事件:
- 连接ID (UID):跟踪同一连接的不同应用层事件(如HTTP请求)。
- 文件ID (FUID):标识传输的文件,可关联到具体连接和协议日志。
- 主机与端口ID:区分源(originator)和响应(responder)主机,替代传统的源/目的模型。
网络监控部署策略
监控位置影响数据可见性:
- 外部部署:捕获入站攻击(如漏洞利用),但受NAT影响难以追踪内部主机。
- 内部部署:检测出站信标和数据泄露,直接识别内部IP。
实战技巧与工具
日志分析工具
- zeek-cut:按字段名提取TSV日志数据(如
zeek-cut uid orig_host
)。 - Linux cut:按列号处理TSV日志(如
cut -f10,11,18
)。 - jq:解析JSON日志(如
jq '.orig_host, .resp_host'
)。
高级应用
- 协议审计:检测弱加密协议(如TLS 1.0、FTP明文传输)。
- 威胁狩猎:通过MIME类型识别可疑文件(如可执行文件)。
- 自定义脚本:使用Zeek脚本语言扩展日志字段或触发告警(如JA3 TLS指纹)。
总结
Zeek通过深度解析网络流量提供关键取证数据,其日志系统是安全运营的核心。合理部署传感器、掌握日志分析工具,并能关联多协议事件,可显著提升网络威胁检测能力。
示例命令:
cat conn.log | zeek-cut uid orig_host resp_host
提取连接日志中的UID、源IP和目的IP。
延伸阅读:
- Corelight Zeek备忘单
- Zeek包管理器:packages.zeek.org