META TWIN:一款二進位文件metadata修改工具

譯者:興趣使然的小胃

預估稿費:120RMB

投稿方式:發送郵件至linwei#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上的檢出率非常高。

具體檢測結果為:virustotal.com/#

添加元數據後的檢測結果如下圖所示。

有趣的是,僅添加元數據就能降低反病毒軟體的檢出率。

具體檢測結果為:virustotal.com/#

添加元數據及數字簽名後的檢測結果如下圖所示。

添加數字簽名及元數據後,檢出率從76%降到了58%。這一點非常重要,因為我們還沒有真正嘗試規避反病毒軟體!

具體檢測結果為:virustotal.com/#

4.2 SysInternals AutoRuns

除了反病毒軟體外,我們還調查了SysInternals AutoRuns工具對這些修改的具體反應。

我們使用計劃任務創建了與修改版二進位文件有關的任務,以此簡單實現了本地持久化機制。AutoRuns可以用來檢測這類Windows持久化方法,然而,默認情況下,它並不會顯示與修改版程序有關的任務。

默認設置下,AutoRuns會隱藏「微軟」的計劃任務,如下所示。

AutoRuns的默認設置如下:

修改默認配置後,我們就可以發現偽裝的「微軟」計劃任務。

五、總結

根據以上觀察結果,我們可以得出一個非常明顯的結論,那就是某些防病毒軟體以及端點檢測和響應(EDR)工具容易受到元數據以及數字簽名的欺騙,因此難以有效勝任藍方角色。在無法避免磁碟操作的情況下,紅方操作人員在未來對抗中可以充分利用這一點。


推薦閱讀:

如果從小隻學二進位會怎麼樣?
如何區別二進位32個1表示-1,還是4294967295?
十分鐘 | 計算機硬體及組成原理(三)
二進位圖鑑賞~

TAG:二进制 | 渗透测试 | IOC |