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提权?
现在功力还不组,先了解些皮毛,一步步来吧