• 沒有找到結果。

第四章 研究結果

第一章 緒論

4. 第四章 研究結果

標準化 CRAX 實驗流程 4-1

原本 CRAX 實驗為了因應各種型態的實驗,建立映像檔的規則、符號 執行的方式、實驗步驟都不盡相同, 導致建立實驗非常沒有效率,每一 個實驗必須至少花費三小時以上才能做好所需環境,最後經過各種數據測 試才能完成一個最終版本的實驗環境,供日後重複實驗使用。

若要標準化 CRAX 實驗流程,除了加快建立實驗環境的過程外,更讓 操作人員的學習曲線較為平緩,不需重新研究不同型態的 CRAX 實驗方法,

只要掌握標準化的 CRAX 實驗流程即可。且標準化的實驗流程,將實驗環 境的建立與實驗完全切割開,只要目標程式的實驗環境建立,就可以從網 頁介面直接控制實驗變因,而不需要每改變一次測試資料就得開啟映像檔 修改資料,重新做一個實驗環境的快照,節省時間如表 4-1。

未標準化 標準化 建立環境

超過三小時 半小時以內

修正實驗

最少十分鐘 一分鐘以內

重現實驗

最少十分鐘 一分鐘以內

表 4-1 標準化 CRAX 實驗流程前後所需操作時間比較

21

aeon_0.2a 1 Complete

iwconfig_2.6 1 Complete

glftpd_1.24 1 Complete

ncompress_4.2.4 1 Complete

htget_0.93 2 Not Yet ...

Expect_5.43 1 Not Yet ...

rsync_2.5.7 1 Not Yet ...

acon_1.0.5 1 Not Yet ...

gif2png_2.5.3 1 Not Yet ...

hsolink_1.0.118 1 Complete

exim_4.41 1 Complete

aspell_0.50.5 1 Not Yet ...

xserver_0.1a 0 Not Yet ...

xmail_1.21 1 Not Yet ...

表 4-3 CRAXUnix 已自動化實驗列表

22

AutoCRAX 實驗控制端 4-2

AutoCRAX 實驗控制端提供友善的使用者網頁介面,直接操控完整實驗 流程,從建立實驗開始,修正測資、運算節點監控到最後的完整實驗記錄 統計,針對不同型態 CRAX 實驗的網頁服務。

4-2-1 建立實驗

透過 noVNC 直接從網頁將應用程式插入實驗映像檔,再根據不同型態 實驗所需的參數,由控制端植入所需程式、映像檔快照與實驗環境的建立。

CRAX-Init 實際介面如圖 4-1。

圖 4-1 建立實驗環境介面 CRAX-Init

23

透過 CRAX-Init 可以快速建立各種弱點軟體的可執行環境,表 4-4 列出 了目前已建立完成之弱點軟體的可執行環境,除了 CRAX 實驗使用之外,

也可以當成 wargame 題目,供練習資訊安全的攻擊與防禦。可改變原本 NCTU Online Judge 系統的限制,提供一個較簡單操作、成本較低、受測系 統啟動時間較快的安全實驗平台,見表 4-5。

Application OS CVE

sudo-1.8.2 Debian_6.0.1_32 CVE-2012-0809 nginx-1.4.0 Debian_6.0.1_32 CVE-2013-2028 mplayer-1.0rc3-4.4.4 Debian_6.0.1_32 CVE-2010-3429

mysql-server-5.1.69 Ubuntu_10.04_server_32 None apache-2.0.58 Debian_6.0.1_32 CVE-2006-3747

nginx-0.7.65 Ubuntu_10.04_server_32 CVE-2010-2263 lighttpd-1.4.26 Ubuntu_10.04_server_32 CVE-2013-1427 proftpd-1.3.2c Ubuntu_10.04_server_32 CVE-2010-4221 koha-3.12-current Debian_6.0.1_32 0day PostgreSQL-8.4.17 Ubuntu_10.04_server_32 None

