NSA 攻擊工具再遭利用,windows、linux伺服器淪為挖礦工具

CCkicker發表於2017-12-19

ZEALOT:新型Apache Struts 漏洞利用——利用NSA漏洞在內網挖門羅幣

1

 

F5研究員發現了一種新型Apache Struts 漏洞利用。這種惡意行動利用NSA EternalBlue 和 EternalSynergy兩種漏洞,執行於多個平臺,目標為內部網路。

 

研究人員將其命名為“Zealot”,因為其zip檔案中包含有NSA所釋出的python指令碼。隨著研究的深入,此文章會進一步更新,目前我們所知道的有:

  • 新型Apache Struts 目標為Windows和Linux系統
  • Zealot的攻擊複雜,多平臺,且及其模糊
  • Zealot利用的伺服器均有以下兩種漏洞
    • CVE-2017-5638:Apache Struts Jakarta Multipart Parser attack
    • CVE-2017-9822:DotNetNuke (DNN) content management system vulnerability
  • 此次攻擊升級了EternalBlue 和 EternalSynergy 兩種漏洞,以便後期進入內網。
  • 它有一個高度模糊的PowerShell Windows代理和一個為Linux/OS X準備的Python代理,這個代理看似基於EmpireProject 利用後框架。
  • Zealot 目前在挖門羅幣,在網路犯罪中廣受歡迎。

介紹


 

研究員第一次發現此Apache Struts活動時,這個惡意活動看似是自2017年3月首次發現後便廣泛傳播,被用來利用所有存在Jakarta Multipart Parser attack (CVE-2017-56381) 漏洞的伺服器。Zealot 同時還利用了DNN 漏洞(CVE-2017-98222),這個漏洞於2017年7月被首次發現。

 

Zealot野心勃勃的利用這兩個漏洞,將目標指向Windows 和 Linux 系統。如果這些請求分開傳送,我們也可以把它看成傳送同樣載荷的兩個不同的行動。

 

但是仔細看一下這些高度模糊的載荷,我們發現這遠非一個簡單的攻擊,它更復雜,在更多平臺攻擊,可以橫向位移,且對NSA的EternalBlue 和 EternalSynergy兩種漏洞 做了升級。

 

雖然目前Zealot活動只是在挖門羅幣,但是利用這些已經損壞的系統,他們可以為所欲為。

目標 Apache Struts Jakarta Multipart Parser (CVE-2017-5638)


 

攻擊始於網路掃描和兩個HTTP請求。其中一個請求便是臭名昭著的 通過內容型別標頭(Content-Type header)利用Apache Struts 漏洞。大多數Apache Struts 漏洞活動針對的目標要麼是Windows或是Linux平臺,而Zealot有載荷,目標是這兩個平臺。
2
圖1 HTTP請求針對STRUTS

 

如果伺服器很脆弱,那就會執行JAVA,損害底層作業系統。

Linux 被利用後

針對Linux平臺,該惡意行動會在後臺使用“nohup”指令,執行shell指令,即使shell被關閉,該程式依然會繼續執行。該指令會下載並執行一個spearhead bash指令碼。

下載和執行方法

Zealot會通過幾種方法來捕捉該指令碼。首先,它會通過TCP 插口連結一個遠端伺服器,將收到的資料重新導向shell。如果失敗,Zealot將使用“curl”和“wget”工具下載並執行一個名為“larva”的檔案,然後立刻刪掉。

 

3

 

4

 

圖2 Shell 指令 捕捉、執行larva bash 指令碼

 

這些下載和執行技巧被用用於後來所有使用的惡意軟體,作者將之歸類為“tcp”和“http”下載單元。

“larva”spearhead Deliveries

下載的bash指令碼會通過測試之前定義的mutex(互斥體,21915)是否存在,來檢查該機器是否已被感染。如果存在,則終止,否及將繞一圈繼續執行。

 

5
圖3 測試機器是否感染

 

然後它會使用同樣的下載和執行技巧,捕捉一個名為“mule”的檔案,這是一個加密貨幣挖礦機的惡意軟體。

 

6
圖4 “larva” 指令碼提交一個加密貨幣挖礦機“mule”

 

接下來,它會將一個內建的64進位制模糊python程式碼 注入一個新的Python程式。

 

7
圖5 內建64進位制編碼的 python程式碼

Little Snitch 和未知類別

可以看到,這個python程式碼會檢查是否“Little Snitch” 程式是否在執行(“Little Snitch”是一個針對mac OS 的防火牆設定服務 )。如果在執行,那麼python程式碼會停止。如果未執行,那麼它會向C&C伺服器傳送請求,捕捉另一段python程式碼。

 

8
圖6 Little Snitch 防火牆檢查

 

該指令碼與伺服器交流的方式遠比一般殭屍網路要複雜的多。傳送請求給 C&C伺服器後,會增加特定使用者代理和Cookie headers。這樣的話,任何試圖通過個人瀏覽器或工具進入C&C 伺服器的人都無法獲得與惡意軟體相同的響應。

 

9
圖7 使用特定HTTP 頭部值向C&C伺服器傳送請求

 

