• 沒有找到結果。

Local Area Network,VLAN) 來建立實驗網路拓樸與區隔該平台上所執行的多組 實驗。藉由 VLAN 的區隔,Emulab 可以實現實驗節點之間的溝通性

(connectivity),使位於同一虛擬區網下的實驗節點可以彼此溝通;VLAN 技術 也同時確保實驗之間的隔離性,避免不同實驗彼此互相干擾。然而,Emulab 開

 ORBIT Radio Grid TestbedORBIT Radio Grid TestbedORBIT Radio Grid Testbed ORBIT Radio Grid Testbed

ORBIT [4] 是以 802.11 實體節點為基礎,針對 3G 和 802.11 網路所設計、具 二層架構的無線測試平台。ORBIT 由密集的 802.11 節點組成網格,網格中的節 點可以動態地連結成所指定的無線網路拓樸。ORBIT 使用者需依照定義的格式 完成實驗腳本格式,以指定網路拓樸、實驗設定和過濾機制等等;透過實驗腳

6 (Personal Digital Assistant,個人數位助理);核心節點則是負責架構網路拓樸、管 理訊號傳輸,以及仿真各種路由協定和媒介存取控制層 (Media Access Control layer,MAC layer) 協定。透過虛擬邊際節點,一個邊際節點可以模擬數十至數百 個無線裝置。此虛擬化功能,可以提升 MobiNet 中無線網路實驗的規模;然 而,藉由軟體仿真無線裝置的實驗方法只能模擬部分系統之屬性,導致實驗之成 果缺乏真實性。

 行動平台的安全機制行動平台的安全機制行動平台的安全機制 行動平台的安全機制

Android 是一個 Open Handset Alliance (OHA)所開發並由 Google 在 2007 年所推出 的一個應用在智慧型手機 以及筆記型電腦上之作業系統平台。在 Android 的發展中,

Google 除了提供一個 Open Source 的環境讓廠商可以節省平台授權費外,開發者也能 在開發應用程式上獲取更多的自由,且開發的應用程式可以在不同平台上通用,不必

OPENSSL、SQLite 以及 Webkit 負責 Android 網頁流覽器的運作,另外還有 OPENGL 和 SGL 圖形與多媒體 Library 負責支援各種影音和圖形檔的播放。緊接著是和第二層

7

圖一:Android 架構圖

目前限定所有應用程式都必須以 JAVA 語言來撰寫,再以 Dalvik Virtual Machine 來轉換成 DX bytecode,因此程式開發和 JAVA ME 類似,應用程式的介面部分則是由

8

讓使用者能隨意地欣賞到最熱門的音樂、視訊、數位課程、新聞、遊戲、電子書等服 務,不再像是以往的儲存系統只能在限定的機器上才能享受到應有的服務。

圖三: 雲端計算架構圖

雲端這個概念在 2007 年 10 月 IBM 與 Google 在美國校園裡展開,之所以會推廣 雲端計畫,最主要的是希望能降低分散式運算在學術研究計畫裡所花費的巨大資本,

所以 IBM 及 Google 提供了相關的軟硬體支援,讓每個學生都可以透過網路進行大規模 運算為基礎的學術研究。此外 2008 年 1 月 Google 也宣布在台灣的雲端計畫,並且跟 台灣的台大、交大等學校合作,把這個先進的雲端概念迅速的吹進了校園裡頭。

但是雲端的概念充滿了許多問題,包括安全、管理以及效率等方面逐漸浮出檯 面,尤其最近幾年環保意識高漲,許多電器都需加上節能標章,所以在雲端的概念裡 不斷加入了節能的方法,讓每台機器都能充分的運用到。不過在節省能源的同時也突 顯了一些管理上以及安全上的問題,例如當一台沒有用到機器如何關掉其電源,而又 或者忽然間大量服務湧現時,如何讓電源迅速開啟,陸陸續續許多人在管理這方面的 研究,此外管理方面還會出現安全上的問題,例如當雲端計算的使用者逐漸減少,為 了要節省能源將某些沒用到的電腦逐一關閉,然而在關閉的電腦裡或許還有一些使用 者正在運算,那如何讓正在運算的電腦移到其另一台電腦裡,或許是管理上的問題,

