服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-25 更新于 2026-08-25 简米科技 3,555 字 8 分钟阅读

被攻击后检查定时任务防被植入恶意脚本

导读被攻击后检查定时任务是第一要务,服务器被植入挖矿脚本、木马后门时,攻击者为了维持权限,九成以上会把恶意脚本写进Crontab等计划任务里,先检查定时任务能最快锁定后门入口,而不是盲目杀进程,为什么攻击者偏爱在定时任务里植入恶意脚本定时任务对攻击者来说就是一台服务器上的“自动打卡机”,他们不需要一直盯着控制端,只……

被攻击后检查定时任务是第一要务,服务器被植入挖矿脚本、木马后门时,攻击者为了维持权限,九成以上会把恶意脚本写进Crontab等计划任务里,先检查定时任务能最快锁定后门入口,而不是盲目杀进程。

为什么攻击者偏爱在定时任务里植入恶意脚本

定时任务对攻击者来说就是一台服务器上的“自动打卡机”,他们不需要一直盯着控制端,只要把恶意脚本挂进Cron规则,系统就会按设定时间自动执行,这种机制天然适合持久化驻留。

从攻击者的视角看,定时任务有三个长期优势:

  • 自动运行不依赖入口权限:Webshell被删、反弹shell断连之后,只要Cron里还有一条恶意记录,系统到点就会重新拉取或执行脚本,相当于攻防拉锯中的“复活甲”。
  • 隐蔽性远高于启动项:大多数运维排查习惯集中在/etc/init.d、开机自启动目录,定时任务分散在多个目录、多个用户下,很容易被忽略。
  • 适合批量控制肉鸡:攻击者通过Cron定时从远端服务器下载最新DDoS攻击命令或挖矿配置,比逐台手动执行高效得多。

据国家互联网应急中心此前的安全通报,近年来国内企业服务器失陷事件中,相当一部分都与计划任务被恶意利用有关,行业共识认为,定时任务目录是应对入侵排查时优先级最高的检查项之一。

被攻击后检查定时任务:三步定位可疑脚本

第一步:全量比对当前定时任务

先别急着删任何记录,第一步是把所有定时任务完整导出来存档,这是后续判断“哪些是攻击者加的,哪些是原本就有的”的唯一依据。

普通用户和Root用户的Cron位置不同,需要分头排查:

  • 查看当前用户任务:crontab -l
  • 查看Root任务:sudo crontab -l
  • 查看系统级任务:cat /etc/crontab
  • 查看Cron目录:ls -la /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.weekly/ /etc/cron.monthly/
  • 查看所有用户的任务文件:ls -la /var/spool/cron/crontabs/

导出后注意检查每条任务的实际执行脚本路径,恶意任务通常具备几个明显特征:指向

被攻击后检查定时任务防被植入恶意脚本

/tmp/var/tmp/dev/shm这类临时目录;执行命令包含wgetcurlbase64eval等下载解码关键字;或者出现随机命名的.sh文件。

第二步:检查隐藏执行痕迹

攻击者为了防被发现,常对任务做时间戳篡改或权限伪装,排查时需要找到“被动过手脚”的文件。

一条命令看文件真实修改时间:

stat /var/spool/cron/crontabs/root
stat /etc/cron.d/nginx

对比stat输出中的Modify时间与当前入侵事件发现时间,就能判断任务是不是在事发节点前后被写入的。

再检查任务日志,大多数Linux发行版的Cron执行记录在/var/log/cron/var/log/syslog中:

grep -i cron /var/log/syslog | tail -n 100

如果日志中频繁出现相同的脚本路径,且执行频率远高于正常业务需求,这条任务基本可以判定为恶意,部分攻击者还会清空日志规避追踪,此时检查/var/log/cron是否存在异常截断,也是有用的判断依据。

第三步:结合进程与网络连接倒查来源

定时任务排查不能只停留在规则层面,找到可疑任务后,先别急着删除,要利用它反过来追踪攻击者的控制服务器和恶意脚本来源,但这个追踪环节通常已经超出普通站长能力范围,涉及网络取证与样本逆向分析,尚未失陷数据的服务器应优先做好隔离,不要随意执行可疑脚本。

在隔离环境下,通过lsof -p 进程ID查看恶意进程打开的连接,再通过netstat -antlp | grep 恶意进程ID找到C2服务器地址,对于无进程、纯定时下载型任务,可先备份脚本内容,再用沙箱或隔离网下载分析,避免直接在业务服务器上运行,攻击者常将恶意地址硬编码在脚本中,这些信息对后续加固和安全通报有重要价值。