表 4-4 已建立之可執行軟體環境一覽

24

4-2-2 修正測資

在產生脅迫資料時,必須嘗試不同的輸入、環境參數設定或改變符號 變數的長度。AutoCRAX 實驗控制端,針對每種型態的 CRAX 提供不同介面 來改變上述的實驗變因。

以 CRAXUnix 的實驗為例,從網頁可直接修改輸入的測資、測資輸入方 式(symfile、symstd 等)、欲植入的程式碼及一次符號執行最大可接受的負 號變數長度。按下按鈕便會在實驗隊列裡新增一筆實驗,如圖 4-2。

圖 4-2 修正測資控制介面

25

4-2-3 運算節點監控

AutoCRAX 控制端除了提供運算節點狀態清單之外,也提供即時的實驗 進度監控及運算節點的主機端及客戶端的直接控制介面。如圖所示。

圖 4-3 實驗進度監控

圖 4-4 運算節點直接控制介面

26

4-2-4 實驗記錄統計

控制端擁有 CRAX 實驗產生的紀錄檔,也詳細紀錄實驗每個階段的資 訊。此實驗記錄頁面包含每個應用程式所產生過的脅迫、花費時間,以及 實驗後的補充說明,以供日後追蹤修正。

圖 4-5 CRAXUnix 脅迫產生紀錄

圖 4-6 CRAXWeb SQL Injection 偵測結果

27

28

0day 發掘、驗證及修補 4-5

透過 CRAX Console,快速建立弱點程式的執行環境,能測試最新版程 式的安全性。以目前常見的圖書館自動化管理系統-Koha[19]為例,安裝 過程複雜冗長,安裝頁面共十多面,所需安裝的相依性套件達數十個,但 透過 CRAX-Init 控制頁面安裝一次後,即可重複使用。

我們檢視 Koha 上傳功能的程式,發現處理上傳壓縮檔時,檔案名稱的 檢查不夠嚴謹,直接將使用者所提供的檔名傳入 Open 函式,因此只需要 精心設計好檔案名稱,加入壓縮檔上傳,便能利用 Open 指令的 Pipe 功能,

執行任意指令。

圖 4-7 Koha 問題程式碼片段

從 CRAX-Test 頁面直接開啟先前建置之環境,如圖 4-8。由於此攻擊為 遠端攻擊,CRAX-Test 頁面只能觀察本機情況。必須使用另一台機器的瀏覽 器,上傳有問題的壓縮檔,驗證我們發現的漏洞,如圖 4-9。

29

圖 4-8 CRAX-Test Koha-current 監控頁面

圖 4-9 Koha 圖片上傳指令植入漏洞

30

壓 縮 檔 內 植 入 nc –e /bin/sh 140.113.208.227 12345 的 指 令 , 在 140.113.208.227 監聽 12345 埠,最後確認取得 Koha 機器的本機權限(圖 4-10),驗證此漏洞,確實可執行任意指令。

圖 4-10 Koha 本機權限獲取

驗證後,便可利用 CRAX-Test 的銷毀功能,刪除本次實驗的資料。

刪除後若需再次測試,只要再次選取所需環境,即可再次驗證漏洞或嘗試 漏洞修補。

圖 4-11 CRAX-Test 執行環境選擇

31

修補、惡意程式偵測和 CRAX 中的 Exploit Generator 與 Fuzzer。

而現在軟體測試漸漸朝向雲端發展,我們這個基於雲端技術所建立的

32

未來展望 5-2

為避免一個映像檔被多個 CRAX 同時開啟會造成不可預期的錯誤,目 前的機制是啟動運算節點時一併複製映像檔,導致啟動一個新的運算節點 時必須花費較多的時間,未來儲存映像檔的機制可以引入 ZFS 檔案系統差 異備份的功能,來達到快速複製及節省空間的效果。ZFS 差異備份是在複 製檔案時,共享儲存空間,當檔案被更動時,才儲存不同的部分,但因目 前 ZFS 在大量檔案讀寫時效能會變得非常差,故還需要等待未來 ZFS 較穩 定時才能導入。

