Cipher.exe 是 Windows 內建的加密工具,
他的**/w參數**可徹底覆寫已刪除檔案的磁碟空間,
讓鑑識人員難以還原任何痕跡。
Cipher.exe 介紹
cipher.exe 是 Windows 內建的工具,
主要是用來管理 NTFS 上用 EFS 加密的檔案跟資料夾。
功能有這些:
- 加密/解密檔案、資料夾
- 顯示檔案的加密狀態
- 備份與還原 EFS 加密憑證
- 徹底覆寫並清除磁碟區上已刪除檔案所占用的未使用空間
上面提到覆寫的功能,其實就是我們這篇的主要重點,
一般來說刪檔案的時候,
Windows 其實只是在檔案系統上的索引把它標記成「已刪除」,
然後釋放他佔用的空間,
但原始的 binary file 還是會保留在磁碟上,
直到新的資料來覆寫他,
所以我們就可以透過覆寫全部未佔用空間來完成反鑑識的清理。
工具特性
- 路徑:
C:\Windows\System32\cipher.exe - 濫用點: /w參數三階段覆寫(0x00→0xFF→隨機)
- 優勢: 覆寫模式與 DoD 5220.22-M 的三趟覆寫概念相似,傳統硬碟上極難還原
核心攻擊Demo
攻擊的核心在於 cipher.exe 的 /w 參數。
cipher.exe /w:<directory_path>
- /w (Wipe):這個參數會執行一個三階段的覆寫流程,來清除指定路徑所在磁碟區的所有未使用的空間:
- 第一階段:寫入 0x00 (零)。
- 第二階段:寫入 0xFF (一)。
- 第三階段:寫入隨機數字。
這個流程的覆寫模式與美國國防部 DoD 5220.22-M 資料銷毀標準的三趟覆寫(0、1、隨機)概念相似,經過這三輪覆寫後,在傳統硬碟上原始資料基本上不可能再透過軟體或硬體方式還原。
不過要注意,Microsoft 官方文件並未聲稱 cipher.exe 通過 DoD 5220.22-M 認證(該標準還要求驗證程序,且現已多被 NIST SP 800-88 取代);而且在 SSD 上,因為 wear-leveling 與 over-provisioning 的關係,作業系統層級的覆寫並不保證資料真的被抹除。
Demo: 抹除已刪除的惡意工具
Step 1: 模擬一個殘留的惡意檔案
# 建立一個模擬的日誌檔
echo "Target system compromised" > C:\LOLBAS\cipher\log.txt
# 刪除這個檔案
del C:\LOLBAS\cipher\log.txt
Step 2: 開始反鑑識清理
# /w: 指定執行清理功能
# C:\LOLBAS\cipher\ : 指定一個目標路徑。cipher 會清理這個路徑所在的整個磁碟區未使用空間
cipher.exe /w:C:\LOLBAS\cipher\
過程裡面打開 task manager 應該就會看到 磁碟I/O 變超級高,
而且會花一段時間才完成,
這段時間 cipher 就是去把所以未佔用空間都覆寫過一輪了。

防禦措施
# 限制cipher執行
icacls C:\Windows\System32\cipher.exe /deny Everyone:(RX)
# 啟用命令稽核
auditpol /set /subcategory:"Process Creation" /success:enable
IOCs
- cipher.exe執行時間超過30秒
- 命令包含
/w:參數 - 磁碟I/O突然100%
- 可用空間暫時降為0(cipher /w 會先建立暫存檔把未使用空間填滿再覆寫)
總結
Cipher /w 提供了接近軍規標準的資料銷毀效果,是攻擊者清理痕跡的實用工具。
在傳統硬碟上經過三階段覆寫後,鑑識工具基本上無法還原原始資料;
但對 SSD 等快閃儲存媒體,覆寫的效果會受到控制器行為影響,不能保證百分之百抹除。
今天的文章主要面向不是做攻擊的部分,
但清理也是很重要的一環,
希望可以這篇文章帶給大家幫助,
就這樣,明天見!