Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86376178

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

微信截图_20231129213020.png

Check Point Research (CPR)提供了一些最近針對Linux系統和ESXi系統的勒索軟件攻擊案例,不難發現,這些攻擊在過去幾年一直在增加。

2021年發布的Babuk源代碼顯然促進了大量勒索軟件的出現,許多針對Linux大量使用OpenSSL庫以及ChaCha20/RSA和AES/RSA的算法接連出現。

分析介紹我們對一些頂級勒索軟件家族(總共12個)進行了研究,發現這些勒索軟件要么是直接為Linux系統開發的,要么是用具有強大跨平台組件的語言開發的,比如Golang或Rust,允許它們在Windows和Linux上不加區分地編譯。

為了更好比較Linux和Windows開發的勒索軟件,我們首先需要關注這兩個系統的歷史演變。

1.png

Linux勒索軟件

2.png

Windows勒索軟件

首先,我們注意到,第一個可查的勒索軟件樣本(儘管處於非常早期的階段)可以追溯到1989年。這種被稱為AIDS的威脅是通過軟盤和目標Windows系統傳播的。

直到2004年的GPCode,我們才開始看到第一批惡意軟件。它們專注於Windows環境,很快勒索軟件威脅開始進行演變,如2006年的Archiveus,或2012年作為第一個RaaS出現的Reveton。

到2015年,有了Linux.Encoder.1,這是專門針對Linux的勒索軟件。此時,網絡威脅已經在Windows系統中得到高度發展。儘管這些威脅在Windows中很成熟,但並不能直接轉移到Linux上。

事實上,儘管在2015年已經有針對Linux的勒索軟件,但相比來說,數量仍然非常少。從2020年開始一直到現在,RaaS的Linux版本以及用Golang或Rust等語言開發的跨平台樣本開始出現。

技術分析在目前針對基於linux的操作系統的攻擊中,我們分析了一些最新的:

Maori

Cl0p

Cylance

Royal

ViceSociety

IceFire

BlackCat

ESXiArgs

Rorschach

Monti

LockBit

GwisinLocker

在許多情況下,工具本身被簡化了,在二進製文件中只會留下最小的功能和內容,在某些情況下,只將它們減少到文件加密代碼。這使得本文所列舉的樣本非常依賴外部配置、腳本或命令行來配置其目標。最著名的例子之一是Cl0p,它只具有加密功能,它支持的唯一參數是要加密的路徑。

在名為“ESXiArgs”的勒索軟件中,二進製文件本身甚至沒有嵌入RSA公鑰,但需要包含密鑰的文件的路徑作為參數,以便它可以執行加密,這個樣本甚至沒有加密整個目錄的功能,攻擊者必須用執行加密器的腳本遍歷每個文件。事實上,惡意軟件的名稱是由使用該惡意軟件的攻擊者的https給出的,它特意麵向這種類型的系統。

除了加密功能之外,許多面向linux的勒索軟件幾乎沒有什麼邏輯,因此檢測它們可能是一項挑戰,因為它們的所有代碼都基於許多其他合法應用程序可能包含的相同加密代碼。

在許多樣本中,與服務器的通信協議,是為加密系統做準備的一些命令執行。創建某種持久性的功能(在許多最活躍的Windows系列中發現),甚至是嵌入式配置都是異常元素,可以實現更詳細的惡意軟件檢測,但在大多數勒索軟件中不存在。

當然,也有一些例外,比如BlackCat,它是一個跨平台的樣本,具有特定於windows的功能,如刪除影子副本或搜索共享文件夾。再比如GwisinLocker,它有一個嵌入式加密配置,允許它在不需要參數的情況下工作,並且更加獨立。

最主要和最顯著的動機無疑是對ESXi虛擬化系統的特殊興趣。通過攻擊這些系統,攻擊者可以極大地影響多個服務和設備(所有使用這種技術虛擬化)。這可能就是為什麼絕大多數以linux為目標的勒索軟件,儘管除了加密本身之外幾乎沒有什麼功能,卻傾向於運行旨在與ESXi系統交互的特定命令,特別是:

3.png

Linux勒索軟件圖

需要指出的是,由於ESXi系統與Linux系統並不完全相同,因此發布的不同樣本包含有靜態鏈接,以便它們可以在兩個系統上獨立運行。

在所有以linux為中心中,一個非常普遍的模式是,他們傾向於關注特定的技術,這些技術主要與這些系統中這類威脅的主要攻擊途徑有關。與我們習慣的針對Windows的攻擊不同,比如Ryuk或REvil,它們的攻擊通常是通過針對許多用戶的網絡釣魚活動發起的,Linux最常見的攻擊鏈之一是利用受害者服務器某些暴露服務的漏洞。 ESXi中的漏洞也是如此,但也有其他情況,例如IceFire利用IBM技術中的漏洞(CVE-2022-47986)或Cl0p,其Linux版本的目標目錄中有幾個與Oracle數據庫相關的路徑以及Linux系統的通用路徑。

攻擊途徑在Windows環境中,勒索軟件攻擊者採用廣泛的攻擊途徑來破壞系統。許多具有攻擊性的針對windows的勒索軟件,通過包含惡意附件(通常在文檔中使用宏)或鏈接的網絡釣魚電子郵件到達受害者的基礎設施。例如,Emotet通常是最初的有效負載,受害者基礎設施的完全攻擊隨著Ryuk或Sodinokibi樣本的部署而結束。

除了釣魚電子郵件,過去使用Rig和Magnitude等漏洞工具來利用瀏覽器或插件等軟件中的漏洞,來導致勒索軟件的執行(現在已經不常見了)。

另一個常見的攻擊途徑是利用或暴力破解暴露在互聯網上的遠程桌面協議(RDP)服務器。

利用暴露服務上的漏洞是勒索軟件的主要攻擊手段之一。值得注意的是,在這些情況下,攻擊鏈通常涉及到Webshell的部署,最終成為最初允許他們訪問並控制相關服務器的工具。

使用被盜憑證獲取訪問權限(例如,使用SSH)是另一個正在增長的領域。憑證被盜通常是由於其他惡意軟件攻擊引起的洩漏,或者是由於涉及整個Windows系統網絡的同一攻擊的橫向移動。

在這些情況下,在Linux系統內進行檢測是非常複雜的,因為攻擊者經常使用內部系統帳戶和合法工具來訪問系統,而不是後門,其影響與在Windows系統上使用lolbin非常相似。

Linux系統的另一個常見入口類似於Windows系統中的RDP服務,掃描不同的公開服務,然後進行暴力攻擊,試圖通過弱憑據獲得對服務器的訪問權。

這是一種非常“嘈雜”的技術,但仍然有效,並且由於訪問是通過從公開的服務本身獲得的合法憑據進行的,因此難以識別。

如果我們觀察Linux服務器的所有常見攻擊途徑可以發現,每種模式都針對暴露的服務器和關鍵服務。我們可以看到以linux為目標的勒索軟件攻擊更側重於組織和公司,而不是普通用戶。

代碼重用正如許多其他類型威脅的惡意軟件家族(如Mirai或Quasar)一樣,一旦成功威脅的源代碼被發布,其他組織就會迅速出現,並試圖利用這些代碼通過小的修改(在某些情況下不是那麼小)來創建自己的工具。就Linux勒索軟件而言,最引人注目的是Babuk勒索軟件,我們可以在許多其他勒索軟件中找到Cylance或Rorschach樣本。

微信截图_20231129214317.png

基於Babuk的代碼重疊

在許多情況下,對初始工具的檢測允許我們檢測可能從源代碼中出現的所有子家族。

持久性比較持久性在勒索軟件中並不像在其他類型的威脅中那麼重要,因為一旦受害者的文件和目錄被加密,在同一系統中再次執行基本上是沒有意義的。然而,這種類型的惡意軟件的攻擊鏈確實有了很大的發展,特別是在Windows環境中,因為其目的不是加密單個計算機,而是傳播到其他計算機。在大多數情況下,攻擊者的目標是一點一點地破壞整個基礎設施,一旦他們取得了控制權,整個AD就會被加密,例如,通過GPO的方式,或者對最關鍵的計算機進行加密,以增加攻擊者收到贖金的機會。

在執行勒索軟件之前,會執行一系列允許攻擊者訪問系統的威脅和工具。這些確實需要持久性,因為整個基礎設施的攻擊可能需要很長時間。然而,儘管這是最常見的場景,但在某些情況下,威脅本身俱有建立持久性的功能。

在Windows環境中,勒索軟件通過各種手段實現持久性。最著名的例子包括註冊表操縱,如WannaCry和Ryuk,確保其有效負載在系統啟動期間執行,以及使用計劃任務,如Sodinokibi (REvil)背後的許多威脅攻擊者,利用Windows任務調度程序創建惡意任務,確保勒索軟件定期執行。

在Windows系統上獲得持久性的另一種常見方法是服務創建,這是最嚴格的。因為它需要受害者計算機上的管理員權限,但在更高級的攻擊階段,攻擊者已經獲得了必要的憑據,並對基礎設施有一定的控制,這是最常用的方法之一。

