Linux服务器被植入后门后,攻击者常通过用户级(crontab -l)、系统级(/etc/crontab、/etc/cron.d/、/etc/cron.*目录)、启动脚本(/etc/rc.local)、systemd定时器及硬编码调用等方式实现持久化;需逐层排查可疑任务、异常文件、非标准命名、非常规属主权限及隐藏控制符。

Linux服务器被植入后门后,攻击者常利用计划任务实现持久化控制,这些任务可能藏在用户级、系统级、甚至被伪装成正常脚本的定时执行项中,肉眼难以识别。
检查当前用户的定时任务
运行 crontab -l 查看当前登录用户配置的所有定时任务。如果输出为空,不代表安全——攻击者可能已清空该入口,转而使用其他方式。
若看到类似 * * * * * /tmp/.a.sh 或包含 wget、curl、nc、bash -c 的行,【立即暂停执行并人工确认脚本内容】,这类命令极大概率是远程下载并执行恶意载荷。
特别注意注释行末尾是否混有不可见字符(如零宽空格),有些后门会把真实命令藏在注释里,用 crontab -l | cat -A 可显式查看控制符。
扫描系统级定时任务目录
依次执行以下命令,逐层排查:
ls -la /etc/cron.d/ → 查看是否有非系统发行版自带的文件,例如 apache_update、syslogd.conf 等命名可疑项;
ls -la /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/ → 重点检查文件权限是否为 0755 且属主不是 root,或文件名含随机字符串(如 qX9z2);
cat /etc/crontab → 检查最后一行是否追加了异常指令,比如以 root 身份每5分钟执行一次 /dev/shm/.b。
排查隐藏在启动脚本中的计划任务
方法一:检查 /etc/rc.local
运行 cat /etc/rc.local 2>/dev/null | grep -E "(cron|crontab|at|sleep.*&&|&&.*sh)",若返回结果,说明可能在开机时动态写入或启用定时任务。
方法二:检查 systemd 定时器
执行 systemctl list-timers --all,观察 UNIT 列中是否存在名称非常规(如 logclean.timer 但无对应 logclean.service)、或 LOAD 状态为 loaded 但 ACTIVE 显示异常时间的条目。
方法三:搜索硬编码的 cron 启动逻辑
运行 grep -r "crontab.*-e\|*/bin/sh.*-c.*crontab" /etc/init.d/ /etc/profile.d/ 2>/dev/null,某些后门会在服务脚本或环境初始化脚本中直接调用 crontab 命令注入规则,绕过常规检查路径。
定位被隐藏的用户级任务文件
第一步:列出所有用户及其 crontab 存储位置
cut -d: -f1 /etc/passwd | xargs -I{} sh -c 'echo "=== {} ==="; crontab -u {} -l 2>/dev/null | head -5'
第二步:检查是否存在未登录用户却拥有定时任务
运行 find /var/spool/cron/ -type f ! -name "root" -exec ls -l {} \;,若发现 /var/spool/cron/apache 或 /var/spool/cron/nobody 等非交互账户的任务文件,【需立刻检查其内容,此类账户通常不应配置定时任务】。
第三步:确认 crontab 文件是否被硬链接到其他位置
执行 ls -i /var/spool/cron/* 2>/dev/null | awk '{print $1}' | sort | uniq -d,若输出非空,说明存在多个硬链接指向同一任务文件,可能用于规避基于路径的扫描。











