APP攻防-Xposed&Frida&Hook&证书校验&反代理&代理转发
目录
APP攻防-Xposed&Frida&Hook&证书校验&反代理&代理转发
#知识点:
1、APP防代理绕过-应用&转发
2、APP证书校验类型-单向&双向
3、APP证书校验绕过-Frida&XP框架等
#章节点:
1、信息收集-应用&资产提取&权限等
2、漏洞发现-反编译&脱壳&代码审计
3、安全评估-组件&敏感密匙&恶意分析
#核心点:
0、内在点-资产提取&版本&信息等
1、抓包点-反代理&反证书&协议等
2、逆向点-反编译&脱壳&重打包等
3、安全点-资产&接口&漏洞&审计等
首先说一下开了代理之后app不能正常运行的两点原因,第一个是反代理机制,第二个是证书问题。
这里用牛牛棋牌来做演示,正常情况下,软件是可以正常运行的。但是当我们把开启代理之后就会发现网络连接失败,这里要么是检测反代理要么是检测证书。
反代理就是说检测到你模拟器开启了代理服务器,就是wifi那里设置的代理,如果是反代理的话,那么这里就会导致app运行不了。一般检测反代理都是检测下面的wifi这里的设置。
而如果是证书问题的话,是那三种情况,我们之前在学burp、茶杯、fiddler的时候安装证书是安装的工具的证书,就比如用burp抓包抓https的时候,需要安装burp的证书。而不抓包的时候服务端校验数据都是校验app的证书,但是你现在变成了burp的证书,所以就不能访问了。
那么我们如何知道他是因为反代理还是因为证书呢,首先由两种方法看它是不是检测反代理。
反代理绕过:
APP抓包问题总结及常见绕过方法 - 火线 Zone-安全攻防社区
1、自身的抓包应用
2、Proxifier转发使用
自身的抓包应用
第一个就是利用app软件去抓包,这是模拟器里面的应用,我们没有在wifi那里开代理,如果这里能抓到包并且app正常运行了那就说明可能是检测反代理,如果不正常,那可能就不是检测的代理。这里app还是不正常。
Proxifier转发使用
第二个方法就是利用转发,利用工具proxifier实现数据的转发。正常情况下数据是到代理服务器,也就是我们的burp,然后到服务端。当进行转发的时候就不需要设置代理了,数据从app出来直接就来到了proxifier然后到burp再到服务端,这里注意一点,数据从app出来的时候跟正常出来一样,那么出来之后数据包去哪也就不归模拟器管了,所以说是逃离了模拟器。相当于再网络出口设代理。
进入到软件之后先添加IP端口和协议
点击确定之后需要添加代理规则
这里直接打开进程,找到关于夜神模拟器的两个进程所在的文件位置然后添加进去即可
注意:刚才我们设置的127.0.0.1的8888端口就代表等会要把数据给burp。那么把谁的数据给burp呢,就是这里设置的代理规则的两个进程。
这里我们点击确定之后,模拟器的数据就会通过proxifier发送给burp。
这里我们打开浏览器就会发现数据通过proxifier转发给了burp,但是此时我的模拟器并没有设置代理。
做完这些操作之后我们再次打开牛牛棋牌。还是不可以运行,但是这里我抓到了一个包,小迪是三个包一闪而过,那么这里可能就是它先检测代理后检测证书的双重验证。而我抓到的这个数据包就是因为校验证书的数据包,因为证书不正确,所以才没有运行成功。至于为什么,可以看下面的分析
首先刚开始我们只开了个代理,这个时候burp是一个包也没有抓到,那么它就应该是先检测的反代理,然后我这里开了代理所以一个包也没发出去。接着我们利用proxifier转发数据,这个时候是没有开启代理的。但出现了数据包,那么这个数据包应该就是检测证书不正确然后导致app没有正常打开。因为是burp把数据包发到服务端的,检测时burp的证书,然后证书不对,所以app就没能正常打开。
那么解决证书一共有三种方法:
情况1,客户端不存在证书校验,服务器也不存在证书校验。
情况2,客户端存在校验服务端证书,服务器也不存在证书校验,单项校验。
情况3、客户端存在证书校验,服务器也存在证书校验,双向校验。
1、Frida&r0capture底层
2、Xposed&JustTrust&HOOK
3、反编译逆向提取证书重编打包
第一种是我们上节课讲过的,基本对所有app通杀,第二种是利用xp框架的HOOK让证书失效,使用于百分之八九十的app。这里我们讲一下第二种
Xposed&JustTrust&HOOK
首先在游戏中心下载xp框架
打开之后点击安装,然后完成后就会重启。
重启之后把两个HOOK模块拖进去,这两个HOOK模块已经再资源库了,拖进去之后点击模块,把对勾勾选上再重启之后。此时再开代理打开牛牛棋牌也是可以正常的运行了,并且能抓到包。(但是这里是直接就设置的代理,也没有检测代理呀,小迪也没有说这个HOOK能不能把反代理检测也给屏蔽掉。所以这个牛牛棋牌也有可能是只对证书进行了检测,这是我的个人猜测。)
但是如果用的上节课讲的frida加脚本的话是对于app通杀的,而这个xp框架是对于百分之八十的app是可以的。这里也是可以用frida加脚本的。
但注意用frida的时候需要将xp框架和这两个HOOK模块卸载了,不然用frida会抓不到包,并且软件也打不开。还有一点就是xp框架只能绕过单向证书的校验,双向校验的就用frida
反编译逆向提取证书重编打包
证书绕过的第三种方法就是反编译逆向提取证书重编打包,这个需要将apk反编译得到源代码,然后找到验证证书的地方将代码删除之后重新打包。这个要有一定的代码功底,并且apk还可能有壳脱不了。这个方法不太建议。
总结:
当我们进行app抓包的时候能抓包那最好,如果不能抓,先利用自身的抓包应用和转发的功能看看是不是检测的反代理,如果说,这时候能抓包了,那就说明是检测的反代理。如果说还是不可以的话,那应该是检测的证书,可以先用xp框架看看是不是单向校验,如果说还不行,那就利用frida,此时需要把模拟器的xp框架和HOOK模块删除。这个frida基本对所有app通杀。所以建议当抓不到包的时候可以直接用frida。
还有一种情况就是有的app你把反代理和证书都绕过了,用burp还是不能抓,那有可能就是因为这个app不是走的http协议或则https。他可能走的tcp等其他协议。这个时候我们就可以用wrieshark去抓,或则说直接用frida配合脚本。
案例说明:
这里我用探探进行了测试就不放截图了。首先直接访问这个app是正常的,但是当我们开启代理之后就不能正常显示了,于是我们先利用模拟器自身的抓包工具packet capture。把wifi那里设置的代理关闭,这时还是不能正常抓包,那有可能是反代理。接着用转发工具试一下,还是提示连接不了网络。那这里很有可能就是证书检测(也不排除证书代理双检测)
接着我们这里用xp框架的HOOK模块来把证书检测给频闭掉。这个时候再抓包,现象是可以抓到一些,而之前是抓不到的,那探探就可能是个双向证书校验检测了。这里抓到的包是从模拟器发出来了,因为模拟器的证书检测已经被HOOK频闭了。所以才发出来包了,接着到了服务器证书不对所以后续就没有包产生了。把xp框架卸载,利用frida成功抓到包。
反虚拟机设置
那如果说我们连app都打不开的情况下,那就是该app有反虚拟机的设置,这里也是利用mobsf可以看到这里有反模拟器检测。
这个时候我们可以换模拟器来打开,比如小迪演示的“0403牛牛棋牌”这个软件在用夜神模拟器打开的时候能正常打开,但是逍遥模拟器就不能正常打开,原因就是它有反虚拟机的设置。而夜神和逍遥的内核不同,可能夜神在这方面做的比较好更像真实机,所以能够打开app。但如果说换了模拟器还是打不开的话,可以利用xp框架去打开。xp框架也是可以干这个事的。
对于这个app这一部分呢我们因为是搞web渗透的,主要还是想要把app转到web,所以第一方面比较重要,对于第二部分也会讲,但不深。第二部分就是专门搞app渗透的学的,如果感兴趣可以自己私下学习