Android 滲透測試學習手冊 第七章 不太知名的 Android 漏洞

第七章 不太知名的 Android 漏洞

作者:Aditya Gupta

譯者:飛龍

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

在本章中,我們將了解一些不太知名的 Android 攻擊向量,這在 Android 滲透測試中可能很有用。 我們還將涵蓋一些主題,如 Android 廣告庫中的漏洞和WebView實現(xiàn)中的漏洞。 作為滲透測試者,本章將幫助你以更有效的方式審計 Android 應用程序,并發(fā)現(xiàn)一些不常見的缺陷。

7.1 Android WebView 漏洞

WebView是一種 Android 視圖,用于在應用程序中顯示 Web 內容。 它使用 WebKit 渲染引擎,以便使用file//data//協(xié)議顯示網頁和其他內容,可以用于從文件系統(tǒng)加載文件和數(shù)據內容。WebView也用于各種 Android 應用程序,例如提供注冊和登錄功能的應用程序。它通過在應用程序的布局中構建其移動網站,來顯示應用程序中的 Web 內容。 我們將在下一章中進一步討論 WebKit 及其渲染引擎。 對于本章,我們將只關心使用 WebKit 的那些應用程序。

在應用中使用 WebView

在應用程序中使用WebView非常簡單和直接。 假設我們希望我們的整個活動都是一個WebView組件,從http://examplewebsite.com加載內容。

下面是在 Android 應用程序中實現(xiàn)WebView的代碼示例:

WebView webview = new WebView(this);
setContentView(webview);
webview.loadUrl("http://vulnerable-website.com");

另一個重要的事情是,大多數(shù)開發(fā)人員最終為了增強應用程序的功能,在WebView實現(xiàn)中使用以下命令啟用 JavaScript(默認設置為False):

setJavascriptEnabled(true);

前面的命令確保 JavaScript 可以在應用程序中執(zhí)行,并利用注冊界面。

識別漏洞

