排查systemd隐蔽后门核心是聚焦非系统默认、非业务必需、行为异常的服务:先用systemctl list-unit-files --type=service --state=enabled筛选启用项,对比发行版基线排除合法服务,重点检查名称含update/sync/backup等伪装词或乱码命名的服务;再通过systemctl cat、journalctl、ls -l /proc/[PID]/exe等验证配置、日志、进程路径及执行逻辑一致性,并扫描软链接、脚本调用和双重持久化痕迹。

排查 Linux 系统中隐藏在 systemd 服务项里的隐蔽后门,核心不是“扫全量服务”,而是聚焦三类异常:非系统默认、非业务必需、行为不一致。攻击者常把恶意程序注册为 enabled 服务,名字模仿 system、update、sync、monitor 等常规词,但配置、路径或运行态会露出破绽。
筛出可疑启用的服务
先缩小范围,只看真正开机自启、又大概率不是系统或业务自带的项:
- 运行 systemctl list-unit-files --type=service --state=enabled,导出结果
- 排除发行版基础服务:Ubuntu/Debian 查 apt list --installed | grep systemd;CentOS/RHEL 查 rpm -qa | grep -E "(systemd|coreos)",再比对服务名是否在其中
- 重点关注名称含 update、sync、backup、log、monitor、agent、helper、watch、svc1234、x86_64 等词的服务,或纯数字、乱码命名(如 a7b9c.service)
- 用 systemctl is-enabled servicename 再确认一次——有些后门只放 unit 文件,实际未启用
查服务配置与执行路径是否可信
对筛选出的可疑服务,逐个 inspect 其 unit 文件和实际调用链:
- 执行 systemctl cat servicename.service,重点看:
– ExecStart= 是否指向 /tmp、/dev/shm、/var/tmp、/root/.local/bin 等非常规路径
– 是否含 curl -sL | sh、wget -qO- | bash、bash -c、python3 -c、nohup nc 类远程加载或反弹 shell 指令
– 是否使用 EnvironmentFile= 加载外部变量(可能藏动态路径) - 若 ExecStart 指向脚本,用 ls -l /path/to/script 查权限和修改时间,再 cat /path/to/script 看内容
- 若指向二进制,用 file /path/to/binary 确认类型,再 strings /path/to/binary | grep -E "(http|nc|bash|python|base64)" 提取硬编码线索
验运行态是否“言行一致”
静态配置没问题,不代表服务没被篡改或绕过监管。必须落地到进程和日志:
- 运行 systemctl status servicename,记下 Main PID;再用 ps -fp PID 看真实命令行、工作目录和父进程
- 执行 ls -l /proc/$(systemctl show --value --property=MainPID servicename.service)/exe 2>/dev/null,确认真实可执行文件路径——防软链接跳转或 /dev/null 伪装
- 查日志:journalctl -u servicename.service --since "2 hours ago",关注:
– 是否长期无输出(空日志)
– 是否报错“command not found”“No such file”(说明 ExecStart 路径失效)
– 是否混入 base64 编码段、十六进制字符串或异常 URL - 检查依赖逻辑:After= 和 WantedBy= 是否合理?比如一个“清理日志”的服务却声明 Wants=network.target,就值得怀疑
联动查残留与注入痕迹
高级后门可能不写磁盘,而是运行时注入,或留下双重持久化线索:
- 对可疑服务,运行 systemctl show --property=FragmentPath servicename.service:
若返回 /run/systemd/system/ 或为空,说明是内存注入,非磁盘落地,高危信号 - 检查软链接和关联脚本:ls -l /etc/systemd/system/servicename.service,看是否指向其他位置;再顺藤摸瓜查其调用的脚本是否含 rm -f、chmod 777、echo -n 等自清理或提权操作
- 用 find /tmp /dev/shm -type f -mmin -1440 2>/dev/null 扫描近24小时创建的临时文件,尤其匹配服务名中的关键词
- 若已部署 auditd,可快速查历史操作:ausearch -k systemd_unit_change -ts yesterday | aureport -f -i


















