1 安卓基础知识

安卓四大组件
安卓APK的组成
AOSP
移动安全OWASP TOP 10

2 隐私合规检测的目的

应对监管,避免隐私违规行为

3 隐私合规法律

《App违法违规收集使用个人信息行为认定方法》
《移动互联网应用程序(App)收集个人信息基本要求》
● 《网络安全法》
● 《信息安全技术个人信息安全规范》
● 《关于开展纵深推进APP侵害用户权益专项整治行动》
● 《App违法违规使用个人信息自评估指南》
● 《App违法违规收集使用个人信息行为认定方法》
● 《关于开展纵深推进APP侵害用户权益专项整治行动的通知(工信部信管函〔2020〕164号)
● 《移动互联网应用程序个人信息保护管理暂行规定》
● 《互联网用户账号信息管理规定》
● 《国家网信办启动清朗·移动应用程序PUSH弹窗突出问题专项整治》
● 《app弹窗治理》
● 《用户感知提升和信息共享公开通知》
● 《国家标准|GB/T 35273-2020 (samr.gov.cn)》

4 检测手段&工具

合规基础堆栈

检测工具:开源项目总结
camille: https://github.com/zhengjim/camille
privacysentry
r0capture
Mobile Security Framework (MobSF): https://github.com/MobSF/Mobile-Security-Framework-MobSF?tab=readme-ov-file#mobile-security-framework-mobsf
Frida
LSposed
Xposed
Magisk
Riru
逆向工具
Jadx
IDA
隐私合规检测项
安卓框架中的类
android.net.wifi.WifiInfo
android.content.ClipboardManager
android.content.pm.PackageManager
android.hardware.SensorManager
android.telephony.TelephonyManager
对应的Method name

安全SDK
设备指纹
ssl unpinning
对抗技术的绕过?frida检测 抓包抓不到 加固和抓包是无关的
静态扫描 动态扫描
APP隐私合规可以从以下几个方面进行检测:

  1. 隐私政策协议合规性分析:对APP的隐私政策文本进行自动化分析,检查是否包含了必要的内容,是否与实际收集使用行为一致,是否符合相关法律法规的规定,并给出合规性评估和建议。
  2. 代码权限检测:对APP的代码进行静态和动态分析,检查是否申请和使用了敏感权限,是否存在超范围采集、泄露或滥用个人信息的行为,是否有安全传输和存储个人信息的措施,并给出风险评估和整改建议。
  3. 安全漏洞检测:从多维度、百余项检测项中,对应用中潜在的安全漏洞进行全面分析,并给出合理整改建议。
  4. 权限信息检测:统计应用请求的权限信息,并依照风险对其进行分级,进行有重点的排查,避免权限冗余造成额外风险。
  5. 恶意行为检测:严格按照国家相关标准规定,通过自主研发的反病毒引擎,捕获恶意行为。
  6. 第三方SDK检测:对移动应用中集成的第三方SDK进行检测,保证应用检测全面无死角。
  7. 内容违规检测:针对移动应用整体内容的违规检测方案,自动化检测移动应用中的黄赌毒、暴恐、涉政涉党等违规内容。
  8. 敏感API调用检测:对敏感API调用进行检测,检测范围包括敏感API名称及调用位置。
    frida梳理
    frida原理
    常用命令
    Python 代码中,attach 模式 Hook 已经存在的进程,spawn 模式会重启 APP,启动一个新的进程并挂起,在启动的同时注入 frida 代码,适用于在进程启动前的一些 Hook,attach 模式传入的是 APP 名称,spawn 模式传入的是 APP 包名,查看 APP 名称和包名的方法有很多,这里介绍两个 frida 命令,frida-ps -Uai:列出安装的程序,frida-ps -Ua:列出正在运行中的程序
    magisk刷机
    https://zhuanlan.zhihu.com/p/666820596
    对抗技术梳理
    ssl unpinning 证书绑定
    Xposed+JustTrustMe 将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查
    双向证书认证
    在burp上查看数据发现数据包返回400,且反编译的文件中存在证书+逻辑代码中存在引用定义。判断其可能使用了双向证书认证,可以直接试试密码自吐。
    然后查看re目录或者assets目录中是否存在证书
    常见证书的格式
    “.pfx” “pkcs12” “p12” “keyStore” “cer”
    https://mp.weixin.qq.com/s/5ed1k_fZEmhFT9ONP7_QvA
  9. 2)获取证书的解密密钥:
  10. 2.1)通用思路
    ①hook底层框架代码java.security.KeyStore,实现密钥自吐

