圖片來源: 

ReversingLabs

近期傳出的供應鏈攻擊,駭客鎖定美國財政部與商務部等公家單位,據說就是SolarWinds在今年上旬發布的Orion更新軟體中,出現後門程式。而最近,有資安公司提出他們的調查結果,推測SolarWinds這家專門提供IT管理解決方案的公司,早就在去年10月被滲透,而且,駭客是從該公司的基礎程式庫(Codebase)植入後門,導致潛伏許久卻沒有被發現。

最早揭露SolarWinds Orion軟體存在後門的資安公司,是針對上述攻擊事件積極介入調查的FireEye。他們於12月13日揭露,SolarWinds自今年3月到6月之間,推出的Orion軟體存在名為SunBurst的後門,駭客用來於遭感染的系統監控受害組織,同時能夠執行任意指令。

然而,這個後門程式實際上埋伏得更深、更為底層。威脅情報業者ReversingLabs於16日,在部落格公布他們對於SolarWinds Orion遭駭情況的分析,他們認為,駭客很可能早在2019年10月,就將惡意後門植入到這項IT平臺的軟體編譯流程,以及程式碼簽章的基礎架構之中,導致Orion相關軟體在發布的時候就挾帶了後門程式。

駭客對於SolarWinds的開發環境掌握程度極高,加入的惡意程式碼命名符合該公司原則,而難以察覺有異

針對這一起在12月初開始爆發的供應鏈攻擊事件,ReversingLabs比對特定版本的Orion軟體,包含被FireEye公告存在後門的第1個版本(2019.4.5200.9083),以及理應未帶有後門程式的舊版本(2019.4.5200.8890),分析當中的元件。

駭客開始準備攻擊的時間為何?ReversingLabs在去年10月發布的Orion應用程式(2019.4.5200.8890版)中,發現駭客已經開始植入程式碼,加入了後來才用到的.NET類別(OrionImprovementBusinessLayer),因此認為駭客真正發動攻擊的時間,距今超過1年。

結果他們發現,Orion的原始碼遭到竄改,而存在惡意後門程式SunBurst。不僅如此,這個後門感染受害企業的方式,就是透過SolarWinds的軟體版本管理系統,隨著修補程式,一併派送到用戶端。

為何ReversingLabs特別點名了更舊版本的Orion軟體?原因是他們發現,這個SolarWinds於2019年10月推出的舊版本(2019.4.5200.8890版)裡,駭客已經開始對Orion的程式碼上下其手,但僅有小幅度修改,加入了後來才用到的.NET類別(OrionImprovement BusinessLayer),而此時,駭客尚未植入後門的程式碼。

ReversingLabs指出,這個階段的程式碼竄改,很明顯只是概念性驗證攻擊(PoC)。而他們認為,駭客大致的攻擊計畫,可區分成3個階段:首先,是駭入開發系統,一旦成功,攻擊者接著會注入自己的程式碼,最後查核他們簽署的軟體套件,是否會派送到Orion軟體的用戶端。

在駭客植入惡意程式碼的過程中,為了要瞞過SolarWinds的開發人員,不讓攻擊行動被察覺,他們故步疑陣,採取了許多幾可亂真的做法,來模仿SolarWinds開發方式。

例如,在加入Orion程式碼的其中一個類別,其名稱駭客就刻意命名為OrionImprovement BusinessLayer,而讓該公司的軟體開發者與稽核人員,認為是正常的物件。

駭客不只是模仿SolarWinds開發團隊的物件命名方式,ReversingLabs進一步指出,駭客還在此類別中,引用了確實存在於Orion程式碼的方法(Method)與程式庫,而這樣的精細手法,同樣存在於這些駭客其他植入的方法。由此可見,駭客應該對於SolarWinds基礎程式庫的架構,可說是極為熟悉。

而對於駭客從開發的源頭就加入後門程式,研究人員又是從那裡得知?ReversingLabs指出,他們分析了SunBurst的元件(SolarWinds.Orion.Core.BusinessLayer.dll),根據其中繼資料(Metadata)的內容發現,其標頭(Header)、PDB符號工具,以及簽章等,3個時戳記載的時間完全相同。ReversingLabs認為這有2種情況:很可能是SolarWinds程式碼控制系統遭駭,或者,是駭客在編譯的電腦上,置換了惡意程式碼。

再加上前面所提到的觀察,駭客企圖讓自己植入的程式碼不被SolarWinds察覺,ReversingLabs指出,駭客不僅駭入這家IT公司編譯架構,軟體簽章系統也被用於簽署SunBurst惡意軟體。

從簽署後門程式SunBurst惡意檔案的時間來看,時間點在今年的3月24日,並使用賽門鐵克派發的簽章,其數位憑證採用RSA加密,且使用SHA256演算法編碼。而這種情況,企業很難察覺這是有問題的後門程式。

不過,這個已被駭客濫用的SolarWinds簽章,目前尚未被用於簽署其他的惡意軟體。

而針對SolarWinds簽章已被用於簽署SunBurst的情況,ReversingLabs認為,為了防範這個簽章日後繼續遭到濫用,SolarWinds應該要註銷相關的憑證。

成功進入Orion用戶環境後,藉由雙重混淆手法迴避資安系統的偵測

根據上述的分析結果而言,這些駭客對於SolarWinds的開發環境瞭如指掌,但研究人員指出,駭客也考量到後門程式被偷渡到用戶端後,不能被採用Orion的企業或公部門發現。ReversingLabs提到他們在Orion的程式碼裡,發現了許多Select * From Win32_SystemDriver呼叫字串,這是使用WMI查詢電腦裡所有驅動程式的指令。駭客為了不被企業察覺相關偵察行動,他們採取的做法,是藉由壓縮與Base64編碼,來避免自己加入的程式碼,可能會驚動資安防護系統的情況。

他們之所以同時結合2種機制的原因,主要是對於Base64編碼的做法,市面上的威脅獵捕規則,已經累積相當多的偵測規則,若是駭客單純只使用這樣的迴避手法,就可能會被企業發現。

在對於程式碼進行逆向工程後,ReversingLabs發現一組「C07NSU0uUdBScCvKz1UIz8wzNooPriwuSc11KcosSy0CAA==」字串,經過解壓縮後,就變成上述的Select * From Win32_SystemDriver指令,這麼一來,這組字串就不會被資安系統的威脅獵補規則攔截。

再者,ReversingLabs提到,駭客為了在後門執行的過程不被察覺,他們透過SolarWinds Orion資產盤點工具(Inventory Manager)挾帶的方式執行後門程式。從ReversingLabs反組譯的程式碼來看,遭到竄改的Orion資產盤點工具,在執行的流程,會先檢查後門程式是否存在,然後將後門程式初始化,並於背景中執行。如此一來,企業可能會認為只是Orion在定期掃描內部環境的資產,而不致認為公司內部出現了不尋常的程式,在偵察公司內部環境等疑似攻擊的行為。

為了不讓企業察覺異狀,駭客如何安排SunBurst後門程式運作?答案是他們讓後門程式的元件(OrionImprovementBusinessLayer),透過盤點工具(InventoryManager)來挾帶,且於背景執行。圖中的紅框處,即是該盤點工具呼叫後門程式的指令。

而前述提到使用字串混淆的手法,在Orion程式碼裡不斷出現,因此ReversingLabs認為,駭客下了極大的賭注,不僅能夠讓SolarWinds的開發者,檢視程式碼時不被發現,同時還能誤導Orion用戶的資安系統察覺不出異狀,使得資安防護態勢變得更加嚴峻。


熱門新聞

Advertisement