Linux 中经常看到利用 crontab 留后门,从接触的样本看多利用方式多是:
-
① 是直接利用 crontab 命令;
-
② 直接修改/etc/crontab。
不论是样本,还是博客对其它方式讨论较少。
本文主要讨论:
-
① 计划任务有哪些类别;
-
② 直接修改数据文件方式创建计划任务及其中的关键点;
linux 计划任务实现可分为:crontab、at、cron、anacron。
1. crontab
命令格式如下图所示:
1.1 用户级计划任务
数据文件位置:
-
ubuntu:/var/spool/cron/crontabs/{username}
-
centos:/var/spool/cron/{username}
此时直接修改文件内容即可正常运行,如修改/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 数据文件位置
-
ubuntu:/var/spool/cron/atjobs/{filename}
-
centos:/var/spool/at/{filename}
文件名格式: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
-
https://github.com/V3ded/osx-linux-backdoor/blob/master/backdoor.sh
-
https://stackoverflow.com/questions/53151124/jobs-in-etc-cron-d-are-not-working-on-ubuntu
-
https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log
-
https://kb.iu.edu/d/afiz
-
https://blog.csdn.net/sinat_30071459/article/details/51191693
-
https://docs.oracle.com/cd/E19253-01/817-0403/sysrescron-18108/index.html
-
https://stackoverflow.com/questions/21615673/difference-between-cron-crontab-and-cronjob
-
https://blog.csdn.net/sinat_30071459/article/details/51191693
-
https://docs.oracle.com/cd/E19253-01/817-0403/sysrescron-18108/index.html
-
https://blog.csdn.net/zzb5233/article/details/78239318
-
https://stackoverflow.com/questions/45817456/unix-editing-system-crontab-etc-crontab-and-restarting-cron-services-after
-
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-Automating_System_Tasks#s1-Scheduling_a_Recurring_Asynchronous_Job_Using_Anacron
-
http://blog.lujun9972.win/blog/2018/04/19/%E4%BD%BF%E7%94%A8anacron%E5%AE%9A%E6%9C%9F%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1/index.html
-----微信ID:SecWiki-----
SecWiki,9年来一直专注安全技术资讯分析!- 本文固定链接: https://maimengkong.com/morejc/929.html
- 转载请注明: : 萌小白 2022年5月20日 于 卖萌控的博客 发表
- 百度已收录