弱點掃描或是滲透測試是常見的系統安全檢測方法。滲透測試以攻擊者的角度,真實 地去嘗試滲透攻擊使用者的系統;若是滲透攻擊成功侵入使用者系統,便明確地指出威脅 使用者系統安全的對應漏洞。利用滲透測試檢測使用者系統,容易受到網路防火牆設置的 影響,無法完整地找出使用者系統中所有的安全漏洞,形成使用者系統潛在的安全隱憂。
另一方面,滲透測試透過使用者系統對外連線的網路介面進行滲透攻擊,使用者系統如果 具有其他的網路介面,滲透測試將無法對其他的網路介面進行滲透攻擊,也無法找出相對 應的系統安全漏洞,同樣成為使用者系統內潛在的安全危機。
圖 18. Agent-based 合作式滲透測試系統架構
基於上述滲透測試的限制,本計畫將開發 Agent-based 合作式滲透測系統,其架構圖 如圖 18 所示。利用在使用者系統上執行代理程式(Agent),從系統內部進行安全檢測,
同時並與外部的滲透測試系統合作來協助滲透攻擊的進行。藉此我們將可進一步加強滲透 測試的準確度,並彌補滲透測試廣度以及深度的不足。
本計畫將開發與代理程式合作的滲透測試系統,以使用者系統端執行的代理程式為主,
在使用者授權的情況下,利用系統內部資訊進行使用者系統的安全檢測,掃描可能的安全 漏洞,並且利用使用者系統目前執行的程序清單以及目前系統所開啟的網路通訊埠清單,
回報給遠端的滲透測試系統以提供更精準的滲透攻擊。
系統內部安全檢測
利用在使用者系統上執行的代理程式,能夠偵測系統的內部資訊,包括:作業系統的 種類及版本、目前執行的程序清單、目前開啟的網路通訊埠清單等相關資訊。代理程式能 夠利用這些系統資訊,進行使用者系統內部的安全檢測,告知使用者在特定的作業系統環 境下,特定的執行程序可能隱藏的安全漏洞;代理程式也可以在使用者系統內部,進行使 用者密碼的強度檢測,提供相關的密碼建議,協助使用者設定更安全的密碼。利用代理程 式進行使用者系統內部的安全檢測,能夠彌補滲透測試廣度的不足,與外部的滲透測試系 統相輔相成。
在黑箱的滲透測試中,首先需要掃描發掘使用者系統的網路資訊,才能進一步地去偵 測作業系統資訊,進行相關的滲透攻擊。滲透測試從使用者系統外部進行掃描,偵測使用
38
者系統開啟的網路通訊埠,進而推測使用者系統可能提供的服務或是執行的程式,並且發 動相對應的滲透攻擊。由於僅從外面進行掃描,缺乏內部的執行資訊,推測到的服務或是 程式難保不會失準,而沒有發動正確的滲透攻擊,使得滲透測試的精準度下降。
利用在使用者系統上執行的代理程式,能夠偵測系統的內部資訊,包括:作業系統的 種類及版本、目前執行的程序清單、目前開啟的網路通訊埠清單等相關資訊。代理程式回 傳這些資訊,能夠幫助外部的滲透測試,利用系統資訊使其更加掌握使用者系統的狀況,
進而發動更準確的滲透攻擊,提升滲透測試的精準度。
行動核心網路拓樸探索工具
行動核心網路拓樸探索工具為一套發展於 Android 智慧型手機上之網路服務監控程 式。此工具控制 Android 手機底層的 Linux 作業系統來發送 ICMP 封包,並利用 ICMP 封包的 reply message 取得本機端與目標主機之間路徑上的所有節點資訊,並蒐集用戶使 用智慧型手機上網的流量資訊與壅塞狀態。藉由分析 ICMP reply message,此工具將路徑 上所有的節點資訊與封包回應時間記錄成 xml 檔,回傳給後方的伺服器端進行進一步的 網路拓樸與流量分析,作為 ISP 業者管理行動網路與改善使用者經驗的重要依據.
行動核心網路拓樸探索工具可分為五項主要元件: (1) 負責處理使用者介面的 UI Thread、(2) 負責路由探索排程的 TraceRoute Worker Thread (TRW Thread)、(3) 負責 JAVA 和 Linux native application 溝通的 libajpcap_jni.so、(4) 產生 ICMP 封包並監聽 ICMP reply message 的 pcap_servive、和 (5) packet capture library (pcap library)。
本工具架構如圖 19 所示,UI Thread 和 TRW Thread 是架設在 Android SDK 與 NDK Framework 之上,libajpcap_jni.so 、pcap_servive 和 pcap library 則是屬於 Linux 作 業系統的原件。為了使 Andorid 智慧型手機能夠支援 pcap library,我們透過 root Android 智慧型手機的方式,將 libajpcap_jni.so、pcap_servive、與 pcap library 植入底層的 Linux 作業系統中,使 TRW Thread 能透過 libajpcap_jni.so 所提供的 JNI (Java Native Interface) 介面操作 pcap_servive 和 pcap library,來蒐集智慧型手機所在地之擁塞狀況與路由資 訊。
圖 19. 行動核心網路拓樸探索工具架構圖
UI Thread TraceRoute
Worker Thread
libajpcap_jni.so
Android Framework
Linux Core service‘pcap_svc’
libcap_svc.so
libcap.so ProbeCollector.apk
39
以下分別介紹 本工具 之中每個元件的功能:
UI Thread:
UI Thread 為 行動核心網路拓樸探索工具的使用者介面 (如圖 20 所示),負責接收使 用者輸入欲探索的 IP 地址,並將此 IP 地址交給 TRW Thread。TRW Thread 會將探索過 後的結果傳給 UI Thread,由 UI Thread 顯示在智慧型手機的螢幕上。
圖 20.行動核心網路拓樸探索工具的使用者介面
TraceRoute Worker Thread (TRW Thread):
TRW Thread 為一個小型的 TraceRoute 程式,負責路由探索的排程和對底層 Linux native application 的控制。TRW Thread 將使用者欲探索的 IP 地址和 TTL (Time-To-Live) 值透過 libajpcap_jni.so 的 JNI 介面傳給 pcap_servive,以操作 pcap_servive 發送 ICMP echo message 封包。TRW Thread 藉由不斷增加傳送給 pcap_servive 的 TTL 值,來達到探 索封包傳遞路徑的目的。當收到目標 IP 位址的 ICMP reply message 後,TRW Thread 會 將所收集到的節點回應時間結合透過 LocationManager 取得的經緯度資訊,依照探索到的 節點順序存成如下圖 21 之 xml 檔,並交由 UI Thread 顯示和傳送到後端的 analysis 伺服 器做進一步的分析。
圖 21.將蒐集到的 probe result 存成 xml 格式
40
libajpcap_jni.so:
因 UI Thread 和 TRW Thread 主要是以 Java language 撰寫而成,並仰賴 Dalvik 虛 擬機器執行轉譯過後的 bytecode。當 TRW Thread 需要與用 C language 寫的
pcap_servive 程式進行溝通時,Dalvik 虛擬機器會透過 libajpcap_jni.so 所提供的 JNI 介 面,讓 TRW Thread 呼叫並執行 pcap_servive,並將執行時所需要的參數傳遞給
pcap_servive。當 pcap_servive 執行完成後,所取得的資料也透過 libajpcap_jni.so 回傳給 TRW Thread。
pcap_servive:
pcap_servive 為一在開機時被 init.rc 啟動的背景服務,負責接收 TRW Thread 傳來的 控制訊號 (IP 位址和 TTL 值),並透過操作 pcap library 來發送 ICMP echo message 封包 和處理 ICMP reply message。在傳送封包時,pcap_servive 略過正常的 protocol stack 的 操作,直接填寫並建立 ICMP 封包的 header 與 content,並透過 pcap library 將 ICMP 的 封包直接從 data link layer 傳送出去。在接收封包時,pcap_servive 透過 pcap library 監 聽 data link layer 上收到的 raw packet。pcap_servive 利用 packet filter 過濾出所等待的 ICMP reply message,並分析 reply message 上的回應時間,傳給 TRW Thread 做進一步的 判斷與處理。
packet capture library (pcap library)
pcap library 由 libpcap.so 和 libpcap_svc.so 兩個 library 所組成,提供 pcap_servive 直接存取 data link layer 介面,來操作接收與發送 raw packet 的動作。
41
七、 計畫成果
在 2011 年我們的成果包含技術移轉 1 件、先期技術移轉 1 件、技術服務 1 件、與產學合 作達 12 件,總金額超越本計畫書所規畫之 400 萬元。此項成果說明本計畫之建置成果在產業 界之可應用性與前瞻性。本計畫之學術以及產業研究均有相當成果。參與本計畫之成員於 2011 年發表於國際重要期刊之論文數共 19 篇(多是 IEEE 以及 ACM 期刊),發表於國際研討會之論 文數共 16 篇以及國內研討會之論文共 2 篇。2011 年美國專利獲證 5 件,提出美國以及台灣專 利申請各 1 件。本計畫的成果說明共分為三部分:(一)背景說明,(二)學術成果,(二)專 利、技術創新與產學成果,以下將分別說明。