在大多數管理員眼裏,文件“屬性→詳細信息”裏的備註、主題、作者,只是辦公文檔的禮貌自我介紹,連殺軟都懶得點開。可就是這塊連用户都忽視的“擴展屬性”(Extended Attributes),正被攻擊者當成免費廣告牌:短短几行隱藏字段,就能塞下二段式下載器、C2 回連地址,甚至一整段 Powershell 加載腳本——全程不落磁盤、不觸殺軟、不留日誌。
為什麼偏愛“備註欄”
擴展屬性隨文件走,卻不在文件內容裏;流式掃描器只看主數據 fork,對 ADS(備用數據流)或 xattr 視而不見。於是攻擊者把惡意代碼拆成 128 字節一行的“作者名”寫進去,像便利貼一樣貼滿文件,再由一段看似無害的宏逐行讀取拼接,現場組裝成內存馬。整個過程磁盤 I/O 只有一次合法讀取,EDR 連觸發點都找不到。
暗語的三種寫法
- 分段便利貼:把 base64 後的 payload 拆成“標題”“備註”“最後一次保存者”等字段,宏用
BuiltinDocumentProperties依次拉取,解碼後Invoke-Expression。殺軟掃主文檔無毒,屬性欄卻拼出一條遠程 shell。 - 備用數據流套娃:在
.txt上再開file.txt:hidden.ps1,屬性頁依舊顯示“只讀文本”;rundll32一句stream.exe就能把它拉回內存執行,屬性欄清清白白。 - 圖片裏藏座標:把 PNG 的“關鍵字”字段寫成
https://cdn.foo/a.jpg|key=123,表面上看是攝影師備註,實則第一段下載器讀到後,用豎線分割出 URL+密鑰,再把第二段 shellcode 拉回來。圖像文件天然白名單,屬性改完連哈希都不變。
與“時間+權限”三連擊
時間戳先回撥到相機出廠日,權限再設只讀,擴展屬性裏塞滿“温柔”的版權信息——文檔、圖片、日誌文件瞬間化身“三好學生”。防守方按時間排序看不到新增,按權限篩篩不到可執行,按內容檢測又碰不到擴展屬性,三重盲區疊加,文件就像穿了光學迷彩。
對取證鏈的慢性投毒
擴展屬性可以隨文件一起被打包進 ZIP、隨郵件一起被髮出,卻不會被常規沙箱記錄;調查人員解壓後只看內容無毒就放行,真正的 C2 指令早已通過“備註欄”溜進內網。事後想覆盤,卻發現屬性欄可以被 Office 一鍵清除,溯源證據原地蒸發,形成“斷鏈”現場。
把“備註欄”也關進籠子
- 屬性級哈希:計算文件哈希時連同所有 xattr/ADS 一起算,任何“備註”變動都會改變指紋,杜絕“內容不變屬性變”的灰色地帶。
- 出站郵件刷白:網關自動剝離所有擴展屬性與流,重寫“作者、標題”為統一值,讓“暗語”在邊界就掉線。
- 內存行為兜底:不管文檔多幹淨,只要 Office 進程外連 Powershell、WMI、cmd,一律先攔後審,把“屬性→內存馬”的拼圖打斷。
- 發佈前硬化:用 Virbox Protector 對可執行文件做“殼+虛擬化+完整性綁定”,攻擊者若想再把下載器藏進屬性,就得先破解殼,動靜大、成本高,多數直接放棄。
Virbox Protector 的“硬化”組合拳:
- 殼層校驗:啓動時先校驗自身所有區段及擴展屬性,發現多出一行“作者”都直接自殺;
- 代碼虛擬化:把解密邏輯放進私有 VM,攻擊者就算讀出屬性裏的 URL,也無法在本地復現解密流程;
- 許可鏈驗證:運行時必須在線拉取令牌,文件與令牌雙因子對齊,即便屬性欄暗語完整,也無法拿到下一步 shellcode。
結語
擴展屬性本是為方便用户而設的“便籤”,卻成了攻擊者免費租用的“廣告牌”。當“備註欄”都能開口説話,安全方案就必須把“屬性”也納入零信任版圖:要麼在出網關前撕掉便籤,要麼在編譯期就把文件封進保險櫃。只有把防線前移到“屬性”這一釐米,才能讓暗語永遠失去聽眾。