想象一下這種情況,應用程序在不安全的網絡中使用,允許攻擊者執(zhí)行中間人攻擊(更多中間人攻擊的內容請參見 OWASP 網站https//www.owasp.org/index.php/Man-in-the-middle_attack)。 如果攻擊者可以訪問網絡,則他們可以修改請求和對設備的響應。 這表示他們能夠修改響應數(shù)據,并且如果從網站加載 JavaScript 內容,則可以完全控制 JavaScript 內容。

事實上,通過使用它,攻擊者甚至可以使用 JavaScript 來調用手機上的某些方法,例如向另一個號碼發(fā)送短信,撥打電話,甚至使用諸如 Drozer 之類的工具獲取遠程 shell。

讓我們舉個簡單的例子,來說明WebView漏洞的可能性。 在這里,我們將使用 Joshua Drake 的 GitHub 倉庫(https://github.com/jduck/VulnWebView/)中的,由他創(chuàng)建的概念證明。 這個 POC 在應用程序中使用WebView,來簡單加載一個 URL 并且加載一個位于http://droidsec.org/addjsif.html的網頁(如果這個鏈接打不開,你可以訪問http//attify.com/lpfa/addjsif.html)。

以下是 Eclipse 中代碼示例的屏幕截圖,其中使用名稱 Android 創(chuàng)建 JavaScript 界面:

我們還可以從源代碼中創(chuàng)建apk文件,只需右鍵單擊項目,然后選擇Export as an Android Application(導出為 Android 應用程序)。 一旦我們運行應用程序并監(jiān)聽 Burp 代理中的流量,我們將看到應用程序中指定的 URL 的請求,如以下屏幕截圖所示:

現(xiàn)在,當響應來自服務器時,我們可以修改響應數(shù)據并使用它來利用此漏洞,如以下屏幕所示

讓我們假設攻擊者需要利用這個漏洞應用程序,來使用受害者的設備向一個號碼發(fā)送短信。 以下屏幕截圖顯示了修改后的響應的樣子:

一旦我們點擊Forward(轉發(fā))按鈕,郵件將從受害者的設備發(fā)送到攻擊者指定的號碼。

上述內容簡單地調用SMSManager(),以便將包含文本pwned的 SMS 發(fā)送到的預定義號碼。

這是一個利用存在漏洞的WebView應用程序的簡單示例。 事實上,你可以嘗試調用不同的方法或使用 Drozer 從設備獲取遠程 shell。 你還可以訪問https://labs.mwrinfosecurity.com/blog/2013/09/24/webview-addjavascriptinterface-remote-code-execution/閱讀通過 Drozer 利用WebView的更多信息。

7.2 感染合法 APK

由于 Google 的不嚴格政策,將應用上傳到 Play 商店時,許多開發(fā)人員上傳了惡意應用和軟件,目的是從使用者的裝置竊取私人資料。 Google Play 中存在的大多數(shù)惡意軟件只是合法應用程序的受感染版本。惡意軟件作者只需要一個真正的應用程序,反編譯它,插入自己的惡意組件,然后重新編譯它,以便分發(fā)到應用商店和感染用戶。這可能聽起來很復雜,但實際上,這是一個非常簡單的事情。

讓我們嘗試分析惡意軟件作者如何修改合法應用程序,來創(chuàng)建它的受感染版本。執(zhí)行此操作的最簡單的方法之一是編寫一個簡單的惡意應用程序,并將其所有惡意活動放在服務中。此外,我們在AndroidManifest.xml文件中添加廣播接收器,以便指定的事件(例如接收 SMS)能夠觸發(fā)我們的服務。

因此,以下是創(chuàng)建受感染版本的合法應用程序的簡單步驟:

  1. 使用apktool解壓縮應用程序,如下所示:

    apktool d [appname].apk
    
  2. 反編譯惡意應用程序來生成 Java 類的 smali 文件。 在這里,我們需要將所有的惡意活動放在服務中。 此外,如果你有 smali 語言的經驗,你可以直接從 smali 本身創(chuàng)建服務。 假設惡意服務的名稱是malware.smali。

  3. 接下來,我們需要將malware.smali文件復制到 smali 文件夾,它位于我們反編譯的合法應用程序的文件夾中 。
    我們把malware.smali中的軟件包名稱的所有引用更改為合法應用程序的軟件包名稱,并在AndroidManifest.xml中注冊服務。

    在這里,我們需要在AndroidManifest.xml文件中添加另一行,如下所示:

    <service droid:name = "malware.java"/>
    
  4. 此外,我們需要注冊一個廣播接收器來觸發(fā)服務。 在這種情況下,我們選擇短信作為觸發(fā)器,如下面的代碼所示:

    <receiver android:name="com.legitimate.application.service">  
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
    
  5. 使用apktool重新編譯應用,像這樣:

    apktool b appname/
    

一旦應用程序使用apktool重新編譯,新的 apk 將為被感染的合法版本。 向手機發(fā)送郵件可能會自動觸發(fā)此惡意軟件。 如果惡意軟件服務需要的權限比合法應用程序更多,我們還需要手動在AndroidManifest.xml文件中添加缺少的權限。

7.3 廣告庫中的漏洞

Google Play上提供的大部分免費 Android 應用都會使用廣告來賺取收益。 然而,通常廣告庫本身存在漏洞,使得整個應用程序容易受到某種嚴重的威脅。

為了識別特定應用程序中存在的廣告庫,我們可以使用dex2jar/apktool簡單地反編譯該應用程序,并分析創(chuàng)建的文件夾。 你還可以在http://www.appbrain.com/stats/libraries/ad中找到一些最受歡迎的 Android 廣告庫和使用它們的應用程序。 廣告庫可能具有許多漏洞,例如上一節(jié)中討論的WebView漏洞,不安全的文件權限或任何其他漏洞,這可能會導致攻擊者破壞整個應用程序,獲得反向 shell 或甚至創(chuàng)建后門。

7.4 Android 中的跨應用腳本

跨應用程序腳本漏洞是一種 Android 應用程序漏洞,攻擊者可以繞過同源策略并在應用程序位置中訪問存儲在 Android 文件系統(tǒng)上的敏感文件。 這意味著攻擊者能夠訪問位于/data/data/[應用程序包名稱]位置中的所有內容。 漏洞的根本原因是,應用程序允許內容使用受信任區(qū)域的訪問權限,在不受信任區(qū)域中執(zhí)行。

如果漏洞應用程序是 Web 瀏覽器,攻擊會變得更加嚴重,其中攻擊者能夠靜默竊取瀏覽器存儲的所有 Cookie 和其他信息,并將其發(fā)送給攻擊者。

甚至一些著名的應用程序,如 Skype,Dropbox,海豚瀏覽器等,早期版本中都存在跨應用程序腳本漏洞。

讓我們來看看海豚瀏覽器 HD 中的漏洞,例如,由 Roee Hay 和 Yair Amit 發(fā)現(xiàn)的漏洞。 此示例中使用的存在漏洞的海豚瀏覽器 HD 應用程序版本為 6.0.0,以后的版本中修補了漏洞。

海豚瀏覽器 HD 有一個名為BrowserActivity的漏洞活動,它可以被其他應用程序以及其他參數(shù)調用。 攻擊者可以使用它來調用海豚瀏覽器 HD 并打開特定的網頁,以及惡意的 JavaScript。 以下屏幕截圖顯示了 POC 代碼以及通報(http://packetstormsecurity.com/files/view/105258/dolphin-xas.txt):

這里,使用屏幕截圖中的上述代碼,我們將打開http://adityagupta.net網站以及 JavaScript 函數(shù)alert(document.domain),它將在提示框中簡單地彈出域名。 一旦我們在我們的手機上打開這個惡意應用程序,它將調用海豚瀏覽器 HD,打開 URL 和我們指定的 JavaScript 代碼,如下面的截圖所示:

總結

在本章中,我們了解了 Android 中的不同攻擊向量,從滲透測試者的角度來看,這非常有用。 本章應該用做對不同攻擊向量的快速演練; 然而,建議你嘗試這些攻擊向量,嘗試修改它們,并在現(xiàn)實生活中的滲透測試中使用它們。

在下一章中,我們將離開應用程序層,專注于 Android 平臺的基于 ARM 的利用。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容