Merlin是一款跨平臺後脅迫(Post-Exploitation)HTTP/2控制與命令工具,能提供使用者以既存工具無法理解或是檢查的HTTP/2協定,執行滲透測試或是紅隊演練來進行網路偵測。Merlin能輕易的執行跨平臺編譯,在任何平臺上執行,實現對主機的命令和控制(Command and Control)。

HTTP/2是RFC 7540中新批准的協定,目的是用來解決HTTP/1.x存在的問題,並加入一些新功能以支援現代網頁應用程式操作,由於HTTP/2是一種二元協定,資料更壓縮、易解析,並且人類難以在沒有工具的情況下閱讀。

HTTP/2的RFC規範需要使用Perfect Forward Secrecy(PFS)加密套件,並建議設定所有非使用PFS加密套件的服務都為黑名單。使用PFS加密套件之後,有心人士就無法單用伺服器私鑰破解流量,同時還需要客戶端的對話金鑰資訊才行。而Merlin是一個跨平臺的後脅迫框架,使用HTTP/2協定通訊以規避偵測,官方提到,HTTP/2是較新的協定,請求使用PFS加密套件,而這些套件的特性,便是難以被捕獲用來解密的金鑰材料。

Merlin由Go語言撰寫而成,由伺服器與代理兩部分組成,也因為Go語言的特性,因此兩個元件都可以經過編譯後,在任何平臺上執行,或者以像是腳本的方式執行。為Linux或任何平臺編譯執行的Merlin伺服器,可以處理來自所有為其他平臺編譯代理的流量。

Merlin的伺服器元件應該在所有代理都能存取的位置執行,使用者可以使用命令列旗標配置伺服器監聽的介面與埠口,所有代理都有全域唯一識別碼(UUID),使用者要對特定代理發號命令,就需要使用該識別碼。

而Merlin代理得利於跨平臺編譯,因此可以在任何平臺上執行,代理提供了各式配置,使用者可以從伺服器調整代理休眠時間、最大重試次數、終止或是填充設定。官方提到,填充設定是以不同訊息流量大小,逃避檢查機制的偵測,使用者可以設置一個最大填充值,系統會從0到設定的最大值,隨機產生數值填充到每條訊息之後。

當發生伺服器失效的情況,代理會持續嘗試連接,直到到達最大重試次數才會終止。而當代理與伺服器連接通訊間,伺服器突然離線中斷,則代理會被視為孤立狀態,當孤立狀態的代理重新連接上伺服器時,則會被重新初始化。

官方提到,由於許多安全技術尚未加入HTTP/2協定解析器(Dissector),因此即便擁有金鑰材料,仍然無法用來評估流量,而Merlin的特殊之處,就在於使用HTTP/2協定,以及Go程式語言的交叉編譯功能,讓使用者方便的對系統進行滲透攻擊測試。


Advertisement

更多 iThome相關內容