Android?App隱私合規(guī)檢測輔助工具Camille詳解
Camille
Android App隱私合規(guī)檢測輔助工具,項(xiàng)目倉庫:https://github.com/zhengjim/camille
簡介
現(xiàn)如今APP隱私合規(guī)十分重要,各監(jiān)管部門不斷開展APP專項(xiàng)治理工作及核查通報(bào),不合規(guī)的APP通知整改或直接下架。camille可以hook住Android敏感接口。根據(jù)隱私合規(guī)的場景,輔助檢查是否符合隱私合規(guī)標(biāo)準(zhǔn)。
安裝
環(huán)境:
python3、frida 、一臺已root手機(jī)(我測試機(jī)為Redmi 3s,刷機(jī)成魔趣Android 8.1,感覺問題挺多的),并在手機(jī)上運(yùn)行frida-server。
下載:
git clone https://github.com/zhengjim/camille.git cd camille pip install -r requirements.txt python camille.py -h

用法
簡單使用:
python camille.py com.zhengjim.myapplication

com.zhengjim.myapplication為測試app的包名,會(huì)顯示時(shí)間、行為和調(diào)用堆棧??梢愿鶕?jù)場景來判斷是否合規(guī),如:獲取敏感信息是否是在同意隱私政策之前等。
python camille.py com.zhengjim.myapplication -ns -f demo01.xls
- -ns:不顯示日志。默認(rèn)顯示
- -f: 保存app行為軌跡到到execl里。默認(rèn)不保存。

python camille.py com.zhengjim.myapplication -t 3
-t: hook應(yīng)用自己的函數(shù)或含殼時(shí),建議使用setTimeout并給出適當(dāng)?shù)难訒r(shí)(1-5s,需要根據(jù)不同app進(jìn)行調(diào)整)。以免hook失敗。默認(rèn)不延遲。
如下圖:不加延遲hook失敗。

加了延遲hook成功。

