window下的计划任务

0x00前言:

这几天看了看信息安全就业的面试题,其中有一条是计划任务如何设置,好几个月前稍微接触了,但是很久没用差不多都忘了>_<,这里就稍微学习下windows的计划任务

写着写着就偏离了正题,稍微有点像自己的练习记录了,其中除了计划任务也穿插了一些msf的知识

0x01场景设置:

因为直接在windows是敲几个命令太无聊了,于是这里我用msf模块的永恒之蓝漏洞进行远程操作

kali攻击机ip:10.10.10.128

win7目标机ip:10.10.10.129

首先加载模块

然后选下payload,设置下,双方的ip,让它跑起来,就拿到shell了,永恒之蓝还是system权限

然后呢,戏要演得像真的一样

#查进程号
getpid               
#转移session到正常的pid中,这里到lsass.exe migrate 532             
#查看下当前账号明文密码 load mimikatz
wdigest

0x02定时任务at命令

at命令是比较简单的一个命令,但是后面不常用了

使用必须是administrator权限,并且win8之后没有这个命令了

at time cmd
at 18:14 calc.exe

在msf中先连接shell

shell

#定时任务在18:23启动 at
18:23 calc.exe

18:22的时候进程内容如上图

18:23的时候进程如下,成功的启动了

但是回到win7的虚拟机,并没有弹出来,用tasklist查看下进程,发现有启动的clac.exe,但是任务管理器里面没有显示

0x03计划任务schtasks命令:

schtasks功能丰富,应该算是windows下计划任务最主要的工具之一了

 适用环境是win7~win10都可以

但是在win7中文版的时候会出现以下情况

schtasks
错误: 无法加载列资源。

问题原因是cmd编码有问题,因为是gbk编码936,所以必须要把cmd编码改成美国的437,就能正常使用,并且不需要管理员权限就能修改

或者改成65001,还能让中文正常显示

但是我在我本机的win10上面就能正常执行,真奇怪233333

OK接下来是schtasks的语法,有点复杂,

/Create         创建新计划任务。
/Delete         删除计划任务。
/Query          显示所有计划任务。
/Change         更改计划任务属性。
/Run            按需运行计划任务。
/End            中止当前正在运行的计划任务。
/ShowSid        显示与计划的任务名称相应的安全标识符。

创建新计划任务 SCHTASKS /Create
[/S system [/U username [/P [password]]]]
[/RU username [/RP password]]
/SC schedule
[/MO modifier] [/D day][/M months][/I idletime]
/TN taskname /TR taskrun
[/ST starttime][/RIinterval]
[{/ET endtime | /DU duration} [/K] [/XML xmlfile][/V1]]
[/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F]

看着创建计划任务这么复杂

于是我拿出几个简单易理解的常用的介绍下,其他的读者可以自行查阅

那么先说下必须的结构

SCHTASKS /Create /SC schedule /TN taskname /TR taskrun /ST startime
/Create     创建任务
/SC xxx     指定计划频率 xxx可以为MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT(ONCE指执行一次)
/TN xxx     任务叫啥名字,随意
/TR xxx 是要启动什么任务
/ST xxx     启动的时间(上面表说是可选项但是要/SC ONCE前提下,但是我在win7和win10都报错提示要加/ST)

 在win7本地调试可以弹出记事本

schtasks /CREATE /SC ONCE /ST 19:28 /TN sijidou /TR notepad.exe

但是远程shell报错,它报是映射的问题

因为是自己的虚拟机随便怎么搞,那这里打开3389远程桌面,看看能不能在远程桌面写

创建个sijidou账号打开3389,虽然之前mimikatz抓到了我的管理员账号,但是这里先用低权限的试试

 然后失败了....自己的虚拟机这么不给面子

没事,端口转发,把目标3389转到我们本地12345来,用rdesktop来连

run getgui -e -f 12345

rdesktop 127.0.0.1:1234

之前的sijidou账号是创立成功的,只是没打开远程连接,这里用sijidou账号登录,然后不是远程用户组登不上去....

最后用system登录上去的,system的用户我之前用mimkatz抓的,但是前提是用永恒之蓝打的时候,目标电脑是以system身份运行的

远程桌面是可以写的,只是远程桌面比较坑的是,目标机器会突然登出,这里是我自己的虚拟机就这么瞎搞了

20:18的时候,时间到了,记事本弹了出来

虽然过程稍微有点曲折,这里是能够利用了,msf其实写后面有专门的模块工具,比schtasks要简单一丢丢,这里也不介绍了,大家感兴趣可以去看看这篇文章,记录了很多msf后渗透的命令使用,非常棒的感觉:https://www.cnblogs.com/backlion/p/9484949.html

 继续介绍几个参数

/RU  username   #这个程序运行的权限的账号      对于系统帐户,有效值是 ""、"NT AUTHORITYSYSTEM" 或"SYSTEM"。
对于 v2 任务,"NT AUTHORITYLOCALSERVICE"和"NT AUTHORITYNETWORKSERVICE"以及常见的 SID。对这三个也都可用
/RP password   #这个程序运行的权限的账号密码

也就是说着2个参数表示这个程序用什么账号运行,administrator那么就是管理员权限,sijidou那么就是sijidou的权限

但是我这个sijidou账号好像很low,连个程序都没法运行?

但是用win7,也就是我的管理员账号能够运行,但是后面在win7上用sijidou账号登录该账号是可以使用任务计划的,但是加上/RU和/RP就不行了

再看下/RU的参数解释,没懂,以后有机会再探讨吧

接下来是这3个参数

/S   system        指定要连接到的远程系统。如果省略这个系统参数,默认是本地系统。
/U   username      连接这个远程系统的可登陆账号
/P   password      登录的账号密码

这3个参数的用法一般是域环境下的,因为我笔记本内存不行,就没搭域环境(都是借口)

这里/S是在同一个域中的目标机器名字,如果有/S那么/U和/P必不可少

/U和/P意味着能够登录目标机器账号,比如域控啥都能登,如果拿本地独有账号是不能登上去的

 还有些参数大多部分都是设置程序的启动的规则,终止时间,持续时间,频率,还有结束后删除记录等,有兴趣的可以看看这里

https://www.cnblogs.com/yumianhu/p/3710743.html

0x04结语:

本文的参考链接除了文中的2个链接

关于解决中文编码问题:https://www.cnblogs.com/chenglee/p/9110963.html

关于编码问题无法使用schtasks解决办法:https://blog.csdn.net/xiaolongtuan/article/details/8832231

关于windows计划任务的命令介绍:https://www.secpulse.com/archives/73454.html

这篇文章比我的有深度多了,但是还涉及操作系统,也验证了没法靠schtasks提权?

现在功力还不组,先了解些皮毛,一步步来吧

  

 

原文地址:https://www.cnblogs.com/sijidou/p/10470989.html