当前位置:首页 > 技术分享 > 正文内容

Android App隐私合规检测辅助工具Camille详解 python3、frida 、模拟器

admin2年前 (2022-08-11)技术分享1755
Camille是一款Android App隐私合规检测辅助工具,现如今APP隐私合规十分重要,各监管部门不断开展APP专项治理工作及核查通报,不合规的APP通知整改或直接下架,下面小编给大家介绍下Android App隐私合规检测辅助工具Camille,感兴趣的朋友一起看看吧

Camille

Android App隐私合规检测辅助工具,项目仓库:https://github.com/zhengjim/camille

国内同步仓库https://gitee.com/web/camille

简介

现如今APP隐私合规十分重要,各监管部门不断开展APP专项治理工作及核查通报,不合规的APP通知整改或直接下架。camille可以hook住Android敏感接口。根据隐私合规的场景,辅助检查是否符合隐私合规标准。

安装

环境:

python3、frida 、一台已root手机(我测试机为Redmi 3s,刷机成魔趣Android 8.1,感觉问题挺多的),并在手机上运行frida-server

frida 安装参考https://gitee.com/web/auto_snail_lucky

下载:

1
2
3
4
git clone https://gitee.com/web/camille.git
cd camille
pip install -r requirements.txt
python camille.py -h

用法

简单使用:

1
python camille.py com.zhengjim.myapplication

com.zhengjim.myapplication为测试app的包名,会显示时间、行为和调用堆栈。可以根据场景来判断是否合规,如:获取敏感信息是否是在同意隐私政策之前等。

1
python camille.py com.zhengjim.myapplication -ns -f demo01.xls
  • -ns:不显示日志。默认显示

  • -f: 保存app行为轨迹到到execl里。默认不保存。

1
python camille.py com.zhengjim.myapplication -t 3

-t: hook应用自己的函数或含壳时,建议使用setTimeout并给出适当的延时(1-5s,需要根据不同app进行调整)。以免hook失败。默认不延迟。

如下图:不加延迟hook失败。

加了延迟hook成功。

后记

本来想使用uiautomator2或appium来模拟点击制定场景,但后续调研发现纯自动化的检测是不全的,最多也就检测20-30%,还是得结合人工来检测。索性就删除了模拟点击这块。(其实就是懒,不定期更新)

场景

参考百度史宾格的检测场景,根据工信部信管函〔2020〕164号文(共37项),需要人工自查的有15项

网站:https://console.bce.baidu.com/springer (现在1.4元/次,挺划算的,嫌麻烦的直接用就行)

1 APP、SDK违规处理用户个人信息方面

1.1 违规收集个人信息。

重点整治APP、SDK未告知用户收集个人信息的目的、方式、范围且未经用户同意,私自收集用户个人信息的行为。

  • 场景1:APP未见向用户明示个人信息收集使用的目的、方式和范围,未经用户同意,存在收集IMEI、设备MAC地址和软件安装列表、通讯录和短信等信息的行为。

  • 场景2:APP以隐私政策弹窗的形式向用户明示收集使用规则,未经用户同意,存在收集设备MAC地址、IMEI等信息的行为。

  • 场景3:APP以隐私政策弹窗的形式向用户明示收集使用规则,但未见清晰明示APP收集软件列表、设备MAC地址等的目的方式范围,用户同意隐私政策后,存在收集软件列表、设备MAC地址的行为。

  • 场景4(人工自查):APP未见向用户明示SDK收集使用个人信息的目的、方式和范围,未经用户同意,SDK存在收集IMEI、设备MAC地址和软件安装列表、通讯录和短信等信息的行为。

  • 场景5(人工自查):APP向用户明示SDK的收集使用规则,未经用户同意,SDK存在收集IMEI、设备MAC地址和软件安装列表、通讯录和短信等信息的行为。

  • 场景6(人工自查):APP向用户明示SDK的收集使用规则,但未见清晰明示SDK收集设备MAC地址、软件安装列表等的目的方式范围,用户同意隐私政策后, SDK存在收集设备MAC地址、软件安装列表的行为。

  • 场景7:APP在征求用户同意环节,未提供明确的同意或拒绝按钮,或者使用“好的”“我知道了”等词语。

  • 场景8:APP在征求用户同意环节,设置为默认勾选。

1.2 超范围收集个人信息。