-f的是app的包名 ssl 是指的js的文件

frida检测
1.检测frida-server文件名
2.检测27042默认端口
3.检测D-Bus
4.检测/proc/pid/maps映射文件
5.检测/proc/pid/tast/tid/stat或/proc/pid/tast/tid/status
6.双进程保护
https://zhuanlan.zhihu.com/p/557713016#:~:text=1.%E6%A3%80%E6%B5%8Bfrida-server%E6%96%87%E4%BB%B6%E5%90%8D%202.%E6%A3%80%E6%B5%8B27042%E9%BB%98%E8%AE%A4%E7%AB%AF%E5%8F%A3%203.%E6%A3%80%E6%B5%8BD-Bus%204.%E6%A3%80%E6%B5%8B%2Fproc%2Fpid%2Fmaps%E6%98%A0%E5%B0%84%E6%96%87%E4%BB%B6,5.%E6%A3%80%E6%B5%8B%2Fproc%2Fpid%2Ftast%2Ftid%2Fstat%E6%88%96%2Fproc%2Fpid%2Ftast%2Ftid%2Fstatus%206.%E5%8F%8C%E8%BF%9B%E7%A8%8B%E4%BF%9D%E6%8A%A4%20%E5%89%8D%E4%B8%A4%E7%A7%8D%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E4%BF%AE%E6%94%B9frida-server%E6%96%87%E4%BB%B6%E5%90%8D%EF%BC%8C%E6%94%B9%E9%BB%98%E8%AE%A4%E7%AB%AF%E5%8F%A3%E7%BB%95%E8%BF%87%E3%80%82%20%E5%8F%8C%E8%BF%9B%E7%A8%8B%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87-f%20spawn%E6%A8%A1%E5%BC%8F%E5%90%AF%E5%8A%A8%E7%BB%95%E8%BF%87%E3%80%82
https://mp.weixin.qq.com/s/8RrsDc2NBSjrlmpF5B1fpw
检测D-Bus
● D-Bus是一种进程间通信(IPC)和远程过程调用(RPC)机制,最初是为Linux开发的,目的是用一个统一的协议替代现有的和竞争的IPC解决方案。
● 遍历连接手机所有端口发送D-bus消息,如果返回”REJECT”这个特征则认为存在frida-server。

root检测
首先,为什么有些app尤其是某金融类app要进行root检测?
Android系统是基于Linux内核的,而Linux是多用户的,但自己手机自己用就行了,所以Linux的多用户机制被用到了app隔离上。默认情况下app互相隔离,没有互相访问读写的权限。App之间的交互通过AndroidManifest.xml实现用户ID共享,前提是共享app的签名必须一致。
但是!Linux中存在root用户,它可以无视沙箱的隔离机制,跨越用户和用户组对文件、目录进行读写删除等操作
1、检查常用目录是否存在su
/system/bin/su
/system/xbin/su
/sbin/su
/system/su
/system/bin/.ext/.su
/system/usr/we-need-root/su-backup
/system/xbin/mu
2、使用which命令查看是否存在su
3、主动申请root权限
4、执行busybox
5、访问私有目录,如/data目录,查看读写权限
6、读取build.prop中关键属性,如ro.build.tags和ro.build.type
7、检查市面主流的模拟器
8、检测frida、xposed等Hook框架的特征
如何绕过Root检测机制呢?

  1. 对应用下手,干预应用的Root检测行为;
  2. 对系统下手,隐藏系统自身Root相关的特征;
    我们可以借助jadx等逆向工具对应用源码进行分析,Hook相关的实现函数绕过;
    Magisk自身提供了MagiskHide的功能,点击进入MagiskHide中,勾选的应用即为被隐藏root的应用。
    自定义ROM权限,可以自带root环境,可免root运行Xposed等模块。
    也可以获取AOSP源码,通过定制ROM来隐藏Root的特征。

