关键是要聚焦可执行、非系统默认、权限异常、路径可疑的开机启动项,需分层排查systemd服务(如systemctl list-unit-files --type=service --state=enabled)、/etc/rc.local、sysvinit脚本(ls -l /etc/init.d/)、运行级别链接(/etc/rc?.d/s*)及进程反推(ps -eo pid,ppid,uid,comm,args),避免遗漏隐藏入口。

检查开机启动项中的未知恶意脚本,关键不是“找所有启动项”,而是聚焦可执行、非系统默认、权限异常、路径可疑的条目。Linux 启动机制多样,需分层排查,避免遗漏隐藏入口。
查 systemd 服务(主流现代系统)
CentOS 7+/RHEL 7+、Ubuntu 16.04+ 等默认使用 systemd,恶意脚本常伪装成服务单元:
- 列出所有已启用(开机自启)的服务:
systemctl list-unit-files --type=service --state=enabled - 重点筛查:
• 名称非常规(如sysupdater、netmgrd、含随机字符串或拼写错误)
• 描述为空或模糊(用systemctl cat 服务名查看 Unit 文件内容)
• ExecStart 指向 /tmp、/dev/shm、/home/*/ 或无扩展名二进制(如/usr/bin/.x) - 检查服务文件实际路径:
ls -l /etc/systemd/system/*.service /usr/lib/systemd/system/*.service 2>/dev/null | grep -E "(->|\.service)"
留意软链接是否指向可疑位置
查 /etc/rc.local 及兼容路径
该文件是攻击者最常用“兜底”入口,无需服务管理知识即可注入:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 确认文件是否存在且有执行权限:
ls -l /etc/rc.local /etc/rc.d/rc.local 2>/dev/null
若存在但权限不是-rwxr-xr-x,需警惕被篡改后禁用执行位来逃避扫描 - 检查内容(忽略注释和空行):
grep -vE "^[[:space:]]*#|^$" /etc/rc.local 2>/dev/null | grep -E "(sh|bash|python|curl|wget|nc|/tmp|/dev/shm|\.elf|\.bin)" - 特别注意:
• 是否在exit 0之前插入了命令
• 是否调用绝对路径不存在的解释器(如/bin/bashs)
• 是否包含 base64 解码执行、管道下载执行等隐蔽加载方式
查 SysVinit 脚本与运行级别链接(旧系统或混用环境)
尤其在 CentOS 6/7 兼容模式、部分嵌入式或容器中仍可见:
- 列出所有 init.d 脚本并检查权限:
ls -l /etc/init.d/ | awk '$1 ~ /^-rwx/ && $3 != "root" {print}'
非 root 所有者 + 可执行 = 高风险 - 检查各运行级别下的 S 开头链接(S=Start):
for i in /etc/rc?.d/S*; do [ -L "$i" ] && echo "$i -> $(readlink -f "$i")"; done 2>/dev/null
查看目标是否指向 /etc/init.d/ 外路径(如 /home、/opt、/var/tmp) - 对 Red Hat 系列,用 chkconfig 检查启用状态:
chkconfig --list | awk '$3 == "on" || $4 == "on" || $5 == "on" {print $1}'
再逐个核对chkconfig --list 服务名输出是否匹配预期运行级别
交叉验证:进程反推启动源
有些恶意脚本不走标准机制,而是由其他进程拉起。可通过正在运行的异常进程倒查:
- 找出 UID=0 且非系统核心进程(排除 systemd、sshd、crond 等):
ps -eo pid,ppid,uid,comm,args --sort=pid | awk '$3==0 && $4 !~ /^(systemd|sshd|crond|rsyslogd|dbus|polkit|login)$/ {print}' - 对可疑 PID,检查其启动命令和父进程:
cat /proc/PID/cmdline 2>/dev/null | tr '\0' ' '
cat /proc/PID/status 2>/dev/null | grep -E "PPid|Name" - 检查该进程打开的文件和网络连接:
lsof -p PID 2>/dev/null | grep -E "(txt|cwd|mem|IPv4|IPv6)"
若看到 /tmp/.X11-unix/ 或 /dev/shm/ 下的可执行文件,基本可判定为恶意持久化










