一、burp设置代理抓包

1、同网段下配置好burp的监听IP和port

2、手机访问代理下载证书,然后在手机设置里描述文件安装证书,装好证书后注意在:设置→通用→关于本机→证书信任设置,开启证书信任

二、shadowrockt配置VPN抓包

有的app可能会设置无视系统代理,此时可以使用VPN的方式让app强制通过burp。

1、该软件可在商店直接下载,如下配置即可

2、在设置中延迟测试选择TCP,最后通过延迟测试查看是否配置成功。

三、frida绕过代理检测

思路:部分app打开会提示类似“请先关闭代理或VPN”的关键字,那么将移动程序的软件包IPA文件中的可执行程序(如果需要砸壳,可使用工具frida-ios-dump和CrackerXI)放到IDA中,全局搜索程序提示的关键字,定位到该关键字所在的函数,使用frida注入js修改函数的返回值(检测结果),从而实现绕过。

1、将砸壳后的可执行文件放到IDA中打开,shift+fn+f12打开可执行文件中的所有字符串,再CTRL+C搜索字符串,选择后按X查看该字符串(请关闭代理)的引用。注:一般来说,程序实现某一功能是定义一个函数,然后用到时去调用这个函数,所有‘请关闭代理’这个字符串会出现多次,只需找到实现检测代理功能的函数地址即可,忽略调用检测代理函数的函数。

2、利用frida-trace快速生成js修改后如下,执行 frida -U -l xx.js -f 包名进行注入

var module_addr = Module.findBaseAddress("xxx"); //获取可执行程序的基址

Interceptor.attach(module_addr.add(0x108540), { //添加实现检测代理功能函数的偏移地址

onEnter: function (args) {

}, onLeave: function (retval) { //离开该函数时替换函数原本的返回值

console.log("retval", retval);

retval.replace(0);

}

})

3、另一个思路可以记下常见检测代理的系统函数,通过frida-trace -U -i 函数名 -p PID(-i代表c语言  -m代表oc语言)来确认程序是否使用该函数以及针对性去调试获取 内存地址、返回值等信息辅助编写绕过脚本。

如下是网上关于CFNetworkCopySystemProxySettings函数检测代理时的绕过通杀脚本

var _imports = Process.findModuleByName("XXX").enumerateImports();

//获取可执行文件所有的导入函数

var _CFNetworkCopySystemProxySettings = null;

//遍历导入函数,当包含CFNetworkCopySystemProxySettings时,获取其地址

for (var i = 0; i < _imports.length; i++) {

//查找CFNetworkCopySystemProxySettings系统代理函数

if (_imports[i].name.indexOf("CFNetworkCopySystemProxySettings") !== -1) {

console.log(_imports[i].name, _imports[i].address);

_CFNetworkCopySystemProxySettings = _imports[i].address;

}

}

//修改CFNetworkCopySystemProxySettings函数的返回值

if (_CFNetworkCopySystemProxySettings) {

Interceptor.attach(_CFNetworkCopySystemProxySettings, {

onEnter: function (agrgs) {

}, onLeave: function (retval) {

console.log("retval: ", ObjC.Object(retval));

//将返回值全部nop

retval.replace(0);

}

})

}

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: