Linux计划任务那点事儿
卖萌控的博客
点击这里进入电脑版页面!体验更好
Linux计划任务那点事儿
2022-5-20 萌小白





Linux 中经常看到利用 crontab 留后门,从接触的样本看多利用方式多是:




不论是样本,还是博客对其它方式讨论较少。



本文主要讨论:




linux 计划任务实现可分为:crontab、at、cron、anacron。



1. crontab



命令格式如下图所示:






1.1 用户级计划任务



数据文件位置



1.1.1 修改已存在计划任务文件


此时直接修改文件内容即可正常运行,如修改/var/spool/cron/crontabs/root 实现 root 用户计划任务后门。



1.1.2 新建计划任务文件



如果用户级计划任务文件不存在,可手动创建。步骤:



①.在其它位置创建计划任务文件,写入内容,设置权限(权限 0600);



如下图所示为正常 crontab 命令创建的文件: 手动构建时 uid 必须与用户名相对应,gid 目前测试不必是 crontab。下图 demo 可正常运行:



1.2 系统级计划任务



数据文件为/etc/crontab,可直接修改该文件。



2. at&batch



batch 本质为 at,故此处只讨论 at。at 用于创建单次计划任务。



2.1 数据文件位置




文件名格式:a[5 位任务序号][8位分钟为单位的时间戳],如 a00009019df4c6(文件名算法可参考at源码)。如下图所示为某次创建的计划任务:



2.2 修改已存在的计划任务文件



可直接修改目录下 14 位文件名中的命令。



2.3 新建计划任务文件



步骤



① 创建文件,文件名满足规范;



② 写入待执行的命令;



③ 修改文件权限;



④ 向 atd 发送 SIGHUP(kill -1 atdpid 即可);



⑤ 文件会在设定的时间执行。



特殊说明:手动构造文件计划运行的时间可早于当前时间,此时发送 SIGHUP
后会立即执行。文件中需含有相关运行环境,建议复制 at
创建的计划任务文件中的相关设置,否则可能无法正常运行。at虽在.SEQ文件中记录了当前已使用的最高序号,但实际构造中可任意使用序号。



at 创建的文件权限如下图所示:



3. anacron



粒度只能到天,未启动的任务会定期检查并执行(crontab 未执行的不会重新执行)。



3.1 数据文件位置



/etc/anacrontab,可直接修改。



4. cron 4.1 数据文件位置



/etc/cron.d/,/etc/cron.daily/,/etc/cron.hourly/,/etc/cron.monthly/,/etc/cron.weekly/。



4.2 新建计划任务文件 4.2.1 修改/etc/cron.d/



该目录下放置单个计划任务文件(注意:文件名不能有扩展名,否则文件会被忽略),时间格式类似 crontab,但需指定执行时的用户身份,demo 如下图所示: 正常创建时权限如下图:



4.2.2 修改其他位置



/etc/cron.daily/,/etc/cron.hourly/,/etc/cron.monthly/,/etc/cron.weekly/,这四个位置可放置真正想要执行的程序。



5. 计划任务日志



默认位置



/var/log/syslog(ubuntu)



/var/log/cron(centos)



ref




-----微信ID:SecWiki-----


SecWiki,9年来一直专注安全技术资讯分析!
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容