Android App隐私合规检测辅助工具Camille详解

目录
  • 简介
  • 安装
  • 用法
  • 后记
  • 场景
    • 1APP、SDK违规处理用户个人信息方面
      • 1.1违规收集个人信息。
      • 1.2超范围收集个人信息。
      • 1.3违规使用个人信息。
      • 1.4强制用户使用定向推送功能。
    • 2设置障碍、频繁骚扰用户方面
      • 2.1APP强制、频繁、过度索取权限。
      • 2.2APP频繁自启动和关联启动。
    • 3欺骗误导用户方面
      • 3.1欺骗误导用户下载APP。
      • 3.2欺骗误导用户提供个人信息。
  • 参考链接

Camille

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

简介

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

安装

环境:

python3、frida 、一台已root手机(我测试机为Redmi 3s,刷机成魔趣Android 8.1,感觉问题挺多的),并在手机上运行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的包名,会显示时间、行为和调用堆栈。可以根据场景来判断是否合规,如:获取敏感信息是否是在同意隐私政策之前等。

python camille.py com.zhengjim.myapplication -ns -f demo01.xls
  • -ns:不显示日志。默认显示
  • -f: 保存app行为轨迹到到execl里。默认不保存。

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

到此这篇关于Android App隐私合规检测辅助工具(Camille)的文章就介绍到这了,更多相关Android App隐私合规检测内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android App隐私合规检测辅助工具Camille详解

    目录 简介 安装 用法 后记 场景 1APP.SDK违规处理用户个人信息方面 1.1违规收集个人信息. 1.2超范围收集个人信息. 1.3违规使用个人信息. 1.4强制用户使用定向推送功能. 2设置障碍.频繁骚扰用户方面 2.1APP强制.频繁.过度索取权限. 2.2APP频繁自启动和关联启动. 3欺骗误导用户方面 3.1欺骗误导用户下载APP. 3.2欺骗误导用户提供个人信息. 参考链接 Camille Android App隐私合规检测辅助工具,项目仓库:https://github.com

  • Android应用隐私合规检测实现方案详解

    目录 [前言] 一.准备工作 二.编写Xposed模块 [前言] 为了响应国家对于个人隐私信息保护的号召,各应用渠道平台陆续出台了对应的检测手段去检测上架的应用是否存在隐私合规问题,因而你会发现现在上架应用,随时都会存在被驳回的风险,为了避免被驳回,我们需要做的就是提前检测好自己的应用是否存在隐私合规问题,及时整改过来,下面提供Xposed Hook思路去检测隐私合规问题,建议有Xposed基础的童鞋阅读 一.准备工作 1.准备一台root过的安卓手机或者安卓模拟器(新版本的手机root比较麻烦

  • python实现微信跳一跳辅助工具步骤详解

    说明 1.windows上安装安卓模拟器,安卓版本5.1以上 2.模拟器里下载安装最新的微信6.6.1 3.最好使用python2.7,python3的pyhook包有bug,解决比较麻烦 步骤 1.windows上安装python2.7,配置好环境变量和pip 2.到这个网站下载对应版本的pyHook和pywin32 http://www.lfd.uci.edu/~gohlke/pythonlibs 2.打开cmd,安装下载好的whl文件和其他库 pip install pywin32-221

  • Android隐私协议提示弹窗的实现流程详解

    android studio版本:2021.2.1 例程名称:pravicydialog 功能: 1.启动app后弹窗隐私协议 2.屏蔽返回键 3.再次启动不再显示隐私协议. 本例程的绝大部分代码来自下面链接,因为本人改了一些,增加了一些功能,所以不有脸的算原创了. 下面这个例子是“正宗”app隐私协议实现方法,而且协议内容使用的是txt格式文件,据说如果使用html格式文件,各大平台在审核的时候大概率无法通过,但协议内容的还应该有更详细协议及说明的链接,我没做,暂时还没学会,会了再修改一下.

  • Android代码检查规则Lint的自定义与应用详解

    目录 前言: 什么是Lint 自定义Lint流程: 1. 新创建module,Module类型选择Java or Kotlin Library, 暂时命名lint_tools 2. 在build.gradle中引入lint的依赖 3. 本地创建个资源id命名检查规则,用来规范项目中的id统一命名 4. 实现IssueRegistry并添加对应的自定义Issue: 5. 在module(lint_tools)中对应的build.gradle中配置如下信息: 6. 在需要进行lint检查的modul

  • Android进阶Handler应用线上卡顿监控详解

    目录 引言 1 Handler消息机制 1.1 方案确认 1.2 Looper源码 1.3 Blockcanary原理分析 1.4 Handler监控的缺陷 2 字节码插桩实现方法耗时监控 2.1 字节码插桩流程 2.2 引入ASM实现字节码插桩 2.3 Blockcanary的优化策略 引言 在上一篇文章中# Android进阶宝典 -- KOOM线上APM监控最全剖析,我详细介绍了对于线上App内存监控的方案策略,其实除了内存指标之外,经常有用户反馈卡顿问题,其实这种问题是最难定位的,因为不

  • Android Studio打包.so库到apk中实例详解

    Android Studio打包.so库到apk中实例详解 由于在原来的ADT的Eclipse环境中,用ndk_build工具生成了相应的各个.so库文件之后,eclipse工具就会自动把这些库导入到apk中.而Android Studio目前为止(1.1.0版本)还无法做到那么自动,但是我们可以通过以下方式进行. 首先在Android Studio工程的app目录下创建整个jni目录,jni目录里写Android.mk.Application.mk以及各类C/C++和汇编源文件.然后跟原来一样

  • Android 录制手机屏幕视频生成GIF图片实例详解

    Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不是很方便.想CSDN这样的博客网站也并不支持在博客里放视频这种方式,除非你贴外链,太烦了不是么.最好是如下图这种gif方式,直观 今天来教大家一个易操作的录制方式.当然,一般只适合Android开发者.因为你需要有AndroidStudio 工具 AndroidStudio(完成手机屏幕的视频录制,

  • Android bindService的使用与Service生命周期案例详解

    Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯bindService的使用,不涉及任何startService方法调用的情况.如果想了解startService相关的使用,请参见<Android中startService的使用及Service生命周期>. bindService启动服务的特点 相比于用startService启动的Service,bindService启动的服务

  • Android 进阶实现性能优化之OOM与Leakcanary详解原理

    目录 Android内存泄漏常见场景以及解决方案 资源性对象未关闭 注册对象未注销 类的静态变量持有大数据 单例造成的内存泄漏 非静态内部类的静态实例 Handler临时性内存泄漏 容器中的对象没清理造成的内存泄漏 WebView 使用ListView时造成的内存泄漏 Leakcanary leakcanary 导入 leakcanary 是如何安装的 leakcanary 如何监听Activity.Fragment销毁 RefWatcher 核心原理 流程图 本文主要探讨以下几个问题: And

随机推荐