引言

本文主要围绕MacOS系统架构讲解,从环境搭建到实现APP逆向(即对应用程序进行反向工程分析),也包含了在过程中可能遇到的坑点,希望能帮助到此刻看到这篇文章的你,话不多说,开干!

APP渗透测试环境搭建

1.1 adb安装

ADB(Android Debug Bridge)是一个用于与Android设备通信的命令行工具,在APP测试中必不可少。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
通过 Homebrew 安装 adb
步骤 1:安装 Homebrew
如果尚未安装 Homebrew(MacOS下的包管理器),可以运行以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

检查 Homebrew 是否安装成功:
brew --version

步骤 2:安装 adb
使用 Homebrew 安装 adb:
brew install android-platform-tools

步骤 3:验证 adb 安装
安装完成后,运行以下命令验证 adb 是否成功安装:
adb version
输出类似以下内容:
Android Debug Bridge version 1.x.x
如果看到类似输出,表示 adb 已经成功安装。

步骤 4:测试 adb 是否正常工作
查看模拟器设备调试端口,并用adb连接设备:
adb connect 192.168.10.13:5555 # 连接设备,并获取root权限,192.168.10.13为设备IP,5555为端口号
运行以下命令,查看设备是否被识别:
adb devices
如果设备已连接并正常工作,会显示类似以下输出:
List of devices attached
xxxxxxxx device

1.2 frida安装

Frida是一个动态插桩工具,能够在运行时注入代码到目标进程,用于分析APP的运行行为。

1
2
3
4
# 检查Android设备是否已连接
pip install frida
pip install frida-tools
pip install Pyro4

1.3 frida-server安装

1
adb shell getprop ro.product.cpu.abi # 查看设备CPU架构类型

alt text
根据CPU架构下载对应版本frida-server,下载地址:https://github.com/frida/frida/releases 【记得往下翻,就能找到】
alt text

1
adb connect 192.168.10.13:5555 && adb root # 连接设备,并获取root权限,192.168.10.13为设备IP,5555为端口号,下面俩端口任意一个都行

alt text

1
2
3
4
5
6
adb push frida-server /data/local/tmp/ # 推送frida-server到设备
adb shell # 进入设备shell
cd /data/local/tmp
chmod 755 frida-server
./frida-server &
![alt text](image-10.png)

1.4 apktool安装

apktool是一款Android APK反编译工具,能够将APK文件解包为可读的资源文件和Smali代码。

1
2
3
4
# 安装apktool(MacOS) windows安装方式略有不同,请自行查找
brew install apktool
# 解包APK文件
apktool d <apk文件路径> -o <输出目录>

解包后的APK文件将生成一个输出目录,其中包含了资源文件、配置文件和代码文件。您可以查看AndroidManifest.xml文件,了解应用程序的基本信息和结构。

1.5 dex2jar安装

dex2jar是一个将Android的dex文件转换为Java jar文件的工具,方便使用Java反编译工具查看代码。

1
2
3
4
5
6
# 安装dex2jar
brew install dex2jar
# 反编译DEX文件
dex2jar <解包后的目录>/classes.dex
# 使用Jadx打开JAR文件
jadx <反编译后的JAR文件>

在JD-GUI中,您可以查看和修改Java代码。修改完成后,可使用apktool重新打包APK文件。

1
2
# 重新打包APK文件
apktool b <解包后的目录> -o <新apk文件路径>

到这里,其实常规的APP逆向工具都已经安装好了,接下来就是如何使用这些工具进行逆向工作了。(Burpsuite、Yakit等抓包工具自行准备,本文着重用Burpsuite+MuMu模拟器讲解)

MacOs下Burpsuite+MUMU模拟器下APP抓包

2.1 环境准备

  • Burpsuite安全工具(一款强大的Web安全测试工具,可拦截和分析HTTP/HTTPS流量)
  • MUMU模拟器(国内知名的Android模拟器)
  • openssl(一个强大的加密工具库,mac自带,无需安装)

2.2 抓包流程

  1. 打开Burpsuite,选择Proxy->Options,配置代理监听端口(例如8080)
    alt text

  2. 导出Burpsuite的CA证书(Certificate Authority,用于HTTPS流量解密)
    alt text

  3. 使用openssl将CA证书转换为PEM格式(一种常见的证书格式)

1
openssl x509 -inform der -in cacert.der -out burp.pem

alt text

  1. 获取pem证书hash(用于Android系统识别证书)
1
openssl x509 -subject_hash_old -in burp.pem

alt text
手动将新建的burp.pem重命名为9a5ba575.0,别忘了后面的.0

  1. 导入证书到模拟器
1
2
3
4
5
6
7
8
9
adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached

adb connect 127.0.0.1:5555 #调试端口根据实际情况设定
adb root
adb push 9a5ba575.0 /system/etc/security/cacerts/
9a5ba575.0: 1 file pushed, 0 skipped. 0.0 MB/s (1348 bytes in 0.047s)

注:一定要将证书导入/system/etc/security/cacerts/ 目录下

  1. 设置模拟器root权限配置
    alt text

  2. 模拟器设置代理,指向burpsuite的IP和端口

设置->网络和互联网->互联网,就会到如下界面:
alt text
点开右上角的铅笔,选择代理设置
alt text
设置代理,ip和端口需要与你burpsuite配置的保持一致即可
alt text
alt text

如果上述配置正确,在模拟器中打开任意网页,Burpsuite应该能够捕获到请求,如下:
alt text

至此,模拟器抓包配置完成,接下来就可以在Burpsuite中捕获APP的请求了

初识APP逆向

什么是APP逆向?在实际渗透测试中,APP逆向通常指的是对Android或iOS应用程序进行逆向工程分析的过程。这个过程包括但不限于:

  1. 获取APP的apk或ipa文件(分别是Android和iOS应用的安装包)
  2. 使用工具查看APP是否加壳(壳是一种保护机制,防止应用被轻易反编译)
  3. 进行脱壳或解包(移除保护层,获取原始代码)
  4. 分析APP的代码逻辑(理解应用的功能实现方式)
  5. 分析APP的网络请求,判断是否使用加密
  6. 未加密情况下可直接阅读代码,通过黑白盒测试挖掘漏洞;加密则需要通过逆向手段破解加密算法

基于上述步骤,接下来将以一个简单的APP为例进行演示。