APP攻防--反模拟器&反代理&反证书&真机逃逸&XP框架&Frida技术
APP抓包技术
关于APP抓包,使用burpsuite抓模拟器中的数据包,需要将模拟器中的网络设置代理,代理地址为burpsuite监听的地址与端口,要想成功获取https数据包,需要将burpsuite证书导入模拟器中,在Android7.0之后的系统需要将证书导入系统认证,具体操作参考
转载--逍遥模拟器与burpsuite抓包配置问题
反模拟器检测绕过
在对目标进行抓包渗透时,有时候会显示检测到模拟器,目标APP并不能正常运行。
面对反模拟器时,一般使用以下三种思路进行绕过
- 使用真机进行测试
- 配置模拟器参数
例如,配置模拟器中的手机号、运营商、手机型号、内存、硬盘等等,使得模拟器能够绕过目标APP的检测
- 将APP的apk文件进行逆向,将检测代码进行删除后在进行重打包。这种方式需要看的懂代码
反代理检测绕过
在对一些APP进行抓包的时候,明明网络没有任何问题,但是就是显示网络不可用、网络不可达、数据异常,并且抓不到访问数据包,这时候要考虑APP是不是进行了代理检测。
- 代理软件绕过
- 很多软件只检测了模拟器中网络的高级设置是不是使用了高级代理设置,这时候可以尝试使用代理软件进行设置。例如Postern,设置代理规则等即可转发流量,具体操作网上查询。
- 主机逃逸
- 由于我们的APP安装在模拟器中,相当于放在虚拟机中,APP检测代理也不会检测宿主机上的网络设置。这时候我们可以使用代理工具,比如在proxifier中设置代理规则,将模拟器进程的流量转发至burpsuite监听的端口上,这样就可以绕过代理检测。
- APP逆向删除检测代理代码,重打包
主机逃逸方法:
- 想要设置转发,首先找到模拟器进程。
在proxifier中设置代理服务器,地址为burpsuite所监听的地址和端口
设置监听规则,将所有运行的进行流量全部拦截,同时运行模拟器。
查看进程名称,即可找到模拟器进程。
- 重新设置代理规则
将找到疑似模拟器的进程名称写入,动作改为转发至burpsuite,之后便可以绕过代理检测。
反证书检测绕过
证书检测有两种检测方式,分为单向认证或者双向认证。
绕过思路分为四种思路:
- XP框架绕过单向认证
- Frida框架通杀脚本转发WireShark
- Frida框架配合脚本转发burpsuite
- 将APK进行逆向将证书提取安装至burpsuite
XP框架绕过单向认证
1.使用XP框架中模块绕过证书检测
安装XP模块:
夜深模拟器直接在应用市场安装即可
逍遥模拟器:
- 安装JustTrustMe模块
下载地址JustTrustMe
下载apk之后将apk安装到模拟器即可
- 启动模块并重启模拟器
详细步骤可以参考
app渗透之Burp抓取app数据包
Frida框架通杀脚本转发WireShark
- Hook技术
Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
Frida就是Hook技术的一种框架
- Frida框架
Firda 是一款易用的跨平Hook工具, Java层到Native层的Hook无所不能,是一种 动态 的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,原生平台包括Win、Mac、Linux、Android、iOS全平台
- r0capture脚本
- 仅限安卓平台,测试安卓7、8、9、10、11、12、13 可用 ;
- 无视所有证书校验或绑定,不用考虑任何证书的事情;
- 通杀TCP/IP四层模型中的应用层中的全部协议;
- 通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf等等、以及它们的SSL版本;
- 通杀所有应用层框架,包括HttpUrlConnection、Okhttp1/3/4、Retrofit/Volley等等;
- 无视加固,不管是整体壳还是二代壳或VMP,不用考虑加固的事情;
Frida框架安装:
- 本地安装Frida
powershell
pip install frida
pip install frida-tools
- 模拟器中安装Frida服务端
安装之前首先确认本地Frida版本
powershell
frida --version
- 进入模拟器命令行查看模拟器版本及位数
powershell
abd.exe shell
getprop ro.product.cpu.abi
下载与本地Frida版本以及模拟器位数一致的服务端,Frida服务端下载地址链接Frida
- 将下载解压后的Frida服务端放入模拟器中,开启服务端并设置转发
powershell
adb.exe push frida-server /data/local
adb.exe shell
cd /data/local/
chmod 777 frida-server
./frida-server
adb.exe forward tcp:27042 tcp:27042
- 判断连接是否成功
powershell
frida-ps -U
frida-ps -R
执行两条命令可以看到模拟器中的进程及开启转发成功,frida-ps -R看不到结果是因为没有做端口转发.
成功开启Frida服务并转发至宿主机效果如下
通杀脚本转发流量
- 下载通杀脚本
通杀脚本下载地址r0capture
- 确认Frida服务端启动,并成功转发进程至宿主机
- 获取要截取目标APP数据包的包名
建议使用APK资源提取器1.0获取包名
使用效果图:
- 运行通杀脚本
powershell
python r0capture.py -U -f 包名/程序名 -p xxxx.pcap
运行效果或其他使用方法见项目说明
运行脚本之后,模拟器端会自动运行目标APP,下面进行调试即可
- 使用wireshark分析数据即可
Frida框架配合脚本转发burpsuite
-
设置模拟器网络代理,转发至burpsuite
-
下载Frida脚本
FridaScripts -
确认Frida服务端启动,并成功转发进程至宿主机
-
获取要截取目标APP数据包的包名
-
运行脚本文件
powershell
frida -U -f 包名 -l SSLUnpinning.js
这里项目中很多脚本都有不同功能,绕过双向证书使用SSLUnpinning.js文件。
运行脚本之后,模拟器端会自动运行目标APP,接下来目标APP的数据包即可正常转发至burpsuite。
反编译获取证书
反编译获取证书文件需要深厚的逆向知识以及代码能力,这里不再记录。