APK的完整性保护在Android逆向安全中是一个常见的话题,通常指为了防二次打包,防篡改,防独立调用so等,通过验证apk包名、签名,及apk包本身(如META-INF下签名文件,MD5等)来达到防范的目的。笔者曾分析过一些大型的APK,发现即使使用了包名、签名、apk完整性验证,仍然可以通过一定手段来绕过验证。

https://mp.weixin.qq.com/s/6nn6VHe1_PPuU897MOg2zQ
https://mp.weixin.qq.com/s/keCX_37zRK67-BVFQdE9Uw
● Xposed检测绕过:https://bbs.pediy.com/thread-271347.htm root
● 检测方法小结:https://blog.csdn.net/ly_xiamu/article/details/81943267
● 概述APK完整性保护的逆向分析及防护策略:https://bbs.pediy.com/thread-268480.htm
● 静态分析-IDA绕过so层root检测:https://bbs.pediy.com/thread-271376.htm
● 静态分析-绕过java层root检测:https://bbs.pediy.com/thread-271375.htm

5 国内外现状调研

6 优秀文章案例

Android APP合规检查工具
Gradle Plugin+Transform+ASM Hook并替换隐私方法调用(彻底解决隐私不合规问题)
APP逆向分析/渗透测试/安全检测/隐私合规如何选择手机机型或系统
移动端APP隐私合规检测
移动APP安全合规
APP隐私合规
隐私合规代码排查思路
Android 隐私合规检查工具套装

参考链接

[1]隐私合规代码排查思路: https://juejin.cn/post/7042967031599071269
[2]Android 隐私合规静态检查: https://musicfe.com/android-privacy/
[3]VirtualXposed: https://github.com/android-hacker/VirtualXposed
[4]隐私合规代码排查思路: https://juejin.cn/post/7042967031599071269
[5]epic: https://github.com/tiann/epic/blob/master/README_cn.md
[6]Pine: https://github.com/canyie/pine/blob/master/README_cn.md
[7]ART上的动态Java方法hook框架: https://blog.canyie.top/2020/04/27/dynamic-hooking-framework-on-art/
[8]camille: https://github.com/zhengjim/camille
[9]frida gadget : https://frida.re/docs/gadget/#script
[10]frida-gadget.so: https://github.com/frida/frida/releases
[11]Android Hook 技术: https://meik2333.com/posts/android-hook/
[12]Frida Gadget: https://frida.re/docs/gadget/
[13]frida Gadget so 免 root 注入 app: https://blog.51cto.com/u_15127527/4546627
[14]网易云音乐 Android 隐私合规静态检查: https://musicfe.com/android-privacy/
[15]Android App 隐私合规检测辅助工具 Camille: https://github.com/zhengjim/camille
[16]非 root 环境下 frida 的两种使用方式: https://nszdhd1.github.io/2021/06/15/%E9%9D%9Eroot%E7%8E%AF%E5%A2%83%E4%B8%8Bfrida%E7%9A%84%E4%B8%A4%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F/
[17]Mobile Security Framework (MobSF): https://github.com/MobSF/Mobile-Security-Framework-MobSF?tab=readme-ov-file#mobile-security-framework-mobsf
[18]ART上的动态Java方法hook框架: https://blog.canyie.top/2020/04/27/dynamic-hooking-framework-on-art/