欺騙的藝術:Tracing Adversaries, Going Headless and Mocking APIs

發布日期:2023/11/21

CERT-UA 披露 了針對烏克蘭關鍵能源基礎設施的精心策劃的網路攻擊。 這次襲擊的作案手法是不同的;它利用包含誘餌鏈接的欺騙性電子郵件,引誘受害者下載看似無害的ZIP存檔。 然而,該檔案館藏有惡意檔,旨在劫持受害者的計算機,重定向數據流並使用 mockbin.orgmocky.io 等服務洩露敏感資訊 。 與此同時,Zscaler ThreatLabz 發現了一個被稱為“Steal-It”的活動,表現出驚人的相似之處。 該活動重點關注澳大利亞、波蘭和比利時等地區,還利用Mockbin API來洩露NTLMv2哈希。 有趣的是,戰術、技術和程式 (TTP) 與 APT28(也稱為花式熊)展示的戰術、技術和程式 (TTP) 密切相關。 這些發現的融合突顯了對手在光天化日之下利用公共服務,策劃複雜的攻擊,並不斷適應數字環境。

Splunk威脅研究團隊(STRT)深入研究了CERT-UA和Zscaler報告的調查結果。 本博客介紹了我們重建攻擊關鍵元件的過程、我們使用Splunk攻擊分析器進行快速樣本分類的經驗,以及我們對與 mockbin.org 和 mocky.io 相關的路徑的深入探討。 此外,我們將詳細介紹STRT如何從Mockbin收集關鍵數據。 本博客的目的是闡明不同的對手戰役如何交叉,如何在較長時間內明顯地使用相同的工具,並提供使用Splunk發現此類活動的指導。


攻擊分析
如何使用 mockbin.org 和 mocky.io?
讓我們從深入瞭解莫克賓和 mocky.io 開始。 Mockbin和 mocky.io 都是主要為開發人員和測試人員設計的寶貴工具。 它們提供了創建自定義端點的平臺,允許使用者測試、模擬和監控 HTTP 請求和回應。 這在集成庫、測試套接字或試驗 API 時特別有用。

然而,雖然這些平臺具有合法和有益的用途,但它們也可能被對手利用。 通過利用Mockbin和 mocky.io 的持久可靠的託管功能,威脅參與者可以方便地託管和檢索其惡意負載。 這為他們提供了一種隱蔽的方法,因為這些服務通常被視為良性的,使其惡意活動更難被發現。

在我們的詳細分析中,我們觀察到攻擊者利用 mockbin.org 作為初始交互點的一致模式,通常作為其攻擊鏈中的第一次點擊或下載。 一種值得注意的方法涉及在LNK檔中嵌入連結,其中觸發PowerShell腳本以向 mockbin.org 發送Web請求。 反過來,這會重定向到 mocky.io,獲取第一階段的有效載荷。 最近,我們注意到一種直接的方法,即Mockbin連結直接發送到潛在受害者的收件匣。 按兩下後,這些連結會將使用者重定向到 mocky.io 以進行zip文件下載。 深入研究此 zip 檔的內容,我們確定了進一步依賴 mocky.io URL 來推進攻擊的批處理腳本。

這種多階段攻擊的複雜性在 9 月 4 日的 CERT-UA 博客文章中得到了細緻的記錄。 雖然該帖子深入探討了活動的各個組成部分,但最後的屏幕截圖有效地封裝了攻擊的不同階段,提供了視覺表示。


