持久化点排查思路是什么
持久化指重启之后仍然生效的驻留机制:计划任务、系统服务、启动项、驱动、账号、SSH 公钥、系统定时器等。排查的目的有两层:一是清场不遗漏,二是界定事件范围。只清可疑文件不碰持久化项,主机重启后必然复发,这是应急中最常见的翻车方式。
基本信息
| 用途 | 防止清理后复发、界定清场范围 |
|---|---|
| 排查对象 | 计划任务、服务、启动项、账号、公钥、驱动 |
| 对照方式 | 与基线快照或安装时间比对,找新增与时间异常 |
| 执行时机 | 固证之后、清理之前;受影响主机与扩散主机都要查 |
典型使用场景
- 应急处置收尾:核对必清项清单,确认持久化机制全部处置
- 清理后复发:反查上一次遗漏的驻留点
- 事件范围未明时,在扩散主机上批量核查同类项
- 复盘时确认哪些持久化机制在本环境缺少监控与告警
- 加固阶段把高价值持久化位置纳入变更审计范围
Linux 排查清单
Linux 排查清单
crontab -l; ls -l /etc/cron.d /etc/cron.daily; cat /etc/crontab # 用户与系统计划任务
systemctl list-timers --all # 定时器(常被忽略的驻留点)
systemctl list-unit-files --state=enabled # 开机自启服务清单
ls -l /etc/systemd/system/*.service /etc/rc.local # 新增单元与启动脚本
getent passwd | grep -v nologin; ls -l /etc/sudoers.d/ # 非常规账号与提权配置
ls -l ~/.ssh/authorized_keys /root/.ssh/authorized_keys # 公钥追加
# 结果与基线快照对照,重点看新增项与最近修改时间Windows 排查命令
Windows 排查命令
Get-ScheduledTask | Where-Object {$_.TaskPath -notlike '\Microsoft\*'} # 非系统级任务
Get-CimInstance Win32_Service | Where-Object {$_.PathName -notmatch 'Program Files'} # 异常路径服务
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' # 启动项
Get-CimInstance -Namespace root\subscription -ClassName __EventFilter # WMI 事件订阅
# 关注点:路径不在标准目录、命令行带编码或临时目录、创建时间不在运维窗口常见持久化点与对应日志
| 位置 | 痕迹 | 常见日志来源 |
|---|---|---|
| 计划任务 | 新增任务与执行记录 | 4698/4699/4702、Sysmon 1 |
| 系统服务 | 服务安装、二进制路径异常 | 7045、4697 |
| 启动项与注册表 | Run 键新增、值指向临时目录 | Sysmon 13、注册表基线 |
| 账号与公钥 | 新增账号、公钥追加、sudo 变更 | 4624、auditd、文件时间戳 |
| WMI 事件订阅 | 事件过滤器与消费者 | Sysmon 19/20/21、WMI 仓库 |
没有基线时,「新增」靠逻辑矛盾识别:创建时间晚于装机时间太多、路径不在标准目录、命令行含编码或临时目录、创建时间与运维排班不符。
清理持久化项之前先固证:导出任务定义、服务配置、公钥文件并记录哈希。清理掉之后,攻击者的驻留方式与时间点就再也无法证明。