針對美國公部門遭SolarWinds供應鏈攻擊,有資安廠商對於SunBurst後門程式分析,他們研判駭客可能自去年底就開始攻擊

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

最早揭露SolarWinds Orion軟體存在後門的資安公司,是針對上述攻擊事件積極介入調查的FireEye。 他們於12月13日揭露 ,SolarWinds自今年3月到6月之間,推出的Orion軟體存在名為SunBurst的後門,駭客用來於遭感染的系統監控受害組織,同時能夠執行任意指令。然而,這個後門程式實際上埋伏得更深、更為底層。 威脅情報業者ReversingLabs於16日 ,在部落格公佈他們對於SolarWinds Orion遭駭情況的分析,認為駭客很可能早在2019年10月,就將惡意後門植入到這項IT平台的軟體編譯流程,以及程式碼簽章的基礎架構之中。

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

ReversingLabs比對了特定版本的Orion軟體,包含被FireEye公告存在後門的第1個版本(2019.4.5200.9083),以及理應未受影響的舊版本(2019.4.5200.8890),分析當中的元件,結果他們發現,Orion的原始碼遭到竄改而存在惡意後門,不僅如此,這個後門感染受害企業的方式,就是透過SolarWinds的軟體版本管理系統,隨著修補程式一併派送到用户端。

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

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

駭客為了要混淆SolarWinds的開發人員,不讓攻擊行動被察覺,他們故步疑陣,採取了許多幾可亂真的做法,來模仿SolarWinds開發方式。例如,在駭客加入Orion程式碼的其中一個類別,就刻意命名為OrionImprovementBusinessLayer,而讓軟體開發者與稽核人員覺得是正常的物件。

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

而對於駭客是從開發的源頭就加入後門的依據,ReversingLabs指出,他們分析了後門程式SunBurst的元件(SolarWinds.Orion.Core.BusinessLayer.dll),根據其中繼資料(Metadata)的內容發現,其標頭(Header)、PDB符號工具,以及簽章等,3個時戳記載的時間完全相同。ReversingLabs認為這有2種情況:很可能是SolarWinds程式碼控制系統遭駭,或者是駭客在編譯電腦上置換了惡意程式碼。再加上前述提及,駭客企圖讓加料的程式碼不被SolarWinds察覺,ReversingLabs指出,攻擊者不僅駭入這家IT公司的編譯架構,軟體簽章系統也被用於簽署SunBurst惡意軟體,但目前尚未被用於簽署其他惡意軟體。而對於SolarWinds的簽章已被用於簽署SunBurst的情況,ReversingLabs認為,為了防範該簽章繼續遭到濫用,SolarWinds應該要註銷相關的憑證。

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

這些駭客除了對於SolarWinds的開發環境瞭如指掌,也考量到後門程式不能被採用Orion的企業或公部門發現的情況,ReversingLabs提到他們在Orion的程式碼裡,發現了許多Select * From Win32_SystemDriver呼叫字串,這是使用WMI查詢電腦裡所有驅動程式的指令。而駭客採取了結合壓縮與Base64編碼的做法,來避免自己加入的程式碼,可能會驚動資安防護系統的情況。

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

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

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