在ESXi和Linux系統中,很少看到勒索軟件採用許多已知的持久性方法,這些方法通常被其他類型的威脅所利用。在訪問後,易受攻擊的服務器被直接加密,並且在許多情況下,例如Lockbit, ESXiArgs, BlackCat或Gwisin,惡意軟件在執行後具有自我刪除的功能。

作為攻擊過程一部分的webshell的部署也應該被視為維護持久性。 webshell充當後門,允許攻擊者在重新啟動或任何類型的更改後保持對這些服務器的訪問。在更複雜的攻擊期間通過橫向移動訪問服務器的場景中,這種情況下的持久性主要減少到創建用戶帳戶或洩露原始服務器憑據,這允許攻擊者通過合法服務(如SSH)維持訪問。

最後,考慮到與Linux系統相關的事件與Windows系統相比的明顯演變,遲早會部署後門,如Merlin或Poseidon,就像現在在Windows上發生的Cobalt Strike一樣,將變得更加普遍。因此,攻擊者需要利用在Windows系統中更相似的技術,例如Cron job(相當於Windows任務調度程序)或Daemons(相當於Windows服務)等執行來獲得持久性。

主要目標在面向linux的勒索軟件的受害者類型和目標方面,我們看到了與Windows同類軟件的一些最大差異。首先,我們必須考慮到這些系統所處的環境。 Windows在個人電腦和大多數組織的用戶工作站中更為普遍,然而,在服務器領域,特別是對於使用Linux的某些類型的部署,Linux通常是唯一有效的選擇。

這意味著,就像我們可以很容易地找到多個針對個人和終端的Windows勒索軟件家族一樣,這在Linux系統中要少見得多。針對Linux的勒索軟件更明確地指向暴露的服務器或內部網絡上的服務器,這些服務器可以從Windows設備上發起的攻擊轉向訪問。

因此,與Windows威脅相比,Linux勒索軟件顯然是針對中型和大型組織的,Windows威脅在本質上要普遍得多。

同樣,這兩個系統的內部結構也導致攻擊者選擇要加密的文件夾和文件的方式有所不同。我們可以在許多面向linux的樣本中找到清單,這些清單旨在避免/boot、/etc或/sys等可能導致系統損壞的目錄,就像我們看到Windows惡意軟件避免使用一樣。

在Windows惡意軟件中沒有包含目標的配置時,它會不加區分地遍歷所有系統磁盤。在Linux惡意軟件中,更常見的是發現威脅完全依賴於提供一個或多個目標目錄的參數或配置,沒有這些參數或配置,威脅就不會執行。例如Royal, Monti, Cylance或Lockbit。

Linux和Windows中擴展管理的差異也會讓攻擊者產生一些奇怪的行為。 Cl0p就是這樣一種情況,它使用字符“.”來區分文件和文件夾。這在Windows中非常有效,但在Linux中不一定能很好地工作,因為擴展在這個系統中幾乎沒有相關性。

5.png

Cl0p勒索軟件使用“.”進行擴展

但並非所有系列中都存在該參數,對於其他示例,值得注意的是,除了與ESXi或CL0p相關路徑(Oracle路徑為“/u01/u02/u03/u04”)的特定情況外,/home和/root文件夾是配置中最常見的文件夾,然後是在某些情況下出現的/opt。

洩露在Linux中,洩漏通常與攻擊載體有關。在使用被盜憑證發生攻擊的情況下,通常使用合法工具(如SSH服務)獲得訪問權限,這同時允許從服務器提取所有類型的信息,而無需部署其他工具。

同樣,在許多情況下,利用漏洞獲得服務器訪問權與Webshell的部署相關聯,類似的情況大多數發生在Webshell,以及執行Linux命令的功能。因此,它們經常被用作進行滲透的工具。

在Windows系統中,使用RDP、WinSCP或RClone可能與使用SSH或其他合法工具(如Linux中的Curl或Wget)類似。在Windows中非常常見,而在Linux中不太常見的是使用更複雜的威脅,例如過去的威脅Trickbot或Emotet,或者為此目的使用CobaltStrike或其他開發後框架。隨著勒索軟件樣本的成熟,攻擊者的https也很可能會成熟,並且我們最終會在Linux中看到使用後門(如Merlin或Poseidon)的這種場景。

值得注意的是,勒索軟件組織利用雙重勒索已經有一段時間了,因為他們不僅劫持文件,還威脅要在他們的洩密網站上暴露受害者的敏感信息。事實上,Cl0p等幾個知名組織已經開展了一些活動,在這些活動中,他們直接跳過了加密工具,只專注於為隨後的勒索活動竊取信息。

