在上一篇文章中,我們?yōu)闇y試安卓應(yīng)用程序設(shè)置了一個移動滲透平臺。到目前為止,你需要保證你已經(jīng)配置好你的虛擬設(shè)備,安裝完安卓命令行工具,以及前一篇文章所提及的一些工具(drozer, dex2jar, apktool)。
在這一篇文章中,我會帶領(lǐng)大家了解一些信息收集技術(shù),我們將看到如何反編譯一款安卓應(yīng)用程序,分析安卓應(yīng)用程序的簽名以及其他一些東西。
關(guān)于虛擬設(shè)備這一點,如果你正在尋找一款符合你需求的安卓應(yīng)用測試平臺,那么你可以去看看Android Tamer[https://androidtamer.com/ ]。
提取應(yīng)用中的信息
首先,確認(rèn)下你系統(tǒng)中的InsecureBankv2是我們的最新版本。當(dāng)然,建議你做一個git pull將所有更新都合并到你的主分支中。
完成之后,我們就來對這個apk文件進(jìn)行一些分析,將apk文件復(fù)制到一個獨立的文件夾中。就向Ios的ipa文件一樣,apk文件也是一個打包文件,所以你可以通過將文件后綴從.apk修改為.zip然后就可以進(jìn)行提取了。
進(jìn)入提取文件后的文件夾中,你可以看到許多的文件
讓我來簡單的進(jìn)行一下描述:
AndroidManifest.xml——AndroidManifest.xml 是每個android程序中必須的文件。它位于整個項目的根目錄,描述了package中暴露的組件(activities, services, 等等),他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。從安全角度來看,它包含了應(yīng)用程序中所有使用到的組件信息,同時它還會顯示應(yīng)用程序使用的permissiosns信息,我強(qiáng)烈建議大家可以在谷歌文檔中多看看。
在我們所要討論的漏洞中就會討論到安卓應(yīng)用組件中的一些東西。
Assets——這個被用來存儲一些原始資源文件,存儲在里面的東西會編譯到apk文件中。
Res——用于儲存像圖片,版式文件等
META-INF——這個里邊存儲的是關(guān)于簽名的一些信息
classes.dex——這里面就是編譯的應(yīng)用程序代碼,如果你要進(jìn)行反編譯操作,那么你需要先將dex文件轉(zhuǎn)換為jar文件,然后用java編譯器進(jìn)行讀取。
存儲公鑰證書的CERT.RSA文件是在META-INF 文件夾下面,找出公鑰證書的信息可以鍵入一下命令
keytool -printcert -file META-INF/CERT.RSA
請注意,在經(jīng)過反編譯,編譯然后重新部署到其他設(shè)備之后還可以對這個apk文件中的代碼進(jìn)行修改。但是,一旦修改了這個apk文件之后,就會丟失其完整性,那么我們就需要重新弄一個public/private key。
說到這里,推薦大家去了解下如何創(chuàng)建自己的public/private key
[http://developer.android.com/tools/publishing/app-signing.html]
一旦完成應(yīng)用程序的編譯工作,你可以使用jarsigner工具對其完整性進(jìn)行驗證。
現(xiàn)在我們就來使用dex2jar這款反編譯工具,dex2jar接受輸入為.apk后綴的文件,然后將其轉(zhuǎn)換為jar文件。
完成操作之后,你可以在JD-GUI中打開,并瀏覽其源代碼。
現(xiàn)在我們就可以通過瀏覽其源代碼找到一些潛在的漏洞,我們可以清楚的注意到對這個apk文件進(jìn)行逆向,并瀏覽其源代碼是多么的簡單。這里我們需要注意的是,我們之所以能夠這么簡單就得到源代碼是由于這款A(yù)pp沒有對其源碼進(jìn)行模糊處理。像Google提供的Proguard工具就可對代碼進(jìn)行模糊處理。雖然對App源碼進(jìn)行模糊處理并非是萬無一失的方法,但是至少還是有一部分作用,在今后的文章中我們可能就會遇到對代碼進(jìn)行了模糊處理的案例。
在本節(jié)中,我們了解到如何從一款A(yù)pp中提取信息。
文章來源:FreeBuf黑客與極客(FreeBuf.COM)