APP防御机制绕过手法

admin 2022年4月10日00:28:11评论588 views字数 3878阅读12分55秒阅读模式

大家也知道有攻自然就会有防御既然抓包可以找漏洞,测数据,那么自然而然也就会有防御手段

下面我们来看看app常见的抓包防御手段:

①证书校验:其实就是HTTPS,我们用burp的证书就可以绕过了

②代理屏蔽:使用okhttp框架,里面可以设置无代理模式,不走系统代理

③单向认证,证书绑定(SSL pinning单边验证)

④双向认证:安卓并不常见(很少遇到会有这种情况的,因为用户体验差)

有一些小白看到burp无法抓包,就说用了双向认证或者其他协议(非https,非http的数据包),其实这个并不完全正确。双向认证会影响服务器的性能,其实在安卓当中并不常见,代理屏蔽是现在最常见的情况。注意:安卓7.0以上证书会加不了(不信任用户目录证书,想办法移动到系统目录,或者降低版本。所以尽量不要使用安卓7.0以上的版本)

下面我们就来说一说防抓包的方法原理+如何进行绕过呢?

①证书校验绕过的原理

其实就是https,我们安装抓包软件的证书就可以绕过了。1:客户端发送https请求2:burp进行拦截,将收到的数据,又发送给服务器3:服务收到数据后,进行处理,将数据的数据又转发给burp4:burp接收到服务器过来的数据又,又会发给客户端

简单来说就是 https的核心在于CA证书这个证书是为了保证数据传输之间的加密通信当服务端接收到的信息后,他会把这个证书给这个Burp因为对于服务端来说,跟他沟通的是burp,而不是客户端这里有一个重要的一点就是:客户端始终和burp在沟通而服务端始终也和burp沟通有点类似于房产中介的感觉 对吧 哈哈哈

APP防御机制绕过手法

这里为了防止被窃听啊,所以他就采取了防御措施。如果你没有安装CA证书的话,burp就无法进行沟通的你可以把CA证书理解为一个密码本在进行沟通的时候,双方采用加密通信,这样他们就可以防止被别人窃听了。大概的流程,如下图所示:

首先我们来说正常的逻辑顺序①客户端向服务端发送https请求②服务端收到请求后,会向客户端返回一个CA证书③客户端收到CA证书后,会向服务端发送一串密钥④然后他们就会通过这一串密钥进行加密

APP防御机制绕过手法

那么burp是如何进行抓取https的数据包的呢?他这里做了一个比较骚的操作burp把服务端发送给客户端的CA证书给拦截下来了然后将拦截下的证书里面的公钥,加载了自己的证书然后发给了客户端。

注意:这里涉及到了2本证书喔客户端与burp在进行沟通的时候,是采用的burp自己的证书burp与服务端在进行沟通的时候,是采用的服务端给的证书

如果你不安装CA证书的话,客户端与服务端在进行加密通信的时候,burp与客户端在进行通信的时候会发送密钥通信,burp他是看不懂的,所以才会抓不了https的数据包。最后就是绕过方法就是,安装burp的CA证书,要如何进行安装呢?下面 我就简单的说一下吧!以免有一些师傅不懂首先,我们打开burp在浏览器上输入127.0.0.1:8080然后他就会出现CA Certificate

APP防御机制绕过手法

然后我们点击CA Certificate,就可以了

APP防御机制绕过手法

最后一步就是导入证书到模拟器即可以上就是绕过 证书校验的防御机制方法

②代理屏蔽

TCP协议在操作系统中完全被定死了,但是http协议都是各个开发者自己实现的,很多功能实现了多少,支持哪些细节都是自己决定的(http协议的细节可以自定义)

安卓上最有名的okhttp就是一个http客户端的实现,它可以开启on_proxy选项来不走系统代理,而且还能针对接口地址不同而使用不一样的设置。

那么如何绕过代理屏蔽这种防御机制呢?

绕过的方法就是:不要用系统代理,而使用VPN代理(就是通过特定的工具,将流量进行转移,我们不使用系统代理就可以了,就和翻墙差不多)

工具推荐使用:Postern-3.1.2.apk和charles-proxy-4.6.2-win64直接将这个工具拖到模拟器就可以了进行安装了。通过这个软件,他会在服务器上开vpn连接,他不会走系统代理,他通过这个软件生成一个vpn的连接,而因为是vpn的连接所有他所有的信息,他会通过代理的导入到其他的地方

总结:设置代理的时候,用架设VPN的方法把数据转发出来,不要利用系统自带的代理方式,工具推荐使用Postem。因为有的时候网站也会设置使用非http/https协议。socke数据包是burp抓不到的,但是我们可以利用charles

APP防御机制绕过手法

charles-proxy-4.6.2-win64安装也很简单直接双击,安装即可这个工具的使用方式,我这里 不做过多的介绍我这里,只教如何简单的使用来抓取数据

APP防御机制绕过手法

APP防御机制绕过手法


这里的8888是指的8888端口监听http和https协议(可以抓到HTTP/HTTPS的数据包)

APP防御机制绕过手法

下面的8889是指8889端口监听Socks协议了(可以抓到Socks协议的数据包)

APP防御机制绕过手法