服务器定时任务被篡改后,如何恢复与加固

确认定时任务被篡改后,很多人的第一反应是“都删了”,但直接删除会导致正在运行的恶意进程失去上游控制,个别变种会触发自我保护机制,反噬系统文件,按照顺序操作更稳妥:

被攻击后检查定时任务防被植入恶意脚本

恢复正确流程

  1. 全面备份当前所有定时任务到本地文件,
    crontab -l > /backup/恶意任务备份_日期.txt
    cp -r /var/spool/cron /backup/
  2. 停掉与恶意任务相关的进程:先通过ps aux | grep 脚本名找到PID,执行kill -9 PID前确认进程确实由恶意任务拉起,避免误杀业务进程。
  3. 使用crontab -r清除当前用户任务,然后清理/etc/cron.d//var/spool/cron/crontabs/下的可疑条目,保留原有合法任务,不建议整目录清空。
  4. 从之前导出的备份中,还原正常任务。
  5. 清理脚本本身:根据任务路径删除恶意脚本文件,同时对/tmp/var/tmp进行检查。
  6. 修改服务器Root密码、数据库密码、面板管理密码,压缩攻击者后续可利用的凭据。

两三台服务器的排查手工操作即可,但大量服务器场景下,可以用自动化脚本批量检查,对比线上所有服务器Cron文件的哈希值,不同服务器间若出现高度一致的异常任务,基本可确定是同一批次攻击失陷。

防止二次被植入的加固策略

清理任务只是第一步,如果不堵住后门,攻击者随时可以重新写入,修复漏洞后,需要做几件实事:

  • 锁定定时任务文件:为/etc/crontab和Cron目录设置不可变属性,防止被再次修改,执行chattr +i /etc/crontabchattr +i /etc/cron.d/,需要修改任务时先执行chattr -i解除锁。
  • 限制高危命令写入:在/etc/cron.deny中添加非授权用户名单,禁止普通用户创建计划任务,这个文件的优先级高于cron.allow,配置时要注意先后顺序。
  • 对关键目录加审计监控:使用auditd设置对/etc/cron.d//var/spool/cron/crontabs/的写入监控,一旦任务被篡改,日志会记录下完整操作者信息。
  • 定期做基线校验:保存一份正常状态的Cron配置清单,每周自动对比一次,发现差异立即告警,开源工具有Tripwire、AIDE,功能类似的商业产品也很多,选择适合自己业务体量的即可。
  • 被攻击后检查定时任务防被植入恶意脚本

无论使用简米云、酷番云还是自建机房,建议把所有业务服务器的定时任务统一纳入运维管理平台,集中审计比逐台登录检查的覆盖率高得多,云环境中小规模服务器也可以直接用云厂商安全组自带的“基线检查”功能,自动扫描Cron异常项,相比纯手工核查更全面。

Q&A:定时任务被植入恶意脚本的高频问题

服务器没有安装宝塔面板时怎么排查定时任务?

没有面板工具就需要走纯命令行路径,登录服务器后依次执行前文第一到第三步的命令,在/var/spool/cron/目录下按用户逐一查看,若服务器是Windows系统,排查方向不同,需要使用schtasks命令列举计划任务,重点检查指向C:UsersPublicC:ProgramData下不明.bat.vbs文件的计划项,这两类路径是Windows恶意计划任务的高发区域。

定时任务被植入恶意脚本,但找不到攻击来源怎么办?

排查攻击源时,优先看/root/.bash_history/var/log/secure/var/log/auth.log,攻击者通常通过SSH弱口令或Web漏洞进入系统,在登录日志中能查到爆破痕迹,如果日志都被清除,则侧重检查Web目录上传点,重点扫描runtimeuploadsstatic目录下新增的.php.jsp.aspx文件,找到WebShell后,攻击路径就追溯到了,如果自身技术力量不足,可以联系云厂商安全团队或专业应急响应服务商接管溯源,别在未确认攻击路径时直接重装系统,重装后再次被入侵的可能性很高。

清理完定时任务后,需要重装系统吗?

取决于后门是否被彻底清除,如果恶意脚本只存在于Cron和/tmp目录,且系统核心文件哈希校验无异常,清理加固后无需重装系统,如果发现系统内核模块被替换、SSH公钥被篡改或存在未知Rootkit,直接重装更安全,重装前先备份业务数据和配置,注意备份文件本身也要单独扫描确认干净,避免带着后门数据上新的服务器。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