第一章 引言
2.1 Android
2.1.2 環境建置
1. 安裝
Android 開發環境需要安裝以下三樣軟體工具:
(1) Java Development Kit(JDK) v6.0 以上:
我們以 jdk-6u24-windows-i586 版本為支援環境,此工具可以在 http://java.sun.com 下載。
(2) Eclipse IDE 開發程式:
我們以 eclipse-java-helios-SR1-win32 版本為編譯環境,此軟體可以在 http://www.eclipse.org 下載。
(3) Android SDK 2.2:
我們以 android-sdk_r07-windows 版本為開發環境,此 SDK 可以在 http://developer.android.com/sdk/index.html 下載。
而在 Eclipse IDE 編譯環境中,需要安裝 ADT (Android Development Tools) plug-in,即為 Android 的開發工具。Eclipse 開啟後,執行「Help」→「Install New Software」,輸入 ADT plug-in 網址(如下),並按下「OK」按鈕即可。
https://dl-ssl.google.com/android/eclipse/
此下載與安裝動作可於背景執行,不影響現有的系統程式,但值得注意的是需要重 新啟動 Eclipse,才能啟用 Android ADT。
9
2. 設定
建立一個 Android 專案需要設定 Android SDK 路徑,才能讓 Eclipses 存取使用。首 先執行「Window」→「Preferences」,點選樹狀清單裡面的「Android」,並且在「Browse…」
下輸入 Android SDK 安裝路徑,按下「Apply」提供 Eclipse 參考後點擊「OK」完成。
3. 使用
執行「File」→「New」→「Project」後,選擇「Android」→「Android Project」,
按下「Next」按鈕,繼續輸入 Android 系統版本、Project name、Application name、
Package name、以及 Create Activity,即可完成。其中 Package name 是為了分辨其他 Package 出現相同參數名稱而做的設定。
Android SDK 提供模擬器來執行程式,必頇透過 Android SDK and AVD Manager 建 立 AVD (Android Virtual Devices)。點選「Android SDK and AVD Manager」→「Virtual Devices」→「New」建立 AVD。
針對不同手機的開發需求,以及 Project 事先設定的 Android 系統版本,我們需要 建立好各種不同 API Level 的 AVD,模擬器執行能力才不會受限。最後,於功能選單上 執行「Run As」→「Android Application」,即可開啟手機模擬功能。
2.2 Metasploit
Metasploit 是 2003 年以開放原始碼方式公布的一個漏洞測詴的軟體,提供研究人 員可進行滲透測詴、編寫 shellcode、研究漏洞的一個環境。在 Metasploit 2.X 版本都 是由 Perl 語言編寫,目前最新的 Metasploit 3.X 開始使用 Ruby 進行開發,我們使用 的版本是 Metasploit 3.6.0。Metasploit 集成了各個系統上常見的安全漏洞和 shellcode 提供使用,主要收集對象是 Windows 系統和 Linux 系統,最新版本的 Metasploit 包含了 176 種系統上與應用軟體上的 exploit,以及 104 個 shellcode。
Android 系統的部分目前並不支援,需要我們自行撰寫。
2.2.1 系統架構
Metasploit 提供三種方式作為操作界面,Console Interface、Command Line Interface 和 Web Interface。
1. Console Interface:對應的程式是 msfconsole,在命令模式下的使用方法,也是
10
我們所選擇的操作介面。
2. Command Line Interface:對應的程式是 msfcli,提供自動化測詴的界面。
3. Web Interface:對應的程式是 msfweb,直觀的圖文界面,只要打開 web 瀏覽器輸 入 Http://172.0.0.1:55555/ 即可開始使用。
Metasploit 具備模組化的概念,清楚分割每個 modules 的功能,3.X 版本的 modules 存放在/opt/framework-3.6.0/msf3/modules 目錄下,總共提供五個 modules,如圖 4,
其功能描述如下:
圖 4:Metasploit 的五個 modules 關係圖
1. Exploit:能夠進行攻擊並得到目標系統控制權的一段惡意代碼,攻擊成功後需與 Playload 配合進行後續動作。
msf> use exploit/Exploit_name
2. Auxiliary:類似 Exploit,不同的是 Auxiliary 可以進行 DoS、Scanner 等不需要 Playload 的程序開發。
msf> use Auxiliary_name
3. Payload:攻擊成功之後要執行的 shellcode,使用 generate 命令可生成自己定義的 Payload,如果要加入新的 Payload,可以把編寫好的.rb 檔放
入 ..\framework3\msf3\modules\payloads 目錄下。
msf> set payload Payload_name
11
msf nop(opty2)> generate –t c 50
5. Encoder:生成 Payload 所使用的編碼器。下例是使用一個有效的 Payload 與 PexAlphaNum 編碼器生成 perl 語言格式的 shellcode,其中相關參數設定可以使用 generate –h 查詢。
msf> use Payload_name
msf> set CMD notepad.exe
msf> generate –e PexAlphaNum –t perl
2.2.2環境建置
1. 安裝
我 們 以 Metasploit framework 3.6.0 版 本 為 研 究 環 境 , 此 軟 體 可 以 在 http://www.metasploit.com/ 下載。因為 Metasploit 由 Ruby 撰寫,所以我們必頇在 Penetration Test Server 上安裝 Ruby (1.8.7)。其中,下載的 metasploit 文件必頇 加上執行權限才可執行。
$wget
http://updates.metasploit.com/data/releases/framework-3.6.0-linux-i686.run
$sudo apt-get install ruby
$chmod +x framework-3.6.0-linux-i686.run
$sudo ./framework-3.6.0-linux-i686.run
2. 設定
安裝完成以後,我們必頇把寫好的 Exploit 和 Payload 檔案放入相應位置。名為
12
Android_stack 的 Exploit 放置…/linux/misc/目錄下,而名為 shell_bind_tcp 的 Payload 放置…/linux/armle/目錄下。
2.3 PPTP VPN
PPTP VPN 的英文全名為 Point-to-Point Tunneling Protocol Virtual Private Network,主要功能是在公共開放的網路上,提供兩點之間安全且專屬的網路通道進行 網路傳輸。
2.3.1 系統架構
PPTP 點對點通道協議定義了一個主從關係,由 PPTP Network Server 和 PPTP Access Concentrator 組成,。為了能讓私有數據網路的資料在公眾數據網路上傳輸,PPTP VPN 的傳送端會將資料重新封裝 (Encapsulation),此封裝過後的封包會被視為一般 IP 封 包並使用 TCP 方式傳送,其好處是能讓不同協定的資料透過 IP 網路傳輸。當封包抵達 通道的另一端時,負責接收的端點才會解開封裝取出 IP header。
使用者可以從網路上任何地方,以我們的研究環境為例,如圖 5。使用者可以利用 手機的網路功能在任何地方連上 PPTP Network Server,透過帳號與密碼的確認後,使 用者便可取得 140.113.1.1 的位置,開始使用一些需要以 IP 位址做為存取控制的服務,
由手機發出的封包 IP 會被視為 PPTP Network Server IP。
圖 5:PPTP VPN 環境圖
13
2.3.2 環境建置
1. 安裝
我們使用的系統為 Ubuntu 10.10,安裝 PPTP VPN 伺服器輸入以下指令即可。
$ sudo apt-get install pptpd
2. 設定
設定的部分我們需要修改兩個設定檔,pptpd.conf 和 pptpd-options。
(1) 修改 pptpd.conf 設定檔:此檔案會在目錄/etc 底下。我們啟用 PPTP VPN 伺 服器時,需要設定 localip 和 remoteip,如下圖 6。localip 為本機 IP 位址,
remoteip 為遠端客戶的 IP 範圍, 234-238 表示同時允許 5 台機器連線。如果 需要擴增連線數,修改 remoteip 的 IP 位址即可。
圖 6:pptpd.conf 修改設定圖
(2) 修改 pptpd-options 設定檔:此檔案會在目錄 /etc/ppp 底下。PPTP VPN Server 的主機名稱設定為本機 IP 位址,DNS (Domain Name System) 的設定如下圖 7 所示,以作為伺服器的電腦網路為資料設定的基準。
14
圖 7:pptpd-options 修改設定圖 3. 使用
使用者登入伺服器時需要一組帳密做驗證,我們必頇在 /etc/ppp/chap-secrets 檔案增加用戶的帳號與密碼,其格式如下:
User_name Server_name Password IP_limit ccis 140.113.207.142 XXXXXXXX *
其中 * 字號表示不做任何限制,存檔後記得重新啟動 PPTP VPN 伺服器,以便生效。
$ sudo /etc/init.d/pptpd restart
2.4 LAMP
LAMP 是由一組自由軟體集合而成的縮寫,其內容有 Linux、Apache、MySQL 與 PHP,
通常會一起用來執行動態的網頁伺服器。Android 上的滲透測詴透過網頁方式進行檢測 與報告,因此我們需要一組網頁伺服器來和使用者溝通。
2.4.1 環境建置
15
1. 安裝
動態網頁伺服器需要安裝以下三種軟體:
(1) Apache:網頁伺服器
$ sudo apt-get install apache2 (2) MySQL:資料庫管理系統
$ sudo apt-get install mysql-server (3) PHP:支援網頁伺服器的程式語言
$ sudo apt-get install php5
為了網頁伺服器與資料庫管理系統彼此的溝通,我們還需要安裝以下三種支援:
$ sudo apt-get install libapache2-mod-auth-mysql
$ sudo apt-get install php5-mysql
$ sudo apt-get install phpmyadmin
2. 設定
需要注意的是,在網頁伺服器上我們會使用 PHP 呼叫 exec 指令,目的是為了執行 Metasploit 的 shell。但是 Metasploit 的執行一定要在 ROOT 權限的環境下,因此我們 必頇讓 PHP 擁有 ROOT 權限,如果系統內建 sudo 指令,即可在真正要執行的指令前加上 sudo,便能成功獲得 ROOT 權限。否則必頇新增一個 sudo 的安裝。
16
第三章、 系統架構
本章節將會清楚描述系統中所有角色位置以及整個系統架構,以下簡短描述每個小 節的大綱。首先 3.1 小節系統建置,說明整個系統的運作流程與步驟,3.2 小節線上測 詴,說明使用 PPTP VPN 的原因,以及介紹滲透測詴系統的實際攻擊過程與原理。也就 是 3.2.1 Metasploit 與 3.2.2 WebKit browser 上的攻擊。我們考量了使用者在沒有網 路的環境下,無法使用遠端滲透測詴系統,因此我們另外提供離線服務,也就是 3.3 小 節離線測詴會提及的內容。最後完整的系統能讓使用者在有網路或無網路的環境下,都 能對自身手機做一個安全的把關。