(https://cert.gov.ua/article/5702579, CERT-UA)


我們收到了兩個 與活動相關的樣本,其中包括批處理檔和誘餌圖像。

https://www.virustotal.com/gui/file/b30f229ca49c8c0cd734e47336eeb49a483920914093d36672c64d45481ee71e

https://www.virustotal.com/gui/file/749533eef943e019e1f6ccf61f36cc0939f7aa0c730bac84467d83441a0584f0



由於 mocky.io 網站目前處於離線狀態,我們無法繼續進行攻擊的後續階段。 根據CERT-UA博客的見解,如果這些網站正常運行,將部署額外的BAT和VBS來進一步攻擊。 深入研究主 .cmd 檔可為我們提供以下見解:

Weblinks.cmd



第二個蝙蝠檔包含以下內容 - B207a288-3e1f-42cc-b.bat -



值得注意的是,其中一個引人注目的檢測機會在於識別組織網路中 mockbin.org 和 mocky.io 的任何使用方式。


無頭流覽
無頭瀏覽器已成為開發人員的基石工具。 從本質上講,「無頭」瀏覽器是沒有圖形使用者介面 (GUI) 的Web瀏覽器。 這意味著它可以訪問網頁,但不向用戶顯示網頁。 相反,它以程式設計方式運行,通常用於自動化測試、Web 抓取和其他不需要視覺顯示的伺服器環境。

無頭瀏覽器的好處:

  1. 速度:沒有UI開銷,任務可以更快地執行。
  2. 靈活性:它們可以在沒有顯示器的環境中運行。
  3. 自動化:自動化測試框架的理想選擇。


以下是使用無頭參數的三種流行瀏覽器的示例用法。

谷歌瀏覽器:

  1. 命令:chrome --無頭 --禁用-gpu --遠端調試埠=9222 https://www.example.com
  2. 通常需要 --disable-gpu 標誌,尤其是在 Windows 上,以增強穩定性。
  3. --remote-debugging-port 允許開發人員通過 Chrome DevTools 協定向 Chrome 發送命令。


Mozilla Firefox:

  1.  命令:火狐--無頭 https://www.example.com
  2. Firefox 簡化了它的無頭產品,只需要 --無頭標誌。


Microsoft邊緣:

  1. 命令:msedge --無頭 --禁用 gpu --遠端調試埠=9222 https://www.example.com
  2. 鑒於Edge現在基於Chromium,其命令與Chrome的命令非常相似。


根據CERT-UA的說法,對手以戰略方式利用了無頭模式。 通過在此模式下運行瀏覽器,他們可以通過程式設計方式訪問 mockbin.org 網站,確保重定向到攻擊的下一階段。 這種戰術雖然有效,但也具有一層隱身性;由於無頭瀏覽器不會直觀地顯示其活動,因此惡意操作更容易被忽視。 在惡意環境中對熟悉的開發人員工具的依賴突顯了現代對手的狡猾。 他們正在選擇合法的工具,以他們最初不打算的方式使用它們,所有這些都是為了進一步實現他們的惡意目標。



無頭流覽帶來了一個有趣的檢測機會,因為佇列中的大多數端點都不使用它。 這應該作為非標準行為脫穎而出,但每個組織都是不同的,因此我們建議基線。 更高保真度的分析可用於在命令行上一起查找無頭和 mockbin.org。


LNK交付

正如Zscaler所概述的,LNK方法同樣使用Mockbin重定向到Mocky並下載下一階段。


(Zscaler,2013)



(Zscaler, 2013)


在 VirusTotal 上可以獲得許多包含類似偽影的樣本。 出於我們的研究目的,我們利用了這一點



在這種情況下,一旦按下 LNK,它將使用 PowerShell 訪問返回 NTLM 中繼的 Mockbin (https://mockbin.org/bin/de22e2a8-d2af-4675-b70f-e42f1577da6e/view) 網站。 聰明吧?

有很多差異,大多數可以追溯到今年早些時候。 直到大約 2 個月前,我們才看到 VirusTotal 上的第一個垃圾箱 ID 的使用方式與 CERT-UA 在 2023 年 9 月 4 日的帖子中確定的類似。


擴展NTLM中繼
在此期間,STRT發現了兩個與 Zscaler 還發現的樣本相匹配的樣本。 VirusTotal 上的兩個腳本被解散到我們無法運行它們的地方。 當時我們不知道的是,Zscaler找到了Nishang的Start-CaptureServer.ps1的定製版本。


樣本:
https://www.virustotal.com/gui/file/5c08c1c1b7e089b172e30b9ad452bab7ce64ee48201f603fc96fd9c6e24db1dc

https://www.virustotal.com/gui/file/52951f2d92e3d547bad86e33c1b0a8622ac391c614efa3c5d167d8a825937179

 

最初,我們的觀點是這些是工具 Inveigh 的定製實例。

有了這個,我們創建了一個概念證明,將憑據寫入磁碟而不是發送到Mockbin:
https://github.com/MHaggis/notes/blob/master/utilities/FancyNTLMRelay/fancyntlmrelay.ps1

我們比較了這兩個實例。 首先是我們的新版本,它將它寫入txt檔:



以下是VirusTotal上的兩個變體:





VirusTotal 上的兩個樣本都是專門為使用而設計的。 儘管看起來很明顯,但在撰寫本文時,許多AV引擎並未採用它們。

此演示視頻展示了我們在本地記錄的 Start-CaptureServer.ps1 腳本版本。


從PowerShell NTLM繼電器到Mockbin
稍微換個角度,我們現在將專注於Mockbin及其在 CERT-UA 共用的活動中的使用。
我們最初從查看來自VirusTotal的報告URL開始。 從我們在 VirusTotal上找到的Mockbin域 的所有內容,到使用 urlscan.io 收集其他Bin ID,我們能夠收集26個唯一ID,所有這些ID都與Zscaler和CERT-UA報告的相同活動相關。 我們手動審查了每個內容,以驗證其與報告的內容相同。



Bin IDs
以下是我們在深入研究時收集的BinID清單。
• 4063e80e-4c99-4c7e-8784-66804c906a60
• 31b1332f-8f5c-490e-8ec0-78e77b4e5709
• 31df6e74-9d7f-4759-b628-6424187c95d3
• 6cd1ea35-0211-4477-a7fc-8e4571b344b5
• bcaa7ea0-2fa4-4351-881e-dbf4dbead486
• 43a37cb6-2118-4c0d-8c14-0b2aaf14ff6a
• 61efbe8d-8747-402d-916c-6ebd50c9dc82
• 0279e826-fd08-4592-a9b6-0a86611cff30
• a7dc1a35-1b5d-40d1-ab8a-75291baf5a76
• 4dde8cac-e636-4c89-85b8-f41b085e0efe
• caaf15b4-a8d7-44bd-baa9-cedca95b216a
• 3619f974-701e-4ffc-93a4-68d0e22c82c9
• 8d432c43-f2ef-44f5-ac68-b473dbfe5bf8
• a18010d7-70c1-403b-b15c-7c669ea8841c
• 8d30e216-cc73-47a6-8deb-4f1d9cfa0a26
• 6a9bbefa-94dd-468f-9ce5-2fb5b8b0c509
• 84a2791a-6585-46ce-bc1c-e42a03538715
• 2e04b6dd-9e86-49ea-b08c-29312f0f2a39
• 7e3602b1-35d8-4bac-8dc7-b33471bc04a7
• f5c8bc48-a69e-4091-8fd4-8cfd966a1f03
• b8bdfad1-9902-4d19-856a-f65818ee6165
• de22e2a8-d2af-4675-b70f-e42f1577da6e
• 1a5c942f-4e74-4881-bb8e-1bca54aad3de
• de22e2a8-d2af-4675-b70f-e42f1577da6e
• 9ee0aeac-e308-47e3-a3ba-f91afd56a736
• 873377bb-b44f-478a-95f3-9cd747e1c6b7

正如我們的分析中所詳述的,該活動通常利用 mockbin.org 作為啟動點,重定向到後續階段的 mocky.io。 在提取與此策略關聯的 URL 後,我們發現後續階段(無論是 zip 檔還是其他有效負載)當前無法訪問。



模擬訪問日誌
Mocky 是免費和開放的,因此它允許我們請求由該 Bin 識別符託管的每個腳本和訪問日誌。 我們可以通過網站轉到垃圾箱ID並點擊 /log或/view 來做到這一點。 此外,Mocky 為每個端點提供了一個 API 端點。 例如,我們可以檢索日誌並查看 託管的數據。

查看託管在 https://mockbin.org/bin/31df6e74-9d7f-4759-b628-6424187c95d3/view 的腳本


並且可以在 https://mockbin.org/bin/31df6e74-9d7f-4759-b628-6424187c95d3/log 查看日誌

 

Mocky 還提供了一個 API,允許檢索所有訪問日誌和託管腳本。 我們從VirusTotal收集了所有垃圾箱標識符,隨後收集了相關的日誌。 我們在這裡分享了我們用來説明研究人員進行進一步調查的腳本。

從每個箱ID收集數據后,我們查看了腳本。

 

大多數都是相同的,唯一的區別是 mocky.io 位址。 它首先使用函數「getBrowserVersion」來確定正在使用的瀏覽器。 從那裡,它重定向到下一階段。 在使用者代理中存在字串「win」但不包含字串「wow」的Windows使用者,並且瀏覽器版本高於100,將被重定向到 mocky.io。 否則,定向到 msn.com。

在Splunk中,我們能夠開發一個簡單的查詢,以顯示大多數ClientIPAddress進入 mockbin.org 連結的地理位置。
| inputlookup extractedips.csv
| iplocation A
| geostats latfield=lat longfield=lon count

 

安全内容
在我們的整個研究過程中,我們為 Forrest Blizzard 設計了一個新的分析故事以及相關的先前分析。 此外,我們通過製作兩個不同的分析來增強我們的分析集。 這些旨在幫助防禦者確定 mocky.io 和 mockbin.org 的利用率基線,以及檢測其環境中的無頭流覽。


無頭瀏覽器用法
下面概述的分析利用端點進程和命令行數據來精確定位無頭瀏覽的實例。 其主要目標是幫助組織建立正常活動的基線,從而更容易識別潛在威脅。
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime from datamodel=Endpoint.Processes where
(Processes.process=*--headless* AND Processes.process="*--disable-gpu*") by Processes.dest Processes.user Processes.parent_process
Processes.process_name Processes.process Processes.process_id Processes.parent_process_id sourcetype
| `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`




無頭瀏覽器類比箱或類比請求
我們開發的第二種分析旨在檢測直接訪問 mockbin.org 或 mocky.io 網站的無頭流覽,與CERT-UA共用的發現保持一致。
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime from datamodel=Endpoint.Processes where
(Processes.process=*--headless* AND Processes.process="*--disable-gpu*" AND (Processes.process="*mockbin.org/*" OR Processes.process="*mocky.io/*")) by Processes.dest Processes.user Processes.parent_process
Processes.process_name Processes.process Processes.process_id Processes.parent_process_id sourcetype
| `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`



結語
這場戰役為現代對手不斷發展的戰術提供了驚人的證明。 他們能夠將合法的開發人員工具和公共服務重新用於惡意目的,這對網路安全社區來說既是挑戰也是機遇。 隨著威脅變得越來越複雜和隱蔽,我們識別、分析和抵消這些策略的能力變得更加重要。 本分析中分享的發現強調了持續警惕、研究和協作的重要性。 通過瞭解對手的方法,我們可以更好地裝備自己,以預測和減輕未來的威脅。

 

返回上一頁