抑或是加強 CRAX-Init 的功能,在安裝受測程式部分能在第一次安裝後 記錄安裝步驟及備份所需檔案,此方式雖然會花費較多時間在初始化環境 上,但可節省空間,只需儲存相關的設定檔和應用程式本身。將兩種方法 合併使用可將較常測試的環境使用映像檔快照的方式,較少測試的環境則 用加強後的 CRAX-Init 儲存,達到最好的效益。

33

參考文獻

[1] Farwell, J.P. and R. Rohozinski, Stuxnet and the future of cyber war.

Survival, 2011. 53(1): p. 23-40.

[2] King, J.C., Symbolic execution and program testing.

Communications of the ACM, 1976. 19(7): p. 385-394.

[3] Schwartz, E.J., T. Avgerinos, and D. Brumley. All you ever wanted to know about dynamic taint analysis and forward symbolic execution (but might have been afraid to ask). in Security and Privacy (SP), 2010 IEEE Symposium on. 2010. IEEE.

[4] Sen, K. Concolic testing. in Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering. 2007. ACM.

[5] Cadar, C., D. Dunbar, and D. Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. in Proceedings of the 8th USENIX conference on Operating systems design and implementation. 2008.

[6] Lattner, C. and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. in Code Generation and Optimization, 2004. CGO 2004. International Symposium on.

2004. IEEE.

[7] Chipounov, V., V. Kuznetsov, and G. Candea,

S2E

: A platform for in-vivo multi-path analysis of software systems. ACM SIGARCH Computer Architecture News, 2011. 39(1): p. 265-278.

[8] Bellard, F. QEMU, a fast and portable dynamic translator. 2005.

USENIX.

[9] Shih-Kun, H., H. Min-Hsiang, H. Po-Yen, L. Chung-Wei, L.

Han-Lin, and L. Wai-Meng. CRAX: Software Crash Analysis for Automatic Exploit Generation by Modeling Attacks as Symbolic Continuations. in Software Security and Reliability (SERE), 2012 IEEE Sixth International Conference on. 2012.

[10] CVE. Common Vulnerabilities and Exposures. Available from:

http://cve.mitre.org/.

[11] Exploit-DB. Exploits Database by Offensive Security. Available from: http://www.exploit-db.com/.

[12] Metasploit. Penetration Testing Software. Available from:

http://www.metasploit.com/.

34

[13] NCTU.Online.Judge. 使用者網路攻防能力評估系統 (Wargame).

Available from: http://wargame.cs.nctu.edu.tw/.

[14] Chen, L., Construction of the New Generation Network Security Testbed—Testbed@ TWISC: Integration and Implementation on Software Aspect. Institute of Computer & Communication, National Cheng Kung University, Tainan, Taiwan, 2008.

[15] 劉 旭 哲 , 互 動 式 線 上 教 學 之 互 動 點 推 薦 機 制 研 究 ; A Recommending Mechanism for SettingInteractive Point in Interactive E-learning. 2012.

[16] 梁偉明, 自動化網頁測試與攻擊產生 , in 網路工程研究所 2012,

國立交通大學碩士論文: 新竹市. p. 35.

[17] 黃博彥, 自動產生攔截控制流程之攻擊程式碼 , in 資訊科學與

工程研究所 2011, 國立交通大學碩士論文. p. 54.

[18] 許基傑, 藉由選擇性符號操作執行之 Android APPs 隨性測試 , in

資訊科學與工程研究所 2012, 國立交通大學碩士論文. p. 40.

[19] Koha. Koha is the first free and open source software library automation package (ILS). Available from:

http://koha-community.org/.

相關文件