安卓app抓包总结

admin 2024年11月29日10:15:11评论7 views字数 5069阅读16分53秒阅读模式

申明:文章仅供技术交流,请自觉遵守网络安全相关法律法规,切勿利用文章内的相关技术从事非法活动,如因此产生的一切不良后果与文章作者无关。

本文由北海师傅发表在先知社区

文章地址:https://xz.aliyun.com/t/16315

前言

这里简单记录一下相关抓包工具证书的安装

burp证书安装

安装证书到移动设备
导出证书
安卓app抓包总结

安卓app抓包总结

openssl x509 -inform DER -in cacert.der -out cacert.pem      转换格式
openssl x509 -inform PEM -subject_hash_old -in cacert.pem 计算证书hash值

安卓app抓包总结

安卓app抓包总结
把bp.pem改成727ceb75.0

安卓app抓包总结

adb上传至设备
这里以雷电模拟器为例

安卓app抓包总结

使用mt管理器把证书从sdcard文件夹下转移到/system/etc/security/cacerts下
安卓app抓包总结

添加读写权限
安卓app抓包总结

重启后即可

charles证书安装

charles-proxy-4.6.4-win64.msi
链接: https://pan.baidu.com/s/1ZNm71DIZNbjXN5eXwv6TSA?pwd=m79v 提取码: m79v
charles激活码计算器:https://www.zzzmode.com/mytools/charles/

安装证书到移动设备
保存根证书

安卓app抓包总结

可以保存为pem格式或者cer格式
安卓app抓包总结
接着后续可以参考前面的burp证书安装步骤

filder证书安装

导出证书
安卓app抓包总结

安卓app抓包总结

之后参考burp证书的操作即可,包括:使用openssl计算格式,转换hash,重命名,上传到模拟器,移动到系统证书目录

补充说明

1.实际上,像是bp,花瓶以及fd这些抓包工具,证书的安装除了导出证书再上传的方式外,还有访问代理服务器下载的方式,网上有很多教程,本文重点在总结抓包思路,就不一一赘述了

2.安装证书的目的是拦截和分析HTTPS流量。而从Android7(API24)开始,系统不再信任用户级别的CA证书,只信任系统级别的证书。所以如果抓包安卓7以上系统的设备,安装证书的时候还要将证书移动到系统级别的证书目录

例如前面burp证书导入雷电9(android9)模拟器时,我们把证书从sdcard文件夹下移动到/system/etc/security/cacerts目录中。而/system/etc/security/cacerts目录正是用来存放系统级别的CA(证书颁发机构)证书的

3.对于装了高版本安卓系统的真机,可能无法通过命令行或者mt管理器将证书移动到/system/etc/security/cacerts目录(我这里试过,发现安卓10不行)。此时可以通过Magisk中的Move Certificates模块将用户证书转化为系统证书。
Move_Certificates-v1.9.zip
链接: https://pan.baidu.com/s/1nqZxuptJIftppEQdPOSl_Q?pwd=5qd5 提取码: 5qd5
然后在magisk的模块栏中选择从本地安装
成功后就会出现Move_Certificates模块

安卓app抓包总结

安卓app抓包总结

安卓app抓包总结

进入设置,找到安全,然后进入凭据相关的一栏,选择从存储中安装

安卓app抓包总结

安卓app抓包总结

然后在用户中就可以看到该证书

安卓app抓包总结

重启后它就移动到系统证书下了

抓包

burpsuite直接抓包

条件:

  • pc和移动端设备能相互ping通

  • bp证书导入移动端设备

  • 无检测

下面以雷电模拟器为例:

burp设置代理
安卓app抓包总结

安卓app抓包总结

雷电模拟器配置wifi代理
安卓app抓包总结

随便选一个app抓登录的包

安卓app抓包总结

burpsuite+postern抓包

条件:

  • pc和移动端设备互通

  • bp证书导入移动端设备

  • 无vpn流量检测

如果app做了系统代理检测(wifi),而没做vpn代理检测的话,我们可以在Android等设备上启动一个VPN服务,让APP 的所有流量都先经过VPN服务,再抓取APP的网络数据包

而postern就是安卓的vpn全局代理工具
https://pan.baidu.com/s/1ChA4svJIshOlAMcY0efZFA?pwd=zkea

postern设置代理服务器(服务器地址和端口号与bp的监听地址一致)
安卓app抓包总结
点击保存

安卓app抓包总结

