去年,信息安全廠商接獲一連關于“Nitro Attack” 此 APT-進階持續性滲透攻擊APT通報。它所采用的后門程序為 PoisonIvy,亦稱 BKDR_POISON。網絡上可以找到此后門程序的產生器。當時,信息安全廠商已采取反制措施來協助客戶對抗這項威脅并防范未來類似的感染。但是,從最近發現的一些匿蹤機制來看,對抗該惡意程序的戰斗尚未結束。
當我們第一次分析這個惡意下載程序時,原本以為它沒有什么驚人之處。它是一個由 Visual Basic 編譯出來的執行文件,所做的事情不過就是透過 HTTP GET 來開啟某個 HTML 網頁。
APT 攻擊-BKDR_POISON:未來將出現更多挑戰
當我們透過瀏覽器連上該網頁時,表面上看起來也是一個無害的網頁,但是經過詳細解碼之后里面卻大有文章。
如同微軟所指出,此惡意下載程序有別于其他程序。它不會下載二進制文件來執行,但它會執行已下載文件當中看似無害的一些代碼。要達成此目的,惡意程序會將文字內容轉成可執行的程序代碼,然后呼叫 DllFunctionCall 來執行。
而它所執行的程序代碼其實就是 BKDR_POISON 惡意程序家族的變種,此惡意程序家族涉及了去年多起鎖定特定目標攻擊。
BKDR_POISON 背景簡介
BKDR_POISON 惡意程序家族亦稱為 PoisonIvy (毒藤),已經在網絡上肆瘧多年。原因是它的產生器很容易使用,而且可從其網站免費下載。其自動啟用機制以及 mutex 和惡意文件名稱皆可透過產生器輕易設定,因此,每一個產生出來的樣本,其行為可能不盡相同。
BKDR_POISON 的后門程序功能包括:鍵盤側錄、聲音/影像側錄、畫面擷取、處理程序和服務管理,文件存取或上傳、以及其他等等。簡而言之,它基本上可讓其使用者完全存取受感染的系統。
此外,BKDR_POISON 也很容易整合至其他惡意程序,因為其后門程序產生器也提供了選項讓使用者產生一段 shellcode 攻擊程序代碼,而非完整的執行文件。
在前述的 Nitro Attack 惡意下載程序案例中,一旦它執行了 BKDR_POISON 的 shellcode,就能因而繼承其后門程序特性。
由于 shellcode 不像獨立的二進制執行文件可單獨偵測并分析,它必須和繼承其特性的執行文件一并分析才看得出端倪。因此,信息安全研究人員若沒有拿到配對的 shellcode 和執行文件 (例如,執行文件經過加密或隱藏),那么很可能就不會偵測到 shellcode。
根據一份安全工作者的分析表示,兩者還有另一項差異,那就是執行方式:“PoisonIvy 產生器可輸出一個 Windows 執行文件或一段 Windows shellcode。二者之間的唯一差別在于 shellcode 版本必須經由另一個處理程序直接注入內存當中 (例如藉由系統或軟件漏洞) 才能執行,無法經由正常的執行文件啟動方式。”
他補充道:“由于使用 shellcode 時不需下載完整的文件,因此可直接在攻擊過程中使用,甚至可運用一些二進制執行文件的混淆編碼技巧,例如加密,而且一切都在內存當中完成,因此可躲過傳統文件式偵測技術。”
[page]
BKDR_POISON 未來將更加危險
以下是我們所知有關Nitro Attack惡意下載程序的資料:
它可從一個網址下載一個內含 shellcode 的純文字文件。接著,它會將這些純文字內容轉成可執行的程序代碼。
Shellcode“不會”儲存。
接著下載程序會執行此惡意程序代碼。
以下是一些技術人員對 BKDR_POISON 的了解:
它很容易整合至其他惡意程序。
它具備后門程序功能,而且也曾用于過去出現的攻擊當中。
由于上述惡意下載程序的行為變化多端,而且目前的功能還在陽春階段,因此,網絡犯罪者應該會繼續加以強化,未來將更難對付。此外,若將它和 BKDR_POISON 結合,由于后者曾參與過許多鎖定特定目標的攻擊,因此,對信息安全研究人員來說將是一大挑戰。以下是這類威脅組合可能發展的一些狀況:
狀況 1:如果 HTML 經過加密或者 shellcode 隱藏在圖片中,例如透過信息隱藏術 (Seganography),就威脅分析師的角度來看,研究人員可能會因為 URL 指向了一個圖片而以為它沒有作用。但使用者將因為這個 URL 沒有被封鎖而陷于危險當中。事實上,TDL4 便運用了信息隱藏術。
直接將 shellcode 本身加密,或許更讓研究人員頭痛。因為,萬一解密的程序代碼是內建在惡意下載程序當中,那么,在取得惡意下載程序的樣本之前,研究人員將無法分析 shellcode。
ZBOT 就運用到這項技巧。ZBOT 會將組態設定文件加密,而且研究人員唯有配合對應的二進制文件才有辦法正確進行分析。
狀況 2:服務器端會檢查連上它的使用者 IP 位址或地點,并且視不同地點傳回不同的惡意文件。如果受感染的使用者位于中國,但分析人員在美國,那么二者所拿到的 shellcode 就可能有所不同。一旦分析端與感染端的結果有異,那就很難清除使用者的感染。
狀況 3:客戶已經遭到感染,但相關的 URL 卻已無法連上。威脅分析師可能會不曉得使用者遇到什么狀況,因為已經無法取得當初的 shellcode。這類惡意下載程序很可能會讓我們完全摸不著頭緒。
當然,這類情況也并非完全無解,只是難度更高。而且,下載的二進制程序代碼“并未”儲存成實體文件,也增加了問題的挑戰性。不過,藉由信譽評等和云端技術,這樣的情況還是能夠改善。