對手機應用程序的攻擊并不是什么新鮮事了,網絡上也有很多這方面的教程。不過即便如此,依然有很多滲透測試員無法對其攻擊技術進行分類,甚至也做的不好。手機應用的攻擊手法和其他形式的攻擊非常相似。但是如果你不經常練習這些手法,也是毫無用處。
所以我們該如何提高自己的水平呢?事實上google應用商店有超過1.5百萬的App,其中也不乏存在漏洞的App,甚至也有專門的測試App,大家都可以下載來玩。
我們總結下移動應用的分析手法,主要包括:
文件系統分析
網絡分析
源代碼分析
動態分析
在本文中,我們將針對文件系統分析進行說明。如果有必要的話,將來還會對這進行一些擴展。
要想訪問文件系統的內容,我們需要獲取一定的權限。在Android中通常指的就是Root權限。有很多人說:“有root權限當然好辦了,如果沒有的話你不就什么都做不了,而且大多數用戶的設備都沒有root過” 。這點問的好,在我為一個企業演示什么是真正的安全威脅的時候,就想著能不能寫一個工具可以不用通過root權限就能訪問文件系統,于是 BackHack就誕生了。
BackHack大概是2年開始創建的,但是由于工作忙,一直把它放在一邊。直到前幾周,我發現了一款新游戲: Alto’s Adventure。這個游戲很適合用來消磨時間,制作的也非常漂亮。我花了很長時間闖關并且收集金幣,就是這種情況下,我決定讓backHAck重見天日,看看我對這個APP做些什么。
首先,我們得確保安裝了Android Studio,或者至少安裝了Android Debug Bridge.當然我們也需要我們的設備開啟調試模式。這個時候,發送“adb devices”指令,并且確定你的設備已連接。
現在,我們運行backHack。(python backHack.py)
backHack使用一個很簡單的目錄系統做的界面,非常容易使用。首先我們需要選擇想要“嘿嘿嘿”的app。進入選項1出現右圖,然后選擇1選項可以列出設備上的app列表,選項2提供搜索app的功能,或者選擇選項3直接輸入app的名稱。我們的目的是分析Alto’s adventure,所以我們選擇用選項2搜索’alto’,如下圖,可以看到找到一個名字是“com.noodlecake.altosadventure”的app,然后我們把這個名字復制粘貼到選項3中,返回主目錄:
接下來,我通過選項2 Backup and Extract App來備份app。在這一步驟,程序將會提醒你解鎖你的設備,并且確定這個備份操作:
一旦備份成功,backHack就會提取出這個備份, 將文件系統的內容放在apps/
然后我們可以隨便看看文件系統里面有什么。通常,sp(shared_prefs)文件夾和db文件夾(database)是個好地方。在Alto’s Adventure中,有一個名叫“com.noodlecake.altosadventure.xml”的XML文件夾。
我們查看這個文件,發現app的配置信息,包括金幣和等級。我發現可以很容易更改這個值,看下改了后會發生什么事,我們把金幣設置成999999999 并且等級設置成60。(60是最高等級,而我就不把金幣設置到$1,000,000,000,就不就不,急死強迫癥患者—。—)
保存文件后,我們返回backHack并且選擇選項3,這樣就能重新打包你的app然后重啟你的設備。然后,軟件提示恢復app,如下圖:
現在,app已經恢復了,我們打開app看看會發生什么。
999,999,999的金幣,等級變成了61級!(注意,XML文件中我們設置成60的參數是的是currentGoalLevel,這個參數實際上意味這著“完成目標等級”。當然,金幣達到 1,000,000,000。猜猜他們是否已經達到上限了?)
好吧,這是個很有趣的方式,可以在游戲的時候得到一些額外的金幣和等級,同樣這個方法可以用在任何app上。
很多時候,這不僅僅只是修改下app數據,你還能可能找到一些密碼和其他敏感信息,backHack很好的展示了沒有root的設備也會有的風險,因此,其實所有沒有鎖的設備都能被獲取到。