Android APP安全測試,本想找用APPscan掃描就行了,但系統的架構不支持APPscan掃描。
按下面的一些思路手工測試的安全:
數據存儲及敏感數據加密傳輸:
預置條件 | 測試步驟 | 預期結果 |
1、手機root |
1、打開PC端wireshark並開啟抓IP log 開關。(詳細指導書見備注列附件)然后正常使用該應用的每個功能; 2、保存wireshark的log。使用wireshark打開IP包,查看被測APK的傳輸是否使用安全的通道,例如“https“,如果是安全通道,可直接pass; 3、若測試APK采用的非安全通道,例如“http”,則需要搜索相應的關鍵字(如輸入的密碼)。 |
1、能成功抓取IP log 2、被測APK的傳輸使用的是安全的通道,若不滿足,查看第3步 3、密碼數據已加密,未搜索到打印的賬戶密碼、定位信息(關鍵字:lat、lon、或當地經緯度)、IMEI號、IMSI號、ESN號、MEID號、電話號碼、電話本、短信、email、通話記錄、模塊登陸密碼信息、PIN碼、PUK碼、 |
1.LOG中不能打印任何形式的口令、密鑰 2、LOG中不能默認打印個人數據 如logcat打印的日志信息中包含賬戶名密碼,如果必須打印,則進行匿名,加密的處理 |
1.連接adb,打開logcat日志(adb shell logcat -v time > D:\logcat.txt)。然后正常使用該應用的每個功能(包含接打電話、收發短信、收發郵件,地圖定位操作)。2、保存logcat日志,搜索關鍵字檢查否打印了賬戶的密碼、定位信息、IMEI號、IMSI號、ESN號、MEID號、電話號碼、電話本、短信、email、通話記錄、模塊登陸密碼信息、PIN碼、PUK碼 | 1、能成功抓取logcat日志 2、未打印上述口令、密鑰或個人數據 |
被測應用打開了數據業務開啟或連接wifi | 1、使用TCPDump抓IP包,使用wireshark確認上傳敏感數據的服務器地址 | 1、采集的個人數據不能發送到敏感國家/地區非允許的范圍的服務器地址 |
1、手機連接DDMS |
1、使用XX模塊涉及賬號密碼的功能 |
2-3不允許密碼明文顯示(即使有權限保護,也不允許密碼明文顯示) |
說明:如果數據存儲類型是SharedPreferences存儲數據,驗證時參照:https://www.cnblogs.com/ww-xiaowei/p/11209051.html
流量的消耗
預置條件 | 測試步驟 | 預期結果 |
1、有現網的wifi連接 |
1、打開應用,保持應用運行,靜置不用,經過24小時 | 1、在setting中查看應用在wifi下消耗的流量,該應用的流量不能超過0.1MB |
1、有現網的移動數據連接,並勾選“始終連接數據業務” |
同上 | 在setting中查看應用在數據業務下消耗的流量,該應用的流量不能超過0.1MB |
說明:如果覺得24小時太長,可以測試30分鍾,流量消耗不超過0.00208MB(該數據未經過嚴格推敲,目前只是羅列了測試點和方法)
其他項
系統升級 |
1、系統檢測到有新版本, |
1-2、提示用戶是否需要升級以及升級可能的影響,不允許在用戶不知情的情況下自動升級,且在線升級檢查升級包更新的頻率 不能過於頻繁,不能多於1次/天。 |
暗碼 | 1.准備root權限手機 2.在AndroidManifest.xml中查看 “<data android:host="2432546" android:scheme="android_secret_code"” 3、比較過濾出來的暗碼和附件中的暗碼表 |
暗碼只能比附件中的少,不能多,請參考附件TAB頁 |
病毒 | 1.安裝殺毒軟件(McAfee Android版),對手機進行安全掃描和實時監控。 |
2.應用使用正常,使用過程中殺毒軟件不會報出存在病毒、木馬、惡意程序等安全風險提示 |
應用禁止推送惡意廣告,比如: 廣告中有惡意病毒,木馬地址等。
|
打開該應用,進行正常的使用,遍歷每一個應用中顯示的一級菜單功能。掃描是否有惡意廣告行為。
1、強制使用性:未明確提示用戶或未經用戶許可,強制安裝並彈出,且廣告條尺寸大於480*60px;
2、安裝隱蔽性:惡意廣告捆綁在應用程序中,用戶難以察覺。
3、自啟動性:后台自動運行,如主動彈出對話框引導用戶進行軟件預裝、業務定制(用戶無法關閉定時彈出對話框);未經用戶許可,在通知欄彈出廣告等。
4、商業利益性:通過推送廣告、增加下載流量獲取商業利益。
|
無惡意廣告行為(關注應用不存在以下行為:匿名或頻繁推送廣告; 未經用戶允許在通知欄彈出廣告;廣告無法關閉; 主動彈出用戶無法關閉的對話框引導或強制用戶進行軟件下載預裝或業務定制等情況。) |
簽名驗證 | 手機root 1.在cmd命令行中執行:jarsigner -verify -verbose -certs "D:\XXX.apk" |
1、簽名信息,姓名、部門或公司名稱這三項中保證至少有一項不為空,簽名信息的每一項需保證真實有效,不能為網址、亂碼等無效信息; 2.不能出現debug的簽名(簽名信息中含有debug字樣,如CN=Android Debug等) 3、非谷歌官方應用,不得采用安卓公開證書Android/emailAddress=android@android.com,第三方應用的簽名信息一般不能簽huawei
|
調試模式 | 1.進入設置-開發人員選項-選擇調試應用,檢查被測應用在不在調試應用列表中; 2.打開APK遍歷各個界面是否存在調試賬戶或者公用賬戶的提示語(如:試用賬號admin/123456,調試賬號admin/admin等等) |
1、被測應用不在調試應用列表中(或選擇調試應用菜單置灰) 2、不存在未知的隱藏賬號、隱藏口令 |
targetsdk | 手機已連接電腦 1.執行命令 adb shell dumpsys package 包名 ,檢查targetSDK。 |
1、若targetSDK不小於23,則pass;若targetSDK小於23,則執行步驟2。 |
權限:
預置條件 |
測試步驟 |
預期結果 |
1、有手機管家且在權限管理中對該應用監控改為“提示” |
一、 查看AndroidManifest.xml,是否有android.permission.record_audio權限 對XX模塊功能進行操作,檢查是否有通話錄音功能,通過權限管理檢查是否有后台錄音功能,錄音時是否給用戶明示 |
1.若無錄音權限,則忽略步驟2; 2、沒有通話錄音功能,不允許存在有后台錄音且未明示用戶的情況。 |
1、有手機管家且在權限管理中對該應用監控改為“提示” |
查看AndroidManifest.xml,查看是否有android.permission.send_sms/android.permission.call_phone權限 |
1、若無打電話/發短信權限,則忽略步驟2; |
手機有root權限 | 查看AndroidManifest.xml中,應用申請的權限 | 應用程序禁止保留與業務功能不一致的敏感權限。 |
用戶對文件的權限 | 1.運行應用XXX。 |
4.此應用(不論是自研應用,還是預置的第三方應用)在USER顯示的是類似app_XX/u0_aXX的形式,如果以root或system用戶運行要評估是否為必需(幾乎都是非必須的)。備注:JellyBean版本上是u0_aXX的形式,I及以前的都是app_XX的形式 |
reboot權限 | 1.檢查應用中是否申請了權限:android.permission.REBOOT | 1.一般都不會申請此權限,如果有申請,要確認必要性。 |
應用中不能存在可以ROOT系統的接口 | 1、運行該應用,若有彈框權限提示,點擊允許。遍歷每一項功能查看是否有提示ROOT系統的功能提示。 2、在cmd命令行輸入adb shell。 3、輸入ps命令。 4、在返回值中在最后一列NAME中,找到此應用,查看該應用對應的USER列顯示的運行權限 |
1、該應用運行正常,沒有ROOT系統的功能和提示。 2、adb連接成功 3、能正常返回查詢值 4、此應用在USER顯示的是類似u0_aXX的形式則PASS。如果以root或system權限運行為Fail(若已經在華為安全TMG評審評審通過,Fail后可以報備為通過) |
用戶對文件的權限 | 1、遍歷XX模塊的功能 |
4、最后三位顯示成---或--X(-rw-rw----, 這串字符的后三位)則沒有讀寫控制權限,若無此文件,則忽略步驟5 |