當前位置:
首頁 > 最新 > Sofacy黑客組織又現身!釣魚郵件攻擊多地政府機構

Sofacy黑客組織又現身!釣魚郵件攻擊多地政府機構

大家好,我是小編

中午外賣老闆送了個禮物

外面是速食麵調料大小的包裝

正中間一個大大的「性」字

正(si)直(ji)小編趕緊藏到口袋

找個沒人的角落偷偷拿出來

「一次性手套」

前言

Sofacy網路間諜小組,又被稱作APT28,從2008年就開始活躍於網路,是一個使用俄語的黑客組織,其攻擊目標主要為全球的軍事和政府機構。

最近,他們又發起了一場針對世界各地外交部的攻擊運動。而且,這個運動似乎有兩個並行的嘗試,每個嘗試都使用完全不同的工具集來進行攻擊。

攻擊細節

2018年2月初,研究人員發現了兩個針對涉外政府機構的攻擊活動,雖然兩次活動的攻擊者並不在同一個區域,一個位於歐洲,另一個位於北美,但其受害者和受害組織幾乎完全一致。

Jane』s by IHS Markit是一家知名的信息和分析供應商,通常與國防和政府部門合作。通過對電子郵件標題數據的分析,研究人員發現發件人地址根本不是來自Jane』s by IHS Markit。

釣魚郵件中的文本聲稱,附件是與目標組織相關的事件日曆,並包含相關問題的操作說明。

攻擊活動中使用的釣魚網頁郵件

附件本身是一個包含惡意宏腳本的Microsoft Excel XLS文檔。該文檔將自己標記為標準的宏文檔,在受害者啟用宏之前,其文本處於隱藏狀態。

攻擊者將文本字體顏色修改為白色,使其看起來必須啟用宏才能訪問內容,從而誘導受害者啟用宏,事實上,即使不啟用宏,所有內容都可以被受害者訪問。一旦受害者啟用宏,將出現以下代碼:

ActiveSheet.Range(「a1:c54」).Font.Color = vbBlack

代碼將指定單元格範圍內的字體顏色更改為黑色,並將內容呈現給用戶。仔細檢查會發現,文檔中存在幾個異常點。

下圖顯示了文檔最初的外觀以及在宏運行時的變化。

GIF

運行宏之前和之後的投遞文檔

投遞文檔

宏獲取第2227行到2248行、170列中的單元格的內容,以此獲得base64編碼的有效載荷,如下圖所示:

投遞文檔顯示base64編碼的有效載荷

宏將字元串BEGIN CERTIFICATE到base64編碼的有效載荷的開頭,並在數據的末尾加上END CERTIFICATE。然後,該宏使用具有.txt擴展名的隨機文件名,並將此數據寫入C: Programdata文件夾中的文本文件。

之後,宏使用命令certutil -decode來解碼此文本文件的內容,並將解碼的內容傳輸到C: Programdata文件夾中帶有.exe擴展名的隨機文件中。宏休眠兩秒鐘後,執行剛剛刪除的可執行文件。

剛剛刪除的可執行文件是一個載入器木馬,它負責安裝和運行攻擊的有效載荷。我們對這個載入器木馬程序進行了更詳細的分析,詳見附錄。執行後,載入程序將使用自定義演算法解密嵌入的有效載荷(DLL),解壓並將其保存到以下文件中:

%LOCALAPPDATA%cdnver.dll

然後,載入程序將創建批處理文件:

%LOCALAPPDATA%cdnver.bat

它將寫入以下內容:

start rundll32.exe 「C:UsersuserAppDataLocalcdnver.dll」,#1

載入器木馬使用這個批處理文件來運行嵌入式DLL載荷,載入器會將此批處理文件的路徑寫入以下註冊表項,該註冊表項在每次用戶登錄系統時都會運行批處理文件:

HKCUEnvironmentUserInitMprLogonScript

由載入器可執行文件安裝的cdnver.dll有效載荷是SofacyCarberp有效載荷的變體,Sofacy經常使用該有效載荷。

