dvb的審計筆記1(靜態(tài)代碼審計)

一.介紹

dvb是一個故意存在漏洞的 Android 應用程序,可以認為是APP靶機。它有一個官方文檔,在APP的審計過程中,可以參考官方文檔進行,官方文檔中介紹了APP存在的各種安全漏洞。

從名字可以看出來,這是一個不安全的銀行APP,整個APP包含的核心功能包含登錄、個人資料、密碼更改、轉(zhuǎn)賬、添加受益人等模塊。

包含的具體漏洞,也是一些APP上常見的安全漏洞,例如典型的

root檢測繞過(這個其實也說不上是漏洞),未開啟SSL pinning,明文請求,硬編碼,activity 導出,logcat泄漏等。


二.mobsf平臺掃描

拿到APK后,直接在mobsf上靜態(tài)掃一下看看結(jié)果先

可以掃描結(jié)果摘要,mobsf給了49分,看著好像還可以。不過mobsf評分也就看看就可以了,評分邏輯很不合理,很多正常的APP因為權(quán)限比較多,得分反而很低。這個靶機APP反而得分還可以。進一步看具體分析項。

報告總結(jié)

1,權(quán)限部分

可以看到,沒有申請任何危險權(quán)限。在APP升級過程中,一般比較有復雜功能的APP,都會申請一些被mobsf認為是危險的權(quán)限,例如國內(nèi)APP幾乎都有位置權(quán)限,攝像機權(quán)限。雖然mobsf提醒dangerous,但是業(yè)務邏輯需要,可以不用在意。只需要注意申請的權(quán)限是否滿足合規(guī)要求。例如申請權(quán)限的具體原因、具體場景,需要在隱私政策里說明,在申請權(quán)限之前,需要彈窗提醒用戶,在用戶確認權(quán)限之前,不允許業(yè)務采集相關(guān)信息等等。

不過也有一些權(quán)限需要特別注意,例如寫SD的權(quán)限,如果沒必要,就不要申請,現(xiàn)在大部分APP沒有寫SD權(quán)限的必要。

申請的系統(tǒng)權(quán)限

2,系統(tǒng)API接口部分


系統(tǒng)API調(diào)用

上圖是檢測APP調(diào)用的系統(tǒng)API,因為APP沒有進行加固,所以反編譯代碼也比較清晰,在對應的API調(diào)用中,可以點進去看到具體的反編譯代碼。

有幾個可能比較敏感的API調(diào)用,可以進去看一下具體代碼調(diào)用

Certificate Handling


證書邏輯

Execute OS Command

看著是一個危險函數(shù),點擊去看,執(zhí)行的command命令不是用戶輸入的,而是固定的/system/xbin/which,這里應該是root檢測邏輯。

root檢測

?getInstalledPackages

?高危接口,獲取已安裝應用的信息時,確保不會泄露敏感信息

3,BROWSABLE ACTIVITIES

browsabel activity

這里可能存在風險,如果URL scheme沒做好限制和過濾,可能會被利用,導入惡意的URL,或者造成信息泄露。

4,網(wǎng)絡相關(guān)風險

網(wǎng)絡風險

這里的風險比較明確,首先是允許明文請求,然后是信任系統(tǒng)證書,沒有進行ssl spinning。反應到動態(tài)測試上,可能會在動態(tài)測試中,發(fā)現(xiàn)有明文傳輸?shù)腍TTP請求,以及可以被抓包工具進行https抓包。這里額外注意,后續(xù)在動態(tài)測試中注意。

5,manifest風險配置項


Manifest

這里列出了manifest文件中的風險項,具體風險,需要進一步關(guān)注

1,minsdk21 ,還可以,如果更低,例如17,就存在比較嚴重的風險

2,usercleartextfraffic,允許明文傳輸,這里最好設(shè)置成false
3,backu,需要關(guān)閉

4,設(shè)置了inten-fileter,隱式export,需要關(guān)注是否有敏感信息泄露

6,靜態(tài)代碼掃描部分

這里mobsf給了三個部分

1,log可能泄露敏感信息

代碼中有Log函數(shù),mobsf平臺把所有l(wèi)og函數(shù)的代碼入口都列出來了,很多。不過我找了一下,發(fā)現(xiàn)一個很明顯的問題點

????????????????????String string = jSONObject2.getJSONObject("data").getString("accessToken");

? ? ? ? ? ? ? ? ? ? SharedPreferences sharedPreferences = BankLogin.this.getSharedPreferences("jwt", 0);

? ? ? ? ? ? ? ? ? ? Log.d("accesstoken", string)

這里把token給打印出來了。

2,APP讀取外部存儲,可能泄露信息

,3,APP有root檢測邏輯

root檢測邏輯,這里調(diào)用了os.exe函數(shù),需要注意的是繞過相關(guān)的邏輯。


三.總結(jié)

從靜態(tài)掃描結(jié)果來看,APP還是存在不少問題。有些比較明確,例如log了token出來。有些還需要根據(jù)動態(tài)測試的結(jié)果進一步確認。例如很多APP有cleartext的配置,不過實際上APP并沒有明文請求等等。

不過靜態(tài)掃描,還是給除了不少需要注意的風險點,這些風險點,需要在后續(xù)的動態(tài)測試中進行驗證。

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

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

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