三、 惡意軟體攻擊方法分析探討
3.2 對惡意軟體做攻擊的方法案例
接著這邊要介紹幾種一般對惡意軟體做攻擊的方法,目前大多以追蹤程式碼 的方式觀察內部是否有漏洞,以及找出較感興趣的資訊,分別以 Fuzz bots、
Analyze Malware、Attack C&C server 以及 Attack RAT 做介紹。
3.2.1 Fuzz Bots
首先是使用 Fuzzing 來對惡意軟體做測試的系統,在第二章節提到 BitFuzz 為 malware fuzzer,它以 Stitching 技術解決了加密演算法造成產生測試資料的 困難,並藉此不斷產生測試資料對幾個惡意軟體進行攻擊,成功的找出了幾個漏 洞,接著簡單介紹 BitFuzz 的流程。
他們所用來測試的四個惡意軟體皆為 bots,分別是 Zbot、MegaD、Gheg 以及 Cutwail,由於 bots 會與 C&C server 建立連線來傳遞訊息,因此他們架設 了一個假的 DNS server 以及 replay server,負責與 bots 做溝通並發送測試資料。
在 bots 開始嘗試與 C&C server 做溝通時,一開始利用 Dynamic symbolic execution 收集程式流程(圖 13),然後使用 Stitching 技術不斷的解出不同的測試 資料並送回給這些 bots,並且觀察是否有崩潰的情形發生,圖 14、15 分別代表 兩次不同的測試。
圖 13. path constraints
圖 14. BitFuzz 第一次 fuzzing
15
圖 15. BitFuzz 第二次 fuzzing
使用 Fuzzing 技術的好處在於能夠自動的重複整個測試步驟,但是前提為必 須先了解如何與 bot 做溝通才能開始,而且還得先建立起整個測試平台,包括與 bot 溝通的 server 等等,這都是要個別去設定的,因此前置的動作還是得花上不 少時間。
另外 BitFuzz 中也提及了如果 bot 中的加密演算法有被修改過用來混淆分析 過程,那麼可能會產生出錯誤的資訊,而拖慢測試的時間,這部分與前一段相同,
如果有這種情況仍然需要手動的去檢查。
16
3.2.2 Analyze Bot and Attack C&C Server
接著是藉由 DisAssembler 相關工具直接去追蹤程式碼,這種方式能夠了解 程式內部做了什麼事情,例如 malware-lu[36]是針對 HerpesNet botnet 的 bot 進行追蹤。在追蹤程式碼過程中發現了這個 bot 做了一些動作,像是為了確保開 機時會執行這程式,每 100ms 就會去設定 register key,以及他們感興趣的 C&C server 的資訊,這個惡意軟體每 15 秒就會與 C&C server 溝通一次。
圖 16. 惡意軟體的 Assembly code
接著他們試著了解這個 bot 與 C&C server 溝通的訊息格式,雖然訊息是有 被加密過的,但是經由直接觀察 assembly code 能夠得知加密方法而可以直接 找出解碼方法,在解出訊息內容之後便得知了這個 C&C server 的位置以及相關 資訊。
圖 17. 對溝通的訊息做解碼
最後他們使用 sqlmap 送出自己重組的訊息給 C&C server,嘗試製造出 SQL injection 的漏洞,也成功產生了 exploit。藉此 exploit 他們由這個 botnet 中取得 了這個 botnet 的相關檔案以及資訊,還有 botnet 擁有者的個人資訊,最後讓這 個擁有者關閉了它的 botnet。
17
圖 18. SQL injection
在此案例中最為困難的地方,在於必須追蹤惡意軟體的 assembly code,從中了 解這個 bot 所使用的加密演算法、與 server 溝通的訊息格式以及位置,這是十 分耗費時間以及心力的,而且此案例的目標是背後的 C&C server,並不是這個 bot 本身,因此這些只是前置動作而已,接下來對 C&C server 送訊息才是主要 的目的。
但是作者並沒有提及這個 C&C server 的漏洞在哪,而是直接嘗試送偽造的 訊息來嘗試產生 SQL injection,當然最後是成功的產生漏洞以及 exploit。
3.2.3 Attack Botnet C&C Server
至於在 Web 部分,由於 botnet 的原始檔案很容易地在網路上取得,因此大 部分研究都是直接追蹤原始碼來找是否有弱點存在,像是[37, 38]這兩個案例,
兩者都是以 Zeus Botnet C&C server 作為目標,這邊則選後者作為例子。
在[38]中,作者直接由 C&C server 的 PHP 原始檔案去檢查,找到一個可能 有漏洞的地方。在 zeus 的 bot 與 C&C server 溝通時,是經由 gate.php 這個頁 面,而溝通的內容包括了能夠上傳 log file,而作者發現 C&C server 雖然有特別 檢查這個上傳的檔案,但是做得並不完整。
18
圖 19. Bot 會將 log 檔上傳至 C&C server
但是這個 C&C server 並沒有對 php extension 做特別處理,因此作者能夠 自由的上傳自定義的 php 檔案 Server 所在的位置,這個 php 檔包含了讀入 C&C server 的設定檔,並取得一些資料例如 database 的帳號密碼等等,接著在 php interpreter 去處理這個網頁檔時便能執行以上功能,藉此摧毀掉這個 botnet。
圖 20. 上傳自定義的 php file 來執行想要的動作
比起一般的程式,網頁是相對容易使用追蹤的方式來找尋弱點,在這案例中 所找到的是 code injection 的漏洞,作者藉此漏洞上傳自己撰寫的 php 檔案,經 由 php interpreter 去執行指令,除了能夠直接摧毀這個 botnet 之外,也能從旁 監控這個 botnet 整個活動的訊息。
19
3.2.4 Attack RAT
3.2.3 所提的為一般的 web server,接著這裡要介紹的為 RAT(Remote Administrator Tools),這類的軟體架構與 botnet 相同,都是由 C&C server 與 bots 所組成,只是 RAT 為視窗程式。
RAT 會開啟一個 port 與外界溝通,在事先了解這個軟體是以 Camelia 做加 密之後,作者先以 Wireshark 追蹤程式傳遞訊息的大小,以及 Client 會傳送加密 訊息,而這訊息代表了 Client 的資訊。
圖 21. 使用 Wireshark 監控之間的傳遞訊息
圖 22. Client 傳送加密的訊息至 server,這訊息代表了 client 的資訊 在得到這個訊息時,server 會開啟一個 thread 去處理,而這個建立 thread 的函數可能有 overflow 的弱點,因此最後在重組訊息並且嘗試加入 exploit 之後,
建立連線並直接發送這個訊息,成功的產生攻擊。
20
圖 23. Attack RAT
與第二個案例相同,都是直接追蹤程式的 assembly code,同樣也是非常耗 費心力以及時間,雖然作者指出其中有個漏洞,但是並沒有詳細說明為何會有這 個漏洞。另外這個攻擊是對 Poison Ivy 預設的 port 進行,若是他的 port 有更動 那麼就必須事先再得知所使用的 port 才行。
21