總體而言,SofacyCarberp通過收集系統信息並將其發送到C2伺服器進行初始偵察,然後再將工具下載到系統。SofacyCarberp這種變體使用以下域作為其C2伺服器:

cdnverify[.]net

這次襲擊中發送的載入程序和SofacyCarberp樣本相對於過去分析的樣本,有了用於解析API函數的新哈希演算法,並可以查找正在運行的瀏覽器進程並進行注入,以及對郵件的附件中詳細解釋的C2通信機制的更改。

開源投遞文檔生成器

據研究人員猜測,Sofacy可能使用了一個名為Luckystrike的開源工具來生成交付文檔和用於此次攻擊的宏。

Luckystrike於2016年9月在DerbyCon 6上發布,它是一種基於Microsoft PowerShell的工具,通過用戶將宏添加到Excel或Word文檔,以此執行嵌入式有效內容,進而生成惡意投遞文檔。

為了證實上述猜測,研究人員用Luckystrike生成了一個惡意Excel文件,並將其宏與Sofacy投遞文檔中找到的宏進行了比較。

對比後發現,除了隨機函數名稱和Luckystrike工具為每個有效載荷生成的隨機單元格值之外,宏之間只有一個區別:即「certutil -decode」命令中的「.txt」和「.exe」文件的路徑。Sofacy文檔使用「C: Programdata 」作為路徑,而Luckystrike文檔使用存儲在Application.UserLibraryPath環境變數中的路徑。

下圖顯示了兩者的區別,左邊是LuckyStrike宏,右邊是Sofacy宏,除了文件路徑和宏中隨機生成的值之外,其他所有內容都完全相同

Luckystrike生成的文檔中的宏(左)和Sofacy的投遞文檔(右)

捕捉攻擊間的共同點

通過研究,新興的安全攻擊通常是先前觀察到的行為規則或關係的一些組合,諸如重用WHOIS構件、IP,甚至域名主題的格式也是常用的,並且他們經常將攻擊分組到特定的活動中。

在這種前提下,研究人員觀察到Sofacy組織註冊了新域名,然後設置了默認登錄頁面,並在一年中重複使用它們。

cdnverify.net域的默認登錄頁面

hotfixmsupload.com域的默認登錄頁面

Hotfixmsupload[.]com被反覆識別為Sofacy C2域名。在這種情況下,域名cdnverify[.]於2018年1月30日被註冊,並且僅在兩天後,攻擊者使用此域名作為C2發起了攻擊。

結論

在深入研究之後,Sofacy不再是神秘的攻擊者。研究人員已經有了他們的文檔記錄,並且了解了他們的許多攻擊方法。

當然,如果他們繼續堅持攻擊行動,並繼續使用與過去類似的工具,他們的攻擊仍有可能取得成功,數據的應用仍然具有挑戰性。

Palo Alto Networks的客戶可以通過以下方式免受這次威脅的侵害:

1.WildFire用malicious verdicts檢測所有SofacyCarberp有效載荷。

2.AutoFocus的客戶可以使用Sofacy、SofacyMacro和SofacyCarberp來跟蹤侵害工具。

3.阻止Sofacy交付文檔和SofacyCarberp載荷的陷阱。

附錄

載入器木馬

由宏下載到系統的有效載荷是一個可執行文件,負責為系統安裝和執行動態鏈接庫(DLL)。

載入程序有幾個編碼功能。例如,在執行時,載入器嘗試載入api-ms-win-core-synch-l1-2-0.dll,該DLL是Windows 10平台應用程序的一部分。

通常,開發人員不會直接鏈接到此文件,而是可以訪問基礎API的WindowsApp.lib。loader包含了對Windows API函數包裝的定義,它們不能直接調用,因為它們在所有操作系統上都不被支持。