这样设置的话,我们就可以抓到http,https,Socks等协议的数据包了但是呢!这个工具,大部分人并没有用过,可能会不熟悉我们可以利用这个工具抓到的流量转移到burp上,burp大家肯定熟悉吧!那怎么做呢?首先选中 Proxy然后点击External Proxy Settings

这里的意思是说:将http和https的流量转到本地127.0.0.1:8080端口上

APP防御机制绕过手法

也就是我们burp上面的那个端口

APP防御机制绕过手法

下面我们再进行总结一下流量的经过的行程①模拟器挂上代理(Postern)------转给---->charles(判断是否是http/https的流量)----->burp

以上操作就喊完成了,下面就是模拟器上面的一些修改了我们在模拟器上打开Postern

1.添加代理服务器

APP防御机制绕过手法

2.进行设置

APP防御机制绕过手法

下面这张图意思是设置走http协议的流量

APP防御机制绕过手法

下面这张图的意思是指 流量走socks协议的

APP防御机制绕过手法

设置完后,我们还需要设置规则

APP防御机制绕过手法

规则1(走http)

APP防御机制绕过手法

规则2(走socks)

APP防御机制绕过手法

补充一点:这个不要直接点X,这样是关不了的,我们需要在左上角点击他,然后找到打开VPN

APP防御机制绕过手法

以上这样设置就算完成啦下面我们来看效果

APP防御机制绕过手法

但是你会发现,这边还是有一些报错的,这是为啥呢?报错的原理是因为,这个里面只有burp的证书,他没有这个软件的证书,所以你可以给他安装一个证书。那么要如何进行安装呢?首先点击Help--->SSL Proxying----->install Charles Root Certifcate

APP防御机制绕过手法

然后你别点击安装证书啊,点击详细信息,复制到文件

APP防御机制绕过手法

然后将这个证书,安装到模拟器里面

APP防御机制绕过手法

这个时候,我们再来看效果,你会发现,百分之90以上的数据,都可以抓到了

APP防御机制绕过手法

但是 你会发现 还是有一小部分的数据还是抓不到Why???问题不大,好吧我们打开软件,点击Proxy--->SSL Proxying Setting如果你发现有一些数据包抓不到,你就可以在这个里面添加规则即可

APP防御机制绕过手法

举一个例子:拦截所有经过5287端口的数据

APP防御机制绕过手法

以上就是针对 代理屏蔽的绕过方法

③单向认证

单向认证就是客户端保存着服务端的证书并信任该证书简单理解:证书绑定的核心,就是我自己app有一个专门校验的证书,app收到服务端给CA证书之后,先校验数字签名(最简单的就是校验颁发者,他只相信固定颁发者)

APP防御机制绕过手法

那么如何绕过呢?方法一:把app里面的证书抽出来,app和抓包软件的通信用那个证书。方法二:删除掉app里面的证书,让他能够使用系统证书①重打包:解开原本app,然后找到那段代码,然后重新打包成app,然后进行安装②HOOK:在运行的代码上,下断点,然后执行到那里的时候,你可以决定他执行什么东西

这两种方法,对于做web渗透的人来说,可能是有难度的,而且,我们并不是研究安卓渗透测试的,所以我这里就取巧了。

有一个较为简单的方法来绕过单向认证,那就是XP框架+JustTrustMe更多--->共享文件--->打开电脑文件--->然后将xposed移过去

APP防御机制绕过手法

记住路径:/storage/sdcard0/Pictures/xposed

然后将这个文件移动到/system目录,通过终端模拟来移动命令如下:

su  //root权限
ls
mount -o remount -w /system
cp -r /storage/sdcard0/Pictures/xposed /system
cd system/xposed
sh script.sh
reboot

APP防御机制绕过手法

APP防御机制绕过手法

最后一步就是将JustTrustMe移到模拟器里面

APP防御机制绕过手法

以上操作,就可以绕过单向认证了。

④双向认证

双向认证:客户端和服务器端都需要验证对方的身份 安卓apk抓不到数据包,是因为双向认证的可能性并不大双向认证,他的流程:1、客户端找服务端发起请求2、服务端给了客户端一个包含服务端公钥的证书3、客户端校验证书合法性4、然后给一个包含客户端公钥的证书5、用根证书解密客户端证书,拿到客户端公钥6、客户端发送自己支持的加密方式给服务端7、服务端选择加密方式,然后通过客户端公钥加密,给客户端8、客户端选一个随机数R,然后用服务器公钥加密传递(使用他们约定的加密方式)9、使用服务器私钥解开,拿到密钥R‘10、开始通信

APP防御机制绕过手法

绕过手法:先绕单向认证,然后解包APK捞证书,然后反编译apk找证书库的密码,然后伪造服务端信任证书 因为涉及到逆向方面的东西,这个我可能比较弱势,后面等我有时间学一下看看。再来补充,双向认证绕过的具体方法和细节双向认证参考:https://blog.csdn.net/qq_38316655/article/details/104176882 q

以上就是APP渗透的一些简单介绍吧!希望能够帮助到大家

原文始发于微信公众号(白虎实验室):APP防御机制绕过手法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月10日00:28:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   APP防御机制绕过手法https://cn-sec.com/archives/779883.html

发表评论

匿名网友 填写信息