背景
定时任务用于定时或者周期性执行命令或者脚本,极其方便。但是,也方便了黑客,攻击者可以利用定时任务下载恶意文件、执行恶意命令和脚本,是恶意软件惯用的持久化攻击技巧。在MITRE ATT&CK框架中也可以看到不少APT组织在攻击过程中用到定时任务,包括APT-C-36、APT29等。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-15.png)
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-16.png)
在Red Canary的威胁检测报告中,定时任务也连续两年威胁排名高居第二,受影响的组织高达33%。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-17.png)
攻击模拟–利用定时任务提权
在渗透过程中,通过任意文件上传、反序列化和SQL注入等Getshell获取的往往只是普通账户权限,不足以进行网页篡改、插入永久后门或者进行横向移动等操作,攻击者会尝试使用各种手段来获取更高的权限。Windows常见的提权方式有内核漏洞、权限配置、DLL注入、注册表和定时任务等,Linux提权方式有内核漏洞、定时任务、Suid文件和Sudo 配置错误等。提权是后渗透的一个重要环节,攻击者在Windows和Linux平台是如何利用定时任务进行提权的呢?
windows定时任务提权
环境准备:低权限的反弹shell。
如下图,目前已获取到Administrator权限。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-18.png)
可通过“schtasks /query /fo LIST > C:\Users\Administrator\Desktop\test.txt”命令导出当前定时任务内容并进一步筛选正在运行且最近执行的定时任务。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-19.png)
再继续查看定时任务的内容,为C:\rizhiyi\rizhiyi.bat,且为SYSTEM权限。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-20.png)
在原来的批量处理脚本加上运行shell.exe(反弹shell的客户端木马程序)的语句或者直接替换,如下图:
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-21.png)
定时任务运行后,获取到SYSTEM权限。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-22.png)
Linux定时任务提权
在上面的基础上,通过Nmap扫描探测到开启SSH服务的主机,并尝试暴力破解成功登录另外一台linux主机。
1.查看当前系统的定时任务
查看系统当前已有定时任务,发现有root账户执行的定时任务,为定期执行/rizhiyi/cleanup.py脚本。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-23.png)
再继续查看脚本内容,为定时删除/rizhiyi/file目录下文件的脚本
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-24.png)
进一步查看当前账户是否有修改权限,发现cleanup.py为具有root权限的普通文件,可被当前用户修改。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-25.png)
- 更改定时任务脚本
在原有脚本基础上,增加为当前用户配置免密sudo权限的命令echo “test ALL=(ALL:ALL) NOPASSWD:ALL” >> /etc/sudoers
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-26.png)
保存后,在下一次执行定时任务时,提权命令也会被同时执行。
3.提权成功
在定时任务执行前,当前的rizhiyi用户没有相关权限
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-27.png)
在定时任务执行后,rizhiyi用户被授予了sudo权限,执行sudo bash即可不用密码切换到root账户。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-28.png)
如此,通过修改系统已有定时任务执行的脚本成功提权。
威胁检测–日志易威胁检测、分析与响应平台
在日志易威胁检测、分析与响应平台检测到相关端口扫描和提权告警。
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-29.png)
Nmap扫描
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-30.png)
端口扫描
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-31.png)
检测到uid为0的非root账户,账户为rizhiyi
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-32.png)
检测到rizhiyi账户成功执行sudo list和sudo /bin/bash命令
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-33.png)
检测到rizhiyi账户uid发生变化
![](https://www.aqniu.com/wp-content/uploads/2020/11/image-34.png)
防护建议
1.注意权限设置,对高权限账户执行的定时任务的相关文件权限也做限制,不允许其他用户修改,linux下用/etc/cron.allow设置可更改定时任务的账户,不在这里面的用户不能使用 crontab。
2.定期检查windows定时任务、linux下的/etc/crontab、/etc/cron.d/、/var/spool/cron/是否有可疑定时任务,是否有可疑.sh和.py文件从外部服务器下载文件和执行。
3.部署日志易威胁检测、分析与响应平台监控异常日志和流量,及时分析与响应。