執行後,載入程序將使用自定義演算法解密嵌入的有效載荷(DLL),然後使用RtlDecompressBuffer API 對其進行解壓縮。此API通常用於Windows驅動程序,並且參數記錄在MSDN上。它所使用的壓縮演算法是具有最大壓縮級別的LZNT1。

有效載荷使用0x3950BE2CD37B2C7CCBF8開始的10位元組XOR密鑰進行解密。數據一旦解密,就被傳遞給解壓常式。有效載荷位於文件偏移處的載入器中,即位於0x19880 - 0x1F23C,大小為0x59BD。使用以下Python腳本進行解密和解壓:

載入器將下列文件放入%LOCALAPPDATA%文件路徑中:

Cdnver.dll

Cdnver.bat

為了避免Windows資源管理器的檢測,文件屬性被設置為隱藏。啟動可執行文件的用戶的路徑是%LOCALAPPDATA%,即C:UsersuserAppDataLocal,其中包含了用戶的登錄帳戶。

為了執行DLL,載入器首先檢查正在執行的進程的完整性級別,如果它沒有必要的許可權,載入器將枚舉系統的進程以搜索explorer.exe。枚舉過程最有可能被執行,因為它通常以管理員許可權運行。

載入器將嘗試使用explorer.exe的許可權通過CreateProcessAsUser執行DLL 。如果執行載入器的用戶具有足夠的許可權,則可以跳過此步驟。使用Windows rundll32.exe程序處理執行,並調用DLL。

示例:

start rundll32.exe 「C:UsersuserAppDataLocalcdnver.dll」,#1

載入器將使用以下值將註冊表項UserInitMprLogonScript添加到HKCUEnvironment:

C:UsersuserAppDataLocalcdnver.bat

此條目會導致在用戶登錄時執行批處理文件操作。批處理文件包含以下信息:

start rundll32.exe 「C:UsersuserAppDataLocalcdnver.dll」,#1

SofacyCarberp有效載荷

在這些攻擊中傳遞的DLL是SofacyCarberp有效載荷的變體,Sofacy經常使用該有效載荷。

API解析

此木馬以前的版本使用的是從泄露的Carberp源代碼中獲取的代碼,主要是用於解析API函數。但是,此版本的SofacyCarberp使用散列演算法根據其BaseDLLName找到正確載入的DLL ,以便手動載入API函數。

此木馬先載入PEB,再訪問_PEB_LDR_DATA結構,然後在InLoadOrderModuleList中獲取BaseDllName的unicode字元串。它將此Unicode字元串視為ASCII字元串,方法是跳過每個其他位元組,然後獲取字元串的小寫版本。

最後,它將生成的小寫字元串轉換為哈希演算法,並將將檢查後的哈希值輸出硬編碼值。以下Python腳本顯示了用於確定哈希值的演算法:

以下是用於查找正確載入的DLL硬編碼值的列表:

0x77b826b3 – ? (most likely ntdll.ZwProtectVirtualMemory based on code context)

0x2e33c8ac – ntdll.ZwWriteVirtualMemory

0xb9016a44 – ntdll.ZwFreeVirtualMemory

0xa2ea8afa – ntdll.ZwQuerySystemInformation

0x99885504 – ntdll.ZwClose

0x46264019 – ntdll.ZwOpenProcess

0x3B66D24C – kernel32.?

0x79F5D836 – kernel32.?

注入瀏覽器

該木馬將使用相同的散列演算法進行API解析,用來查找在系統上運行的瀏覽器進程,以便將代碼注入瀏覽器,並與其C2伺服器進行通信。

為了能成功實現注入,木馬調用ZwQuerySystemInformation函數,並且需要與SystemProcessInformation關聯的數據。

結果是得到一個名為SYSTEM_PROCESS_INFORMATION的結構,木馬將訪問欄位ImageName(偏移量0x3c)中的Unicode字元串。

然後,木馬以ASCII格式將此Unicode字元串轉換為哈希演算法,查找以下內容:

0xCDCB4E50 - iexplore.exe

0x70297938 - firefox.exe

0x723F0158 - chrome.exe

