第二章 準備實驗環(huán)境
作者:Aditya Gupta
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
在上一章中,我們了解了 Android 安全性及其體系結構的基礎知識。 在本章中祭椰,我們將了解如何建立 Android 滲透測試實驗環(huán)境,其中包括下載和配置 Android SDK 和 Eclipse垫蛆。 我們將深入了解 ADB违孝,并了解如何創(chuàng)建和配置 Android 虛擬設備(AVD)。
2.1 建立開發(fā)環(huán)境
為了構建 Android 應用程序或創(chuàng)建 Android 虛擬設備集索,我們需要配置開發(fā)環(huán)境屿愚,以便運行這些應用程序。 因此务荆,我們需要做的第一件事是下載 Java 開發(fā)工具包(JDK)妆距,其中包括 Java 運行時環(huán)境(JRE):
-
為了下載 JDK,我們需要訪問
http://www.oracle.com/technetwork/java/javase/downloads/index.html
函匕,并根據(jù)我們所在的平臺下載 JDK 7娱据。就像下載它并運行下載的可執(zhí)行文件一樣簡單。 在以下屏幕截圖中盅惜,你可以看到我的系統(tǒng)上安裝了 Java:
-
一旦我們下載并安裝了 JDK中剩,我們需要在我們的系統(tǒng)上設置環(huán)境變量,以便可以從任何路徑執(zhí)行 Java抒寂。
對于 Windows 用戶结啼,我們需要右鍵單擊
My Computer
(我的電腦)圖標,然后選擇Properties
(屬性)選項屈芜。 -
接下來妆棒,我們需要從頂部選項卡列表中選擇
Advanced system settings
(高級系統(tǒng)設置)選項: -
一旦我們進入了
System Properties
(系統(tǒng)屬性)對話框,在右下角,我們可以看到Environment Variables...
(環(huán)境變量)選項糕珊。 當我們點擊它动分,我們可以看到另一個窗口,包含系統(tǒng)變量及其值红选,在System variables
(系統(tǒng)變量)部分下: -
在新的彈出對話框中澜公,我們需要單擊
Variables
(變量)下的PATH
文本框,并鍵入 Java 安裝文件夾的路徑:對于 Mac OS X喇肋,我們需要編輯
/.bash_profile
文件坟乾,并將 Java 的路徑追加到PATH
變量。在 Linux 機器中蝶防,我們需要編輯
./bashrc
文件并附加環(huán)境變量行甚侣。 這里是命令:$ nano ~/.bashrc $ export JAVA_HOME=`/usr/libexec/java_home -v 1.6` or export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
你還可以通過從終端運行以下命令來檢查 Java 是否已正確安裝和配置:
$ java --version
-
一旦我們下載并配置了 Java 的環(huán)境變量,我們需要執(zhí)行的下一步是下載
http://developer.android.com/sdk/index.html
中提供的 Android ADT 包间学。ADT 包是由 Android 團隊準備的一個完整的包殷费,包括配置了 ADT 插件,Android SDK 工具低葫,Android 平臺工具详羡,最新的 Android 平臺和模擬器的 Android 系統(tǒng)映像的 Eclipse。這大大簡化了早期下載和使用 Android SDK 配置 Eclipse 的整個過程嘿悬,因為現(xiàn)在的一切都已預先配置好了实柠。
一旦我們下載了 ADT 包,我們可以解壓它善涨,并打開 Eclipse 文件夾窒盐。
-
啟動時,ADT 包將要求我們配置 Eclipse 的工作區(qū)钢拧。
workspace
(工作空間)是所有 Android 應用程序開發(fā)項目及其文件將被存儲的位置蟹漓。在這種情況下,我已將所有內(nèi)容保留默認娶靡,并選中Use this as the default and do not ask me again
(使用此為默認值,不再詢問我)復選框: 一旦完全啟動看锉,我們可以繼續(xù)創(chuàng)建 Android 虛擬設備姿锭。 Android 虛擬設備是配置用于特定版本的 Android 的模擬器配置。 模擬器是與 Android SDK 軟件包一起提供的虛擬設備伯铣,通過它呻此,開發(fā)人員可以運行正常設備的應用程序,并與他們在實際設備上進行交互腔寡。 這對于沒有 Android 設備但仍然想創(chuàng)建 Android 應用程序的開發(fā)者也很有用焚鲜。
注
這里要注意的一個有趣的特性是,在 Android 中,模擬器運行在 ARM 上忿磅,模擬的所有的事情與真實設備完全相同糯彬。 然而,在 iOS 中葱她,我們的模擬器只是模擬環(huán)境撩扒,并不擁有所有相同組件和平臺。
2.2 創(chuàng)建 Android 虛擬設備
為了創(chuàng)建Android虛擬設備吨些,我們需要執(zhí)行以下操作:
訪問 Eclipse 的頂部欄搓谆,然后點擊 Android 圖標旁邊的設備圖標。 這將打開一個新的
Android Virtual Device Manager
(Android 虛擬設備管理器)窗口豪墅,其中包含所有虛擬設備的列表泉手。 這是一個很好的選擇,通過點擊New
(新建)按鈕偶器,創(chuàng)建一個新的虛擬設備斩萌。-
我們還可以通過從終端運行 android 命令并訪問工具,然后管理 AVD 來啟動 Android 虛擬設備状囱。 或者术裸,我們可以簡單指定 AVD 名稱,并使用模擬器
-avd [avd-name]
命令來啟動特定的虛擬設備亭枷。這會打開一個新窗口袭艺,其中包含需要為 Android 虛擬設備配置的所有屬性(尚未創(chuàng)建)。 我們將配置所有選項叨粘,如下面的截圖所示:
一旦我們點擊
OK
并返回到 AVD 管理器窗口猾编,我們將看到我們新創(chuàng)建的 AVD。-
現(xiàn)在升敲,只需選擇新的 AVD答倡,然后單擊
Start...
(開始)來啟動我們創(chuàng)建的虛擬設備。它可能需要很長時間驴党,來為你的第一次使用加載瘪撇,因為它正在配置所有的硬件和軟件配置,來給我們真正的電話般的體驗港庄。
在以前的配置中倔既,為了節(jié)省虛擬設備的啟動時間,選中
Snapshot
復選框也是一個不錯的選擇鹏氧。一旦設備加載渤涌,我們現(xiàn)在可以訪問我們的命令提示符,并使用 android 命令檢查設備配置把还。 此二進制文件位于安裝中的
/sdk/tools
文件夾下的adt-bundle
文件夾中实蓬。我們還要設置位于
sdk
文件夾中的tools
和platform-tools
文件夾的位置茸俭,就像我們之前使用環(huán)境變量一樣。-
為了獲取我們系統(tǒng)中已連接(或加載)的設備的詳細配置信息安皱,可以運行以下命令:
android list avd
我們在下面的屏幕截圖中可以看到调鬓,上面的命令的輸出顯示了我們系統(tǒng)中所有現(xiàn)有 Android 虛擬設備的列表:
我們現(xiàn)在將繼續(xù),使用 ADB 或 Android Debug Bridge 開始使用設備练俐,我們在上一章中已經(jīng)看到袖迎。 我們還可以通過在終端中執(zhí)行
emulator -avd [avdname]
命令來運行模擬器。
2.3 滲透測試實用工具
現(xiàn)在腺晾,讓我們詳細了解一些有用的 Android 滲透測試實用工具燕锥,如 Android Debug Bridge,Burp Suite 和 APKTool悯蝉。
Android Debug Bridge
Android Debug Bridge 是一個客戶端 - 服務器程序归形,允許用戶與模擬器器或連接的 Android 設備交互。 它包括客戶端(在系統(tǒng)上運行)鼻由,處理通信的服務器(也在系統(tǒng)上運行)以及作為后臺進程在模擬器和設備上上運行的守護程序暇榴。 客戶端用于 ADB 通信的默認端口始終是 5037,設備使用從 5555 到 5585 的端口蕉世。
讓我們繼續(xù)蔼紧,通過運行adb devices
命令開始與啟動的模擬器交互。 它將顯示模擬器已啟動并運行以及連接到 ADB:
C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb devices
List of devices attached
emulator-5554 device
在某些情況下狠轻,即使模擬器正在運行或設備已連接奸例,你也不會在輸出中看到設備。 在這些情況下向楼,我們需要重新啟動 ADB 服務器查吊,殺死服務器,然后再次啟動它:
C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb kill-server
C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
我們還可以使用pm
(包管理器)工具獲取所有已安裝的軟件包的列表湖蜕,這可以在 ADB 中使用:
adb shell pm list packages
如下面的屏幕截圖所示逻卖,我們將獲得設備上安裝的所有軟件包的列表,這在以后的階段可能會有用:
此外昭抒,我們可以使用dumpsys meminfo
然后是adb shell
命令评也,獲取所有應用程序及其當前內(nèi)存占用的列表
我們還可以獲取logcat
(這是一個讀取 Android 設備事件日志的工具),并將其保存到特定文件灭返,而不是在終端上打拥脸佟:
adb logcat -d -f /data/local/logcats.log
此處的-d
標志指定轉(zhuǎn)儲完整日志文件的并退出,-f
標志指定寫入文件而不是在終端上打印婆殿。 這里我們使用/data/local
位置诈乒,而不是任何其他位置罩扇,因為這個位置在大多數(shù)設備中是可寫的婆芦。
我們還可以使用df
命令檢查文件系統(tǒng)以及可用空間和大信履ァ:
在 Android SDK 中還有另一個很棒的工具,稱為 MonkeyRunner消约。 此工具用于自動化和測試 Android 應用程序肠鲫,甚至與應用程序交互。 例如或粮,為了使用 10 個自動化觸摸导饲,敲擊和事件來測試應用程序,我們可以在adb shell
中使用monkey 10
命令:
root@generic:/ # monkey 10
monkey 10
Events injected: 10
## Network stats: elapsed time=9043ms (0ms mobile, 0ms wifi, 9043ms not connected)
這些是一些有用的工具和命令氯材,我們可以在 ADB 中使用它們渣锦。 我們現(xiàn)在將繼續(xù)下載一些我們將來使用的其他工具。
Burp Suite
我們將在接下來的章節(jié)中使用的最重要的工具之一是 Burp 代理氢哮。 我們將使用它來攔截和分析網(wǎng)絡流量袋毙。 應用程序中的許多安全漏洞可以通過攔截流量數(shù)據(jù)來評估和發(fā)現(xiàn)。 在以下步驟中執(zhí)行此操作:
-
我們現(xiàn)在從官方網(wǎng)站
http://portswigger.net/burp/download.html
下載 burp 代理冗尤。
下載并安裝后听盖,你需要打開 Burp 窗口,它如以下屏幕截圖所示裂七。 你還可以使用以下命令安裝 Burp:java –jar burp-suite.jar
我們在下面的截圖中可以看到皆看,我們運行了 Burp 并顯示了默認界面:
在 Burp Suite 工具中,我們需要通過單擊
Proxy
(代理)選項卡并訪問Options
(選項)選項卡來配置代理設置背零。在
Options
選項卡中腰吟,我們可以看到默認選項被選中,這是127.0.0.1:8080
捉兴。 這意味著從我們的系統(tǒng)端口8080
發(fā)送的所有流量將由 Burp Suite 攔截并且在它的窗口顯示蝎困。我們還需要通過選擇默認代理
127.0.0.1:8080
并單擊Edit
(編輯)來檢查隱藏的代理選項。-
接下來倍啥,我們需要訪問
Request handling
(請求處理)選項卡禾乘,并選中Support invisible proxying (enable only if needed)
(支持不可見代理(僅在需要時啟用))復選框: -
最后,我們使用
invisible
選項運行代理: -
一旦設置了代理虽缕,我們將啟動我們的模擬器與我們剛剛設置的代理始藕。 我們將使用以下模擬器命令來使用
http-proxy
選項:emulator -avd [name of the avd] -http-proxy 127.0.0.1:8080
我們可以在下面的截圖中看到命令如何使用:
因此,我們已經(jīng)配置了 Burp 代理和模擬器氮趋,導致所有的模擬器流量現(xiàn)在會通過 Burp伍派。 在這里,你在訪問使用 SSL 的網(wǎng)站時可能會遇到問題剩胁,我們將在后面的章節(jié)中涉及這些問題诉植。
APKTool
Android 逆向工程中最重要的工具之一是 APKTool。 它為逆向第三方和封閉的二進制 Android 應用程序而設計昵观。 這個工具將是我們在未來章節(jié)中的逆向主題和惡意軟件分析的重點之一晾腔。 為了開始使用 APKTool舌稀,請執(zhí)行以下步驟:
-
為了下載 APKTool,我們需要訪問
https://code.google.com/p/android-apktool/downloads/list
灼擂。在這里壁查,我們需要下載兩個文件:
apktool1.5.3.tar.bz2
,其中包含 apktool 主二進制文件剔应,另一個文件取決于平臺 - 無論是 Windows睡腿,Mac OS X 還是 Linux。 一旦下載和配置完成峻贮,出于便利席怪,我們還需要將 APKTool 添加到我們的環(huán)境變量。 此外纤控,最好將 APKTool 設置為環(huán)境變量何恶,或者首先將其安裝在
/usr/bin
中。 然后我們可以從我們的終端運行 APKTool嚼黔,像下面的截圖這樣:
總結
在本章中细层,我們使用 Android SDK,ADB唬涧,APKTool 和 Burp Suite 建立了 Android 滲透測試環(huán)境疫赎。 這些是 Android 滲透測試者應該熟悉的最重要的工具。
在下一章中碎节,我們將學習如何逆向和審計 Android 應用程序捧搞。 我們還將使用一些工具,如 APKTool狮荔,dex2jar胎撇,jd-gui 和一些我們自己的命令行必殺技。