Jump to content

在過去的六個月裡,微軟的研究人員發現一種名為XorDdos的Linux木馬的活動增加了254%。 XorDdos是由MalwareMustDie研究團隊於2014年首次發現的,其名稱來源於其在Linux終端和服務器上的拒絕服務相關活動,以及其在通信中使用基於XOR的加密。

存在於linux的操作系統的XorDdos惡意軟件越來越多,而linux操作系統通常部署在雲基礎設施和物聯網設備上。通過破壞物聯網和其他聯網設備,XorDdos積累了可用於執行分佈式拒絕服務(DDoS)攻擊的殭屍網絡。使用殭屍網絡執行DDoS攻擊可能會造成重大破壞,例如微軟在2021年8月緩解的2.4TbpsDDoS攻擊。由於多種原因,DDoS攻擊本身可能會帶來很大的問題,但此類攻擊也可以用作掩護隱藏進一步的惡意活動,例如部署惡意軟件和滲透目標系統。

殭屍網絡也可以被用來危害其他設備,XorDdos以使用SecureShell(SSH)暴力攻擊來獲得對目標設備的遠程控製而聞名。 SSH是IT基礎設施中最常見的協議之一,它可以在不安全的網絡上進行加密通信以實現遠程系統管理,使其成為攻擊者的首選工具。一旦XorDdos識別出有效的SSH憑證,它就使用根權限運行一個腳本,該腳本將下載XorDdos並將其安裝到目標設備上。

XorDdos使用規避和持久性機制,使其操作保持穩健和隱秘。它的規避能力包括混淆惡意軟件的活動、規避基於規則的檢測機制和基於哈希的惡意文件查找,以及使用反取證技術來破壞基於進程樹的分析。研究人員在最近的活動中觀察到,XorDdos通過用空字節覆蓋敏感文件來隱藏惡意活動以防止分析。它還包括支持不同Linux發行版的各種持久性機制。

1.png

XorDdos惡意軟件的典型攻擊載體

XorDdos還被用來傳遞其他危險的威脅。研究人員發現,最先被XorDdos感染的設備後來又被其他惡意軟件感染,比如Tsunami後門,該後門進一步部署了XMRig挖礦程序。雖然研究人員沒有觀察到XorDdos直接安裝和傳播像Tsunami這樣的二級有效負載,但該木馬有可能被用作後續活動的載體。

MicrosoftDefenderforEndpoint通過檢測和修復木馬在其整個攻擊鏈中的多階段模塊化攻擊以及終端上的任何潛在後續活動來防止XorDdos。在本文中,研究人員將詳細分析XorDdos,以幫助防御者了解其技術並保護他們的網絡免受這種隱秘惡意軟件的攻擊。

初始訪問XorDdos主要通過SSH暴力進行傳播。它使用一個惡意的shell腳本在數千個服務器上嘗試各種根憑據組合,直到在目標Linux設備上找到匹配項。因此,研究人員在成功感染惡意軟件的設備上看到許多失敗的登錄嘗試:

2.png

在受XorDdos影響的設備上嘗試登錄失敗

研究人員的分析確定了XorDdos的兩種初始訪問方法。第一種方法是將惡意ELF文件複製到臨時文件存儲/dev/shm中,然後運行它。 /dev/shm中寫入的文件會在系統重啟時被刪除,從而在取證分析過程中隱藏感染源。

第二種方法涉及運行一個bash腳本,該腳本通過命令行執行以下活動:

1、迭代以下文件夾以找到一個可寫目錄:

/bin

/home

/root

/tmp

/usr

/etc2、如果已找到可寫目錄,則將工作目錄更改為已找到的可寫目錄。

3、使用curl命令從遠程位置下載ELF文件有效負載hxxp://Ipv4PII_777789ffaa5b68638cdaea8ecfa10b24b326ed7d/1[.]txt並將文件保存為ygljglkjgfg0。

4、將文件模式改為“可執行”。

5、運行ELF文件負載。

6、移動和重命名Wget二進製文件,以規避惡意使用Wget二進製文件所觸發的基於規則的檢測。在這種情況下,它將Wget二進製文件重命名為good,並將文件移動到以下位置:

mv/usr/bin/wget/usr/bin/good

mv/bin/wget/bin/good7、嘗試第二次下載ELF文件有效負載,現在只使用filegood而不是Wget二進製文件。

8、運行ELF文件後,使用反取證技術通過用換行符覆蓋以下敏感文件的內容來隱藏其過去的活動:

3.png

初始訪問使用的遠程bash腳本命令

無論使用哪種初始訪問方法,結果都是一樣的:運行惡意ELF文件,即XorDdos惡意軟件。接下來,我們將深入研究XorDdos有效負載。

XorDdos有效負載分析本文研究分析的XorDdos有效負載是一個32位ELF文件,沒有被用過,這意味著它包含調試符號,詳細說明了惡意軟件的每個活動的專用代碼。與丟棄這些符號的被污染過的二進製文件相比,包含調試符號使調試和反向工程非污染二進製文件更容易。在這種情況下,未污染的二進製文件包括以下與符號表條目關聯的源代碼文件名,它們是ELF文件中.strtab部分的一部分:

crtstuff.c

autorun.c

crc32.c

