日志被删除如何排查
1. 内存取证 (Memory Forensics)
这是最重要的一个步骤,也是最可能找到线索的地方
措施:
- 日志进程的内存: 即使日志文件被删除,日志服务(如
rsyslogd
、journald
等)在运行时,其内存中可能仍然保留着最近的日志记录 - 文件系统缓存: 操作系统内核在删除文件后,可能不会立即清除其在内存中的缓存
- 进程活动: 攻击者执行删除命令(例如
rm -rf /var/log/*
)的进程信息,以及该进程的父进程、子进程,都可能存在于内存中
操作方法:
- 紧急制作内存镜像: 在不重启系统的情况下,使用工具(如
LiME
、FTK Imager
、Magnet RAM Capture
)立即抓取系统内存镜像 - 分析内存镜像: 将抓取的内存镜像导入专业的取证工具(如
Volatility
、Rekall
) - 查找关键信息:
pstree
或pslist
: 查看当前和已终止的进程列表,寻找可疑的进程cmdline
: 查看进程的命令行参数,看看是否有rm
或其他可疑的删除命令filescan
或sockets
: 检查打开的文件句柄和网络连接,寻找与攻击者相关的线索dumpfiles
: 尝试从内存中恢复已删除的文件数据
2. 磁盘取证 (Disk Forensics)
即使文件被删除,数据通常不会立即被擦除,只是其在文件系统中的索引(inode)被标记为可用
措施:
- 数据残留: 只要数据块没有被新数据覆盖,就有恢复的可能性
- 文件系统元数据: 文件系统的元数据(如日志删除的时间戳、执行删除的用户等)可能仍然存在
操作方法:
- 创建磁盘镜像: 使用
dd
或其他取证工具(如EnCase
、FTK
)对受影响的磁盘进行物理或逻辑镜像,确保不对原始数据进行任何修改 - 使用文件恢复工具:
foremost
或scalpel
: 这类工具基于文件头和文件尾的特征来搜索和恢复数据,可以尝试恢复.log
、.gz
或其他可能被删除的文件extundelete
或testdisk
: 这类工具专门针对文件系统的特性,可以恢复被删除的文件
- 分析文件系统日志(如果可用):
- 某些文件系统(如 ext4)有自己的日志,可能会记录文件的创建、删除等操作。
3. 统和服务日志检查
虽然主日志被删了,但还有一些其他地方可以寻找线索
措施:
- 独立日志: 某些应用程序或服务有独立的日志目录,可能不在
/var/log
下 - 审计日志: 如果系统开启了审计功能(如
auditd
),它会独立记录系统调用,包括文件的删除操作。这通常是排查此类问题的“黄金”线索
操作方法:
- 检查独立应用日志: 查看 web 服务(如 Nginx 或 Apache 的
access.log
)、数据库、容器服务(如 Docker)的日志目录。这些日志可能记录了攻击者入侵的原始入口 - 检查
auditd
日志: 检查/var/log/audit/audit.log
或其指定位置。搜索关键词如delete
、unlink
、rm
,或者可疑的用户 ID bash
历史记录: 检查/root/.bash_history
或其他用户的~/.bash_history
。攻击者如果未清除此文件,可能会留下痕迹。不过,有经验的攻击者通常会清除或禁用此功能
4. 网络流量分析
攻击者在入侵和删除日志后,可能还会进行数据回传或保持远程连接
措施:
- 攻击者通信: 可能会有与外部 C&C(命令与控制)服务器的通信
- 数据外泄: 攻击者可能在删除日志前已经窃取了数据
操作方法:
- 分析网络设备日志: 检查防火墙、路由器或入侵检测系统(IDS/IPS)的日志
- 分析网络流量捕获文件: 如果在事发时有网络流量捕获(如
pcap
文件),可以使用Wireshark
或Zeek
等工具进行深度分析