對系統的影響在勒索軟件事件中,在檢測和取證級別上,關鍵點是攻擊者對系統的影響超出了加密本身。在Windows環境中,我們習慣於嚴密監控旨在刪除ShadowCopies、禁用備份以及試圖禁用或繞過安全工具的命令。

執行旨在關閉目標服務(如數據庫)的命令也相對常見,因為這允許威脅對大多數關鍵文件進行加密,從而增加受害者支付贖金的壓力。

在Linux系統中,對備份和關閉安全工具的擔憂還沒有Windows那麼普遍。然而,如果保持適當的監控,我們可以發現一些影響系統的元素,這些元素可以幫助早期檢測。第一個例子在Windows環境中很常見,它是一個互斥鎖,在開始加密之前由許多威脅創建,以避免同時執行可能損壞文件而不可能返回。就像在Windows中生成特定的互斥鎖對某些家庭起到保護的作用一樣,在Linux中,我們有像Lockbit這樣的樣本,默認情況下,它會生成一個名為/tmp/loker.pid的文件,如果該文件在執行時已經在系統中,則會導致進程立即終止(無論之前生成該文件的進程是否為勒索軟件本身)。

與Windows中發生的情況類似,一些家族生成較少重複的文件,例如Gwisin,其生成的互鎖文件更具隨機性: /tmp/.66486f04-bf24-4f5e-ae16-0af0fdb3d8fe。

當涉及到檢測時,一個更簡單但效率更低的版本是日誌文件。在加密過程中,從真實的攻擊活動中找到帶有調試信息的文件並不罕見,例如HelloKitty勒索軟件或Monti,它們分別生成work.log和result.txt文件,其中包含有關其執行和加密的信息,其內部字符串非常具有這兩個家族的特徵。但是,應該注意的是,這些文件的存在在任何情況下都不會阻止它們的執行,就像Mutex那樣。

關於可以監控的命令的執行,唯一真正值得注意的案例是關於ESXi系統上的虛擬化。大多數面向linux的勒索軟件樣本都有ESXi版本,或者以直接兼容的方式編譯。這就是為什麼在這些樣本中獲得正在運行的設備列表以及停止它們允許加密的功能非常常見的原因。

6.png

Royal ransomwareMonti Ransomware中嵌入的Esxi命令

7.png

Esxi命令嵌入Monti勒索軟件

Gwisin和BlackCat勒索軟件:

8.png

監控這種類型的執行是很有意義的,因為如果它是在加密之前發生的,這讓我們能夠預測加密,並可能及時檢測並採取行動。

加密方案每個勒索軟件威脅都要使用加密貨幣。在Windows中,在某些情況下,比如Conti,這部分是如何委託給Windows api本身的。在許多其他情況下,惡意軟件使用許多不同的加密庫,如CryptoPP(例如,PYSA Ransomware), mbedtls(例如,Petya)和libcrypt(例如,Moneybird)。

在Linux系統的樣本中,有一半的樣本使用OpenSSL庫執行所有加密任務。事實上,幾個最著名的惡意軟件在二進製文件中靜態鏈接了這個庫,佔威脅代碼的50%以上。不過還有一些惡意軟件是在Golang或Rust中開發的。

就算法而言,在Windows上,ChaCha20和RSA占主導地位。

在Linux世界中可以找到的變體數量較少。這些樣本中的大多數主要依賴於AES進行加密,ChaCha20是最常見的替方案。

不過,ESXiArgs使用Sosemanuk進行對稱加密,而其中Cl0p則在通常使用非對稱加密的地方使用帶有嵌入式密鑰的RC4。攻擊者在攻擊時會優先考慮效率,因為覆蓋所有目標文件的速度越快,遇到的防禦就越少。可靠性是第二個考慮因素,因此他們使用安全的庫和算法可以避免被分析。這兩個因素導致不同的攻擊者會創建相對統一的工具,這有助於我們深入了解所使用的工具和優先級,從而使安全研究人員能夠更容易地檢測到這種類型的威脅。

總結通過對linux為目標的勒索軟件分析可以發現,它們的核心功能通常被簡化為基本的加密過程,從而將其餘的工作留給腳本和合法的系統工具。這種極簡方法不僅使它們嚴重依賴外部配置和腳本,而且使它們更難以檢測。

研究還顯示了勒索軟件之間的一些獨特策略,明確關注ESXi系統,但也涉及其他技術。勒索軟件的主要入口途徑是暴露服務中的漏洞,在某些情況下,這些漏洞恰恰是最相關的服務,因此也是這類攻擊的主要目標。

比較Windows系統和Linux之間的勒索軟件加密技術發現,針對Linux的惡意軟件傾向於使用OpenSSL作為主要庫,AES作為通用加密基石,RSA作為主要的非對稱選擇。