摘要:針對移動應用系統的安全需求,文章設計并開發了一種基于Flask框架的安卓App漏洞檢測系統。通過對安卓App安全需求的分析,確定了系統功能,并采用Flask框架和MySQL數據庫進行了實現。系統通過Flask提供的網頁界面對安卓App進行管理,調用MobSF API對其進行漏洞檢測,最終生成分析報告并存儲管理。該系統滿足了安卓App漏洞檢測的需求,有助于用戶降低潛在的安全風險。
關鍵詞:安卓;漏洞掃描;Python;Flask;MobSF
中圖分類號:TP393" " " " 文獻標識碼:A
文章編號:1009-3044(2025)17-0096-03
開放科學(資源服務) 標識碼(OSID)
隨著智能手機的普及,安卓應用已深入人們生活的各個方面。盡管安卓應用為人們帶來了便利,但其安全漏洞也帶來了潛在風險。當前的漏洞檢測方法存在效率低、操作復雜等問題,難以及時發現和解決安全隱患。因此,缺乏一種高效、便捷的安卓App漏洞檢測系統來滿足用戶對于應用安全的需求。本文采用Flask框架和前端技術[1-3],結合MobSF API[4-6],設計并實現了一種針對安卓App的漏洞檢測系統。
1 需求分析
通常,漏洞檢測分為兩種方式:一種是靜態漏洞檢測,這需要將待檢測App上傳至特定目錄下,然后調用MobSF API進行漏洞檢測。檢測完成之后,對結果進行展示,并生成PDF文件形式的檢測報告;另一種是動態監測,動態監測需要啟動服務器端的ADB服務器[7],然后將待測手機接入服務器,通過服務器端的adbutils.AdbClient[7]根據參數控制待測手機,并對手機內App進行動態檢測。因此,根據以上要求,安卓App漏洞檢測系統需要具備App軟件的上傳管理、手機連接管理、App模塊的漏洞檢測、漏洞報告的存儲和查看等功能。本系統目前僅設置單個登錄用戶。本系統用例圖如圖1所示。
2 系統設計
2.1 系統架構
本系統采用B/S架構。系統技術架構如圖2所示,分為用戶使用層、應用服務層和數據層。在用戶使用層中,通過前端技術在PC瀏覽器上展示,采用Bootstrap和Font Awesome等。應用服務層銜接用戶使用層和數據訪問層;應用服務層采用Python Web框架Flask實現服務層功能,其中網頁端表單等數據提取技術采用Flask-WTF,與數據庫相關的交互采用了Flask-SQLAlchemy模塊;應用服務層還包含App掃描模塊。數據層包含兩部分,一部分規則數據采用MySQL數據庫進行存儲,另一部分文件則采用Python本身的文件處理功能進行管理。
系統的前端通過瀏覽器提供信息的顯示和用戶操作交互的功能。系統的后端實現App文件的上傳、文件查詢、靜態App檢測、手機注冊、動態App檢測、檢測結果查詢等功能模塊;同時后端提供相應的接口服務。系統的功能架構如圖3所示。
2.2 系統主要功能模塊設計
根據本系統調研與分析,系統主要功能模塊結構如圖4所示。
2.2.1" 靜態掃描模塊
1) 上傳模塊。使用MobSF API中的上傳API上傳APK文件。若不是APK文件,則提示“請上傳APK文件!”;若未選擇文件就進行上傳,則提示“未選擇文件!”;若因網絡或渲染問題導致組件缺失,則提示“上傳錯誤!”。若上傳成功,則將文件信息導入數據庫,并在前端顯示。用戶也可執行刪除操作。
2) 掃描模塊。將上傳模塊中產生的重要信息導入掃描API,讓其識別信息后進行各類型掃描。在掃描列表中可以看見掃描包名、掃描hash和掃描時間。用戶也可以刪除掃描記錄。
3) 報告導出模塊。在掃描列表后,用戶可點擊導出PDF版掃描報告,點擊APK文件名也可查看HTML版掃描報告。
4) 靜態掃描日志模塊。在掃描完成后,將相關信息計入日志數據庫,并在前端顯示掃描日志。日志包括掃描APK名稱、hash和掃描時間。
2.2.2 靜態App檢測
靜態分析法檢查程序代碼結構中隱藏的特征[4];通過Flask網站框架實現App的上傳和存儲等管理,然后調用MobSF API解析上傳的APK文件,提取其中的代碼、資源和配置文件。對APK文件中的字節碼、源代碼(如果可用) 進行靜態分析,檢測常見的代碼漏洞,如注入攻擊、未處理的異常、潛在的惡意代碼等。分析APK的AndroidManifest.xml[8]文件,檢查應用聲明的權限和配置,發現過度權限、敏感權限濫用等問題。識別和分析應用中使用的第三方庫,檢查是否存在已知的漏洞或過時的庫版本。生成詳細的靜態分析報告,包括發現的漏洞列表、漏洞描述、嚴重程度和修復建議。靜態檢測具體過程如圖5所示。
2.2.3 動態掃描模塊
1) ADB連接模塊。Android ADB(Android Debug Bridge) 是一種多功能的命令行工具,可讓用戶與設備進行通信。ADB命令可用于執行各種設備操作(如安裝和調試應用) ,并提供Unix shell(可用于在設備上運行各種命令) 的訪問權限。ADB是一種客戶端-服務器程序[7]。實現手機與電腦的連接,為后續動態掃描做準備,可在前端顯示ADB連接列表,列表會顯示設備標識和連接狀態。
2) 獲取App模塊。點擊ADB連接列表后的掃描按鈕(原“掃描列白”表述有誤,改為“掃描按鈕”) 可獲取已安裝的App,并在前端顯示已安裝App的各類信息,包括App名稱、App hash和App包所在的手機位置。
3) 掃描模塊。點擊已安裝App列表后的掃描按鈕,調用MobSF動態掃描API,可對App進行各種動態掃描。
4) 報告查看模塊。在掃描完成后跳轉到報告詳情頁,可查看各種掃描結果。
5) 動態掃描日志模塊。在掃描完成后,將相關信息計入日志數據庫,并在前端顯示掃描日志。日志包括App包名、App hash和掃描時間。
2.2.4 動態App檢測
將手機接入系統,然后在服務器上啟動adb server服務,同時通過adbutils.AdbClient控制各個接入的手機,對手機中運行的App進行動態分析。動態分析指的是在App運行的情況下,通過監控其運行過程中產生的行為以及數據來進行分析[5]。在受控的模擬器或真實設備環境中運行應用程序,以便進行動態分析。監測應用在運行時的行為,包括API調用、網絡請求、文件讀寫、數據庫操作等,檢測異常行為和潛在的安全漏洞。監測應用運行時的內存使用情況,檢測內存泄漏、敏感數據暴露等問題。生成詳細的動態分析報告,包括發現的運行時漏洞、異常行為描述、嚴重程度和修復建議。動態監測過程如圖6所示。
3 系統開發實現
3.1 開發框架與開發環境
本系統主要采用Python的Web框架Flask進行開發。Flask框架實現后端功能,并用其自帶的Jinja2渲染框架進行模板渲染,而Flask的擴展包Flask-SQLAlchemy用于實現安全的數據庫操作。本系統的開發環境為:Intel Core i7-12700H處理器,16.0GB內存,1TB固態硬盤,操作系統為64位Windows 11,數據庫為MySQL。
3.2 系統實現
本系統主頁面提供用戶快速管理靜態App檢測、動態App檢測及手機連接管理等信息服務。主頁面分為左右兩部分:左邊是功能導航菜單,根據系統功能模塊進行劃分和定義,用戶點擊對應選項進入相應功能界面;右邊是相應功能展示界面,按照不同的功能界面分別有靜態App檢測、動態App檢測、手機連接管理、App文件上傳等功能界面。系統主頁界面截圖如圖7所示。
3.3 系統測試
本系統利用安卓模擬器進行測試。安卓模擬器是在電腦上模擬安卓操作系統,并能安裝、使用、卸載安卓應用的工具軟件[9]。采用Android SDK自帶的emulator.exe模擬器,模擬手機運行環境,且具有root權限。通過模擬器安裝測試App,進行靜態和動態漏洞檢測,以驗證系統功能的完整性和穩定性。
4 結束語
本文設計并實現了一種基于Flask框架的安卓App漏洞檢測系統。系統整合了靜態掃描和動態掃描技術,幫助用戶發現并解決應用程序中存在的安全漏洞和風險。系統可進一步優化檢測算法,提升檢測效率和準確率,并擴展多用戶管理和權限控制功能。
參考文獻:
[1] 楊洪濤.Flask中ORM模型的應用及研究[J].電腦編程技巧與維護,2023(10):49-51,75.
[2] 楊凱華,劉勇.基于Bootstrap框架的響應式網頁設計與實現[J].大眾標準化,2024(4):43-45.
[3] 趙停停.基于MySQL數據庫技術的Web動態網頁設計研究[J].信息與電腦(理論版),2023,35(17):174-176.
[4] 王斌,李峰,楊慧婷,等.Android應用程序漏洞檢測方法和工具新進展[J].計算機技術與發展,2024,34(2):9-16.
[5] 吳瑩瑩,殷西祥.Android惡意軟件檢測方案探析[J].科技風,2023(23):66-68.
[6] 薛文鵬.基于靜動態分析的Android惡意軟件檢測技術的研究與應用[D].太原:山西大學,2023.
[7] 李煥.Android系統ADB的使用與數據安全[J].電子測試,2022(16):69-71.
[8] LI X,LIU J,HUO Y,et al.AN ANDROID MALWARE DETECTION METHOD BASED ON ANDROID?MANIFEST FILE[C]//Proceedings of 2016 4th IEEE International Conference on Cloud Computing and Intelligence Systems(IEEE CCIS2016) ,2016.
[9] 郭文舉,王譽道.安卓模擬器應用取證[J].刑事技術,2019,44(4):359-361.
【通聯編輯:代影】