安卓APP抓包大全

华盟原创文章投稿奖励计划

文章作者:先知社区(北海)

文章来源:https://xz.aliyun.com/t/16315

1

前言及证书安装

这里简单记录一下相关抓包工具证书的安装。BURP证书安装安装证书到移动设备导出证书
自动草稿自动草稿

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

自动草稿自动草稿
把bp.pem改成727ceb75.0自动草稿adb上传至设备
这里以雷电模拟器为例自动草稿使用mt管理器把证书从sdcard文件夹下转移到/system/etc/security/cacerts下
自动草稿添加读写权限
自动草稿

重启后即可

charles证书安装

charles-proxy-4.6.4-win64.msi

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

安装证书到移动设备保存根证书自动草稿可以保存为pem格式或者cer格式
自动草稿
接着后续可以参考前面的burp证书安装步骤

filder证书安装

导出证书
自动草稿自动草稿之后参考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模块自动草稿自动草稿自动草稿进入设置,找到安全,然后进入凭据相关的一栏,选择从存储中安装自动草稿自动草稿然后在用户中就可以看到该证书自动草稿重启后它就移动到系统证书下了

2

抓包

burpsuite直接抓包

条件:

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

  • bp证书导入移动端设备

  • 无检测

下面以雷电模拟器为例:

burp设置代理
自动草稿

自动草稿

雷电模拟器配置wifi代理
自动草稿

随便选一个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的监听地址一致)
自动草稿
点击保存

自动草稿

设置代理规则
自动草稿
选择刚添加的burp代理组

自动草稿

点击保存
自动草稿

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

自动草稿

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

自动草稿

burpsuite结合proxifer(限于模拟器)

条件:

  • 模拟器

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

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

proxifer设置代理服务器(服务器地址和端口号与BurpSuite的监听地址一致)

自动草稿
选择HTTP/HTTPS即可

自动草稿

设置代理规则
自动草稿

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

自动草稿
将代理规则优先级提前

自动草稿

burp配置代理设置,跟proxifer的符合
自动草稿

即可抓包

自动草稿

adb联合burpsuite

条件:设备安装了burpsuite证书

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

settings put global http_proxy 127.0.0.1:6789

自动草稿

adb reverse tcp:6789 tcp:7777

自动草稿


然后配置burp代理

自动草稿

成功抓包

自动草稿

adb reverse --remove tcp:6789settings 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设置

添加代理服务器
自动草稿

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

自动草稿

添加代理规则

自动草稿

配置好信息后点击保存

自动草稿
然后打开vpn即可

charles设置

自动草稿
设置SSL代理

自动草稿
代理设置

自动草稿

自动草稿
然后启动SSL代理,就可以抓包了

自动草稿

联动burpsuite

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

自动草稿

自动草稿

小黄鸟

HttpCanary是直接在安卓设备上操作的抓包工具
HttpCanary_9.9.9.9.apk

链接: https://pan.baidu.com/s/16lH8rqZHJW43LRDR5eNCwA?pwd=k692 提取码: k692

导入证书

自动草稿

自动草稿

尝试抓包,如下图
自动草稿

开启bp,监听8080即可联动

自动草稿

fiddler+wifi代理

条件:

  • 设备安装fiddler证书

  • 移动设备和PC互通

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

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

自动草稿

设备设置wifi代理

自动草稿

抓包

自动草稿

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 -vAttach 模式,抓包内容保存成pcap文件供后续分析:python3 r0capture.py -U 大众点评 -v -p dianping.pcap

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

pm list package | grep dianping

自动草稿

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

自动草稿

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

自动草稿

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

frida-ps -U

自动草稿

开启frida-server

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

自动草稿

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

自动草稿

wireshark打开

自动草稿
追踪第一条流看看,发现抓包成功了

自动草稿

tcpdump + wireshark

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

在安卓设备上运行

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

自动草稿

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

自动草稿

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设置
自动草稿
打开zygisk

自动草稿

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

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

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

自动草稿

自动草稿

开启Lsposed

自动草稿

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

自动草稿

自动草稿
打开发现已经激活

自动草稿

安装TrustMeAlready

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

自动草稿

打开Lsposed
自动草稿
选择给某个app启用即可

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

3

总结

抓包工具有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框架的话)

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文


END

本文来源先知社区(北海),经授权后由华盟君发布,观点不代表华盟网的立场,转载请联系原作者。

发表评论