利用Windows庫檔案進行持久化攻擊
想象一下有沒有這種攻擊可能,攻擊者在你不知道的情況下,在你的計算機上偷偷放置了一個惡意檔案,只要你訪問桌面上你最喜歡訪問的資料夾時,該惡意檔案就會開始執行,例如,Documents資料夾。目前已經出現了這種技術,就是通過利用一種鮮為人知的永續性技術——Windows庫檔案,實現這種持久化攻擊場景。
Windows引入了庫檔案,允許使用者在一個檢視中同時檢視多個目錄的內容。庫可以包含儲存在本地計算機或遠端儲存位置上的檔案和資料夾。
這些用於持久化的惡意檔案一開始是通過維基解密穹頂7(Vault 7)專案釋出的,並且與Junction惡意檔案有很多相似之處。由於這兩種技術都難以檢測,因此它們為攻擊者提供了很好的選擇,甚至對最優秀的檢測團隊也是一種挑戰。
2017年6月22號,維基解密解密了美國中央情報局(CIA)穹頂7(Vault7)網路武器庫中的第十二批檔案,被披露的檔案中詳細描述了美國情報機構如何遠端隱蔽的入侵訪問封閉的計算機網路或獨立的安全隔離網路。
根據CIA檔案研究人員發現攻擊技術的細節,該攻擊方式分為四個部分:快捷方式資料夾、Junction資料夾、“庫”檔案和快捷方式檔案,前面三部分是攻擊隱蔽技術,用正常的系統特性隱藏快捷方式檔案的漏洞攻擊,四個部分結合起來就成為了更難以被發現的高階威脅攻擊,可以在被攻擊系統中長期潛伏。
另外,該祕密文件還介紹了利用Windows庫檔案的攻擊隱藏技術,庫檔案本質是一個xml配置檔案,可以支援指向上文分析的Junction資料夾,在xml檔案中指定foldertype和knownfolder欄位就可以構造惡意的”庫”快捷方式。
本文將簡要分析如何使用庫檔案來保持攻擊的永續性,以及在安全檢測時要注意的問題。
庫檔案
預設情況下,Windows庫檔案位於“%APPDATA%\Microsoft\Windows\Libraries”目錄中,副檔名為library-ms。這些檔案是基於XML的,並有著公開可用的模式。
本文,我將以檢視文件庫檔案(“document .library-ms”)為例,該檔案會出現在Documents資料夾。要檢測這個檔案,最有趣的部分是SimpleLocation元素的 ofollow,noindex">URL 。此元素會指定基於檔案系統或協議處理程式的“搜尋聯結器”的位置。
本文的樣本顯示了使用全域性惟一識別符號(GUID)指向URL元素中兩個不同的已知資料夾的庫。搜尋GUID所指向的兩個文件目錄:
開啟這個庫將允許使用者在一個檢視中檢視兩個不同目錄的內容,下面的截圖顯示了每個單獨資料夾的內容:
然而,當檢視庫時,所有專案都顯示在同一個資料夾中。
建立惡意庫檔案
那麼,我們如何將這個特性用於永續性攻擊呢?
最簡單的方法是新增另一個URL元素來載入惡意COM物件,因此當訪問或呈現資料夾時,它將導致我的COM物件執行。
在下面的樣本中,我會建立了一個COM物件,該物件會引用了一個有效載荷“beacon.dll”。
然後向庫中添加了一個附加的searchConnector,其中有一個URL元素引用了我之前建立的CLSID。
最後,這個建立的庫被儲存到桌面,所以它看起來像一個良性的Documents資料夾。如果使用者開啟該資料夾,它將正常顯示Documents資料夾的良性內容。但是,在後臺,COM物件也將被執行,從帶有PID 5392的rundll32.exe啟動我的信標有效載荷。
有趣的是,rundll32沒有顯示父程序,這是因為在執行COM物件後退出了父程序dllhost.exe(COM Surrogate程序)。在Sysmon中,你將看到一個類似於下面樣本的事件,其父級為dllhost.exe,子程序為rundll32.exe。
檢視程序監控器,你將看到dllhost.exe查詢了我建立的CLSID,然後載入我的beacon.dll,最後執行了rundll32.exe。
雖然這些資料流程點都能被檢測到,但你看到的合法活動其實都是動過手腳的。此時,關聯資料點可以提供更準確的檢測效果。
實現永續性
顯然,要實現永續性攻擊,我還需要在啟動時執行我的library-ms檔案,所以你可能想知道我如何才能實現這一點?
除了常用的永續性技術之外,更隱祕的方法是使用Windows資源管理器,當檢視包含檔案的目錄時,該資源管理器將自動執行檔案。因此,使用者不需要真得單擊該檔案,只要檢視目錄就足夠了。例如,我可以將庫檔案放在桌面上,在啟動時,資源管理器將渲染它,導致我們的COM物件執行。
從安全檢測的角度來看,啟動執行和使用者單擊執行之間的區別在於,啟動時父程序將是explorer.exe,因為它是導致庫檔案呈現的資源管理器。
尋找library-ms檔案
我可以通過檢查具有library-ms副檔名的任何檔案來使用Shell/">PowerShell來搜尋惡意庫檔案,然後過濾URL標記以獲取CLSID並檢索相關的登錄檔項以進行分析。
由於此樣本是基於URL元素的濫用;你可能希望尋找其他元素,以發現進一步的異常。
點此 連結 ,我提供了一個指令碼,可以執行上述條件檢查在%USERPROFILE%資料夾中建立的任何library-ms檔案,你可以使用該指令碼檢查與此技術相關的登錄檔項中的任何異常。
查詢library-ms檔案的建立也很有用,這是一個高保真度指示器,因為這些擴充套件很少被建立。諸如Sysmon之類的工具允許你輕鬆監控這些事件,只需將以下內容新增到FileCreate標記內的Sysmon配置檔案中即可。
當建立library-ms檔案時,你將看到如下所示的檔案建立事件:
總結
Windows有許多可用於永續性攻擊的技術,如登錄檔、服務、計劃任務等,這是許多防禦團隊關注的重點。正如這篇文章所展示的,library-ms檔案呈現了一個很特別的挑戰,因為它們可以隱藏在普通的檢視中,並通過COM引用執行程式碼,這使得檢測和分析變得更具挑戰性。
在這種情況下,安全人員應該專注於建立和修改“.library-ms”檔案以及COM條目。除了來自explorer.exe或dllhost.exe的這些可疑程序執行之外,還可以發現惡意活動的其他證據。