设置代理规则
安卓app抓包总结
选择刚添加的burp代理组

安卓app抓包总结

点击保存
安卓app抓包总结

点击打开vpn(若显示关闭vpn,则表明已经开启了vpn)

安卓app抓包总结

再次打开app,发现抓包成功

安卓app抓包总结

burpsuite结合proxifer(限于模拟器)

条件:

  • 模拟器

  • 模拟器导入burpsuite证书
    Proxifier是一款强大的网络工具,允许用户将不支持代理的应用程序通过代理服务器进行连接。我们可以使用proxifer代理模拟器进程的流量

链接: https://pan.baidu.com/s/1caU29yXbAMKYn5HRQ52Qvw?pwd=81u1 提取码: 81u1

proxifer设置代理服务器(服务器地址和端口号与BurpSuite的监听地址一致)
安卓app抓包总结
选择HTTP/HTTPS即可

安卓app抓包总结

设置代理规则
安卓app抓包总结

目标程序设置为Ld9BoxHeadless.exe(LdBoxHeadless.exe负责模拟器的运行,雷电9的则是Ld9BoxHeadless.exe)

安卓app抓包总结
将代理规则优先级提前

安卓app抓包总结

burp配置代理设置,跟proxifer的符合
安卓app抓包总结

即可抓包

安卓app抓包总结

adb联合burpsuite

条件:设备安装了burpsuite证书

有时候,移动设备和测试主机不处于同一网段,且没有设置路由规则,或者所在的无线局域网设置了ap隔离,导致两设备无法互通。对于这种场景,可以采用adb端口转发的方式联合burp抓包

settings put global http_proxy 127.0.0.1:6789

安卓app抓包总结

adb reverse tcp:6789 tcp:7777

安卓app抓包总结
然后配置burp代理

安卓app抓包总结

成功抓包

安卓app抓包总结

adb reverse --remove tcp:6789
settings put global http_proxy :0

补充:安卓高版本进行上述操作后连接wifi会出现一个x,这是由于原生安卓系统验证wifi是否有效,是去访问谷歌的服务器

运行以下命令:adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204,(改为访问小米服务器)
开启飞行模式,再关闭飞行模式即可解决!

postern+charles+burpsuite

postern设置

添加代理服务器
安卓app抓包总结

配置好信息后下拉点击保存

安卓app抓包总结

添加代理规则

安卓app抓包总结

配置好信息后点击保存

安卓app抓包总结
然后打开vpn即可

charles设置

安卓app抓包总结
设置SSL代理

安卓app抓包总结
代理设置

安卓app抓包总结

安卓app抓包总结
然后启动SSL代理,就可以抓包了

安卓app抓包总结

联动burpsuite

charles在之前的基础上设置外部代理

安卓app抓包总结

安卓app抓包总结

小黄鸟

HttpCanary是直接在安卓设备上操作的抓包工具
HttpCanary_9.9.9.9.apk
链接: https://pan.baidu.com/s/16lH8rqZHJW43LRDR5eNCwA?pwd=k692 提取码: k692

导入证书
安卓app抓包总结

安卓app抓包总结

尝试抓包,如下图
安卓app抓包总结

开启bp,监听8080即可联动

安卓app抓包总结

fiddler+wifi代理

条件:

  • 设备安装fiddler证书

  • 移动设备和PC互通

fiddler抓包在进行逻辑漏洞挖掘时具有一定的优势,因为相比于bp,它更容易观察流量的整体逻辑。并且fiddler的并发机制比bp优秀

这里以雷电模拟器为例
fiddler配置 导航栏点击Tools,然后选择Options
监听端口默认是8888

安卓app抓包总结

设备设置wifi代理

安卓app抓包总结

抓包

安卓app抓包总结

fiddler结合postern

条件:

  • 设备安装fiddler证书

  • 移动设备和PC互通
    fiddler也可与postern之类的vpn软件联合,来绕过wifi代理检测,操作与burpsuite相似,这里就不赘述了

r0capture(hook抓包)

条件: 安卓7,8,9,10,11

https://github.com/r0ysue/r0capture

r0capture仅限安卓平台7、8、9、10、11 可用,能通杀TCP/IP四层模型中的应用层中的全部协议,包括Http, WebSocket, Ftp, Xmpp, Imap, Smtp, Protobuf等协议,并且能够绕过默认库的证书校验
r0capture通过Hook Android系统中的SSL/TLS库的关键函数,如SSL_read和SSL_write,来拦截和捕获应用层的数据包。这些操作发生在SSL层,因此在数据被应用层的代码处理之前,r0capture已经获取了明文数据,从而绕过了应用层的证书校验机制
不过也因此无法解密自研的SSL框架