重点整治APP、SDK非服务所必需或无合理应用场景,特别是在静默状态下或在后台运行时,超范围收集个人信息的行为。

  • 场景1(人工自查):APP存在收集IMEI、IMSI、设备MAC地址、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频等个人信息的行为,非服务所必需且无合理应用场景。

  • 场景2:APP在运行时,未见向用户告知且未经用户同意,存在以特定频率(如每30s)读取收集IMEI、IMSI、设备MAC地址、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频等个人信息,非服务所必需且无合理应用场景,超出实现产品或服务的业务功能所必需的最低频率。

  • 场景3(人工自查):APP未见向用户明示SDK的收集使用规则,未经用户同意,SDK存在收集IMEI、IMSI、设备MAC地址、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频等信息的行为,非服务所必需且无合理应用场景,超出与收集个人信息时所声称的目的具有直接或合理关联的范围。

  • 场景4:APP在运行时,未见向用户告知且未经用户同意,存在每2秒读取一次IMEI、位置信息等,非服务所必需且无合理应用场景,超出实现产品或服务的业务功能所必需的最低频率。

  • 场景5:APP未见向用户告知且未经用户同意,在后台行为时,存在收集 IMSI、设备序列号等信息的行为,非服务所必需且无合理应用场景,超出与收集个人信息时所声称的目的具有直接或合理关联的范围。

  • 场景6:APP未见向用户告知且未经用户同意,在静默状态下或在后台运行时,存在按照一定频次收集位置信息、IMEI、通讯录、短信、图片等信息的行为,非服务所必需且无合理应用场景,超出与收集个人信息时所声称的目的具有直接或合理关联的范围。

  • 场景7:APP未向用户明示SDK的收集使用规则,未经用户同意,SDK在静默状态下或在后台运行时,存在收集通讯录、短信、通话记录、相机等信息的行为,非服务所必需且无合理应用场景,超出与收集个人信息时所声称的目的具有直接或合理关联的范围。

  • 场景8:APP未向用户明示SDK的收集使用规则,未经用户同意,SDK在静默状态下或在后台运行时,存在按照一定频次收集位置信息、IMEI、通讯录、短信、图片等信息的行为,非服务所必需且无合理应用场景,超出与收集个人信息时所声称的目的具有直接或合理关联的范围。

1.3 违规使用个人信息。

重点整治APP、SDK未向用户告知且未经用户同意,私自使用个人信息,将用户个人信息用于其提供服务之外的目的,特别是私自向其他应用或服务器发送、共享用户个人信息的行为。

  • 场景1:APP未向用户明示个人信息处理的目的、方式和范围,将IMEI、IMSI、设备MAC地址、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频等个人信息发送给第三方SDK等产品或服务。

  • 场景2:APP未见向用户明示分享的第三方名称、目的及个人信息类型,用户同意隐私政策后,存在将IMEI/设备MAC地址/软件安装列表等个人信息发送给第三方SDK。

  • 场景3(人工自查):APP未向用户告知且未经用户同意,将设备识别信息、商品浏览记录、搜索使用习惯、软件安装列表等个人信息传输至APP服务器后,向第三方产品或服务提供其收集的个人信息。

1.4 强制用户使用定向推送功能。

重点整治APP、SDK未以显著方式标示且未经用户同意,将收集到的用户搜索、浏览记录、使用习惯等个人信息,用于定向推送或广告精准营销,且未提供关闭该功能选项的行为。

  • 场景1(人工自查):APP的页面或功能存在定向推送功能,但隐私政策未见向用户告知,将收集的用户个人信息用于定向推送、精准营销。

  • 场景2(人工自查):若APP定向推送功能使用了第三方的个人信息来源,但隐私政策未见向用户告知。

  • 场景3(人工自查):APP隐私政策存在“根据您的偏好进行个性化推荐”等内容,明示存在定向推送功能,但页面中未见显著区分个性化推送服务,如标明“个性化展示”或“定推”等字样。

  • 场景4(人工自查):APP以隐私政策弹窗等形式明示存在定向推送功能,未提供退出或关闭个性化展示模式的选项,如拒绝接受定向推送信息,或停止、退出、关闭相应功能的机制。

2 设置障碍、频繁骚扰用户方面

2.1 APP强制、频繁、过度索取权限。

重点整治APP安装、运行和使用相关功能时,非服务所必需或无合理应用场景下,用户拒绝相关授权申请后,应用自动退出或关闭的行为。重点整治短时长、高频次,在用户明确拒绝权限申请后,频繁弹窗、反复申请与当前服务场景无关权限的行为。重点整治未及时明确告知用户索取权限的目的和用途,提前申请超出其业务功能等权限的行为。

  • 场景1:APP首次启动时,向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,应用退出或关闭(应用陷入弹窗循环,无法正常使用)。

  • 场景2(人工自查):APP运行时,未向用户告知申请权限的目的,向用户索取当前服务场景未使用到的通讯录、定位、短信、录音、相机、日历等权限,且用户拒绝授权后,应用退出或关闭相关功能,无法正常使用。

  • 场景3(人工自查):用户注册登录时,APP向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,APP无法正常注册或登录。

  • 场景4(人工自查):APP运行时,向用户索取当前服务场景未使用到的电话、通讯录、定位、短信、录音、相机、存储、日历等权限,且用户拒绝授权后,应用退出或关闭(应用陷入弹窗循环,无法正常使用)。

  • 场景5:APP运行时,在用户明确拒绝通讯录、定位、短信、录音、相机、日历等权限申请后,仍向用户频繁弹窗申请与当前服务场景无关的权限,影响用户正常使用。

  • 场景6: APP在用户明确拒绝通讯录、定位、短信、录音、相机等权限申请后,重新运行时,仍向用户弹窗申请开启与当前服务场景无关的权限,影响用户正常使用。

  • 场景7:APP首次打开或运行中,未见使用权限对应的相关功能或服务时,不应提前向用户弹窗申请开启通讯录、定位、短信、录音、相机、日历等权限。

  • 场景8(人工自查):APP未见提供相关业务功能或服务,不应申请通讯录、定位、短信、录音、相机、日历等权限。