該木馬嘗試將代碼注入這些瀏覽器以執行其C2通信。如果要通過遠程進程中的注入代碼執行C2通信,注入的代碼會傳輸到C2伺服器,並將響應保存到名為SNFIRNW的內存映射文件中。

該木馬在該映射文件中使用自定義通信協議,但是在較高級別上,木馬將不斷地在映射的SNFIRNW文件內查找數據,並且處理數據方式與C2伺服器通信時使用的處理方式相同。

指揮和控制通信

除了能夠通過注入Web瀏覽器的代碼與C2伺服器進行通信外,木馬還可以在自己的進程中執行相同的通信過程。C2通信使用HTTPS協議,並專門設置以下標誌用來允許無效證書的操作:

SECURITY_FLAG_IGNORE_CERT_DATE_INVALID|SECURITY_FLAG_IGNORE_CERT_CN_INVALID|SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_IGNORE_REVOCATION

從木馬發出的初始請求是google.com,可能是作為互聯網連接檢查。

來自SofacyCarberp木馬的初始請求到Google檢查Internet訪問

如上面的活動所示,木馬向包含隨機大小和隨機生成的字元串的URL發布POST請求。該URL還包含從以下列表中隨機選擇的字元串:

此字元串列表與先前分析的SofacyCarberp樣本有所不同。

字元串中參數的值,特別是WrLqG1kMJXpgID1rODM=,它是base64編碼的密文,解密為字元串UihklEpz4V,該字元串在木馬中被硬編碼。用於加密URL中數據的演算法,它與以前的SofacyCarberp樣本中使用的演算法相同。

確定系統具有Internet訪問權後,該木馬將收集詳細的系統信息並將其發送到C2伺服器。所收集的信息包括基於存儲卷序列號(id欄位)的唯一標識符、正在運行的進程列表、網路介面卡信息、存儲設備名稱(磁碟欄位)、木馬的構建標識符(構建欄位,具體為0x9104f000) ,最後還有系統的屏幕截圖(img欄位)。

該木馬具有屏幕截圖功能,因為木馬的代碼不是使用Windows API進行屏幕截圖,而是模擬用戶按下屏幕截圖鍵(PrtscSysRq)在鍵盤上保存屏幕截圖到剪貼板。

然後,木馬訪問剪貼板中的數據並將其轉換為JPG圖像以包含在此HTTP請求中。所有這些數據都經過加密、base64編碼,並通過HTTP POST發送到C2伺服器,用來獲得與初始互聯網連接檢查類似的URL。

使用系統信息從SofacyCarberp到C2伺服器的HTTP POST

SofacyCarberp木馬程序解析C2伺服器對數據請求的響應,木馬程序將使用該數據下載輔助有效載荷到系統。木馬在響應數據中查找標記 [file]、[/file]、[settings]、[/settings]之間的部分。

但是,此特定變體還包含另一個標籤為[shell]和[/shell]的部分。木馬解析這些部分的特定欄位,並指示木馬要進行的操作,包括木馬將保存下載文件的位置,木馬如何運行次要有效負載以及木馬應與哪個C2位置通信。

以下欄位由木馬解析:

FileName: Specified filename

PathToSave: Path to specified file

Execute: Create a process with the specified file

Delete: Delete the specified file

LoadLib: Load the specified DLL into the current process

ReadFile: Reads a specified the file

Rundll: Runs the specified DLL with a specified exported function

IP: Set C2 location

shell: Run additional code in a newly created thread

shell欄位中指定的shell部分中的數據是為raw彙編的base64編碼數據。我們可以根據木馬使用base64解碼數據來推測和創建本地線程,這也表明所提供的數據可以是任何與位置無關的代碼或shellcode。

年後想辭職,如何進行快速充電

*IDEA值得分享 | 轉載註明出處


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 漏洞銀行 的精彩文章:

手把手教你使用PowerShell繞過AppLocker
如何繞過Web應用程序防火牆?

TAG:漏洞銀行 |