Android 滲透測(cè)試學(xué)習(xí)手冊(cè) 第二章 準(zhǔn)備實(shí)驗(yàn)環(huán)境

第二章 準(zhǔn)備實(shí)驗(yàn)環(huán)境

作者:Aditya Gupta

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

在上一章中,我們了解了 Android 安全性及其體系結(jié)構(gòu)的基礎(chǔ)知識(shí)。 在本章中,我們將了解如何建立 Android 滲透測(cè)試實(shí)驗(yàn)環(huán)境,其中包括下載和配置 Android SDK 和 Eclipse。 我們將深入了解 ADB,并了解如何創(chuàng)建和配置 Android 虛擬設(shè)備(AVD)。

2.1 建立開(kāi)發(fā)環(huán)境

為了構(gòu)建 Android 應(yīng)用程序或創(chuàng)建 Android 虛擬設(shè)備,我們需要配置開(kāi)發(fā)環(huán)境,以便運(yùn)行這些應(yīng)用程序。 因此,我們需要做的第一件事是下載 Java 開(kāi)發(fā)工具包(JDK),其中包括 Java 運(yùn)行時(shí)環(huán)境(JRE):

  1. 為了下載 JDK,我們需要訪問(wèn)http://www.oracle.com/technetwork/java/javase/downloads/index.html,并根據(jù)我們所在的平臺(tái)下載 JDK 7。

    就像下載它并運(yùn)行下載的可執(zhí)行文件一樣簡(jiǎn)單。 在以下屏幕截圖中,你可以看到我的系統(tǒng)上安裝了 Java:

  2. 一旦我們下載并安裝了 JDK,我們需要在我們的系統(tǒng)上設(shè)置環(huán)境變量,以便可以從任何路徑執(zhí)行 Java。

    對(duì)于 Windows 用戶,我們需要右鍵單擊My Computer(我的電腦)圖標(biāo),然后選擇Properties(屬性)選項(xiàng)。

  3. 接下來(lái),我們需要從頂部選項(xiàng)卡列表中選擇Advanced system settings(高級(jí)系統(tǒng)設(shè)置)選項(xiàng):

  4. 一旦我們進(jìn)入了System Properties(系統(tǒng)屬性)對(duì)話框,在右下角,我們可以看到Environment Variables...(環(huán)境變量)選項(xiàng)。 當(dāng)我們點(diǎn)擊它,我們可以看到另一個(gè)窗口,包含系統(tǒng)變量及其值,在System variables(系統(tǒng)變量)部分下:

  5. 在新的彈出對(duì)話框中,我們需要單擊Variables(變量)下的PATH文本框,并鍵入 Java 安裝文件夾的路徑:

    對(duì)于 Mac OS X,我們需要編輯/.bash_profile文件,并將 Java 的路徑追加到PATH變量。

    在 Linux 機(jī)器中,我們需要編輯./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`
    

    你還可以通過(guò)從終端運(yùn)行以下命令來(lái)檢查 Java 是否已正確安裝和配置:

    $ java --version
    
  6. 一旦我們下載并配置了 Java 的環(huán)境變量,我們需要執(zhí)行的下一步是下載http://developer.android.com/sdk/index.html中提供的 Android ADT 包。

    ADT 包是由 Android 團(tuán)隊(duì)準(zhǔn)備的一個(gè)完整的包,包括配置了 ADT 插件,Android SDK 工具,Android 平臺(tái)工具,最新的 Android 平臺(tái)和模擬器的 Android 系統(tǒng)映像的 Eclipse。這大大簡(jiǎn)化了早期下載和使用 Android SDK 配置 Eclipse 的整個(gè)過(guò)程,因?yàn)楝F(xiàn)在的一切都已預(yù)先配置好了。

  7. 一旦我們下載了 ADT 包,我們可以解壓它,并打開(kāi) Eclipse 文件夾。

  8. 啟動(dòng)時(shí),ADT 包將要求我們配置 Eclipse 的工作區(qū)。workspace(工作空間)是所有 Android 應(yīng)用程序開(kāi)發(fā)項(xiàng)目及其文件將被存儲(chǔ)的位置。在這種情況下,我已將所有內(nèi)容保留默認(rèn),并選中Use this as the default and do not ask me again(使用此為默認(rèn)值,不再詢問(wèn)我)復(fù)選框:

  9. 一旦完全啟動(dòng),我們可以繼續(xù)創(chuàng)建 Android 虛擬設(shè)備。 Android 虛擬設(shè)備是配置用于特定版本的 Android 的模擬器配置。 模擬器是與 Android SDK 軟件包一起提供的虛擬設(shè)備,通過(guò)它,開(kāi)發(fā)人員可以運(yùn)行正常設(shè)備的應(yīng)用程序,并與他們?cè)趯?shí)際設(shè)備上進(jìn)行交互。 這對(duì)于沒(méi)有 Android 設(shè)備但仍然想創(chuàng)建 Android 應(yīng)用程序的開(kāi)發(fā)者也很有用。

這里要注意的一個(gè)有趣的特性是,在 Android 中,模擬器運(yùn)行在 ARM 上,模擬的所有的事情與真實(shí)設(shè)備完全相同。 然而,在 iOS 中,我們的模擬器只是模擬環(huán)境,并不擁有所有相同組件和平臺(tái)。

2.2 創(chuàng)建 Android 虛擬設(shè)備

為了創(chuàng)建Android虛擬設(shè)備,我們需要執(zhí)行以下操作:

  1. 訪問(wèn) Eclipse 的頂部欄,然后點(diǎn)擊 Android 圖標(biāo)旁邊的設(shè)備圖標(biāo)。 這將打開(kāi)一個(gè)新的Android Virtual Device Manager(Android 虛擬設(shè)備管理器)窗口,其中包含所有虛擬設(shè)備的列表。 這是一個(gè)很好的選擇,通過(guò)點(diǎn)擊New(新建)按鈕,創(chuàng)建一個(gè)新的虛擬設(shè)備。

  2. 我們還可以通過(guò)從終端運(yùn)行 android 命令并訪問(wèn)工具,然后管理 AVD 來(lái)啟動(dòng) Android 虛擬設(shè)備。 或者,我們可以簡(jiǎn)單指定 AVD 名稱,并使用模擬器-avd [avd-name]命令來(lái)啟動(dòng)特定的虛擬設(shè)備。

    這會(huì)打開(kāi)一個(gè)新窗口,其中包含需要為 Android 虛擬設(shè)備配置的所有屬性(尚未創(chuàng)建)。 我們將配置所有選項(xiàng),如下面的截圖所示:

  3. 一旦我們點(diǎn)擊OK并返回到 AVD 管理器窗口,我們將看到我們新創(chuàng)建的 AVD。

  4. 現(xiàn)在,只需選擇新的 AVD,然后單擊Start...(開(kāi)始)來(lái)啟動(dòng)我們創(chuàng)建的虛擬設(shè)備。

    它可能需要很長(zhǎng)時(shí)間,來(lái)為你的第一次使用加載,因?yàn)樗谂渲盟械挠布蛙浖渲?,?lái)給我們真正的電話般的體驗(yàn)。

  5. 在以前的配置中,為了節(jié)省虛擬設(shè)備的啟動(dòng)時(shí)間,選中Snapshot復(fù)選框也是一個(gè)不錯(cuò)的選擇。

  6. 一旦設(shè)備加載,我們現(xiàn)在可以訪問(wèn)我們的命令提示符,并使用 android 命令檢查設(shè)備配置。 此二進(jìn)制文件位于安裝中的/sdk/tools文件夾下的adt-bundle文件夾中。

  7. 我們還要設(shè)置位于sdk文件夾中的toolsplatform-tools文件夾的位置,就像我們之前使用環(huán)境變量一樣。

  8. 為了獲取我們系統(tǒng)中已連接(或加載)的設(shè)備的詳細(xì)配置信息,可以運(yùn)行以下命令:

    android list avd
    

    我們?cè)谙旅娴钠聊唤貓D中可以看到,上面的命令的輸出顯示了我們系統(tǒng)中所有現(xiàn)有 Android 虛擬設(shè)備的列表:

  9. 我們現(xiàn)在將繼續(xù),使用 ADB 或 Android Debug Bridge 開(kāi)始使用設(shè)備,我們?cè)谏弦徽轮幸呀?jīng)看到。 我們還可以通過(guò)在終端中執(zhí)行emulator -avd [avdname]命令來(lái)運(yùn)行模擬器。

2.3 滲透測(cè)試實(shí)用工具

現(xiàn)在,讓我們?cè)敿?xì)了解一些有用的 Android 滲透測(cè)試實(shí)用工具,如 Android Debug Bridge,Burp Suite 和 APKTool。

Android Debug Bridge

Android Debug Bridge 是一個(gè)客戶端 - 服務(wù)器程序,允許用戶與模擬器器或連接的 Android 設(shè)備交互。 它包括客戶端(在系統(tǒng)上運(yùn)行),處理通信的服務(wù)器(也在系統(tǒng)上運(yùn)行)以及作為后臺(tái)進(jìn)程在模擬器和設(shè)備上上運(yùn)行的守護(hù)程序。 客戶端用于 ADB 通信的默認(rèn)端口始終是 5037,設(shè)備使用從 5555 到 5585 的端口。

讓我們繼續(xù),通過(guò)運(yùn)行adb devices命令開(kāi)始與啟動(dòng)的模擬器交互。 它將顯示模擬器已啟動(dòng)并運(yùn)行以及連接到 ADB:

C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb devices
List of devices attached
emulator-5554   device

在某些情況下,即使模擬器正在運(yùn)行或設(shè)備已連接,你也不會(huì)在輸出中看到設(shè)備。 在這些情況下,我們需要重新啟動(dòng) ADB 服務(wù)器,殺死服務(wù)器,然后再次啟動(dòng)它:

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

如下面的屏幕截圖所示,我們將獲得設(shè)備上安裝的所有軟件包的列表,這在以后的階段可能會(huì)有用:

此外,我們可以使用dumpsys meminfo然后是adb shell命令,獲取所有應(yīng)用程序及其當(dāng)前內(nèi)存占用的列表

我們還可以獲取logcat(這是一個(gè)讀取 Android 設(shè)備事件日志的工具),并將其保存到特定文件,而不是在終端上打?。?/p>

adb logcat -d -f /data/local/logcats.log 

此處的-d標(biāo)志指定轉(zhuǎn)儲(chǔ)完整日志文件的并退出,-f標(biāo)志指定寫入文件而不是在終端上打印。 這里我們使用/data/local位置,而不是任何其他位置,因?yàn)檫@個(gè)位置在大多數(shù)設(shè)備中是可寫的。

我們還可以使用df命令檢查文件系統(tǒng)以及可用空間和大?。?/p>

在 Android SDK 中還有另一個(gè)很棒的工具,稱為 MonkeyRunner。 此工具用于自動(dòng)化和測(cè)試 Android 應(yīng)用程序,甚至與應(yīng)用程序交互。 例如,為了使用 10 個(gè)自動(dòng)化觸摸,敲擊和事件來(lái)測(cè)試應(yīng)用程序,我們可以在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ù)下載一些我們將來(lái)使用的其他工具。

Burp Suite

我們將在接下來(lái)的章節(jié)中使用的最重要的工具之一是 Burp 代理。 我們將使用它來(lái)攔截和分析網(wǎng)絡(luò)流量。 應(yīng)用程序中的許多安全漏洞可以通過(guò)攔截流量數(shù)據(jù)來(lái)評(píng)估和發(fā)現(xiàn)。 在以下步驟中執(zhí)行此操作:

  1. 我們現(xiàn)在從官方網(wǎng)站http://portswigger.net/burp/download.html下載 burp 代理。
    下載并安裝后,你需要打開(kāi) Burp 窗口,它如以下屏幕截圖所示。 你還可以使用以下命令安裝 Burp:

    java –jar burp-suite.jar
    

    我們?cè)谙旅娴慕貓D中可以看到,我們運(yùn)行了 Burp 并顯示了默認(rèn)界面:

  2. 在 Burp Suite 工具中,我們需要通過(guò)單擊Proxy(代理)選項(xiàng)卡并訪問(wèn)Options(選項(xiàng))選項(xiàng)卡來(lái)配置代理設(shè)置。

  3. Options選項(xiàng)卡中,我們可以看到默認(rèn)選項(xiàng)被選中,這是127.0.0.1:8080。 這意味著從我們的系統(tǒng)端口8080發(fā)送的所有流量將由 Burp Suite 攔截并且在它的窗口顯示。

  4. 我們還需要通過(guò)選擇默認(rèn)代理127.0.0.1:8080并單擊Edit(編輯)來(lái)檢查隱藏的代理選項(xiàng)。

  5. 接下來(lái),我們需要訪問(wèn)Request handling(請(qǐng)求處理)選項(xiàng)卡,并選中Support invisible proxying (enable only if needed)(支持不可見(jiàn)代理(僅在需要時(shí)啟用))復(fù)選框:

  6. 最后,我們使用invisible選項(xiàng)運(yùn)行代理:

  7. 一旦設(shè)置了代理,我們將啟動(dòng)我們的模擬器與我們剛剛設(shè)置的代理。 我們將使用以下模擬器命令來(lái)使用http-proxy選項(xiàng):

    emulator -avd [name of the avd] -http-proxy 127.0.0.1:8080
    

    我們可以在下面的截圖中看到命令如何使用:

因此,我們已經(jīng)配置了 Burp 代理和模擬器,導(dǎo)致所有的模擬器流量現(xiàn)在會(huì)通過(guò) Burp。 在這里,你在訪問(wèn)使用 SSL 的網(wǎng)站時(shí)可能會(huì)遇到問(wèn)題,我們將在后面的章節(jié)中涉及這些問(wèn)題。

APKTool

Android 逆向工程中最重要的工具之一是 APKTool。 它為逆向第三方和封閉的二進(jìn)制 Android 應(yīng)用程序而設(shè)計(jì)。 這個(gè)工具將是我們?cè)谖磥?lái)章節(jié)中的逆向主題和惡意軟件分析的重點(diǎn)之一。 為了開(kāi)始使用 APKTool,請(qǐng)執(zhí)行以下步驟:

  1. 為了下載 APKTool,我們需要訪問(wèn)https://code.google.com/p/android-apktool/downloads/list

    在這里,我們需要下載兩個(gè)文件:apktool1.5.3.tar.bz2,其中包含 apktool 主二進(jìn)制文件,另一個(gè)文件取決于平臺(tái) - 無(wú)論是 Windows,Mac OS X 還是 Linux。

  2. 一旦下載和配置完成,出于便利,我們還需要將 APKTool 添加到我們的環(huán)境變量。 此外,最好將 APKTool 設(shè)置為環(huán)境變量,或者首先將其安裝在/usr/bin中。 然后我們可以從我們的終端運(yùn)行 APKTool,像下面的截圖這樣:

總結(jié)

在本章中,我們使用 Android SDK,ADB,APKTool 和 Burp Suite 建立了 Android 滲透測(cè)試環(huán)境。 這些是 Android 滲透測(cè)試者應(yīng)該熟悉的最重要的工具。

在下一章中,我們將學(xué)習(xí)如何逆向和審計(jì) Android 應(yīng)用程序。 我們還將使用一些工具,如 APKTool,dex2jar,jd-gui 和一些我們自己的命令行必殺技。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容