APK安全测试实战:Burp Suite联动逍遥模拟器抓包与证书信任全攻略
1. 环境准备搭建Burp Suite与逍遥模拟器联动作战平台第一次尝试用Burp Suite抓取安卓应用流量时我在证书安装环节卡了整整两天。后来发现问题出在模拟器系统版本和证书格式的兼容性上。这次就把这些实战经验整理成保姆级教程帮你避开我踩过的那些坑。Burp Suite作为安全测试的瑞士军刀配合逍遥模拟器这个轻量化的安卓环境能完美复现移动端抓包场景。建议直接使用逍遥模拟器7.5.5版本官网可下载这个版本经过实测对证书安装最友好。Burp Suite推荐2023年之后的版本社区版就够用但记得提前配置好Java环境。安装完成后先别急着连线有个关键细节要注意确保你的电脑和模拟器在同一个局域网。我习惯用WiFi共享的方式把电脑变成热点让模拟器直接连接这个热点网络。这样比用桥接模式稳定得多具体操作是在网络设置里选择无线网络然后连接电脑热点的SSID。2. 代理配置让流量乖乖流经Burp Suite2.1 Burp Suite监听设置打开Burp Suite后直奔Proxy→Options这里有个隐藏技巧不要用默认的8080端口很多应用会检测这个端口改成9900这类冷门端口能避开大部分检测。我的配置组合是监听地址All interfaces端口9900勾选Support invisible proxying记得点击Import/export CA certificate导出证书后面会反复用到这个文件。导出时建议选择der格式虽然安卓系统需要cer格式但der格式转换起来更方便。2.2 模拟器代理配置逍遥模拟器的网络设置藏在系统设置的WLAN里长按当前连接的网络选择修改网络。重点来了代理选择手动主机名填电脑的IPcmd里ipconfig查端口填Burp Suite设置的9900别点保存先打开浏览器访问http://192.168.x.x:9900换成你的IP这时应该能看到Burp Suite的欢迎页面。如果报错八成是防火墙问题。我在Windows Defender里加了三条入站规则允许9900端口的TCP入站允许BurpSuite.exe所有网络活动允许模拟器进程的网络访问3. 证书攻防战从格式转换到系统级信任3.1 证书格式的魔法转换从Burp Suite导出的der证书就像加密的压缩包需要转换成安卓能识别的pem格式。这里有个坑网上教程都说要用OpenSSL其实Windows自带的certmgr.msc就能搞定双击der证书导入到受信任的根证书颁发机构右键证书→所有任务→导出这次选择Base64编码的X.509(.CER)转换后的证书通过模拟器的共享文件夹功能传进去。逍遥模拟器有个贴心设计在文件管理器里直接点击证书会触发安装流程但千万别急着点这时候安装会失败因为还没放到系统证书目录。3.2 系统级证书安装秘籍安卓7.0之后加强了证书限制必须把证书装到系统分区才能抓HTTPS流量。逍遥模拟器有个黑科技入口打开设置→安全→加密与凭据点击安装证书→CA证书选择之前传进来的cer文件关键步骤命名时加上.system后缀如burp.system这样操作后证书会被标记为系统证书绕过应用的非信任限制。如果还是抓不到包试试这个终极大招adb shell su -c mount -o rw,remount /system adb push cacert.cer /system/etc/security/cacerts/ adb shell su -c chmod 644 /system/etc/security/cacerts/cacert.cer4. 实战调试抓包过程中的疑难杂症4.1 顽固应用的对抗手段现在不少应用会检测代理环境我遇到过三种反抓包策略证书锁定SSL Pinning用Frida注入脚本绕过Java.perform(function(){ var Certificate Java.use(java.security.cert.Certificate); Certificate.verify.overrides true; });代理检测在AndroidManifest.xml里加android:usesCleartextTraffictrue双向认证需要反编译apk提取客户端证书4.2 流量分析的黄金技巧Burp Suite的Scanner功能虽好但面对移动端流量我更推荐手动测试拦截登录请求后右键→Send to Intruder在Positions里设置爆破点比如手机号参数Payloads里加载常用漏洞字典弱密码、SQL注入等重点观察响应中的Set-Cookie、Location等头部有个骚操作在Proxy→HTTP history里右键任意请求选择Find related→By parameter能快速定位所有含特定参数的请求对找越权漏洞特别有用。5. 高阶玩法自动化测试与漏洞挖掘5.1 批量测试的流水线搭建用PythonBurp API实现自动化扫描from burp import IBurpExtender class BurpExtender(IBurpExtender): def registerExtenderCallbacks(self, callbacks): self._callbacks callbacks self._helpers callbacks.getHelpers() callbacks.setExtensionName(Auto Scanner) # 自动扫描所有流量 callbacks.registerProxyListener(self) def processProxyMessage(self, messageIsRequest, message): if not messageIsRequest: response message.getMessageInfo().getResponse() analyzed self._helpers.analyzeResponse(response) if password in analyzed.getHeaders()[0]: print(发现敏感信息泄露)5.2 漏洞挖掘的六个关键点根据OWASP Mobile Top 10我总结的检查清单存储数据是否加密SharedPreferences文件日志是否泄露敏感信息Logcat调试组件暴露风险adb shell dumpsys package查exported属性加密算法强度搜Cipher.getInstance调用权限滥用检查uses-permission硬编码密钥strings.xml里搜password、key等有次在金融类APP里发现密钥硬编码直接用frida脚本调出密钥Java.perform(function(){ var SecretKey Java.use(com.example.SecretHolder); SecretKey.getKey.implementation function(){ console.log(密钥泄露: this.getKey()); return this.getKey(); } });6. 安全加固建议开发阶段就要防范这类测试推荐几个防护方案网络层使用证书绑定双向认证代码层关键逻辑用NDK实现运行时检测调试状态android.os.Debug.isDebuggerConnected()混淆策略不仅用ProGuard还要上DexGuard最近测试某电商APP时发现他们用Native层校验证书指纹常规方法很难绕过。最后是通过IDA Pro动态调试so文件找到校验函数并patch才成功抓包。这种攻防对抗就像下棋永远有更高级的玩法等着我们去探索。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419105.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!