Android抓包攻防技术
字数 1333 2025-08-22 12:22:36
Android抓包攻防技术详解
一、代理检测与绕过
1. 代理检测原理
APP在发起网络请求前会检测系统是否设置了代理,如果发现代理则可能不发起请求。以下是典型的代理检测代码:
public static boolean isWifiProxy(Context context) {
final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
String proxyAddress;
int proxyPort;
if (IS_ICS_OR_LATER) {
proxyAddress = System.getProperty("http.proxyHost"); // 获取代理主机
String portStr = System.getProperty("http.proxyPort"); // 获取代理端口
proxyPort = Integer.parseInt((portStr != null ? portStr : "-1"));
} else {
proxyAddress = android.net.Proxy.getHost(context);
proxyPort = android.net.Proxy.getPort(context);
}
Log.i("代理信息", "proxyAddress:" + proxyAddress + "prot:" + proxyPort);
return (!TextUtils.isEmpty(proxyAddress)) && (proxyPort != -1);
}
2. 特征表现
- 设置手机代理后,APP无法获取网络数据
3. 绕过方法
- 系统底层流量转发:使用iptables强制转发流量(如ProxyDroid的全局模式)
- 代码修改:反编译APP,在smali代码中修改检测代理的逻辑
4. 参考资源
二、No Proxy绕过系统代理
1. 实现原理
APP使用NO_PROXY参数发起网络请求,直接绕过系统代理设置:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.proxy(Proxy.NO_PROXY) // 使用此参数可绕过系统代理
.build();
2. 特征表现
- 设置代理后APP能正常获取数据,但抓包工具无法捕获数据包
3. 绕过方法
- 系统底层流量转发:使用iptables强制转发(ProxyDroid全局模式)
- VPN形式代理:使用Drony等工具(手机状态栏会显示VPN图标)
4. 参考资源
三、SSL Pinning证书锁定
1. 实现原理
开发者将SSL证书特征硬编码在APP中,通信时进行比对验证:
- 证书特征码比对:检查证书中特定字节码是否匹配
- 预埋证书验证:APP内置服务器证书进行验证
2. 特征表现
- 挂代理后无法抓包且APP无法获取网络数据
3. 绕过方法
- 逆向提取证书:
- 证书通常位于
/assets目录 - 反编译后搜索
.p12、.pem、.cer、ssl等关键词
- 证书通常位于
- Xposed模块:使用JustTrustMe模块
- Frida Hook:手动编写脚本hook证书校验代码
4. 对抗混淆
开发者可能混淆证书校验代码,此时需要:
- 反编译分析代码
- 定位证书校验位置
- 编写定制化hook代码
5. 参考资源
四、双向认证
1. 实现原理
相比SSL Pinning,服务器也会验证客户端证书:
- 客户端预埋服务器证书
- 服务器验证客户端证书
2. 特征表现
- 绕过SSL Pinning后仍无法抓包
- APP无法获取网络数据
3. 绕过方法
- 逆向APP提取客户端证书
- 将证书挂载到抓包代理软件
4. 参考资源
五、综合防御策略
1. 防御层级
- 代理检测:防止普通代理设置
- No Proxy:绕过系统代理设置
- SSL Pinning:防止中间人攻击
- 双向认证:增强服务器对客户端的验证
2. 攻击者应对策略
- 系统级流量控制(iptables/VPN)
- 逆向工程与代码修改
- 运行时Hook(Xposed/Frida)
- 证书提取与重放
六、工具推荐
-
代理检测绕过:
- ProxyDroid(全局模式)
- Drony(VPN形式)
-
SSL Pinning绕过:
- JustTrustMe(Xposed模块)
- Frida(动态Hook)
- Objection(基于Frida的自动化工具)
-
逆向分析:
- Jadx/Ghidra(反编译)
- Apktool(APK拆包)
- Frida-server(动态分析)