APP抓包问题总结及常见绕过方法

  • A+
所属分类:移动安全

前言

在前天的沙龙上,师傅们积极探讨,期间提出了一些关于app抓包的相关问题。在此小小的总结一波有关的分析以及解决办法。


01

检测代理


首先是当设置手机代理后,APP无法获取网络数据。会出现无法连接网络的情况出现。这就说明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);}


此时可以利用postern等工具,进行全局的流量转发,跳过代理检测。另外的方法就是反编译app,进行hook或者是直接修改smali代码重打包。关于修改smali代码这个也很适用于Android7以上,系统不再信任用户级的证书,只信任系统级的证书。换一条路,不改证书,改app也是可以达到这个效果。


02

No Proxy


其次就是通信协议代码中使用了proxy(Proxy.NO_PROXY),即使是设置了代理也是会被绕过的。此时是网络可以正常使用,但是就是抓不到包。这时候可能就是这个原因了。


public void run() {Looper.prepare();OkHttpClient okHttpClient = new OkHttpClient.Builder().proxy(Proxy.NO_PROXY). //使用此参数,可绕过系统代理直接发包build();Request request = new Request.Builder().url("http://www.baidu.com").build();Response response = null;try {response = okHttpClient.newCall(request).execute();Toast.makeText(this, Objects.requireNonNull(response.body()).string(), Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();}Looper.loop();}


APP抓包问题总结及常见绕过方法


此时也是可以使用全局系统代理工具,如HttpCanary等工具进行绕过,或者是直接hook该方法。


03

SSL Pinning证书锁定


抓包时,无法连接网络并且也接收不到任何数据


将APP代码内置仅接受指定域名的证书,而不接受操作系统或者浏览器内置的CA根证书对应的任何证书。通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此移动端APP与服务端(例如API网关)之间的通信可以保证绝对的安全。


这种方法有多种实现,比如说开发者将SSL证书的某些字节码硬编码在APP中。当应用程序与服务器通信时,它将检查证书中是否存在相同的字节码。如果存在,则应用程序将请求发送到服务器。如果字节码不匹配,它将抛出SSL证书错误。此技术可防止攻击者使用自己的自签名证书。


这个时候就需要往抓包工具中导入app的证书, 通常在assets文件夹中,.p12 .pem .cer。然后再hook。不过此时要对抗混淆。


搬运之前的文章https://www.52pojie.cn/thread-1405170-1-1.html


APP抓包问题总结及常见绕过方法


APP抓包问题总结及常见绕过方法


APP抓包问题总结及常见绕过方法


总结

其次最强工具目前就是肉丝师傅的r0capture。


APP抓包问题总结及常见绕过方法


可以通杀任何抓包问题。让天底下没有抓不到的包。在之前的文章中,也提供了一份frida的justTrustme的脚本,可以hook常见的通信协议的代理检测。大家可以用一下测试一下。


最后,求赞求赞求赞! 


APP抓包问题总结及常见绕过方法

【火线短视频精选】


【周度激励】2021.8.23 ~ 2021.8.29公告


APP抓包问题总结及常见绕过方法



【相关精选文章】


记手工SQL数字报错型注入


这是一个SQL注入利用 in 进行waf绕过的图文实例


【招人专区】


APP抓包问题总结及常见绕过方法

APP抓包问题总结及常见绕过方法

本文始发于微信公众号(火线Zone):APP抓包问题总结及常见绕过方法

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: