0x01 前言
接上篇文章的环境配置,现在app都会使用SSL证书,分为单向、双向,大概意思是
单向证书:服务器认证,客户端不需要证书。
双向证书:服务器和客户端相互认证。
如果我们针对这些目标,直接抓包的话,由于没有证书的缘故,会导致抓不到包,本文会讲解使用LSPosed以及frida的hook脚本来绕过单双向证书验证。
0x02 正文
将压缩包中的代理工具导入模拟器
IP使用本机ip,抓包工具一样,yakit或者bp都行
点击保存,点击左侧的抽屉,打开配置规则
选择:通过代理连接,代理组就使用刚才命名的代理名称即可,
导出Ykit SSL证书,然后共享到模拟器中,后缀改为crt,把后面的pem删了就行。
然后导入证书,操作流程如下:
设置-->网络和互联网-->互联网-->网络偏好设置-->安装证书
安装完成之后,在浏览器试一下,正常应该是这种
我们如果挂上代理,直接抓包的话,随便打开一个app,都会提示服务器或者网络错误
绕过单向证书校验
将下面的apk拖入模拟器中,然后可以在LSPosed中看到这个模块
启用模块,并添加需要测试的APP,在后面勾选上即可。
添加完之后,重启模拟器,挂上代理,在尝试抓包
效果如下:
这个模块只支持单向证书绕过,app为双向证书验证的话,还是不行,如下:
因为该app使用了双向证书验证,这时候需要使用frida的hook脚本。
将压缩包中的FridaScripts-main.zip,里面有一个SSLUnpinning.js,首先需要启动服务端的frida,然后启动转发, 在本地hook,有两种方案,
第一种是Spawn模式(自启动目标应用,相当于以调试模式启动APK)
第二种是attach模式(附加的形式对目标应用进行Hook)
第一种方案:
首先需要找到这个app的包名,在LSPosed中可以看到,或者使用压缩包中打包的软件
选择目标,点击反编译,点击APK信息,可以看到应用包名
找到包名后,使用下面命令运行
frida -U -l .\SSLUnpinning.js -f 包名 --no-pause
效果如下:
第二种方案:
自己在模拟器中手动运行需要hook的app,然后使用frida-ps -U来查看连接,找到对应的PID后,使用下面的命令
frida -U -l .\SSLUnpinning.js PID--no-pause
效果如下:
这里推荐使用第二种,第一种有一些app可能会检测frida的特征,使用附加的方式,会好一些。
0x03 文末
实习/校招/社招
安全服务工程师、安全攻防工程师、安全研发工程师、前后端开发工程师、测试工程师等等,所有岗位均可内推 |
推荐阅读
渗透实战|记一次简单的Docker逃逸+反编译jar接管云主机