电子说
模拟器优点: 随便搞,没顾虑 随便调整参数,如内核版本,屏幕大小,有无root等 虽然夜神只支持这三个版本,但也可以应对大多数检测了。模拟器缺点: 不能启动不支持模拟器启动的应用。以下是经常在模拟器上遇到的问题:a. 软件启动后闪退原因可能有多种,模拟器检测,版本检测等解决方案:1、换低版本的app。(可能会引出新的问题:无法正常使用,打开后强制升级等)2、换真机进行测试(换真机后也可能遇到其他问题,这一部分放到后面再说)b. 安装软件失败原因:各类原因都可能存在,需要从log观察其发生了什么错误。c. 安装成功后还是无法抓包,使用应用看不到数据流原因:1、走的websockket,这个用bp等代理工具就能抓到2、不走http或者https协议d. 抓包后报400错误、乱码等原因:1、使用了双向认证2、使用了流量加密抓包方法:代理软件抓包,这个就不在细讲了,基本操作二、模拟器或真机非root和ios未越狱抓包在进行测试时候优先进行真机测试,在非root的情况下,有以下方法。A. 在android下有两款软件 package capture和HttpCanaryApp走普通http代理(如burp、fiddler等),会自动取消请求,无法获取数据。使用package capture 走VPN,可以在本机上抓到,但是抓到的包存在乱码问题.
可以看到,部分存在ssl认证的包抓取无内容,大部分抓到的包都是乱码。我们更换另外一种软件HttpCanary,效果还可以。但是这个软件是收费的,低版本不好用,高版本需要破解。打开还是部分乱码,有请求小程序的包,也可以看到具体传输数据的包。B. 在ios下可以使用Stream下载stream软件后打开,导入证书后,需要添加到根证书。然后开始抓包。三、手机ROOT情况下的抓包解决方案真机暂未root,所以这里使用模拟器进行相关测试,由于模拟器的局限性和不确定性,可能会导致不同的问题,所以有条件还是真机最好。使用工具:Tcpdump+wiresharktcpdump是linux下的抓包工具,在android中没有,需要下载对应的工具。下载地址:https://www.androidtcpdump.com/android-tcpdump/downloads然后通过adb放到对应的目录:
adb push tcpdump /data/local/
可能会遇到无法push的情况,其实是没有权限,可以授权后重试:
adb shell
su
chmod 777 /data/local
修改权限:
chmod 777 /data/local/tcpdump
执行抓包命令:
tcpdump -i any -p -vv -s 0 -w capture.pcap
执行抓包的时候会提示
tcpdump You don't have permission to capture on that device
(socket: Operation not permitted)
是因为该命令只能在root用户下操作,先用su命令,再重试tcpdump命令。启动抓包后会在当前目录创建一个capture.pacp的文件最后使用wireshark打开过滤分析即可四、Android下修改app源码如果apk未做校检,或者可以绕过apk自校检,那么可以修改apk源码,然后重新打包,以达到让apk信任用户证书,抓取数据包的目的。在AndroidManifest.xml中
<manifest... >
<applicationandroid:networkSecurityConfig="@xml/network_security_config"
... >
...
application>
manifest>
配置文件:res/xml/network_security_config.xml
<network-security-config>
<base-configcleartextTrafficPermitted="true">
<trust-anchors>
<certificatessrc="system" overridePins="true" />
<certificatessrc="user" overridePins="true" />
trust-anchors>
base-config>
network-security-config>
五、Android下将用户证书导为系统证书系统证书的目录是:/system/etc/security/cacerts/每个证书的命名规则为:3.找到后导入burp中即可。七、SSL PinningSSL Pinning是一种防止中间人攻击(MITM)的技术,主要的机制是在客户端发起请求->收到服务器发来的证书这一步之后,对收到的证书进行校验,如果收到的证书不被客户端所信任,就直接断开连接不继续请求。1、使用Xposed或兼容Xposed的框架+JustTrustMe使用JustTrustMe这个Xposed模块,它所做的事情就是将各种已知的的HTTP请求库中用于校验证书的API都进行Hook,使无论是否是可信证书的情况,校验结果返回都为正常状态,从而实现绕过证书检查的效果。2、上面一些导入根证书的方法也可以绕过部分的sslpinning八、其他思路在APP内抓包,可以在APP里面找到处理网络请求和响应的函数,然后用Frida做HOOK,转发参数到接受抓包的地方,如果不需要修改的话,直接转发就行了;如果需要修改的话,可以在代码里面再加入一些交互逻辑应该也能实现。 审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !