常駐(Persistence)手法介紹-排程

排程(scheduled tasks),是駭客在進行惡意程式常駐中常用的一個手法,本文會透過幾種常見建立排程的方法來介紹惡意程式是如何於主機中持續將後門自動帶起。

一、加入排程有哪幾種?

在現今微軟的windows系統中常見的加入排程主要有三種:

  1. 透過使用者介面開啟Windows工作排程器
  2. 透過cmd指令
  3. 透過powershell指令

二、如何透過不同的方式加入排程?

(一)透過使用者介面開啟Windows工作排程器

步驟一

透過win+R並輸入taskschd.msc按下確定執行。

圖一 執行工作排程器
圖二 工作排程器介面

步驟二

選擇建立基本工作,並設定排程的名稱、觸發條件、排程的行為,以下範例我們建立一個在使用者登入時執行cmd的排程。

圖三 基本工作建立引導
圖四 設定觸發條件
圖五 設定排程行為類型
圖六 設定排程實際執行內容
圖七 完成排程設定
圖八 檢查排程

以上就是透過使用者介面建立排程的基本流程。

(二)透過cmd指令加入排程

要想透過cmd加入排程,我們要先了解schtasks指令的用法,此用法在微軟的learn頁面中有詳細的指令用法與參數。在此篇文章中,只談schtasks /create的用法,其參數有以下幾種:

  1. /sc:設定排程的觸發
  2. /tn:排程的名字
  3. /tr:要執行的程式或行為

其他還有一些參數可用於設定執行頻率或是用於橫向等。

接下來,加入一個在使用者登入時執行cmd的排程。

步驟一

輸入”schtasks /create /tn “TEST”/tr C: \windows\system32\cmd.exe /sc onlogon”以新增排程。

圖九 輸入指令新增排程

步驟二

輸入"schtasks /query"來查看排程詳情,以確定排程是否有成功建立。

圖十 檢查排程

在圖十中可以看到排程已確實建立並準備就緒。

補充說明:

  • 在駭客的實際攻擊中有可能發生駭客tn設為正常排程名稱進行偽裝並將tr的路徑指向惡意程式(可能名稱也進行過偽裝),在鑑別該排程是否正常時務必確認tr的目標路徑是否有問題。
  • 若是想透過建立排程來橫向的話需要取得目標主機的管理者帳號且該主機有開啟139與445 port(由於schtasks橫向通常伴隨IPC連線,所以需要這兩個port)。
  • 常見在添加排程時這些指令參數可能會被寫成xml檔,可以在指令中直接載入,所以如果在指令中看到schtasks /create /XML接檔案路徑名稱與/tn,可以透過分析該xml檔來確認排程的實際內容。

(三)透過powershell加入排程

為了方便我們先將相關參數與指令寫成腳本,打開記事本輸入以下內容:

  1. Register-ScheduledTask:排程登錄
  2. New-ScheduledTaskAction :設定排程要實際執行的內容
  3. New-ScheduledTaskTrigger:觸發條件

將檔案存成ps1後執行就可以完成排程的新增了。

圖十二 腳本內容

以上是三種常見的新增排程的方法,駭客經常透過排程手法來達到常駐惡意程式的效果使其後門持續運作,建議使用者需要經常性檢查主機內是否有可疑排程遭建立,避免肇生資安事件。

MITRE ATT&CK對應技術(Technique)與戰術(Tactic):

TA0002: ExecutionTA0003: PersistenceTA0004: Privilege Escalation
T1053.005:Scheduled Task/Job : Scheduled TaskT1053.005:Scheduled Task/Job : Scheduled TaskT1053.005:Scheduled Task/Job : Scheduled Task