后記
本來想使用uiautomator2或appium來模擬點(diǎn)擊制定場景,但后續(xù)調(diào)研發(fā)現(xiàn)純自動(dòng)化的檢測是不全的,最多也就檢測20-30%,還是得結(jié)合人工來檢測。索性就刪除了模擬點(diǎn)擊這塊。(其實(shí)就是懶,不定期更新)
場景
參考百度史賓格的檢測場景,根據(jù)工信部信管函〔2020〕164號文(共37項(xiàng)),需要人工自查的有15項(xiàng)
網(wǎng)站:https://console.bce.baidu.com/springer (現(xiàn)在1.4元/次,挺劃算的,嫌麻煩的直接用就行)
1 APP、SDK違規(guī)處理用戶個(gè)人信息方面
1.1 違規(guī)收集個(gè)人信息。
重點(diǎn)整治APP、SDK未告知用戶收集個(gè)人信息的目的、方式、范圍且未經(jīng)用戶同意,私自收集用戶個(gè)人信息的行為。
- 場景1:APP未見向用戶明示個(gè)人信息收集使用的目的、方式和范圍,未經(jīng)用戶同意,存在收集IMEI、設(shè)備MAC地址和軟件安裝列表、通訊錄和短信等信息的行為。
- 場景2:APP以隱私政策彈窗的形式向用戶明示收集使用規(guī)則,未經(jīng)用戶同意,存在收集設(shè)備MAC地址、IMEI等信息的行為。
- 場景3:APP以隱私政策彈窗的形式向用戶明示收集使用規(guī)則,但未見清晰明示APP收集軟件列表、設(shè)備MAC地址等的目的方式范圍,用戶同意隱私政策后,存在收集軟件列表、設(shè)備MAC地址的行為。
- 場景4(人工自查):APP未見向用戶明示SDK收集使用個(gè)人信息的目的、方式和范圍,未經(jīng)用戶同意,SDK存在收集IMEI、設(shè)備MAC地址和軟件安裝列表、通訊錄和短信等信息的行為。
- 場景5(人工自查):APP向用戶明示SDK的收集使用規(guī)則,未經(jīng)用戶同意,SDK存在收集IMEI、設(shè)備MAC地址和軟件安裝列表、通訊錄和短信等信息的行為。
- 場景6(人工自查):APP向用戶明示SDK的收集使用規(guī)則,但未見清晰明示SDK收集設(shè)備MAC地址、軟件安裝列表等的目的方式范圍,用戶同意隱私政策后, SDK存在收集設(shè)備MAC地址、軟件安裝列表的行為。
- 場景7:APP在征求用戶同意環(huán)節(jié),未提供明確的同意或拒絕按鈕,或者使用“好的”“我知道了”等詞語。
- 場景8:APP在征求用戶同意環(huán)節(jié),設(shè)置為默認(rèn)勾選。
1.2 超范圍收集個(gè)人信息。
重點(diǎn)整治APP、SDK非服務(wù)所必需或無合理應(yīng)用場景,特別是在靜默狀態(tài)下或在后臺運(yùn)行時(shí),超范圍收集個(gè)人信息的行為。
- 場景1(人工自查):APP存在收集IMEI、IMSI、設(shè)備MAC地址、軟件安裝列表、位置、聯(lián)系人、通話記錄、日歷、短信、本機(jī)電話號碼、圖片、音視頻等個(gè)人信息的行為,非服務(wù)所必需且無合理應(yīng)用場景。
- 場景2:APP在運(yùn)行時(shí),未見向用戶告知且未經(jīng)用戶同意,存在以特定頻率(如每30s)讀取收集IMEI、IMSI、設(shè)備MAC地址、軟件安裝列表、位置、聯(lián)系人、通話記錄、日歷、短信、本機(jī)電話號碼、圖片、音視頻等個(gè)人信息,非服務(wù)所必需且無合理應(yīng)用場景,超出實(shí)現(xiàn)產(chǎn)品或服務(wù)的業(yè)務(wù)功能所必需的最低頻率。
- 場景3(人工自查):APP未見向用戶明示SDK的收集使用規(guī)則,未經(jīng)用戶同意,SDK存在收集IMEI、IMSI、設(shè)備MAC地址、軟件安裝列表、位置、聯(lián)系人、通話記錄、日歷、短信、本機(jī)電話號碼、圖片、音視頻等信息的行為,非服務(wù)所必需且無合理應(yīng)用場景,超出與收集個(gè)人信息時(shí)所聲稱的目的具有直接或合理關(guān)聯(lián)的范圍。
- 場景4:APP在運(yùn)行時(shí),未見向用戶告知且未經(jīng)用戶同意,存在每2秒讀取一次IMEI、位置信息等,非服務(wù)所必需且無合理應(yīng)用場景,超出實(shí)現(xiàn)產(chǎn)品或服務(wù)的業(yè)務(wù)功能所必需的最低頻率。
- 場景5:APP未見向用戶告知且未經(jīng)用戶同意,在后臺行為時(shí),存在收集 IMSI、設(shè)備序列號等信息的行為,非服務(wù)所必需且無合理應(yīng)用場景,超出與收集個(gè)人信息時(shí)所聲稱的目的具有直接或合理關(guān)聯(lián)的范圍。
- 場景6:APP未見向用戶告知且未經(jīng)用戶同意,在靜默狀態(tài)下或在后臺運(yùn)行時(shí),存在按照一定頻次收集位置信息、IMEI、通訊錄、短信、圖片等信息的行為,非服務(wù)所必需且無合理應(yīng)用場景,超出與收集個(gè)人信息時(shí)所聲稱的目的具有直接或合理關(guān)聯(lián)的范圍。
- 場景7:APP未向用戶明示SDK的收集使用規(guī)則,未經(jīng)用戶同意,SDK在靜默狀態(tài)下或在后臺運(yùn)行時(shí),存在收集通訊錄、短信、通話記錄、相機(jī)等信息的行為,非服務(wù)所必需且無合理應(yīng)用場景,超出與收集個(gè)人信息時(shí)所聲稱的目的具有直接或合理關(guān)聯(lián)的范圍。
- 場景8:APP未向用戶明示SDK的收集使用規(guī)則,未經(jīng)用戶同意,SDK在靜默狀態(tài)下或在后臺運(yùn)行時(shí),存在按照一定頻次收集位置信息、IMEI、通訊錄、短信、圖片等信息的行為,非服務(wù)所必需且無合理應(yīng)用場景,超出與收集個(gè)人信息時(shí)所聲稱的目的具有直接或合理關(guān)聯(lián)的范圍。
1.3 違規(guī)使用個(gè)人信息。
重點(diǎn)整治APP、SDK未向用戶告知且未經(jīng)用戶同意,私自使用個(gè)人信息,將用戶個(gè)人信息用于其提供服務(wù)之外的目的,特別是私自向其他應(yīng)用或服務(wù)器發(fā)送、共享用戶個(gè)人信息的行為。
- 場景1:APP未向用戶明示個(gè)人信息處理的目的、方式和范圍,將IMEI、IMSI、設(shè)備MAC地址、軟件安裝列表、位置、聯(lián)系人、通話記錄、日歷、短信、本機(jī)電話號碼、圖片、音視頻等個(gè)人信息發(fā)送給第三方SDK等產(chǎn)品或服務(wù)。
- 場景2:APP未見向用戶明示分享的第三方名稱、目的及個(gè)人信息類型,用戶同意隱私政策后,存在將IMEI/設(shè)備MAC地址/軟件安裝列表等個(gè)人信息發(fā)送給第三方SDK。
- 場景3(人工自查):APP未向用戶告知且未經(jīng)用戶同意,將設(shè)備識別信息、商品瀏覽記錄、搜索使用習(xí)慣、軟件安裝列表等個(gè)人信息傳輸至APP服務(wù)器后,向第三方產(chǎn)品或服務(wù)提供其收集的個(gè)人信息。
1.4 強(qiáng)制用戶使用定向推送功能。
重點(diǎn)整治APP、SDK未以顯著方式標(biāo)示且未經(jīng)用戶同意,將收集到的用戶搜索、瀏覽記錄、使用習(xí)慣等個(gè)人信息,用于定向推送或廣告精準(zhǔn)營銷,且未提供關(guān)閉該功能選項(xiàng)的行為。
- 場景1(人工自查):APP的頁面或功能存在定向推送功能,但隱私政策未見向用戶告知,將收集的用戶個(gè)人信息用于定向推送、精準(zhǔn)營銷。
- 場景2(人工自查):若APP定向推送功能使用了第三方的個(gè)人信息來源,但隱私政策未見向用戶告知。
- 場景3(人工自查):APP隱私政策存在“根據(jù)您的偏好進(jìn)行個(gè)性化推薦”等內(nèi)容,明示存在定向推送功能,但頁面中未見顯著區(qū)分個(gè)性化推送服務(wù),如標(biāo)明“個(gè)性化展示”或“定推”等字樣。
- 場景4(人工自查):APP以隱私政策彈窗等形式明示存在定向推送功能,未提供退出或關(guān)閉個(gè)性化展示模式的選項(xiàng),如拒絕接受定向推送信息,或停止、退出、關(guān)閉相應(yīng)功能的機(jī)制。
2 設(shè)置障礙、頻繁騷擾用戶方面
2.1 APP強(qiáng)制、頻繁、過度索取權(quán)限。
重點(diǎn)整治APP安裝、運(yùn)行和使用相關(guān)功能時(shí),非服務(wù)所必需或無合理應(yīng)用場景下,用戶拒絕相關(guān)授權(quán)申請后,應(yīng)用自動(dòng)退出或關(guān)閉的行為。重點(diǎn)整治短時(shí)長、高頻次,在用戶明確拒絕權(quán)限申請后,頻繁彈窗、反復(fù)申請與當(dāng)前服務(wù)場景無關(guān)權(quán)限的行為。重點(diǎn)整治未及時(shí)明確告知用戶索取權(quán)限的目的和用途,提前申請超出其業(yè)務(wù)功能等權(quán)限的行為。
- 場景1:APP首次啟動(dòng)時(shí),向用戶索取電話、通訊錄、定位、短信、錄音、相機(jī)、存儲、日歷等權(quán)限,用戶拒絕授權(quán)后,應(yīng)用退出或關(guān)閉(應(yīng)用陷入彈窗循環(huán),無法正常使用)。
- 場景2(人工自查):APP運(yùn)行時(shí),未向用戶告知申請權(quán)限的目的,向用戶索取當(dāng)前服務(wù)場景未使用到的通訊錄、定位、短信、錄音、相機(jī)、日歷等權(quán)限,且用戶拒絕授權(quán)后,應(yīng)用退出或關(guān)閉相關(guān)功能,無法正常使用。
- 場景3(人工自查):用戶注冊登錄時(shí),APP向用戶索取電話、通訊錄、定位、短信、錄音、相機(jī)、存儲、日歷等權(quán)限,用戶拒絕授權(quán)后,APP無法正常注冊或登錄。
- 場景4(人工自查):APP運(yùn)行時(shí),向用戶索取當(dāng)前服務(wù)場景未使用到的電話、通訊錄、定位、短信、錄音、相機(jī)、存儲、日歷等權(quán)限,且用戶拒絕授權(quán)后,應(yīng)用退出或關(guān)閉(應(yīng)用陷入彈窗循環(huán),無法正常使用)。
- 場景5:APP運(yùn)行時(shí),在用戶明確拒絕通訊錄、定位、短信、錄音、相機(jī)、日歷等權(quán)限申請后,仍向用戶頻繁彈窗申請與當(dāng)前服務(wù)場景無關(guān)的權(quán)限,影響用戶正常使用。
- 場景6: APP在用戶明確拒絕通訊錄、定位、短信、錄音、相機(jī)等權(quán)限申請后,重新運(yùn)行時(shí),仍向用戶彈窗申請開啟與當(dāng)前服務(wù)場景無關(guān)的權(quán)限,影響用戶正常使用。
- 場景7:APP首次打開或運(yùn)行中,未見使用權(quán)限對應(yīng)的相關(guān)功能或服務(wù)時(shí),不應(yīng)提前向用戶彈窗申請開啟通訊錄、定位、短信、錄音、相機(jī)、日歷等權(quán)限。
- 場景8(人工自查):APP未見提供相關(guān)業(yè)務(wù)功能或服務(wù),不應(yīng)申請通訊錄、定位、短信、錄音、相機(jī)、日歷等權(quán)限。
2.2 APP頻繁自啟動(dòng)和關(guān)聯(lián)啟動(dòng)。
重點(diǎn)整治APP未向用戶告知且未經(jīng)用戶同意,或無合理的使用場景,頻繁自啟動(dòng)或關(guān)聯(lián)啟動(dòng)第三方APP的行為。
- 場景1:APP未向用戶明示未經(jīng)用戶同意,且無合理的使用場景,存在頻繁自啟動(dòng)或關(guān)聯(lián)啟動(dòng)的行為。
- 場景2:APP雖然有向用戶明示并經(jīng)用戶同意環(huán)節(jié),但頻繁自啟動(dòng)或關(guān)聯(lián)啟動(dòng)發(fā)生在用戶同意前。
- 場景3:APP非服務(wù)所必需或無合理應(yīng)用場景,超范圍頻繁自啟動(dòng)或關(guān)聯(lián)啟動(dòng)第三方APP。
3 欺騙誤導(dǎo)用戶方面
3.1 欺騙誤導(dǎo)用戶下載APP。
通過“偷梁換柱”“移花接木”等方式欺騙誤導(dǎo)用戶下載APP,特別是具有分發(fā)功能的移動(dòng)應(yīng)用程序欺騙誤導(dǎo)用戶下載非用戶所自愿下載APP的行為
- 場景1:APP 廣告頁面、開屏廣告、主屏等功能頁面,無顯著APP下載提示,點(diǎn)擊即自動(dòng)下載非用戶所自愿下載APP。
- 場景2:APP 廣告頁面、開屏廣告、主屏等功能頁面,以“是否立即開始游戲”方式欺騙誤導(dǎo)用戶自動(dòng)下載非用戶所自愿下載APP。
- 場景3:APP 廣告頁面、開屏廣告、主屏等功能頁面,以“領(lǐng)取紅包”方式欺騙誤導(dǎo)用戶自動(dòng)下載非用戶所自愿下載APP。
- 場景4:APP 廣告頁面、開屏廣告、主屏等功能頁面,點(diǎn)擊“下載按鈕“以外區(qū)域,自動(dòng)下載非用戶所自愿下載APP。
- 場景5(人工自查):暫停下載非用戶所自愿下載APP,關(guān)閉并重新運(yùn)行本APP后,自動(dòng)恢復(fù)下載被暫停的非用戶所自愿下載的APP。
- 場景6(人工自查):APP 廣告頁面、開屏廣告、主屏等功能頁面,通過設(shè)置關(guān)閉障礙等方式欺騙誤導(dǎo)強(qiáng)迫下載非用戶所自愿下載APP。
- 場景7(人工自查):APP 廣告頁面、開屏廣告、主屏等功能頁面,下載的APP與向用戶所作的宣傳或者承諾不符。
3.2 欺騙誤導(dǎo)用戶提供個(gè)人信息。
行為表現(xiàn):非服務(wù)所必需或無合理場景,通過積分、獎(jiǎng)勵(lì)、優(yōu)惠等方式欺騙誤導(dǎo)用戶提供身份證號碼以及個(gè)人生物特征信息的行為。
參考鏈接
https://github.com/Dawnnnnnn/APPPrivacyDetect
https://github.com/r0ysue/r0capture/
https://github.com/ChenJunsen/Hegui3.0
到此這篇關(guān)于Android App隱私合規(guī)檢測輔助工具(Camille)的文章就介紹到這了,更多相關(guān)Android App隱私合規(guī)檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android入門:廣播發(fā)送者與廣播接收者詳細(xì)介紹
本篇文章主要介紹了Android入門:廣播發(fā)送者與廣播接收者,詳細(xì)介紹了廣播收發(fā)的原理和代碼,有需要的可以了解一下。2016-11-11
詳解Activity之singletast啟動(dòng)模式及如何使用intent傳值
在一個(gè)新棧中創(chuàng)建該Activity實(shí)例,并讓多個(gè)應(yīng)用共享改棧中的該Activity實(shí)例。一旦改模式的Activity的實(shí)例存在于某個(gè)棧中,任何應(yīng)用再激活改Activity時(shí)都會(huì)重用該棧中的實(shí)例,其效果相當(dāng)于多個(gè)應(yīng)用程序共享一個(gè)應(yīng)用,不管誰激活該Activity都會(huì)進(jìn)入同一個(gè)應(yīng)用中2015-11-11
Android滑動(dòng)拼圖驗(yàn)證碼控件使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android滑動(dòng)拼圖驗(yàn)證碼控件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Android使用lottie加載json動(dòng)畫的示例代碼
本篇文章主要介紹了Android使用lottie加載json動(dòng)畫的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01
android RecycleView實(shí)現(xiàn)多級樹形列表
這篇文章主要為大家詳細(xì)介紹了android RecycleView實(shí)現(xiàn)多級樹形列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
android使用PullToRefresh框架實(shí)現(xiàn)ListView下拉刷新上拉加載更多
這篇文章主要介紹了android使用PullToRefresh框架實(shí)現(xiàn)ListView下拉刷新上拉加載更多,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12