收到的內容被RC4 密碼加密過,一般的網路檢測裝置只能看到內容,但是無法研究或者掃描。只有指令碼有金鑰。而此次我們收到的是另一段Python程式碼,可用RC4 密碼解密,解密後立即執行。

 

10
圖8 在HTTP響應中應用的 RC4解密路徑

Windows 被利用後

如果檢測到Windows,STRUTS 載荷會通過一種隱蔽的方法執行一個PowerShell interpreter,即64進位制編碼的程式碼。一旦被解碼2次,就會出現混淆指令碼。去混淆之後,就能發現一個URL,進入一個檔案,而這個檔案是從另一域名下載的。

 

11
圖9 2層解碼過後的混淆指令碼

加密貨幣礦機的DLL注入

該下載的檔案,是一個更加模糊的PowerShell 指令碼“scv.ps1”,一旦去混淆,整個過程都明瞭了。

 

主要的部署程式將開始下載礦機惡意軟體並執行。然後下載一個相同的惡意軟體作為DLL,並使用Reflective DLL注入技巧,將惡意軟體注入進更多的PowerShell 程式中。

在內網傳播、繁殖

如果windows裝置上未安裝 python 2.7,它會下載一個python 安裝包並執行。然後下載主要的python 模組(“probe.py”),將感染傳入內網。該指令碼使用“pyminifier”進行混淆,這是一個Python程式碼最小化,混淆和壓縮的公共包。原指令碼是一個64進位制編碼的指令碼,壓縮過20次。

 

12
圖10 使用“pyminifier”混淆過的python 指令碼

 

“probe.py” 指令碼決定該平臺是32位或64位的,還有底層作業系統。

 

13
從星際爭霸遊戲中取得部分變體名和值

 

如果你對該變體和相應的數值很熟悉的話,那你應該和攻擊者一樣,也是星際爭霸的粉絲了。 Zealot, Raven, Observer, and Overlord都是該遊戲中的典型人物。

 

隨著漏洞利用在windows裝置上的進行,它會下載 “zealot.zip” 和“raven64.exe”檔案。 “zealot.zip” 包含有幾個python指令碼和函式庫,攻擊者的指令碼全部都用 “pyminifier”工具混淆了。

 

14
圖12“zealot.zip”資料夾的內容

 

“raven64.exe”會掃描內網的445埠,並觸發 zealot.py,向win7和win8系統中注入3中不同的shellcode,以利用 EternalSynergy 和 EternalBlue兩個漏洞。

 

15
圖13 “zealot.py” 執行兩個漏洞利用

 

注入的shellcode一旦成功執行,它會開始執行PowerShell,下載 相同的“scv.ps1” 代理。不同的是,這一次是不同的伺服器。

 

15
圖14 Windows 8 的shellcode包含編碼過的Powershell程式碼

 

與EternalBlue漏洞利用使用外部檔案作為他們的shellcode不同,EternalSynergy 漏洞利用有內建shellcode,且試圖從另一個伺服器下載並執行一個名為“minerd_n.ps2”的PowerShell指令碼。

礦機

“mule” 惡意軟體是一個專挖門羅幣的惡意軟體。門羅幣因其高匿名性的特點,已成為網路犯罪的一個熱門貨幣。向特定礦機地址所支付的金額高達約8,500美元,目前,尚不清楚此次行動可以賺多少錢。

 

16
圖15 Mule 惡意礦機的值

Leveraging Off-the-Shelf Tools

Zealot攻擊者使用了公共EmpireProject,這是一個PowerShell和Python 漏洞利用後期代理。

 

17

DotNetNuke Exploitation (CVE-2017-9822)

Zealot攻擊者傳送的另一個指令是利用DotNetNuke,一個基於ASP.NET的內容管理系統,通過一個易受攻擊的DNNPersonalization cookie(CVE-2017-9822)傳送一個序列化的物件。

 

18
圖17 HTTP請求,指向 DNN

 

為了獲得任意的程式碼執行,攻擊者使用ASP.NET“ObjectDataProvider”小工具和“ObjectStateFormatter”格式化工具來嵌入另一個物件並呼叫一個shell。 “ObjectStateFormatter”提供了第二級混淆,因為嵌入物件是64進位制編碼。 被呼叫的shell將執行一個base64編碼的PowerShell指令碼,而這個指令碼也是通過Apache Struts漏洞傳遞的。

 

19
圖18:包含編碼的PowerShell載荷的ASP.NET序列化物件

結論

Zealot似乎是第一個使用NSA漏洞在內部網路中傳播的Struts活動。 還有其他類似NotPetya和WannaCry勒索軟體的惡意軟體,以及Adylkuzz cryptominer通過直接掃描網際網路來攻擊中小企業,利用ShadowBrokers釋出的NSA工具進行攻擊。 然而,Zealot運動似乎正在開啟新的攻擊載體,通過網路應用程式漏洞自動在內部網路上傳播惡意軟體。

 

目前,如果您尚未使用CVE,請立即修補您的系統,並強烈考慮實施Web應用防火牆以實現自動化保護。

 

來源:https://f5.com/labs/articles/threat-intelligence/cyber-security/zealot-new-apache-struts-campaign-uses-eternalblue-and-eternalsynergy-to-mine-monero-on-internal-networks

 

本文由看雪翻譯小組 哆啦咪 編譯

相關文章