關(guān)于APP滲透測(cè)試的實(shí)踐與思考
一、前言
移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(Mobile APP,以下簡(jiǎn)稱“APP”或“移動(dòng)APP”)安全早已成為信息安全領(lǐng)域中廣受關(guān)注的熱點(diǎn)話題。作為安全檢測(cè)人員,在日常測(cè)試工作中經(jīng)常涉及移動(dòng)APP的安全檢測(cè),在此結(jié)合相關(guān)移動(dòng)APP檢測(cè)標(biāo)準(zhǔn)和工作經(jīng)驗(yàn),從滲透測(cè)試角度,對(duì)移動(dòng)APP的檢測(cè)進(jìn)行概要性總結(jié)說(shuō)明。
二、目標(biāo)分析
移動(dòng)APP的安全問(wèn)題與傳統(tǒng)桌面軟件有所不同。雖然現(xiàn)代移動(dòng)操作系統(tǒng)(如Android和iOS)已比較注重安全防護(hù),但如果APP開發(fā)人員在開發(fā)移動(dòng)應(yīng)用程序時(shí)不全面仔細(xì)地考慮安全性,APP仍可能會(huì)存在可被利用的安全漏洞,從而面臨安全威脅。移動(dòng)APP滲透測(cè)試目的就是充分分析和挖掘移動(dòng)APP和相關(guān)系統(tǒng)存在的安全問(wèn)題,進(jìn)而幫助其進(jìn)行修復(fù),提升安全性,保護(hù)用戶信息。
從業(yè)務(wù)上來(lái)看,在移動(dòng)APP架構(gòu)中,面臨安全威脅的目標(biāo) / 路徑主要有三個(gè),它們分別是:移動(dòng)APP、數(shù)據(jù)傳輸和服務(wù)端。
三、面臨的威脅
1. 客戶端
客戶端(移動(dòng)APP)主要面臨的威脅包括反編譯、調(diào)試、篡改/重打包、輸入記錄、組件安全、注入和Hook、本地敏感數(shù)據(jù)泄露等。
(1) 反編譯
對(duì)一個(gè)軟件進(jìn)行分析可以分為靜態(tài)分析和動(dòng)態(tài)分析兩大部分。反編譯是靜態(tài)分析的一種基礎(chǔ)手段。高級(jí)編程語(yǔ)言源代碼經(jīng)過(guò)編譯變成可執(zhí)行文件,反編譯就是其逆過(guò)程。通過(guò)反編譯和逆向,可以在沒(méi)有軟件源碼的情況下了解其內(nèi)部實(shí)現(xiàn)細(xì)節(jié),進(jìn)行漏洞挖掘和算法分析等。移動(dòng)APP測(cè)試,常見的測(cè)試對(duì)象是Android APP和iOS APP,由于應(yīng)用結(jié)構(gòu)、構(gòu)建工具鏈等差異,Android APP和iOS APP的逆向分析、反編譯技術(shù)方法均不盡相同。常見的反編譯工具有IDA Pro及相關(guān)Decompiler插件、Radare2 、Ghidra、JD-GUI、Smali/Baksmali、dex2jar、Hopper等等。
(2) 調(diào)試
調(diào)試是軟硬件開發(fā)人員用于排查軟件錯(cuò)誤的一種手段,也是安全檢測(cè)人員進(jìn)行動(dòng)態(tài)分析的一種基本方式。從調(diào)試對(duì)象來(lái)看,調(diào)試可分為硬件調(diào)試和軟件調(diào)試。對(duì)于移動(dòng)APP,安全檢測(cè)工程師一般只需進(jìn)行軟件調(diào)試。軟件調(diào)試又可分為源碼級(jí)調(diào)試和非源碼級(jí)調(diào)試。在獲取不到源碼的情況下,一般只能先做非源碼級(jí)調(diào)試。通過(guò)調(diào)試,安全檢測(cè)工程師可以動(dòng)態(tài)地分析APP內(nèi)部原理和行為。移動(dòng)APP檢測(cè)中,常見的APP調(diào)試工具有IDA Pro、GDB、LLDB、ADB、JDB和Cycript等。
(3) 篡改/重打包
Android和iOS應(yīng)用在正式發(fā)布前需進(jìn)行數(shù)字簽名,在安裝時(shí)系統(tǒng)會(huì)對(duì)APP簽名進(jìn)行檢查,檢查通過(guò)才能成功安裝運(yùn)行。這可在一定程度上保護(hù)APP不被篡改。但由于簽名驗(yàn)簽機(jī)制很多技術(shù)都是公開的,被研究的比較透徹,再加上不同平臺(tái)的簽名機(jī)制對(duì)APP限制程度各不相同,對(duì)安全性要求比較高的APP如果只依靠系統(tǒng)層面的簽名保護(hù)進(jìn)行防篡改/重打包還遠(yuǎn)遠(yuǎn)不夠。滲透測(cè)試過(guò)程中,有時(shí)我們?yōu)榱烁玫姆治鯝PP,也需要對(duì)APP進(jìn)行修改重打包,然后利用相應(yīng)平臺(tái)的工具進(jìn)行重新簽名,最后安裝運(yùn)行。相應(yīng)的工具有:apktool、apksigner 、signapk、jarsigner和codesign等。
(4) 輸入記錄
當(dāng)APP在不安全的環(huán)境中運(yùn)行時(shí),存在用戶輸入被記錄風(fēng)險(xiǎn)。一般可能通過(guò)軟硬件鍵盤輸入設(shè)備事件或屏幕截取等方式來(lái)進(jìn)行記錄。根據(jù)對(duì)APP不同的安全要求,滲透測(cè)試中宜需關(guān)注這些風(fēng)險(xiǎn)。
(5) 組件安全
Android組件包括Activity、Broadcast Receiver、Service和Content Provider。若權(quán)限配置不當(dāng)而導(dǎo)致組件暴露,APP就存在可能被其他應(yīng)用攻擊或劫持風(fēng)險(xiǎn),進(jìn)而導(dǎo)致認(rèn)證被繞過(guò)、敏感數(shù)據(jù)被竊取等。測(cè)試過(guò)程中,一般可通過(guò)對(duì)APP進(jìn)行反編譯,查看AndroidManifest文件或直接掃描查找暴露的組件,分析反編譯的相關(guān)組件代碼,查看是否有安全漏洞并進(jìn)行驗(yàn)證。
(6) 注入和Hook
注入和Hook都可對(duì)目標(biāo)APP運(yùn)行時(shí)行為進(jìn)行修改。雖然我們常常將它們放在一起說(shuō),但其實(shí)它們的實(shí)現(xiàn)原理并不相同。注入是指將一段代碼或一個(gè)完整的可執(zhí)行模塊加載到目標(biāo)程序中,而Hook是指通過(guò)劫持程序執(zhí)行流程來(lái)改變程序運(yùn)行行為。不同平臺(tái)的APP運(yùn)行框架和機(jī)制不同,這也導(dǎo)致它們的注入和Hook方式不同,但都會(huì)通過(guò)系統(tǒng)或框架提供的相關(guān)機(jī)制和接口進(jìn)行操作。測(cè)試人員可根據(jù)需求尋找Hook點(diǎn),編寫注入或Hook模塊。常用的相關(guān)工具有l(wèi)ibinject、Xposed、Cydia、fishhook和Frida等。
(7) 本地敏感數(shù)據(jù)泄露
APP的本地存儲(chǔ)數(shù)據(jù)或運(yùn)行日志有可能會(huì)泄露敏感或非敏感數(shù)據(jù)。一般測(cè)試人員通過(guò)泄露的數(shù)據(jù),可以去進(jìn)一步深入理解APP內(nèi)部原理。測(cè)試人員可查看APP本地?cái)?shù)據(jù)存儲(chǔ)(特別是會(huì)關(guān)注APP是否在公共區(qū)域存儲(chǔ)了數(shù)據(jù))和APP運(yùn)行日志內(nèi)容,結(jié)合業(yè)務(wù)場(chǎng)景綜合分析是否存在本地敏感數(shù)據(jù)泄露風(fēng)險(xiǎn)。常用工具adb、RE、SQLite和ifile等。
2. 數(shù)據(jù)傳輸
APP與服務(wù)端進(jìn)行的網(wǎng)絡(luò)數(shù)據(jù)傳輸過(guò)程中主要面臨的威脅包括數(shù)據(jù)竊聽、數(shù)據(jù)篡改和數(shù)據(jù)重放等。
(1) 數(shù)據(jù)竊聽
若APP和服務(wù)端通信過(guò)程中未對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行機(jī)密性保護(hù),數(shù)據(jù)就有可能會(huì)被竊聽。例如,很多APP和服務(wù)端之間在不安全的傳輸通道中直接使用的HTTP協(xié)議進(jìn)行通信,若用戶名、口令以及其他重要數(shù)據(jù)未進(jìn)行加密,這些數(shù)據(jù)在網(wǎng)絡(luò)傳輸中的各個(gè)節(jié)點(diǎn)就可能會(huì)被竊聽而泄露。測(cè)試人員應(yīng)根據(jù)APP業(yè)務(wù)場(chǎng)景確認(rèn)APP的敏感數(shù)據(jù)**、數(shù)據(jù)傳輸通道和協(xié)議,分析是否存在敏感數(shù)據(jù)泄露風(fēng)險(xiǎn)。對(duì)安全性要求比較高的APP,例如金融類APP,還要分析其加密方式(如果有)是否安全有效。常用工具有Wireshark、Burpsuite、Fiddler和Charles等。
(2) 數(shù)據(jù)篡改
若APP和服務(wù)端通信過(guò)程中未對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行完整性保護(hù),數(shù)據(jù)就有可能會(huì)被篡改,使APP更易被結(jié)合其他安全漏洞發(fā)起攻擊。不同的業(yè)務(wù)場(chǎng)景下,數(shù)據(jù)篡改帶來(lái)的風(fēng)險(xiǎn)高低也不同。測(cè)試人員可嘗試對(duì)截取到的數(shù)據(jù)進(jìn)行篡改后發(fā)送,觀察和分析APP或服務(wù)端是否可識(shí)別出數(shù)據(jù)被篡改并作出合理反應(yīng)。對(duì)安全性要求比較高的APP,比如金融類APP,還要分析其防篡改方式(如果有)是否安全有效。常用工具有Wireshark、Burpsuite、Fiddler和Charles等。
(3) 數(shù)據(jù)重放
重放攻擊是指將之前竊聽到的數(shù)據(jù)原封不動(dòng)地重新發(fā)送給接收方。這種攻擊通常用于身份認(rèn)證、交易等過(guò)程。例如,對(duì)HTTP協(xié)議,測(cè)試人員可重復(fù)發(fā)送截取到的請(qǐng)求報(bào)文,并觀察和分析服務(wù)端的反應(yīng)。常用工具有Wireshark、Burpsuite、Fiddler和Charles等。
3. 服務(wù)端
服務(wù)端主要面臨的威脅包括不安全的中間件、認(rèn)證與會(huì)話管理、訪問(wèn)控制、注入、應(yīng)用層拒絕服務(wù)、密碼算法和密鑰管理等。
(1) 不安全的中間件
服務(wù)器為提供完整的服務(wù)所使用的各個(gè)中間件,由于未及時(shí)更新或未啟用安全的配置可能引發(fā)安全漏洞,導(dǎo)致服務(wù)器存在遭受攻擊的風(fēng)險(xiǎn),如IIS文件名解析漏洞、Weblogic反序列化漏洞、SMB遠(yuǎn)程命令執(zhí)行漏洞等,攻擊者可通過(guò)這些漏洞獲取服務(wù)器敏感信息、執(zhí)行惡意命令,甚至獲取服務(wù)器管理員權(quán)限。
(2) 認(rèn)證與會(huì)話管理
服務(wù)器提供的身份認(rèn)證和會(huì)話管理機(jī)制存在安全漏洞,如系統(tǒng)關(guān)鍵組件或應(yīng)用使用弱口令,對(duì)于高安全級(jí)別的系統(tǒng)未采用雙因子認(rèn)證方式,無(wú)防止認(rèn)證口令或驗(yàn)證碼暴力破解攻擊的機(jī)制,未對(duì)SessionID的生成、過(guò)期和銷毀進(jìn)行安全配置等,攻擊者可利用這些漏洞在非授權(quán)的情況下登錄系統(tǒng)并執(zhí)行惡意操作。
(3) 訪問(wèn)控制
開發(fā)者未對(duì)用戶登錄系統(tǒng)后的操作進(jìn)行進(jìn)一步的訪問(wèn)權(quán)限控制,服務(wù)端對(duì)從客戶端收到的對(duì)數(shù)據(jù)進(jìn)行增、刪、改、查詢等操作的請(qǐng)求未進(jìn)行鑒權(quán)處理,導(dǎo)致攻擊者可執(zhí)行超出自身賬戶權(quán)限的操作。
(4) 注入
應(yīng)用運(yùn)行時(shí)可能需要調(diào)用一些向前端寫入內(nèi)容、查詢數(shù)據(jù)或執(zhí)行系統(tǒng)命令的函數(shù),如果用戶能控制這些函數(shù)的輸入,而開發(fā)者未對(duì)輸入的內(nèi)容進(jìn)行嚴(yán)格的過(guò)濾,攻擊者可以在前端提交惡意構(gòu)造的輸入,進(jìn)行XSS注入、SQL注入、命令注入等攻擊,從而導(dǎo)致服務(wù)器重要數(shù)據(jù)泄露或執(zhí)行惡意命令。
(5) 應(yīng)用層拒絕服務(wù)
服務(wù)器未對(duì)應(yīng)用的最大連接數(shù)或發(fā)起請(qǐng)求的IP和頻率進(jìn)行限制,攻擊者通過(guò)并發(fā)大量的請(qǐng)求或構(gòu)造畸形的數(shù)據(jù)包,如CC攻擊、Slowloris攻擊,造成系統(tǒng)資源耗盡,導(dǎo)致服務(wù)器拒絕服務(wù)。
(6) 密碼算法和密鑰管理
應(yīng)用使用已被證明為不安全的密碼算法對(duì)重要數(shù)據(jù)的傳輸和存儲(chǔ)進(jìn)行加解密,如使用MD5算法對(duì)用戶口令進(jìn)行存儲(chǔ),使用DES算法對(duì)數(shù)據(jù)進(jìn)行加密傳輸,可能導(dǎo)致攻擊者獲取密文后短時(shí)間內(nèi)恢復(fù)出明文信息;應(yīng)用使用不安全的方式進(jìn)行密鑰管理,如將系統(tǒng)使用的密鑰明文編碼在應(yīng)用代碼中或在服務(wù)器配置文件中明文存儲(chǔ),將導(dǎo)致攻擊者輕易獲取數(shù)據(jù)加解密密鑰,進(jìn)而得到加密數(shù)據(jù)的明文信息。
四、APP滲透測(cè)試流程
滲透測(cè)試的最終目的是幫助目標(biāo)APP或系統(tǒng)發(fā)現(xiàn)并修復(fù)安全漏洞,提升APP或系統(tǒng)安全性。一個(gè)優(yōu)秀的滲透測(cè)試工程師或團(tuán)隊(duì)首先要有良好的職業(yè)道德,同時(shí)也應(yīng)注意保護(hù)自己,其次要有專業(yè)的技術(shù)知識(shí)、規(guī)范的測(cè)試流程和活躍的思維。下面,我們先介紹一般的APP滲透流程,然后探討下結(jié)合APP,對(duì)服務(wù)端開展?jié)B透測(cè)試的一些思路。
1. 準(zhǔn)備階段
定義安全測(cè)試的范圍,包括確認(rèn)適用的安全控制點(diǎn)、受測(cè)方的測(cè)試目標(biāo)和敏感數(shù)據(jù)。同時(shí)在開展?jié)B透測(cè)試前,應(yīng)拿到被測(cè)單位的書面蓋章滲透測(cè)試授權(quán)。
2. 信息收集
收集包括APP的環(huán)境、業(yè)務(wù)用例和架構(gòu)等信息。其中:
- 環(huán)境信息如APP的業(yè)務(wù)功能、行業(yè)分類、開發(fā)或運(yùn)營(yíng)組織的基本信息和工作流程等;
- 架構(gòu)信息包括APP本身(如何訪問(wèn)數(shù)據(jù)和資源、是否檢測(cè)自身運(yùn)行在root或模擬環(huán)境中等)、APP適用的操作系統(tǒng)及版本、與服務(wù)端的通信協(xié)議(是否使用安全傳輸協(xié)議、是否有其他安全防護(hù)措施等)和遠(yuǎn)程服務(wù)(APP使用哪些遠(yuǎn)程服務(wù)、這些遠(yuǎn)程服務(wù)被攻擊是否會(huì)影響APP)等。
這些信息大致分為開發(fā)或運(yùn)營(yíng)組織的信息和APP相關(guān)技術(shù)信息兩大類,一般前者可由商務(wù)人員負(fù)責(zé)去收集,后者可由技術(shù)人員收集。
3. 應(yīng)用描繪
根據(jù)前2個(gè)階段收集的資料(亦可通過(guò)自動(dòng)掃描、手動(dòng)分析APP來(lái)進(jìn)行相應(yīng)補(bǔ)充),測(cè)試人員已較為全面的了解受測(cè)APP的環(huán)境、業(yè)務(wù)用例和架構(gòu)等信息,并基本確定了受測(cè)APP的滲透測(cè)試入口點(diǎn)、收集存儲(chǔ)的數(shù)據(jù)和可能潛在的安全漏洞,即可根據(jù)這些漏洞風(fēng)險(xiǎn)等級(jí)高低,對(duì)其進(jìn)行排序,以便測(cè)試人員確定滲透測(cè)試的攻擊路徑,并制定相應(yīng)的測(cè)試用例。
4. 漏洞利用和測(cè)試工具開發(fā)
在此階段,測(cè)試人員將嘗試?yán)们耙浑A段發(fā)現(xiàn)的漏洞,對(duì)應(yīng)用程序進(jìn)行滲透,以驗(yàn)證發(fā)現(xiàn)的漏洞是否真實(shí)、有效,同時(shí)在漏洞驗(yàn)證過(guò)程中可能涉及測(cè)試工具、腳本的開發(fā);該階段在APP滲透測(cè)試的整個(gè)過(guò)程中是非常必要和關(guān)鍵的一環(huán)。
5. 提交報(bào)告
此階段,測(cè)試人員將已經(jīng)驗(yàn)證后的漏洞形成報(bào)告,提交客戶。報(bào)告內(nèi)容至少應(yīng)包括詳細(xì)的漏洞名稱、類型、漏洞風(fēng)險(xiǎn)分析、漏洞利用過(guò)程和結(jié)果、滲透測(cè)試過(guò)程中非授權(quán)訪問(wèn)的數(shù)據(jù)等。
注:不同類型安全檢測(cè)除流程上會(huì)有差異外,報(bào)告內(nèi)容、形式也會(huì)有差別,應(yīng)根據(jù)具體情況具體分析。
五、結(jié)合APP滲透服務(wù)端
這一章節(jié)我們主要列舉通過(guò)APP以滲透相關(guān)服務(wù)端的一些思路。在此,假設(shè)測(cè)試人員僅被授權(quán)對(duì)APP和相關(guān)服務(wù)端進(jìn)行滲透。通常包含5個(gè)較為重要的環(huán)節(jié),分別是:信息收集、網(wǎng)站/服務(wù)端滲透、APP功能分析、第三方SDK分析、賬號(hào)安全和業(yè)務(wù)安全分析。
1. 信息收集
為達(dá)成對(duì)服務(wù)端的攻擊,首先應(yīng)對(duì)服務(wù)端進(jìn)行“定位”。對(duì)服務(wù)端定位的常用方法有反編譯APP、抓包分析、APP相關(guān)信息搜索、信息匯總分析等,具體如下:
一是反編譯APP。這個(gè)過(guò)程可能會(huì)涉及到對(duì)APP進(jìn)行脫殼等。反編譯后,在反編譯代碼和資源文件中,利用字符串搜索和過(guò)濾,搜集所有鏈接等信息。除HTTP/HTTPS鏈接外,還應(yīng)關(guān)注是否有FTP、登錄憑證(比如郵箱賬號(hào),有些APP會(huì)發(fā)Crash信息等到郵箱)等信息。字符串搜索和過(guò)濾可以通過(guò)寫腳本,或在自動(dòng)化工具中對(duì)掃描規(guī)則進(jìn)行配置等方式來(lái)完成。
二是抓包分析。一般移動(dòng)APP和服務(wù)端通信使用HTTP(S),可使用抓包工具對(duì)傳輸數(shù)據(jù)進(jìn)行抓包分析。抓包過(guò)程中我們可以手動(dòng)點(diǎn)擊APP中各功能菜單,或利用工具觸發(fā)APP各種功能,通過(guò)抓包工具過(guò)濾或定制系統(tǒng)等方式盡量排除非受測(cè)APP的網(wǎng)絡(luò)通信數(shù)據(jù)干擾(有些URL可能是第三方SDK官方地址,非授權(quán)滲透測(cè)試目標(biāo),應(yīng)予以過(guò)濾)。
三是APP相關(guān)信息搜索。
- 應(yīng)通過(guò)互聯(lián)網(wǎng)廣泛搜索APP相關(guān)信息,若能找到其官網(wǎng),應(yīng)將其相關(guān)的官網(wǎng)、論壇的鏈接都搜集整理出來(lái),若授權(quán)許可,亦可將其納入到滲透的目標(biāo)范圍內(nèi)。
- 尋找該APP的歷史版本,因?yàn)槿粼揂PP當(dāng)前版本的安全加固措施做得比較到位,對(duì)其進(jìn)行逆向分析較為復(fù)雜,但在某個(gè)時(shí)間節(jié)點(diǎn)前的歷史版本可能是未加固的。
- 可能會(huì)有其他意想不到的發(fā)現(xiàn)。
四是信息匯總分析。通過(guò)對(duì)收集到的信息綜合篩選分析,形成一個(gè)信息集,包括但不限于URL、IP、使用的第三方SDK(下面展開說(shuō))等信息。
2. 網(wǎng)站/服務(wù)端滲透
這一階段,與傳統(tǒng)的Web滲透過(guò)程相同,測(cè)試人員通過(guò)各種嗅探工具對(duì)信息集中的URL、IP進(jìn)行嗅探和漏掃,以期發(fā)現(xiàn)可能存在的漏洞等,并通過(guò)發(fā)現(xiàn)的漏洞(不管0day還是nday),嘗試獲取服務(wù)器的權(quán)限。因本章節(jié)重點(diǎn)是介紹如何結(jié)合APP做服務(wù)端滲透,所以這部分不詳細(xì)展開。
3. APP功能分析
在信息收集階段,測(cè)試人員已基本對(duì)APP功能有了一些了解,在這一環(huán)節(jié),測(cè)試人員應(yīng)實(shí)際試用APP,除了試用一些上傳下載、聊天、留言等常用功能外,同時(shí)還應(yīng)關(guān)注其相對(duì)冷門的功能,因?yàn)楣δ茉嚼溟T,開發(fā)人員對(duì)其的關(guān)注就越少,相應(yīng)的服務(wù)端服務(wù)存在安全問(wèn)題的可能性就越大。
4. 第三方SDK做分析
在信息收集環(huán)節(jié)中我們提到若無(wú)授權(quán),測(cè)試人員不能隨便對(duì)第三方SDK官網(wǎng)開展?jié)B透測(cè)試,那為何還要對(duì)第三方SDK開展分析呢?原因是很多第三方SDK客戶端和服務(wù)端是配套搭建的,有些部署在SDK官方服務(wù)端,有些則部署在SDK使用方(也就是APP官方服務(wù)端)。許多SDK官方會(huì)對(duì)其進(jìn)行詳細(xì)的說(shuō)明,包括功能、部署方式、API等等。對(duì)于服務(wù)端SDK,測(cè)試人員可以將其下載下來(lái)(若無(wú)法探測(cè)到服務(wù)端版本號(hào),可根據(jù)收集到的APP業(yè)務(wù)上線日期進(jìn)行推測(cè),并結(jié)合經(jīng)驗(yàn)和已搜集到的信息,從下載的SDK挑選重要的SDK),對(duì)其進(jìn)行歷史漏洞搜索(該工作也可在信息收集環(huán)節(jié)開展)、掃描和分析,也許會(huì)發(fā)現(xiàn)一些有用的漏洞(0day最好,nday也要試一試,萬(wàn)一沒(méi)補(bǔ)呢?)。
5. 賬號(hào)安全和業(yè)務(wù)安全
最后,我們?cè)僬務(wù)勝~號(hào)安全和業(yè)務(wù)安全。這一環(huán)節(jié)在APP功能分析過(guò)程中也可能會(huì)涉及,其與滲透獲取服務(wù)器shell權(quán)限可能沒(méi)太大關(guān)系,但其從攻擊者的角度來(lái)看卻非常關(guān)鍵,因?yàn)榇蟛糠止粽攉@取服務(wù)器shell權(quán)限的目的就是為了獲取APP用戶的數(shù)據(jù)或資料,當(dāng)然也有單純?yōu)榱烁闫茐暮秃诳挽偶嫉那闆r存在。
在這一環(huán)節(jié),測(cè)試人員要詳細(xì)分析APP的賬號(hào)機(jī)制和業(yè)務(wù)邏輯,隨著APP官方與黑產(chǎn)對(duì)抗的加深,APP的業(yè)務(wù)邏輯和身份認(rèn)證機(jī)制可能會(huì)做的很復(fù)雜。同時(shí)如果APP是使用用戶數(shù)量大時(shí)間、上線時(shí)間比較久,存在賬戶安全問(wèn)題(爆破、信息泄露、越權(quán)、綁定/換綁邏輯等等)的可能性相對(duì)要低很多;同理,越是成熟的業(yè)務(wù),存在安全問(wèn)題的概率就會(huì)越低,所以測(cè)試人員可以重點(diǎn)關(guān)注被測(cè)APP中可能存在的冷門或新上線業(yè)務(wù)。
隨著移動(dòng)APP安全攻防對(duì)抗逐漸加強(qiáng),對(duì)其及相關(guān)服務(wù)端開展?jié)B透測(cè)試,必然會(huì)越來(lái)越多的涉及逆向、調(diào)試、數(shù)據(jù)或流量解密等工作(雖然一些邏輯漏洞可通過(guò)分析其業(yè)務(wù)功能、流程發(fā)現(xiàn),但實(shí)現(xiàn)漏洞利用一般還需進(jìn)一步逆向和抓包分析)。滲透測(cè)試人員和團(tuán)隊(duì)?wèi)?yīng)善于使用、定制或開發(fā)自動(dòng)化工具輔助檢測(cè)以節(jié)省時(shí)間和人力。
可以想象,一旦攻擊者借助APP拿下了服務(wù)端,就可以反過(guò)來(lái)批量攻擊APP(或用戶),從而形成一個(gè)攻擊閉環(huán),且攻擊者能做的事情還遠(yuǎn)不止這些!
六、結(jié)束語(yǔ)
以上就是筆者關(guān)于移動(dòng)APP滲透測(cè)試的總結(jié),希望能幫到大家,但限于知識(shí)和技術(shù)水平,會(huì)有許多不完善甚至不準(zhǔn)確之處,還望多多指正。