META TWIN:一款二進位文件metadata修改工具
譯者:興趣使然的小胃
預估稿費:120RMB
投稿方式:發送郵件至linwei#http://360.cn,或登陸網頁版在線投稿
一、前言
受Casey Smith(@subtee)發表的一則推文的啟發,我更新了幾年前我與Andrew Chiles(@andrewchiles)共同開發的一款工具。
以紅隊身份參與滲透測試活動時,如果無法避免磁碟操作,那麼你可以使用這款工具儘可能融入周圍環境。在內存中操作是非常好的方法,然而許多情況下,我們不得不使用磁碟上的二進位文件。我使用的技術非常有效,那就是修改二進位文件的資源信息(元數據,metadata)。元數據包含許多欄位,如文件圖標、版本、描述、產品名稱、版權等信息。許多威脅源經常會通過突破安全防禦或者修改IOC特徵來嘗試欺騙或蒙蔽安全分析人員(可以參考我發布的關於修改IOC特徵的系列視頻)。
將文件融入周圍環境可以使安全分析人員將惡意行為當成可信行為。特別是如果某個二進位文件看起來像是微軟出品的,那麼應該更加可信。
這正是MetaTwin發揮作用的場景。經過修改後,這款工具不僅能夠修改二進位文件的元數據,也能添加最近由@subtee以及@mattifestation描述的數字簽名信息。
二、MetaTwin工作原理
1、MetaTwin以經過合法簽名的二進位文件作為源文件,如explorer.exe。
2、提取資源(利用ResourceHacker)以及數字簽名信息(利用SigThief)。
3、將提取到的數據寫入目標二進位文件中。
三、工具演示
在這個例子中,我選擇使用默認的meterpreter reverse_tcp二進位文件。選擇這個程序並沒有什麼特別含義,這裡我們可以使用任意二進位文件(.exe或.dll文件)。就我個人而言,在實際環境中我是Cobalt Strike的忠實粉絲。
如你所見,經過處理的文件看起來非常有迷惑性。紅方操作人員無需消耗太多精力,只需將其保存在類似c:ProgramData之類的目錄中,修改文件時間戳,就可以實現更長時間的駐留。
四、有趣的實驗結果
4.1 反病毒軟體
通常情況下,經過簡單的修改,防禦方工具的反應也會有所不同。當然反病毒軟體通常不是個花架子,但我們還是很好奇它們會如何處理經過MetaTwin修改的Metasploit meterpreter程序。除了添加元數據及數字簽名外,我們沒有做其他的混淆處理。實驗結果非常有趣。
未經處理的源文件檢測結果如下圖所示。
不出意外,VirusTotal上的檢出率非常高。
具體檢測結果為:https://www.virustotal.com/#/file/02d873881fef5b497503a48c221c4977e3a1a0d2cf9bfa78a8d6c567e63dca70/detection
添加元數據後的檢測結果如下圖所示。
有趣的是,僅添加元數據就能降低反病毒軟體的檢出率。
具體檢測結果為:https://www.virustotal.com/#/file/cc96177e110d4413f918d9b7ef3650eab59bd7fa7a12afe37fde7ce3e6d63d1b/detection
添加元數據及數字簽名後的檢測結果如下圖所示。
添加數字簽名及元數據後,檢出率從76%降到了58%。這一點非常重要,因為我們還沒有真正嘗試規避反病毒軟體!
具體檢測結果為:https://www.virustotal.com/#/file/e653b4d75cc02da5ea258be5b1c1eb6feed9586fa6b977eb570a188a38783e66/detection
4.2 SysInternals AutoRuns
除了反病毒軟體外,我們還調查了SysInternals AutoRuns工具對這些修改的具體反應。
我們使用計劃任務創建了與修改版二進位文件有關的任務,以此簡單實現了本地持久化機制。AutoRuns可以用來檢測這類Windows持久化方法,然而,默認情況下,它並不會顯示與修改版程序有關的任務。
默認設置下,AutoRuns會隱藏「微軟」的計劃任務,如下所示。
AutoRuns的默認設置如下:
修改默認配置後,我們就可以發現偽裝的「微軟」計劃任務。
五、總結
根據以上觀察結果,我們可以得出一個非常明顯的結論,那就是某些防病毒軟體以及端點檢測和響應(EDR)工具容易受到元數據以及數字簽名的欺騙,因此難以有效勝任藍方角色。在無法避免磁碟操作的情況下,紅方操作人員在未來對抗中可以充分利用這一點。
推薦閱讀:
※如果從小隻學二進位會怎麼樣?
※如何區別二進位32個1表示-1,還是4294967295?
※十分鐘 | 計算機硬體及組成原理(三)
※二進位圖鑑賞~