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 欺骗误导用户提供个人信息。

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

参考链接

Android App隐私合规检测辅助工具(Camille)的更多相关文章

  1. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  2. 阿里云安骑士-Centos7系统基线合规检测-修复记录

    执行命令 sysctl -w net.ipv4.conf.all.send_redirects=0sysctl -w net.ipv4.conf.default.send_redirects=0sys ...

  3. Android App 性能优化实践

    本文记录了Android App优化需要用到的工具和以及在实践中的Tips.也算对我这半年来部分工作的总结. 工具 Hierarchy Viewer 是 Android SDK 自带的 Layout ...

  4. Android APP压力测试(三)之Monkey日志自动分析脚本

    Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...

  5. 第三篇:gradle 编译 Android app 概览

    引言:经过上两篇的论述,我们已经从代码到架构都简单的熟悉了一遍,理论上,只要知道android app的编译过程,我们大可以自己写一份用gradle编译app的插件,插件内将将整个流程用Task的依赖 ...

  6. 老李分享:android app自动化测试工具合集

    老李分享:android app自动化测试工具合集   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  7. Android APP性能分析方法及工具

    近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...

  8. Android性能检测--traceview工具各个参数的意思

    Android性能检测 traceview的使用方法 1. 把android-sdk-windows\tools路径加到Path当中 2. 编写测试代码: package com.wwj.tracev ...

  9. APP营销软件项目常见(合规)风险评估

    一个软件项目开始前,往往需要先进行风险评估以及可行性评估,尤其涉及到营销拉新类项目,需要大量依靠用户二次分享传播,为了避免项目做了无用功,分享一些常见的App项目风险: 微信分享功能 风险: 1.蒙层 ...

随机推荐

  1. Shell系列(27)- 条件判断之两个整数比较

    两个整数之间比较 Liunx中,都是字符型,但是加了数值比较的选项,所以自动将他们转换成了整数型进行比较,不需要对这些参数进行变量转换或者重新声明 测试选项 作用 整数1 -eq 整数2 判断整数1是 ...

  2. 你会阅读appium官网文档吗

    高效学习appium第一步,学会查看appium官方文档.如果能把appium文档都通读一遍,对学习appium大有益处. 而能做到通读appium官方文档的人,想必不是很多,刚开始学习appium的 ...

  3. adb devices如何连逍遥模拟器的设备

    adb device连接真机,上一篇已经讲过了,这篇讲如何连接模拟器.这里我用的模拟器逍遥模拟器.我先插上手机,另外启动了一个模拟器,直接在cmd中输入adb devices,按理应该有2个设备id, ...

  4. three.js 材质翻转

    刚学.这个鸟玩意儿卡了半天,记录一下. var skyBox = new THREE.Mesh(skyGeometry, skyMaterial); //创建一个完整的天空盒,填入几何模型和材质的参数 ...

  5. docker network 参数

    一. 格式 docker network COMMAND 二.COMMAND 讲解 2.1 .docker network connect 格式 docker network connect [OPT ...

  6. P5644-[PKUWC2018]猎人杀【NTT,分治】

    正题 题目链接:https://www.luogu.com.cn/problem/P5644 题目大意 \(n\)个人,每个人被选中的权重是\(a_i\).每次按照权重选择一个没有死掉的人杀死,求第\ ...

  7. P6329-[模板]点分树 | 震波

    正题 题目链接:https://www.luogu.com.cn/problem/P6329 解题思路 给出\(n\)个点的一棵树,每个点有权值,有\(m\)次操作 修改一个点\(x\)的权值为\(y ...

  8. 这是我见过最简单的博客文只有一张图,Python基础10分钟学完

  9. Kettle学习笔记(四)— 总结

    目录 Kettle学习笔记(一)- 环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle中设置编码 ...

  10. 实践node.js构建vue项目

    一.首先安装下载node.js 1.Node.js 官方网站下载:https://nodejs.org/en/,自行选择合适自己的下载安装即可 2.验证安装 打开cmd,输入node  –v和 npm ...