2.2 APP频繁自启动和关联启动。

重点整治APP未向用户告知且未经用户同意,或无合理的使用场景,频繁自启动或关联启动第三方APP的行为。

  • 场景1:APP未向用户明示未经用户同意,且无合理的使用场景,存在频繁自启动或关联启动的行为。

  • 场景2:APP虽然有向用户明示并经用户同意环节,但频繁自启动或关联启动发生在用户同意前。

  • 场景3:APP非服务所必需或无合理应用场景,超范围频繁自启动或关联启动第三方APP。

3 欺骗误导用户方面

3.1 欺骗误导用户下载APP。

通过“偷梁换柱”“移花接木”等方式欺骗误导用户下载APP,特别是具有分发功能的移动应用程序欺骗误导用户下载非用户所自愿下载APP的行为

  • 场景1:APP 广告页面、开屏广告、主屏等功能页面,无显著APP下载提示,点击即自动下载非用户所自愿下载APP。

  • 场景2:APP 广告页面、开屏广告、主屏等功能页面,以“是否立即开始游戏”方式欺骗误导用户自动下载非用户所自愿下载APP。

  • 场景3:APP 广告页面、开屏广告、主屏等功能页面,以“领取红包”方式欺骗误导用户自动下载非用户所自愿下载APP。

  • 场景4:APP 广告页面、开屏广告、主屏等功能页面,点击“下载按钮“以外区域,自动下载非用户所自愿下载APP。

  • 场景5(人工自查):暂停下载非用户所自愿下载APP,关闭并重新运行本APP后,自动恢复下载被暂停的非用户所自愿下载的APP。

  • 场景6(人工自查):APP 广告页面、开屏广告、主屏等功能页面,通过设置关闭障碍等方式欺骗误导强迫下载非用户所自愿下载APP。

  • 场景7(人工自查):APP 广告页面、开屏广告、主屏等功能页面,下载的APP与向用户所作的宣传或者承诺不符。

3.2 欺骗误导用户提供个人信息。

行为表现:非服务所必需或无合理场景,通过积分、奖励、优惠等方式欺骗误导用户提供身份证号码以及个人生物特征信息的行为。

参考链接

https://github.com/Dawnnnnnn/APPPrivacyDetect

https://github.com/r0ysue/r0capture/

https://github.com/ChenJunsen/Hegui3.0


扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/384.html

分享给朋友:

相关文章

php-cgi占用太多cpu资源而导致服务器响应过慢 利用进程和Linux的proc 定位耗资源文件

php-cgi占用太多cpu资源而导致服务器响应过慢 利用进程和Linux的proc 定位耗资源文件

在此环境下,一般php-cgi运行是非常稳定的,但也遇到过php-cgi占用太多cpu资源而导致服务器响应过慢,我所遇到的php-cgi进程占用cpu资源过多的原因有: 1. 一些php的扩展与php版本兼容存在问题,实践证明 e...

关于微信第三方平台(全网发布检测)检测流程以及踩到的坑

关于微信第三方平台(全网发布检测)检测流程以及踩到的坑

能点到全网发布这一步,说明你已经弄好了获取component_verify_ticket,component_access_token等这些参数,通常这个时候点击全网发布只会有这两个失败。如果其他失败的那就要好好检查一下你的代码了,或者查看...

centos 配置Let's Encrypt 泛域名https证书

centos 配置Let's Encrypt 泛域名https证书

前言2018年1月份Letsencrypt可以申请泛域名证书,这让我们部署多域名、多站点https省了很多功夫,终于可以不用维护多个域名的https证书。笔者以acme.sh为例,手把手教你配置https证书~本教程适用于centos 6....

微软Windows 10升级密钥(例如家庭版升级为企业版) 不能用于激活系统

微软Windows 10升级密钥(例如家庭版升级为企业版) 不能用于激活系统

下面的密钥,是微软官方提供的,仅能用于Windows10系统版本的升级,比如从家庭版升级为专业版、专业版升级为企业版等。升级密钥不能用于激活系统,激活需要KMS或者数字权利,由于涉及到版权问题,在此不宜分享,请大家自行查找激活相关的内容。准...

Nginx服务崩溃自动重启脚本(监控进程服务并自动重启进程服务)脚本

有一台服务器运行着Ngin最近突然有一次崩溃,导致使用方当天无法访问网页端,然后我不得不登录服务器,检查各项服务,发现nginx崩溃了,于是重启Nginx,问题解决。后来为了防止Nginx再发生这种情况给运维带来的运维成本,于是写了一个脚本...

在CentOS 5.x 6.x里使用yum源 换阿里云国内源换vault.centos.org源

阿里云CentOS 5 的系统,无法用yum来安装应用软件。  原因:CentOS 5 在2017-03-31日已经结束支持,不再提供维护更新,所以包括阿里云镜像站的文件可能都是过时或已经有部分文件缺失。 &n...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。