Spawn 模式
python3 r0capture.py -U -f com.dianping.v1 -v

Attach 模式抓包内容保存成pcap文件供后续分析
python3 r0capture.py -U 大众点评 -v -p dianping.pcap

Spawn模式,比如向抓包大众点评,先找到大众点评app的包名

pm list package | grep dianping

安卓app抓包总结

开启frida服务端,
然后在r0capture项目文件夹下运行r0capture脚本

安卓app抓包总结

可以在项目文件夹下看到打印的流量日志

安卓app抓包总结

Attach模式,再以抓包大众点评为例,先找到大众点评的进程名

frida-ps -U

安卓app抓包总结

开启frida-server

然后在r0capture项目文件夹下运行r0capture脚本

安卓app抓包总结

Ctrl+C停止抓包后,然后就可以在项目文件夹下看到抓到的pcap流量包了

安卓app抓包总结

wireshark打开

安卓app抓包总结
追踪第一条流看看,发现抓包成功了

安卓app抓包总结

tcpdump + wireshark

tcpdump 是一款功能强大的网络抓包工具,它可以抓取涵盖整个TCP/IP协议族的数据包,但是tcpdump本身无法解密 SSL加密过的数据,所以对于https没有办法

在安卓设备上运行

抓取所有接口的流量保存到res.pcap
tcpdump -i any -w res.pcap

安卓app抓包总结

这样子做更多的是分析tcp层的通信流程,包括密钥传输等

安卓app抓包总结

Lsposed+TrustMeAlready +bp/fd/charles(突破单向认证)

条件:

  • root设备(模拟器也行) 

  • 安装了Magisk

  • 设备安装了抓包工具的证书

Lsposed:
https://github.com/LSPosed/LSPosed
TrustMeALready:
https://github.com/ViRb3/TrustMeAlready

LSPosed是基于Xposed开发的一个框架,支持android8.0以上的高版本,可以在不修改 APK 文件的情况下,通过模块改变系统和应用程序的行为

安装Lsposed

进入magisk设置
安卓app抓包总结
打开zygisk

安卓app抓包总结

将下载好的Lsposed包上传到设备,例如:

adb push LSPosed-v1.9.2-7024-zygisk-release.zip /storage/emulated/0/Download/LSPosed-v1.9.2-7024-zygisk-release.zip

选择从本地安装(我这里已经安装了,所以显示有了)

安卓app抓包总结

安卓app抓包总结

开启Lsposed

安卓app抓包总结

在Lsposed的zip包中找到manager.apk,安装到设备即可

安卓app抓包总结

安卓app抓包总结
打开发现已经激活

安卓app抓包总结

安装TrustMeAlready

使用adb将TrustMeAlready.apk安装到设备上

安卓app抓包总结

打开Lsposed
安卓app抓包总结
选择给某个app启用即可

接着就可以用抓包工具抓包了

总结

抓包工具有burpsuite,fiddler,charles等
burpsuite适合渗透测试,charles适合开发者分析调试app,fiddler个人认为适合app的逻辑功能的测试(逻辑漏洞挖掘)

如果没有任何检测,我们通过wifi代理就可以结合抓包工具抓包了。如果存在系统代理检测,可以尝试使用vpn软件(postern等)绕过,或者使用proxifer抓取模拟器进程在模拟器外部实现流量代理

对于移动设备和PC无法互通的场景,可以尝试在usb连接后使用adb进行流量转发

如果存在SSLpining(单向证书校验),可以考虑Lsposed框架+TrustMeAlready进行绕过(低版本:xposed+JustTrustMe),如果存在双向证书校验,就得考虑逆向,找到apk中保存的证书了。不过也可以尝试使用肉丝大佬的r0capture脚本把加密前解密后的流量dump出来(如果app没有存在自研SSL框架的话)

如果喜欢小编的文章,记得多多转发,点赞+关注支持一下哦~,您的点赞和支持是我最大的动力~

原文始发于微信公众号(沃克学安全):安卓app抓包总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月29日10:15:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓app抓包总结https://cn-sec.com/archives/3448562.html

发表评论

匿名网友 填写信息