持久化点集中清理清单
持久化机制是木马「活下来」的原因,也是清理最容易漏的部分:清掉一个入口而留下另一个,主机就会在一段时间后回到被控状态。正确做法是准备一份覆盖 Linux 与 Windows 的完整清单,逐项核对与处理,处理前先把清单本身导出留档——它既是清理的作业单,也是处置证据。清理顺序建议统一为:先禁用后删除,先改配置后删文件。
基本信息
| Linux 常见 | 用户与系统级 cron、systemd 单元与定时器、rc.local、登录脚本、SSH 授权公钥 |
|---|---|
| Linux 深层 | ld.so.preload、PAM 模块配置、udev 规则、包管理器钩子、用户级 systemd 单元 |
| Windows 常见 | Run 与 RunOnce 键、计划任务、服务、启动文件夹、Winlogon 相关键值 |
| Windows 深层 | WMI 事件订阅、IFEO 调试器、BITS 任务、登录脚本策略 |
| 处理方法 | 先导出全量清单与内容,再逐项禁用,确认无业务影响后删除 |
| 验证方法 | 重启或重新登录后复扫一轮,确认没有任何入口重新出现 |
典型使用场景
- 清理木马时按清单逐项核对,避免边清边漏
- 处置结束后做复扫,向业务方交付清理范围与结果
- 为多台主机批量清理定义统一动作清单
- 复盘时分析攻击者使用了哪几类持久化机制
- 加固阶段把这些位置纳入日常巡检与基线比对
导出待清理清单
导出待清理清单
crontab -l 2>/dev/null; sudo ls -la /etc/cron.d /etc/crontab
sudo systemctl list-unit-files --state=enabled | head -n 30
sudo ls -lt /etc/systemd/system/*.service /etc/systemd/system/*.timer 2>/dev/null | head
sudo cat /etc/ld.so.preload 2>/dev/null
sudo ls -l /etc/rc.local /etc/rc.d/rc.local 2>/dev/null
for h in /root /home/*; do [ -f "$h/.ssh/authorized_keys" ] && { echo "== $h"; sudo ls -l "$h/.ssh/authorized_keys"; }; done
sudo grep -rEn 'curl|wget|/dev/tcp' /etc/profile /etc/profile.d/ 2>/dev/null | headWindows 侧导出
Windows 侧导出
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' | Format-List
Get-ScheduledTask | Select-Object TaskPath,TaskName,State | Sort-Object TaskPath | Format-Table -AutoSize
Get-CimInstance Win32_Service | Where-Object StartMode -eq 'Auto' | Select-Object Name,PathName | Format-Table -AutoSize
Get-ChildItem 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp' -Force
reg query 'HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' /v Userinit清单对照
| 平台 | 位置 | 检查命令 |
|---|---|---|
| Linux | 用户与系统级计划任务 | crontab -l、/etc/cron.d、/var/spool/cron |
| Linux | systemd 单元与定时器 | systemctl list-unit-files、list-timers |
| Linux | 登录脚本与登录钩子 | /etc/profile、profile.d、各账号 rc 文件、sshrc |
| Linux | 预加载与模块 | /etc/ld.so.preload、PAM 配置、udev 规则 |
| Windows | 注册表启动项与服务 | Run 键、Win32_Service、Winlogon 键值 |
| Windows | 计划任务与启动文件夹 | Get-ScheduledTask、启动文件夹路径 |
清理前先导出完整清单,包含准备删除的每一项及其内容与时间戳:既用于逐项对账,也作为处置证据。凭记忆清理必然漏项,而漏掉的那一项就是复发的原因。
删除不是终点:清理后要重启或重新登录一次再复扫,确认所有入口都没有重新出现。没有这一轮验证,清理结果无法向业务方证明,也无法排除还有未被发现的机制。