freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

[原创]APP加密报文Burp明文抓包方案
owlpcc 2024-03-19 16:50:08 66338

前言

随着安全等级的提高目前金融、证券、保险类APP经常使用加密的请求和响应报文在公网传输数据,使用传统的frida转发到Burp的方式测试起来非常恼火,而且对于重放类问题基本上很难挖掘,本篇文章使用frida、frida RPC和burp插件联动的方式对加密报文进行明文抓包以解决不能重放的问题,希望能够解决各位在测试过程中遇到的APP加密报文明文抓包和重放的问题。

目标APP介绍

请求报文格式

1.抓取APP登录请求报文可知APP以POST方式传输json格式的请求报文数据,JSON格式字段data为加密数据,digest字段为签名。

1710836175_65f949cfd10cbc191d363.png!small?1710836175735

1710836180_65f949d4740cb226f200f.png!small?1710836180457

1710836184_65f949d83bd83ee29069f.png!small?1710836184487

2.请求报文中data字段以RSA APP本地私钥的方式加密传输。

1710836189_65f949dd5bd78ff7f2df9.png!small?1710836189440

3.请求报文中digest字段以SHA256withRSA本地私钥,对请求报文明文数据Base64编码字符进行加签。

1710836507_65f94b1ba93136fa9403b.png!small?1710836507464

响应报文格式

1.APP本地拦截器XXXXXXXXInterceptor#intercept方法对响应参数data进行解密和digest参数验签。

1710836199_65f949e7483a41cf6c644.png!small?1710836199716

1710836202_65f949ea9f70f16991b4a.png!small?1710836204977

请求报文与响应报文加解密流程

请求报文加密流程

1.客服端发起请求加密流程如下图所示:

1710836209_65f949f146f10e7cd2a4b.png!small?1710836209151

1710836212_65f949f46fa5e57145485.png!small?1710836214982

响应报文解密流程

1.客服端接收响应加解密流程如下图所示:

1710836217_65f949f9882861b20dda5.png!small?1710836220362

1710836219_65f949fbe82ccbc46a307.png!small?1710836220362

Hook抓包的缺陷

传统Hook抓包方式

1.通过Hook加密函数修改明文和Hook解密函数修改解密的方式修改请求和响应报文。

1710836225_65f94a01815a3f20dc1ce.png!small?1710836225445

1710836231_65f94a07183a1e11a94f2.png!small?1710836231533

1710836233_65f94a09ec7543ccd2741.png!small?1710836234454

2.Hook转发Burp显示的请求报文。

1710836543_65f94b3f532acbf70a0d7.png!small?1710836543234

1710836242_65f94a1261d7b2c7f2ba4.png!small?1710836242396

3.Hook转发Burp显示的响应报文。

1710836246_65f94a1605c19c62a98ea.png!small?1710836246061

传统Hook抓包方式存在的缺陷

1.抓取到的请求和响应报文不直观,大多数情况下只知道参数不知道参数对应的请求URL。

2.无法对请求报文进行重放。

报文以RSA加密情况下明文请求包思路

使用通用加解密算法

1.加密流程如下:

①通过frida hook让加密函数不进行加密直接返回明文数据;

②通过Burp抓取请求报文抓取到的就是明文数据;

③通过Burp插件按照加密加强算法流程对明文数据加密加签然后将报文发送给服务器;

1710836261_65f94a250b53ec0a9fb81.png!small?1710836261031

2.解密流程如下:

①Burp收到服务器返回的加密加签数据,Burp插件进行解密得到明文数据;

②frida hook让解密函数直接接返回Burp插件解密后的数据;

③Burp返回明文数据APP显示;

1710836273_65f94a31477c5ae823a00.png!small?1710836273470

使用自写加解密算法

1.加密流程如下:

①通过frida hook让加密函数不进行加密直接返回明文数据;

②通过Burp抓取请求报文抓取到的就是明文数据;

③Burp插件调用frida RPC请求APP加密函数对明文数据进行加密,得到加密加签后的请求密文数据;

④Burp插件RPC调用完成得到密文数据发送给服务器;

1710836279_65f94a378a33a4564c99c.png!small?1710836279557

2.解密流程如下:

