網路攻擊事件頻傳,伺服器必須不間斷地提供各項網路服務,因此也成了最大受災戶,本文將描述一項針對保護不佳的Apache Tomcat伺服器的自動攻擊,如何將企業硬體變身為高階的挖礦系統。唯有仔細討論真實案例,才能從中學到教訓,並找到應對的方法。
任何向公開網際網路提供資料的系統都命在旦夕,這不僅僅只是比喻。無論是物聯網(IoT)裝置還是企業級伺服器,可以保證的是只要你允許它和外界連線,它就會受到無止盡的攻擊。
最近在為運作Apache Tomcat Web伺服器且反覆遭到入侵的公司提供支援時,發現了一種攻擊方法。在過去,伺服器營運商並不會使用端點反惡意軟體工具,因為擔心這些工具可能會阻礙伺服器的性能或造成導致停機的不穩定性,但這些問題現在已經過時了。在這種情況下,伺服器擁有者會確保伺服器的作業系統和Apache軟體是最新的,但每次清理感染時,它們幾乎馬上捲土重來。
幸運的是,伺服器營運商攔截到包含攻擊的網路封包,這很罕見。這項攻擊看起來很面熟;我們已經看過這種相當自動化攻擊的變種,然後將加密貨幣挖礦程式送到營運中的誘捕系統,但並未看到這項攻擊成功過。所以,快速處理攔截到的封包並解釋攻擊是如何運作的。
湯姆貓和傑利鼠(Tomcat and Jerry)
攻擊的根本原因看似是伺服器營運商在Tomcat系統管理頁面上,使用了一個弱式或容易被猜到的密碼。一開始,攻擊會在Tomcat系統管理面板上使用暴力登入憑證填充攻擊,一旦攻擊者成功以系統管理員身分登入,系統便大勢已去。
在猜到正確的認證後,攻擊者會對伺服器執行HTTP POST,如圖1所示。
此Tomcat系統管理頁面允許系統管理員將副檔名為.war的網頁應用程式上傳到伺服器。攻擊者上傳他們自己的admin-manager.war,該檔案中只包含一個名為admin.jsp的惡意JSP檔案。外部攻擊者呼叫這個檔案時,可以產生格式正確的伺服器設定檔,admin.jsp內容如圖2所示。
admin.jsp產生目標系統的設定檔,並可以執行admin.jsp,有三個功能:它可以產生系統分析資訊、在Apache伺服器上建立新檔案,或者使用Web伺服器帳戶的權限等級在伺服器上執行命令。
攻擊者可以使用「act」參數(可能是「action」)指定他們想要呼叫的函數,然後使用以下一個選項。此命令結構的流程是:
String Parameter1 = request.getParameter ( "p1" ) Base64 content if action is SH, Filename if action is UF
String Parameter2 = request.getParameter ( "p2" ) True if action is SH Base64 blob if action UF
三個函數(SI、SH和UF)可用於以下動作:
System Information (act=SI)
該「伺服器資訊」功能回傳如OS、電腦名稱和使用者名稱之類的資訊:
File Creation (act=UF)
當使用這個「上傳檔案」功能時,攻擊者發送的Base64字串將寫入Apache伺服器上的一個檔案:
Command execution (act=SH)
依據運作Tomcat伺服器的作業系統,此「shell」命令將嘗試使用「/bin/bash」(在*nix伺服器上)或使用Windows命令殼層或PowerShell來執行命令。另外,此功能還支援Base64編碼的命令字串。
對挖礦者傳送的命令進行排序
例如,攻擊者執行的初始命令是對受攻擊伺服器的HTTP POST,查詢字串為act=SI,伺服器的回應如圖3所示。
此結果告訴攻擊者,這個Tomcat執行個體是在64位元的Windows Server 2012電腦上執行的,甚至還給了攻擊者機器名稱(此處遮蔽以保護隱私),以及惡意.jsp的完整檔案系統路徑。至於「Hello,Peppa!」標頭資料,只能猜測攻擊者或許是孩子的一隻卡通豬(或粉絲)。
出於某種原因,攻擊者發出這個命令兩次,相隔1秒。
接下來,攻擊者發出一個「SH」命令「act=SH&p2=True&p1=(base64)」,如圖4所示。
至於base64 blob (p1)解碼,如圖5所示。
該指令碼首先終止WMIC.exe、RegSvr32.exe和PowerShell.exe,然後檢查系統是否存在PowerShell 1.0檔案路徑(%systemroot%\System32\WindowsPowerShell\v1.0\PowerShell.exe)。如果在系統中發現該路徑,它將執行Base64編碼的資料blob(圖5中底色部分)。
如果指令碼找不到PowerShell路徑,它將使用RegSvr32.exe下載並執行從命令和控制伺服器(C2)下載的init.gif載入的指令碼。該行使用指令碼輔助程式的com物件(scrobj.dll)來執行init.gif的檔案內容(內容以JavaScript編碼),如圖6所示。
甚至可以在其進行的時候,看到伺服器的PCAP回應(並且失敗),試圖終止攻擊者發出命令時沒有執行的三個處理序。
這是從封包中攔截到的HTTP POST,如圖8所示。
資料blob中的資料blob
令人困惑的是,攻擊者嵌入了一個URL,似乎是要透過命令將一串文字上傳到伺服器。但是,該URL指向另一個編碼資料blob(託管在惡意IP地址上),如果發出請求的電腦使用者代理程式是Mozilla/PS,則該IP地址僅回傳資訊。結果是抓回一大堆更多的編碼資料,如圖9所示。
為了找出這部分的目的,我們求助「大廚」,確切地說是CyberChef。CyberChef是一個非常有用的工具,用於解碼任意編碼的資料塊。這裡解碼這些資料的簡要配方(是的,它們被稱為配方),如圖10所示。
首先它解碼Base64,然後對解碼的blob的輸出執行「Raw Inflate」功能。這裡是輸出結果,如圖11所示。
微中子(Neutrino)是一種亞原子粒子,幾乎沒有質量,具有奇怪的特徵,很少與「正常」物質相互作用。這個裝載稱自己為Neutrino,但與同名的粒子不像(並且不要與已經不存在的同名惡意軟體漏洞利用工具套件搞混),它與受感染的系統有相當多互動。
Neutrino會做什麼?
輸出檔案是另一個長長的指令碼,它對系統執行一些額外檢查,然後視Windows伺服器電腦的處理器架構下載裝載(32位元或64位元)。它使用檔名lsass.exe將裝載寫入伺服器上的「system32」目錄,使用與Windows自己的LSASS安全元件相同的檔案名稱,只是在不同的位置,如圖12所示。如果警示系統管理員在運作的處理序列表中看到它,可能不會另作他想。
Neutrino還會查看%system%中的HOSTS檔案,以確定加密貨幣挖掘集區是否有任何固定的DNS記錄,若有,它會用具有八個不同網域的記錄複寫它。
犯罪分子會使用這些網域由目標伺服器收集他們自己的Monero加密貨幣。ctosus.ru網域名稱也與惡意軟體有關。
Neutrino指令碼還會根據一系列常用安全工具,掃描主機系統上正在執行的應用程式列表。如果發現有應用程式運作,它會將其記錄。 例如「ZhuDongFangYu」是中國防毒產品360的一個元件,如圖13所示。
Neutrino還會在主機上搜尋安全研究人員的工具,例如偵錯器、反組譯工具,或封包攔截工具
在延遲5到10分鐘之後(隨機變化),指令碼會嘗試下載另一個名為「_DL.ps1」的PowerShell指令碼,如圖14所示。
除此之外,Neutrino會修改Windows登錄檔中的許多機碼,以便隱藏伺服器向系統管理員提供的安全相關通知。
另外,Neutrino還會刪除稍早之前掃描到的許多安全工具的服務,並試圖終止這些安全工具(如果它們存在),如圖15所示。最後,Neutrino下載挖礦程式進行裝載程序,其以RC4加密的二進位檔出現,如圖16所示。
它使用P@$$w0rd123456的5up3r-1337密碼對二進位檔解碼,並建立防火牆規則(諷刺地名為Windows Update),以允許另一個裝載(名為_WMI.ps1)接收來自攻擊者的傳入命令,如圖17所示。
倒霉的系統管理員該怎麼辦?
最主要的對策是,在任何情況下,任何人都不應該在公開連線的Apache Tomcat伺服器(或是任何伺服器)上,在管理面板使用弱式密碼或預設密碼。
與其他可以從WAN接收任意請求的軟體一樣,系統管理員應該確保他們運作最新版本的伺服器軟體以及最新更新的作業系統,而且不用伺服器進行一般操作(如瀏覽網頁),以及保持良好的密碼習慣(不重複使用資料庫或其他任何伺服器的密碼)。
我們將其中一些檔案偵測為Mal/VMProtBad-A、Troj/Miner-QH或Mal/Basine-C。
發現入侵指標
入侵指標包括了主機位址、URL、檔案雜湊以及類似的檔案雜湊,以下為其個別的內容:
主機/IP位址
172.16.1.10 xmr.usa-138.com wk.ctosus.ru down.ctosus.ru blog.ctoscn.ru down.9ni.top down.sxly518.xyz gowel.top m4.rui2.net
hxxp://134.175.33.71/Update/PSN/_DL.ps1 hxxp://134.175.33.71/Update/test/x64.bin hxxp://134.175.33.71/Update/test/x64_VMP.bin hxxp://134.175.33.71/Update/test/x86.bin hxxp://134.175.33.71/Update/test/x86_VMP.bin hxxp://134.175.33.71/Update/test/_WMI.ps1
DL.php:2F908ECDC20923D703F05DA6 EEDE76EB14DCA296
類似的檔案雜湊
我們無法從目標電腦復原攻擊中許多相關的檔案,進行調查時,命令與控制(C2)託管的裝載也已經離線。
但是,在公開存放庫之中發現了以下檔案,這些檔案與在此描述的檔案是類似的:
_DL.ps1:408b7799c4902f4d7d0965a 9a37b9ed0989ba39a x86_VMP.bin:689edc2abe3eafe5f65 491780e8aaa1eb68921f1 x64_VMP.bin: ad1e25f4b87ed58371 25cb84ead840e558a85bb6
<本文作者:張光宏,為台灣資安業界資深專業經理人,曾代理與經營多種網路與資安品牌與解決方案,並多次帶領團隊與經銷夥伴,共同贏得多個中央機關與金融單位的資安應用與委外服務專案,在資訊安全領域有豐富完整的行業解決方案的經驗。>