移动安全与API安全
5.1 Android逆向工程
APK反编译与脱壳
-
工具链实战:
-
Jadx:反编译APK获取Java/Smali代码
jadx-gui app.apk # 图形化界面分析 jadx --deobf app.apk -d output # 反混淆输出
- Frida:动态Hook关键函数
// Hook AES解密函数 Java.perform(() => { let CryptoClass = Java.use("com.example.CryptoUtils"); CryptoClass.decrypt.implementation = function (data) { console.log("Decrypting: " + data); return this.decrypt(data); }; });
- Xposed:修改系统级行为
// 绕过SSL Pinning public class BypassSSL implements IXposedHookLoadPackage { public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) { XposedHelpers.findAndHookMethod("android.app.ApplicationPackageManager", lpparam.classLoader, "checkSignatures", String.class, String.class, new XC_MethodHook() { protected void beforeHookedMethod(MethodHookParam param) { param.setResult(0); // 强制返回签名一致 } }); } }
漏洞类型与利用
-
组件暴露:
-
AndroidManifest.xml
中exported="true
的Activity/Service被恶意调用 -
数据存储风险:
-
SharedPreferences
明文存储密钥 -
SQLite数据库未加密(
/data/data/pkg/databases
) -
动态加载代码:
-
从服务器下载DEX文件执行(可植入恶意模块)
防御方案
-
代码混淆:ProGuard + DexGuard
-
运行时保护:检测Root/Xposed环境(
Build.TAGS.contains("test-keys")
) -
加密存储:使用Android Keystore管理密钥
实践任务
-
使用Jadx反编译APK,定位硬编码的API密钥
-
通过Frida Hook SSL证书校验函数,捕获加密流量
5.2 iOS越狱与动态调试
越狱环境搭建
-
Checkra1n越狱:
-
支持iPhone 5s至iPhone X(基于BootROM漏洞)
-
安装Cydia包管理器获取root权限
-
动态调试工具:
-
LLDB:附加进程调试
lldb -n "TargetApp" (lldb) image list -o -f # 获取ASLR偏移 (lldb) b NSLog # 断点系统日志函数
- Cycript:运行时修改Objective-C对象
cy# var rootVC = UIApp.keyWindow.rootViewController cy# rootVC.title = "Hacked" # 实时修改界面标题
Swift逆向与防护
-
Hopper分析:
-
反编译Swift二进制,识别
@objc
暴露的方法 -
还原
struct
内存布局(IDA Pro + Hex-Rays) -
反调试检测:
func isDebuggerAttached() -> Bool { var info = kinfo_proc() var mib: [Int32] = [CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()] var size = MemoryLayout<kinfo_proc>.stride sysctl(&mib, 4, &info, &size, nil, 0) return (info.kp_proc.p_flag & P_TRACED) != 0 }
实践任务
-
使用Frida绕过iOS应用的越狱检测逻辑
-
通过Cycript修改应用内购价格参数
5.3 API接口渗透
API漏洞挖掘模型
-
未授权访问:
-
路径遍历:
GET /api/v1/users/123 → GET /api/v1/users
-
JWT未校验签名:修改
{"role":"admin"}
伪造令牌 -
参数污染:
-
JSON注入:
{"price": 100, "discount": {"$gt":0}}
-
批量操作:
POST /api/delete?id=*
删除所有数据 -
速率限制绕过:
-
修改
X-Forwarded-For
头伪造IP轮询
自动化测试工具
- Postman高级测试:
// 预请求脚本伪造签名 const crypto = require('crypto'); const secret = 'key123'; const timestamp = Date.now(); const sign = crypto.createHmac('sha256', secret).update(timestamp.toString()).digest('hex'); pm.environment.set('signature', sign);
- APIFuzzer:
python3 apifuzzer.py -u http://api.com/user -m POST -j '{"id":"FUZZ"}' -w fuzz.txt
防御方案
-
身份验证:OAuth2.0 + JWT签名验证
-
输入校验:强类型Schema(如JSON Schema)
-
请求签名:HMAC + 时间戳防重放
实践任务
-
使用Burp Suite测试API接口的IDOR漏洞(越权访问他人订单)
-
编写Python脚本爆破JWT弱密钥(
secret = "changeme"
)
技术整合与攻防案例
移动端到API攻击链
-
逆向获取API端点:从APK的
strings.xml
提取https://api.example.com/v3
-
分析加密算法:Hook网络库(OkHttp/Retrofit)获取加密前的原始请求
-
构造恶意请求:利用未授权API批量删除用户数据
防御体系设计
-
移动端:
-
代码混淆 + 反调试
-
敏感逻辑移至Native层(C/C++)
-
API层:
-
启用WAF(如Cloudflare API Shield)
-
日志审计异常访问模式(如高频批量请求)
学习建议
- 靶场资源:
-
OWASP MSTG (Mobile Security Testing Guide) 配套实验室
-
APIsec University 漏洞环境
-
CTF实战:参与HackTheBox中Mobile/API类靶机(如“SecretAPI”)
-
合规要求:遵循GDPR/PCI DSS对API数据流动的加密规范
通过本部分学习,将掌握移动应用逆向工程、API接口漏洞挖掘与防护的核心技能,覆盖从客户端到服务端的全链路攻防能力。