移动端渗透测试—Android

移动端渗透测试—Android

Android

Android 是由 Google 开发的一款基于 Linux 内核的开源移动操作系统,广泛应用于智能手机、平板电脑等触摸屏设备。它基于 Java 语言,运行在 Dalvik 或 ART 虚拟机上,具备类 Unix 特性。除了智能手机和平板电脑,Android 还支持多种设备,包括:

  • Android-x86:适用于 PC。
  • Android TV:专为电视设计。
  • Android Auto:用于汽车。
  • Wear OS(原 Android Wear):面向可穿戴设备。

截至 2021 年 5 月,Android 是全球使用最广泛的操作系统,活跃设备超过 30 亿台。

环境配置

模拟器选择

推荐使用 雷电模拟器 进行 Android 渗透测试。

系统版本:Android 9

设置步骤

  1. 安装雷电模拟器并启动。

  2. 进入模拟器设置,启用 开发者模式

    • 进入 设置 > 关于手机
    • 连续点击 版本号 多次,直到提示已进入开发者模式。

image-20250811094811525

注意:需要在 雷电多开器 中将设备设置为 System.vmdk 可写入,并开启 Root 权限。

image-20250811094342381

image-20250811094317391

MITM 抓包

MITM(中间人攻击)抓包是移动端渗透测试的重要环节,通过拦截网络通信获取数据包。

安装 BurpSuite 证书

Android 7 及以上版本的 APP 默认仅信任系统证书,用户证书需要特殊配置才能被信任。以下是安装 BurpSuite 证书的步骤:

  1. 导出 BurpSuite 证书

    • 在 BurpSuite 中导出证书为 .der 格式。
  2. 转换证书格式

    • 使用 OpenSSL 将 .der 证书转换为 Android 可识别的 .pem 格式。
    openssl x509 -inform DER -in [der证书名] -out [导出的证书名].pem
    
  3. 读取证书签名信息

    • 查看 .pem 证书的签名信息以获取证书的标识。
    openssl x509 -inform PEM -subject_hash_old -in [证书名].pem
    

    image-20250811101438729

  4. 重命名证书

    • 根据上一步获取的签名信息(例如 9a5ba575),将证书重命名为 Android 可识别的格式。
    mv [证书名].pem [9a5ba575].0
    
  5. 配置 adb 环境并传输证书

    • 配置 adb(Android 调试桥)环境变量。 image-20250811102715846
    • 使用以下命令检查设备连接并传输证书:
    # 查看连接的 Android 设备
    adb devices
    
    # 进入设备 Shell(单设备)
    adb shell
    
    # 进入指定设备 Shell(多设备时使用 -s 指定设备 ID)
    adb -s [deviceId] shell
    
    # 切换到 root 用户
    adb root
    
    # 传输证书到系统目录
    adb push [9a5ba575].0 /system/etc/security/cacerts/
    
    # 若提示 read-only 文件系统,检查模拟器 system.vmdk 是否可写
    adb remount
    # 重新挂载后再次传输证书
    
    # 设置证书权限为 644
    adb shell chmod 644 /system/etc/security/cacerts/[9a5ba575].0
    
  6. 重启模拟器

    • 重启后,证书即配置完成,可被系统信任。

使用 BurpSuite 抓包

在 BurpSuite 中设置全局代理监听,端口通常为 8080

image-20250811104551639

方法一:配置 Wifi 代理

步骤

  1. 在模拟器中进入 设置 > WiFi

  2. 修改 WiFi 网络,设置代理为 BurpSuite 的 IP 和端口(通常为 Windows 的 IP 和 8080 端口)。

    image-20250811104748849

  3. 打开浏览器访问百度,验证是否抓到数据包,并检查证书是否生效。

    image-20250811104858293

缺点

  • 每次抓包需手动配置代理,操作繁琐。
  • 部分 APP 会检测 WiFi 代理并拒绝连接。

方法二:配置 VPN

工具:使用 Postern 配置 VPN。

步骤

  1. 在 Postern 中设置 VPN,IP 为 Windows 的 IP,端口为 BurpSuite 的代理端口(默认 8080)。

    image-20250811110427500

  2. 在 Postern 的 配置规则 中,设置动作为 通过代理连接,选择 BurpSuite 代理。

    image-20250811111359712

  3. 抓包完成后,若需停止抓包,将规则改为 直连

缺点

  • 部分 APP 会检测 VPN,导致抓包失败。

抓包限制

APP 可能采取以下措施限制抓包:

  1. 检测 WiFi 代理或 VPN。
  2. 检测设备是否为模拟器或是否已 Root。
  3. 使用 SSL Pinning(证书单向绑定),验证服务器证书是否可信。
  4. 使用 mTLS(证书双向绑定),服务器和客户端相互验证证书。

判断抓包限制

  • APP 断网或闪退通常表明存在抓包限制。

绕过抓包限制

单向认证绕过

单向认证:客户端(APP)验证服务器证书,确保通信安全,防止中间人攻击。

绕过方法:通过 Hook 修改 APP 运行时逻辑,禁用证书验证。

使用 Xposed / LSposed

工具

  • Magisk:Root 管理工具,可隐藏 Root 痕迹(防止银行类 APP 检测到 Root 后拒绝访问)。
  • LSposed:Xposed 框架的升级版,支持 Hook 模块以修改 APP 行为。
  • JustTrustMe:LSposed 模块,专门用于绕过 SSL Pinning。

Magisk 安装步骤

  1. 安装 Magisk Terminal Emulator

  2. 在终端中依次输入 mY1a1,将 Magisk 安装到 /system 目录。

    image-20250811135152871

  3. 强制重启模拟器,使用自定义 Magisk 覆盖安装,检查 Magisk 状态。

    image-20250811135434733

  4. 安装 Root Explorer,授予永久超级用户权限。

  5. 进入 /system/xbin/su 目录,重命名 su 文件。

    image-20250811135644491

  6. 再次强制重启,确认 Magisk 安装完成。

  7. 在 Magisk 设置中启用 Zygisk(将 Magisk 注入 Zygote 进程,Zygote 是所有 Android 进程的父进程)。

    image-20250811143514372

LSposed 安装步骤

  1. LSPosed-v1.8.4-6609-zygisk-release.zip 拖入模拟器。

  2. 在 Magisk 的 模块 中选择 从本地安装,找到并安装 LSposed 压缩包。

    image-20250811143929595

  3. 安装完成后强制重启模拟器。

  4. 安装 LSPosed Manager.apk

    image-20250811144111483

JustTrustMe 安装与使用

  1. 安装 JustTrustMe 模块,并在 LSposed 中启用。

  2. 在 JustTrustMe 中勾选目标 APP,结合代理即可抓包。

    image-20250811144253917

说明

  • JustTrustMe 可绕过 X509 SSL 类和 OkHttp 类的证书验证逻辑。

使用 Frida

Frida 是一款基于 Python + JavaScript 的 Hook 与调试框架,实现 app 逆向的强大工具。

Frida 客户端安装

# 安装 Frida 工具
pip install frida-tools
pip install frida
npm install frida

Frida 服务端安装

  1. Frida 17.2.15 下载 frida-server-17.2.15-android-x86_64.xz 并解压。

  2. 将 Frida 服务端推送到 Android 设备,并启动服务:

    adb push frida-server-17.2.15-android-x86_64 /data/local/tmp/frida-server
    adb root
    adb shell
    cd /data/local/tmp
    chmod 777 frida-server
    ./frida-server &
    

    image-20250811162216619

  3. 确认 Frida 服务启动(默认监听端口 27042)。

  4. 将 Android 的 27042 端口映射到 Windows:

    adb forward tcp:27042 tcp:27042
    

Frida 使用步骤

  1. 查看设备上安装的 APP:

    frida-ps -Uai
    

    image-20250811162708282

  2. 传输 BurpSuite 证书到设备:

    adb push burp.der /data/local/tmp/cert.crt
    
  3. 运行 Hook 脚本以绕过 SSL Pinning:

    frida -U -f [App包名] -l [Hook脚本路径]
    # 示例
    frida -U -f com.xingin.xhs -l D:\Frida\frida-android-repinning.js
    
  4. Frida 会自动启动目标 APP,并执行 Hook 脚本。

    image-20250811163538367

双向认证绕过

双向认证:双向认证要求服务器向 APP 证明身份(如传统 HTTPS),还要求 APP 向服务器提供合法证书以验证其身份,从而实现双向信任。

  • 服务器验证:App 通过预置的根证书验证服务器证书的有效性(如域名、有效期、CA 签名),防止伪冒服务器。
  • APP 验证:服务器要求 APP 提交客户端证书,验证其是否由受信任的 CA 签发,且包含合法身份标识(如设备 ID、用户 ID)。

领域:金融、电商、政务 app 可能会使用双向认证。

绕过方法:在存在双向验证的 APP 中,一般均预先配置了 APP 的客户端证书。如果可以通过逆向提取 APP 内置的 客户端证书及其私钥,即可伪造身份绕过双向认证。

参考https://mp.weixin.qq.com/s/0uItUS5P8gFQ1Cu5-jkCgQ

使用 eBPF

利用 Linux 内核抓包,但仅支持 Android 12 以上操作系统。

adb push ecapture /data/local/tmp/
adb shell chmod 777 /data/local/tmp/ecapture

说明:eBPF 抓包不支持流量转发、重放、修改,只能看。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