encrypt.c

execpacket.c

buildnet.c

hide.c

http.c

kill.c

main.c

proc.c

socket.c

tcp.c

thread.c

findip.c

dns.c上面的源代碼文件名列表表明二進製文件是用C/c++編程的,並且它的代碼是模塊化的。

反檢測能力XorDdos包含具有逃避檢測的特定功能模塊,詳細信息如下。

守護進程(Daemonprocess)守護進程是一個在後台運行而不是在用戶控制下的進程,它與控制終端分離,僅在系統關閉時終止。與某些Linux惡意軟件系列類似,XorDdos木馬使用守護進程(如下詳述)來破壞基於進程樹的分析。守護進程(Daemon)是一類在後台長期運行的特殊進程,一般在系統引導時開始啟動,一直運行到系統關閉。守護進程一般用於提供某種服務,比如log打印守護進程syslogd,任務規劃守護進程crond,實現Dbus總線功能的dbus守護進程等。

1、惡意軟件調用子程序daemon(__nochdir,__noclose)將自己設置為後台守護進程,該進程在內部調用fork()和setsid()。 fork()API創建一個與調用進程具有相同進程組ID的新子進程。

2、成功調用fork()API後,父進程通過返回“EXIT_SUCCESS(0)”停止。目的是保證子進程不是組進程的leader,這是setsid()API調用成功的前提。然後它調用setsid()將自己與控制終端分離。

3、如果調用第一個參數__nochdir的值等於“0”,則守護程序子例程還具有將目錄更改為根目錄(“/”)的規定。守護進程將目錄更改為根分區(“/”)的原因之一是因為從掛載的文件系統運行進程會阻止卸載,除非進程停止。

4、它將第二個參數__noclose傳遞為“0”,以將標準輸入、標準輸出和標準錯誤重定向到/dev/null。它通過在/dev/null的文件描述符上調用dup2來做到這一點。

5、惡意軟件調用多個信號API以忽略來自控制終端的可能信號,並在終端會話斷開時將當前進程與標準流和掛斷信號(SIGHUP)分離。執行這種規避信號抑制有助於阻止標準庫嘗試寫入標準輸出或標準錯誤或嘗試從標準輸入讀取的影響,這可能會阻止惡意軟件的子進程。 APIsignal()將信號符號的處置設置為處理程序,它是SIG_IGN、SIG_DFL或程序員定義的信號處理程序的地址。在本例中,第二個參數被設置為'SIG_IGN=1',它忽略了與signum對應的信號。

6.png

忽略與終端相關操作相關的信號

基於XOR的加密顧名思義,XorDdos使用基於xor的加密來混淆數據。它調用dec_conf函數來使用XOR秘鑰“BB2FA36AAA9541F0”對編碼字符串進行解碼。下表顯示了在惡意軟件的各個模塊中用於執行其活動的混淆數據的解碼值。

7.png

進程名稱欺騙當一個進程啟動時,參數作為以null結尾的字符串提供給它的main函數,其中第一個參數始終是進程映像路徑。為了欺騙其進程名稱,XorDdos在運行時將所有參數緩衝區清零,並使用虛假命令行(例如catresolv.conf)覆蓋它的第一個包含圖像路徑的參數緩衝區。

8.png

通過修改與參數向量關聯的內存來實現進程名稱欺騙

9.png

'ps-aef'的輸出包含一個'catresolv.conf'條目

內核rootkit一些XorDdos示例安裝內核rootkit。 rootkit是一個內核模塊,通過修改操作系統數據結構來隱藏惡意代碼的存在。 XorDdos內核rootkit通常具有以下功能:

提供根訪問;

隱藏內核模塊;

隱藏惡意軟件的進程;

隱藏惡意軟件的網絡連接和端口;

根據在rootkit中發現的調試符號,XorDdos的rootkit代碼很可能受到了名為rooty的開源項目的啟發。下表描述了rootkit中的符號及其相應的功能:

10.png

進程和端口隱藏該惡意軟件試圖使用其內核rootkit組件隱藏其進程和端口。隱藏進程有助於惡意軟件規避基於規則的檢測。

/proc文件系統包含與所有正在運行的進程相關的信息。用戶模式的進程可以通過讀取/proc目錄來獲取任何與進程相關的信息,該目錄包含系統中每個正在運行的進程的子目錄,例如:

/proc/7728——包含與進程ID(PID)7728相關的信息;

/proc/698——包含PID698相關信息;

運行strace-eopenps命令檢查/proc/$pid上的open調用的踪跡,以獲取ps命令中正在運行的進程的信息。

11.png

如果惡意軟件隱藏了$pid特定目錄,它可以隱藏從用戶模式獲取相應進程。

在本例中,惡意軟件可以通過發送帶有附加信息的輸入和輸出控制(IOCTL)調用來與其rootkit組件/proc/rs_dev進行通信,以採取適當的措施。 IOCTL是用戶模式服務和內核設備驅動程序之間通信的一種方式。該惡意軟件使用數字“0x9748712”從系統中的其他IOCTL調用中唯一識別其IOCTL調用。

除了這個數字,它還傳遞一個整數數組。數組中的第一個條目對應於命令,第二個條目存儲要操作的值,例如$pid。

12.png

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...