但是在移後不會讓目前的使用者不被移到這台的使用者所存取或是相反過來,都是我 們不願意看到的結果,所以近年來雲端發展計畫在安全性這方面逐漸受到重視。

 惡意檔案文件分析系統惡意檔案文件分析系統惡意檔案文件分析系統 惡意檔案文件分析系統

對於本研究的議題,分為國內外相關研究、與偵測動態取得堆疊記憶體技術兩部 分來說明。本研究將會先簡介國內外的相關研究與開發系統。接下來介紹本系統將利 用偵測動態取得堆疊技術,來辨識內嵌 Shell Code 的前置手續,如何使用虛擬 CPU 來得知是否有此行為,即可判斷該程式有惡意行為的可疑性。

9 解碼工具讓使用者參考。尚有另一款軟體 PolyUnpack[54],採取將可疑程式反組 譯方式,但經過一連串靜態與動態分析流程,造成負擔過重。

Call/Pop Example1:

call getDelta getDelta:

pop ebp

sub ebp,offset getDelta ...

10

如上面的範例,惡意程式碼就能利用利用 Call/Pop 序列,先用 Call 將去取 得 Program Counter(eip 值),將其壓入堆疊後,再從堆疊中讀出。

在得到現在的記憶體位址之後,惡意程式就會去呼叫 Win32 的API 來對系統進行 破壞的動作,此動作稱為 Hook API。惡意程式在做 hook API 的時候,通常會去 推算 kernel32.dll 的位置,此位置可利用 FS 暫存器中的SEH,TEB,PEB 資料 結構來獲得 kernel32.dll 的記憶體位置。

得到 Win32 API 的記憶體位址後,惡意程式所需使用的 API 的位址可以 透過解 析該 dll 的導出地址表(Export section)和導入地址表(Import Address Table,IAT) 等方法來取得,也可先在 kernel32.dll 中搜索 GetProcAddress 的地址, 再用

 Koushik Sen, Darko Marinov, Gul Agha. CUTE: A Concolic Unit Testing Engine for C. ESECFSE 2005.

 Cristian Cadar, Vijay Ganesh, Peter M. Pawlowski, David L. Dill, Dawson R. Engler. EXE: Automatically Generating Inputs of Death. CCS 2006.

 David Molnar, David Wagner. Catchconv: Symbolic execution and run-time type inference for integer conversion errors. Electrical Engineering and Computer Sciences, University of California at Berkeley, Technique Report No. UCB/EECS-2007-23.

http://www.eecs.berkeley.edu/Pubs/TechRpts/2007/EECS-2007-23.html

 Kuen-Han Huang, Shin-Kun Huang. Detecting Buffer Overflow Vulnerabilities by Search-based Testing. CISC 2010.

CUTE(Concolic Unit Test Engine)是一套 C/C++程式檢測系統,其檢測 Java 程 式的版本為 jCUTE。CUTE 利用 Concolic Testing 技術去檢查目標程式,其特點在於 能夠支援追蹤複雜的資料結構,例如:pointer、struct、class,對於經常大量使用 pointer 及自行定義 class 的 C/C++程式,檢測上有極大的幫助。EXE(EXecution generated Executions)則是由美國史丹佛(Stanford)大學提出的系統,也是使用 Concolic Testing 的技術,利用程式執行時期的資訊,去嘗試產生會觸發程式漏洞的 測試資料,比起一般的 Run-time checking tool 更為有效,同時產生出來的測試輸入也 提供程式設計員除錯上的幫助,能夠更快速地找出有漏洞的程式碼。Catchconv 則是 由美國加州大學柏克萊分校(UCB)EECS 的教授 David Wagner 和他的博士生 David Molnar 一起研發的系統,以 Valgrind 為 instrumented framework,在上面開發的 Concolic Testing plug-ins,除了使用程式執行時期的資訊,產生觸發程式漏洞的測試

11

資料外,還合併了動態的型別轉換檢查,對於不同型別變數之間的互相轉換,或是 有號數無號數轉換所造成的數值溢位,都能夠做檢查;除此之外,Catchconv 特別著 重於尋找記憶體方面的程式漏洞,例如:記憶體緩衝區溢位,以避免這類型的程式 漏洞成為系統上的安全弱點,造成重大的傷害。

12 統,其中一種最有效也最多人使用的方式,就是使用 Intrusion Detection

相關文件