①Burp收到服务器返回的加密加签的密文数据;

②Burp插件调用frida RPC请求APP解密函数对密文数据进行解密得到解密后的明文数据;

③frida hook让解密函数直接接返回Burp插件调用RPC解密后的数据;

④通过frida hook让解密函数不进行解密直接返回明文数据;

1710836284_65f94a3c362d3d5dd7a4a.png!small?1710836284168

实现过程

通用加密算法实现过程

1.加密流程实现过程如下:

①通过frida hook让加密函数不进行加密直接返回明文数据;

1710836289_65f94a41b76f9c3959756.png!small?1710836290109

②通过Burp抓取请求报文抓取到的就是明文数据;

1710836596_65f94b74c2cde38c77c80.png!small?1710836599467

③通过Burp插件按照加密加强算法流程对明文数据加密加签然后将报文发送给服务器;

1710836614_65f94b869cb11063d8ff2.png!small?1710836616614

1710836308_65f94a54066978ae81631.png!small?1710836308074

1710836313_65f94a59c272af6fb7938.png!small?1710836313792

1710836951_65f94cd7563994e25b198.png!small?1710836951486

查看burp日志发送是已经是加密报文了

1710836641_65f94ba109c467abf2623.png!small?1710836641248

2.解密流程实现如下:

①Burp收到服务器返回的加密加签数据,Burp插件进行解密得到明文数据;

1710837007_65f94d0fb376e8d2b0b45.png!small?1710837007933

②frida hook让解密函数直接接返回Burp插件解密后的数据;

1710837032_65f94d280297293a11680.png!small?1710837031918

③Burp返回明文数据APP显示;

1710837045_65f94d35e62d520248a7d.png!small?1710837047222

自写加密算法实现过程

1.加密流程如下:

①通过frida hook让加密函数不进行加密直接返回明文数据;

1710836348_65f94a7c6c9324da1fa51.png!small?1710836348268

②通过Burp抓取请求报文抓取到的就是明文数据;

1710836752_65f94c10a9306c9b14b88.png!small?1710836752614

③Burp插件调用frida RPC请求APP加密函数对明文数据进行加密,得到加密加签后的请求密文数据;

1710836744_65f94c080bb74b00a3ea3.png!small?1710836744282

④Burp插件RPC调用完成得到密文数据发送给服务器;

1710836724_65f94bf4184d9400eaf94.png!small?1710836724239

2.解密流程如下:

①Burp收到服务器返回的加密加签的密文数据;

②Burp插件调用frida RPC请求APP解密函数对密文数据进行解密得到解密后的明文数据;

1710836770_65f94c22b5c2754d3dd73.png!small?1710836770750

③frida hook让解密函数直接接返回Burp插件调用RPC解密后的数据;

1710837077_65f94d55c07f4ea499f33.png!small?1710837080638

1710836786_65f94c3228c23d61dd89b.png!small?1710836787914

1710836797_65f94c3ddff7abc56520c.png!small?1710836800203

④通过frida hook让解密函数不进行解密直接返回明文数据;

1710836809_65f94c49ac74b0374ae56.png!small?1710836813388

1710836814_65f94c4e5af58f291b10b.png!small?1710836816014


最终效果

报文历史记录、重放、爆破模块都可以正常使用,我们就能在明文下愉快地进行测试啦!!!!

1710836825_65f94c597bdd49de615ed.png!small?1710836825745

1710836830_65f94c5ed2c6b26eca5db.png!small?1710836830821

1710836835_65f94c63a2d00769ddca5.png!small?1710836835634

1710836840_65f94c68355b0c5775e98.png!small?1710836840555

1710836845_65f94c6d5ab65f3797057.png!small?1710836845321

总结

如上方法对于其他加密方式同样适用,而且不光是APP端Web端同样适用,希望能够举一反三。。

下次分享不借助Burp插件只使用Frida+Frida RPC方式自行重放的方法敬请期待。

# 渗透测试 # android安全 # Frida # Burp Suite插件 # Frida Hook
本文为 owlpcc 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
漏洞思路学习
owlpcc LV.1
这家伙太懒了,还未填写个人描述!
  • 1 文章数
  • 1 关注者
文章目录