Android APP安全測試入門
轉載位址:https://sobug.com/article/detail/7 作者:nx4dm1n
背景
最近這兩年移動端真是非常火,每個機關或多或少都會有那麼幾款App,對于我們Web安全攻城師來說,App安全也需要或多或 少的了解一些。年初機關來了一位對App安全略有研究的小夥伴,某日閑來無事教了筆者幾招,分享給大家。有句古語:”工欲善其 事,必先利其器”,我們要研究App安全,沒有幾款高大上的神器是會非常麻煩的,是以本文主要給大家分享一下筆者學到的一些基 礎知識,主要是一些移動端測試輔助工具的使用。
模拟器
模拟器筆者經常使用有兩款,一款是BlueStacks,這款個人感覺是做的非常不錯的,一般安裝操作App非常流暢,不會有卡死 的情況。另外一款就是SDK模拟器(Software Development Kit)了,這款是特别高大上的,類似虛拟機vm一樣,可以建立多個虛拟 機,安裝不同的android系統。
BlueStacks
下載下傳位址:http://www.bluestacks.net.cn/Download/
安裝的時候會提示安裝”給力助手”,給力助手是輔助操作的,可以安裝電腦上下載下傳的app安裝包到模拟器,也可以解除安裝已經安裝 的,還有很多針對模拟器的設定功能,如圖:
BlueStacks安裝之後,安裝APP,打開App界面如圖:
功能方面使用都非常簡單,本文就不做介紹了。
Software Development Kit 下載下傳位址: http://developer.android.com/sdk/index.html 下載下傳之後打開包中的eclipse,然後進行模拟器Android鏡像的下載下傳,包中自帶的鏡像是Android 5.0的鏡像,建議下載下傳老版本的, 友善測試App,新版的鏡像部分App在安裝的過程中可能會有不相容的情況。 SDK Android鏡像的下載下傳如下圖所示:
下載下傳完Android鏡像之後就可以安裝虛拟機了,具體如下:
抓包神器
抓app包的方法有很多種,比如手機設定代理用BurpSuite進行抓包,或者可以用fidder抓包。我比較習慣用一款小工具smsniff 進行抓包,使用起來比較友善,抓到的包再 放到Burpsuite進行修改送出等。工具如圖:
這款工具比較小巧,占用資源較少,有些時候用burp等抓包會發生錯誤,或者直接導緻虛拟機上的app無法連接配接網絡,用這款 就不會發生以上說的情況。
SDK小工具
SDK中自帶了幾款很不錯的小工具,我比較常用的有adb和emulator。ADB是一個用戶端-伺服器端程式,其中用戶端是你用 來操作的電腦,伺服器端是android裝置。SDK包中預設就有這倆款小工具
Adb
Adb指令如下:
adb devices檢視啟動的虛拟機裝置,如圖:
adb install,安裝app到已經打開的虛拟機中,如圖:
這樣就将本地下載下傳的app安裝到了已經啟動android虛拟機中了。
adb shell,登入裝置shell,如圖:
adb push,将電腦上的檔案發送的android虛拟機上;adb pull,将android虛拟機上的檔案發送到電腦上,如圖:
Adb指令非常強大,以上隻是列出了比較基礎的幾個,詳細的可以百度。
Emulator
Emulator指令我目前常用的就兩招,啟動android虛拟機,以代理模式啟動android虛拟機。指令分别如下: Emulator @xiaomi Emulator -http-proxy 127.0.0.1:8080 @xiaomi 其中xiaomi是我建立的android虛拟機的名字,設定代理啟動之後,就可以用burp進行抓包了。
反編譯工具
反編譯app主要用apktool和d2j-dex2jar.bat,我比較常用的是dex2jar。 Apktool反編譯指令如下: apktool.jar d e:\Appsec\xxx.apk
指令執行之後會在apktool.jar所在目錄下生成一個app的目錄。
d2j-dex2jra.bat反編譯方法如下:
用rar打開apk檔案,将其中的classes.dex解壓出來,然後執行指令d2j-dex2jar.bat d:\Appsec\xx\classes.dex
執行完成之後會在d2j-dex2jar.bat相同目錄下生成一個.jar的檔案,可以用jd-gui.exe直接打開.jar來檢視app的源代碼,如圖:
案例分享
App安全測試,我隻能測測簡單的,大多是權限繞過類的,比如繞過鎖屏密碼、任意使用者登入等。基本都是因為app代碼設計 缺陷或者權限驗證不足導緻的。
任意使用者登入
某次測試一個app,RP比較好,發現一任意使用者登入漏洞。在本地的配置檔案中有登入使用者的帳号和密碼,APP設計比較 奇葩,隻是驗證了使用者登入郵箱,沒有驗證密碼,導緻通過修改本地的配置檔案就可以實作任意使用者登入,登入之後能夠檢視 别人的訂單等資料。在android虛拟機中安裝的app都在/data/data目錄下,大概的目錄結構如下:
app安裝目錄下的結構都是差不多的,主要有緩存檔案、資料庫目錄、本地檔案、配置檔案等。比較重要的目錄有databases、 shared_prefs。分别儲存了資料庫檔案和配置檔案。 言歸正傳,檢視了安裝app的shared_prefs目錄,發現其中一個檔案内容如下:
可以看到有使用者的登入郵箱和密碼,将郵箱修改成存在的使用者郵箱,密碼随意輸入,然後adb shell之後,用linux指令删除 android虛拟機上已經存在的配置檔案,再用adb push将修改後的檔案發送到android虛拟機,再打開app發現已經用其它使用者成功 登入了。
寫在最後
APP安全接觸的不多,技術比較菜,是以本文分享的基本都是工具的使用,比較基礎。
轉載位址:https://sobug.com/article/detail/7 作者:nx4dm1n
注: