2020 年 12 月,SolarWinds 攻擊席卷全球。雖然供應(yīng)鏈攻擊已經(jīng)成為許多 APT 攻擊者利用的有記錄的攻擊媒介,但由于攻擊者的極端謹(jǐn)慎和受害者的高價值性,這一特定活動脫穎而出。據(jù)信,當(dāng) FireEye 發(fā)現(xiàn)該活動的第一個攻擊樣本時,攻擊者(DarkHalo又名Nobelium)已經(jīng)為使用它一年多了。迄今為止收集到的證據(jù)表明,DarkHalo 在 OrionIT 的網(wǎng)絡(luò)中花了六個月的時間來完善他們的攻擊,并確保他們對供應(yīng)鏈鏈的篡改不會造成任何不利影響,從而降低被發(fā)現(xiàn)的概率。
第一個惡意更新于 2020 年 3 月被傳播給 SolarWinds 用戶,其中包含名為 Sunburst 的惡意軟件。研究人員只能假設(shè) DarkHalo 利用這種訪問權(quán)限來收集情報,直到他們被發(fā)現(xiàn)的那一天。惡意活動的時間表如下:
卡巴斯基的 GReAT 團隊也調(diào)查了這次供應(yīng)鏈攻擊,并發(fā)布了兩篇關(guān)于它的博文:
1.2020 年 12 月,研究人員分析了惡意植入的基于 DNS 的協(xié)議,并確定它泄露了被 DarkHalo 選擇用于進(jìn)一步利用的受害者的身份。
2.一個月后,研究人員發(fā)現(xiàn)了 Sunburst 和 Kazuar 之間有趣的相似之處,這是另一個與 Palo Alto 的 Turla 相關(guān)聯(lián)的惡意軟件家族。
2021 年 3 月,F(xiàn)ireEye 和微軟發(fā)布了有關(guān)活動期間使用的第二階段惡意軟件 Sunshuttle(又名 GoldMax)的更多信息。2021 年 5 月下旬,微軟還將冒充美國組織的魚叉式網(wǎng)絡(luò)釣魚活動歸因于 Nobelium。但到那時,線索已經(jīng)消失了:DarkHalo 早就停止行動了,后續(xù)的攻擊也沒有與他們聯(lián)系在一起。
DNS劫持
今年晚些時候,也就是 6 月,研究人員的內(nèi)部系統(tǒng)發(fā)現(xiàn)了 一個DNS 劫持成功的樣本,影響了一個獨聯(lián)體成員國的多個政府區(qū)域。這些事件發(fā)生在 2020 年 12 月和 2021 年 1 月之間,時間很短,允許攻擊者將流量從政府郵件服務(wù)器重定向到他們控制的設(shè)備。
在這各時間范圍內(nèi),上述區(qū)域的權(quán)威 DNS 服務(wù)器被切換到攻擊者控制的解析器。這些劫持大部分時間相對較短,似乎主要針對受影響組織的郵件服務(wù)器。雖然研究人員不知道攻擊者是如何做到這一點的,但可以假設(shè)他們以某種方式獲得了受害者使用的注冊商控制面板的憑據(jù)。
當(dāng)惡意重定向處于活動狀態(tài)時,訪問者被定向到模仿原始頁面的網(wǎng)絡(luò)郵件登錄頁面。由于攻擊者控制了他們劫持的各種域名,因此他們能夠從證書加密中獲取所有這些虛假頁面的合法 SSL 證書,這使得未受過安全教育的訪問者很難注意到攻擊。畢竟,他們通常連接到URL并降落在一個安全的頁面。
攻擊者設(shè)置的惡意網(wǎng)絡(luò)郵件登錄頁面
十有八九,在這些網(wǎng)頁中輸入的任何憑據(jù)都會被攻擊者獲取,并在隨后的攻擊階段被重復(fù)使用。在某些情況下,他們還會在頁面上添加一條信息,誘使用戶安裝惡意的“安全更新”。在上面的截圖中,信息是這樣寫的:“為了繼續(xù)使用電子郵件服務(wù),你需要安裝一個安全更新:下載更新”。
該鏈接指向一個可執(zhí)行文件,該文件是一個以前未知的惡意軟件家族的下載程序,研究人員現(xiàn)在將其稱為 Tomiris。
Tomiris
Tomiris 是一個用 Go 編寫的后門程序,其作用是不斷查詢其 C2 服務(wù)器以獲取可執(zhí)行文件,以便在受害系統(tǒng)上下載和執(zhí)行。在執(zhí)行任何操作之前,它會休眠至少 9 分鐘,以試圖擊敗基于沙箱的分析系統(tǒng)。它通過創(chuàng)建和運行包含以下命令的批處理文件來建立計劃任務(wù)的持久性:
SCHTASKS /CREATE /SC DAILY /TN StartDVL /TR “[path to self]” /ST 10:00
C2 服務(wù)器地址沒有直接嵌入 Tomiris 內(nèi)部:相反,它連接到信號服務(wù)器,該服務(wù)器提供后門應(yīng)連接到的 URL 和端口。然后 Tomiris 向該 URL 發(fā)送 GET 請求,直到 C2 服務(wù)器使用以下結(jié)構(gòu)的 JSON 對象響應(yīng),其結(jié)構(gòu)如下:
{“filename”: “[filename]”, “args”: “[arguments]”, “file”: “[base64-encoded executable]”}
這個對象描述了一個可執(zhí)行文件,它被下載到在受害設(shè)備上并使用提供的參數(shù)運行。此功能以及 Tomiris 除了下載更多工具之外沒有其他功能的事實表明此工具集還有其他部分,但不幸的是,研究人員迄今為止無法恢復(fù)它們。
研究人員還發(fā)現(xiàn)了一個 Tomiris 變體(內(nèi)部命名為“SBZ”,MD5 51AA89452A9E57F646AB64BE6217788E),它充當(dāng)一個文件竊取程序,并將任何與硬編碼擴展名集(。doc、。docx、。pdf、。rar 等)匹配的最新文件上傳到C2。
最后,在這次調(diào)查中發(fā)現(xiàn)的一些線索表明,Tomiris的開發(fā)者可能會說俄語,但這一點不太可靠。
Tomiris連接
在分析 Tomiris 時,研究人員注意到它與上面討論的 Sunshuttle 惡意軟件有許多相似之處:
1.這兩種惡意軟件都是在Go中開發(fā)的,帶有可選的UPX包。
2.配置文件中使用了相同的分隔符(“ | ”)來分隔元素。
3.在這兩個家族中,使用相同的加密/混淆方案對配置文件進(jìn)行編碼并與C2服務(wù)器通信。
4.根據(jù)微軟的報告,Sunshuttle也依賴于預(yù)定的任務(wù)來保持持久性。
5.兩個家族都比較依賴隨機性:
5.1 Sunshuttle 將其引薦來源網(wǎng)址和誘餌網(wǎng)址隨機化,用于生成良性流量,它還在每個請求之間休眠 5-10 秒(默認(rèn)情況下)。
5.2 Tomiris 在執(zhí)行過程中的不同時間將隨機延遲(0-2 秒或 0-30 秒,具體取決于上下文)添加到它休眠的基本時間。它還包含一個目標(biāo)文件夾的列表,以刪除下載的可執(zhí)行文件,從其中程序隨機選擇。
5.3 Tomiris和Sunshuttle都在每次調(diào)用之前免費地用Now()的輸出重新播種RNG。
6.這兩種惡意軟件家族經(jīng)常在執(zhí)行過程中休眠,以避免產(chǎn)生太多的網(wǎng)絡(luò)活動被發(fā)現(xiàn)。
7.這兩個程序的一般工作流程,特別是將功能分配到函數(shù)中的方式,感覺非常相似,以至于這位分析師認(rèn)為它們可能是一起被開發(fā)的。比如當(dāng)準(zhǔn)備步驟完成時,程序的主循環(huán)如何轉(zhuǎn)移到一個新的 goroutine,而主線程幾乎永遠(yuǎn)處于非活動狀態(tài)。
8.在Tomiris(“isRunned”)和Sunshuttle(“EXECED”而不是“executed”)字符串中都發(fā)現(xiàn)了英文拼寫錯誤。
單獨來看,都不足以將Tomiris和 Sunshuttle 聯(lián)系起來。雖然證據(jù)還不足,但把這些證據(jù)放研究人員想提供的最后一個間接證據(jù)是發(fā)現(xiàn)網(wǎng)絡(luò)中感染了 Tomiris 的其他設(shè)備也感染了 Kazuar 后門。不幸的是,現(xiàn)有的數(shù)據(jù)不能讓我們確定是否其中一個惡意程序?qū)е铝肆硪粋€程序的部署,或者它們是否起源于兩個獨立的事件。
下圖總結(jié)了研究人員能夠在本文提到的三個惡意軟件家族之間發(fā)現(xiàn)的薄弱環(huán)節(jié):
最后,許多線索暗示了 Sunburst、Kazuar 和 Tomiris 之間有著非常緊密地聯(lián)系,但感覺仍然缺少最為直接的證據(jù),可以讓研究人員將它們?nèi)繗w因于一個攻擊者。目前的證據(jù)推測如下,由于 Sunshuttle 的高調(diào)性質(zhì),其他攻擊者可能故意試圖復(fù)制其設(shè)計以誤導(dǎo)分析師。研究人員所知的最早的 Tomiris 樣本出現(xiàn)在 2021 年 2 月,也就是 Sunshuttle 向被發(fā)現(xiàn)的一個月前。雖然此時其他 APT 可能已經(jīng)意識到該工具的存在,但研究人員認(rèn)為他們不太可能在它被披露之前嘗試模仿它。一個更可能(但尚未證實)的假設(shè)是,Sunshuttle 的開發(fā)者早在 2020 年 12 月左右開始開發(fā) Tomiri。
總結(jié)
如果研究人員對Tomiris和Sunshuttle之間聯(lián)系的猜測是正確的,那就能讓研究人員更好地了解攻擊者被發(fā)現(xiàn)后是如何重新構(gòu)建新攻擊的。