渗透测试的过程中总会遇到要测试app的时候,这里总结了一下常用抓app数据包的方法,大佬笑笑就好,可以略过。
常见的抓包软件有很多很多,例如fiddler、burpsuite、tcpdump、wireshark、HttpCanary、HTTP Catcher等等。使用方法都不难,只要了解大概网络流程,就知道如何操作了。
下述所用工具
夜神模拟器 (安卓5)
root 手机一台
burp
fidder
proxifier
xp框架等插件
··············
常见抓包的三种方式
模拟器wifi中配置代理,代理服务器主机名填写电脑ip,端口号任意
设置burp
模拟器中访问代理地址,同时下载证书到本地
在自带的文件管理器中找到证书文件,重按修改后缀名
然后在设置-安全-从SD卡安装中即可
可成功抓取默认浏览器中的数据包
fidder下载
https://www.telerik.com/download/fiddler
fidder按照如下配置代理,并开打允许远程发送请求
坑点(若无法连接上代理):
fiddler设置完需要重启可能需要关闭防火墙修改注册表,在HKEY_CURRENT_USERSoftwareMicrosoftFiddler2下创建一个DWORD, 值为80(十进制)
设置手机代理并下载fidder证书,安装并命名
即可抓取https界面
基础设置
fidder设置将流量转发到burp
burp设置代理
模拟器访问http、https地址,fiddler中抓取的包转发到了burpsuite
问题扩展及解决方法
在实际工作中,单独的导入证书、配置代理远远不够,向我这种苦逼的安服仔逆向又不会,只能通过一些小方法或工具尝试突破规则和限制。
RootCloak
现在很多app特别是游戏app巨怕用户修改数据所以基本上都做了root检测,这个很难受呀,但是RootCloak就能解决这个问题,隐藏root信息,这样一般app就检测不到,比较方便。
Xposed Hider
Xposed Hider是一款专为xposed框架打造的隐藏模块
两个插件下载链接
https://www.52pojie.cn/thread-999719-1-1.html
小实例
打开某app会直接闪退,原因是内部有root检测机制,但是通过RootCloak隐藏root信息即可绕过,然后就可以嘿嘿嘿了
可以正常打开啦~
单向认证、双向认证、SSL-Pinning
单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。而双向认证则是需要是服务端需要客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些。 常用的HTTPS抓包方式是作为中间人,对客户端伪装成服务端,对服务端伪装成客户端。为了防止中间人攻击,可以使用SSL-Pinning的技术来反抓包。 可以发现中间人攻击的要点的伪造了一个假的服务端证书给了客户端,客户端误以为真。解决思路就是,客户端也预置一份服务端的证书,比较一下就知道真假了。
突破SSL-Pinning
方法一:使用Android7.0以下的系统
目前已验证在Android 7.0或以上的系统有启用了对第三方证书的限制。但是在Android 7.0以下还是依旧可以将Fiddler/Charles的证书安装在用户的CA集中抓取https请求。
方法二:将Apk反编译,修改AndroidMainfest.xml文件
操作步骤大致如下:
1.判断apk是否加了壳,如果加了壳先进行脱壳处理
再通过apktool等工具进行反编译
在源码的res/xml目录添加networksecurityconfig.xml文件
修改AnroidManifest.xml文件,在application标签中添加内容
附:此方案比较适合会逆向的小哥哥,小姐姐,具体操作自行搜索吧
方法三:Xpose(或VitualXposed)--JustTrustMe
相关简介:
VitualXposed可以在不需要设备root的情况下,修改App的行为。此应用的工作原理类似于应用分身功能,会将应用安装到一个虚拟独立的环境当中,其内部会自带一个已经激活了的Xposed工具。
Xpose框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。
JustTrustMe是Github上面的一个开源项目,是xposed中的一个模块,用于禁止SSL证书验证。
相关下载链接
https://vxposed.com/
https://github.com/Fuzion24/JustTrustMe
https://github.com/rovo89/Xposed
方案四:通过Frida绕过SSL单向校验
这里不详细说明了,需要仔细深入的小伙伴请访问下述链接
https://techblog.mediaservice.net/2017/07/universal-android-ssl-pinning-bypass-with-frida/
小实例
想要抓取如下图app数据包,发现提示网络异常/无数据信息,原因是存在SSL-Pinning限制,但可以通过JustTrustMe绕过。
简单使用
1.安装夜神模拟器
安装xpose或vitualxposed框架
安装JustTrustMe模块并激活
重启xpose或vitualxposed
后续一般就可以抓到包了哈
小实例
很多时候遇到过类似这些提示,“请检查是否设置代理”,"app已停止运行",点击没反应(如下图,点击登录按钮没反应),有可能是不允许本机设置代理运行,那可以通过下述方式设置代理
夜神模拟器+proxifier
proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链
基础设置
先通过任务管理器找到模拟器进程
在proxifier设置代理
设置规则(rule)
测试一下,发现可成功抓取数据包,绕过代理检测。
后续拓展
通过手机代理软件抓包,原理自己简单总结了一下
通过创建一个VPN,将手机上的所有流量都重定向到抓包软件自身(不是流向vpn服务器) ,这样抓包软件就可以管理所有手机上的网络流量,甚至可以对手机上不同APP的流量进行单独配置。
安卓-HttpCanary(小黄鸟)
HttpCanary是Android平台下功能最强大的网络分析工具,支持HTTP、HTTPS、HTTP2和WebSocket等多种协议,具体使用方法请自行搜索。
IOS-HTTP Catcher(网球)
HTTP Catcher是一个WEB调试工具。它可以拦截、查看、修改和重放来自ios系统的HTTP请求,具体使用方法请自行搜索。
最后
抓包看似简单,但是深入了解发现也是一个技术活(对于我来说实在是要更加深入学习呀),由衷的祝愿各位小伙伴们由点及面,能够不断的发现问题并解决。
参考链接
https://xz.aliyun.com/t/6558#toc-16
https://juejin.cn/post/6844903831579394055#heading-3
https://xz.aliyun.com/t/6551#toc-8
https://www.cnblogs.com/yyoba/p/12370510.html
https://blog.csdn.net/god_zzZ/article/details/103764613
https://www.cnblogs.com/yyoba/p/12370510.html
点击数:225