某音乐App 抓包和signature签名分析

简介: 某音乐App 抓包和signature签名分析

一、目标


李老板:奋飞呀,最近我想下个歌,现在听歌软件都这么顽固了,包都抓不到?


奋飞:抓不到包的原因太多了,咱们得用排除法分析下。

  • 某音乐App 10.8.4


二、步骤

排查协议


李老板也跟我们混了这么多期,所以基本排除抓包环境的问题。


那么另一个可能就是像某手使用的 quic协议 或者某鱼使用的 spdy协议 了。


上jadx搜一下 "quic",如果搜不到还可以直接试试 quic

8.png

有6个结果,看来我们的猜测是对的,一个一个结果看过来,第三个结果应该有点猫腻。

9.png


看上去像是传个协议名称进来。


上Objection


有了怀疑对象之后,先不要着急写代码,用Objection批量Hook印证一下,精准定位之后再去写js。

objection -g com.kxxou.android explore -P ~/.objection/plugins
android hooking watch  class 'com.kxxou.common.network.netgate.o'


结果还是不错的,刷新主页面的时候这个类的函数被调用了,虽然没有我们刚才分析的 a(Ljava/lang/String;)I,不过有可能这个函数只在启动的时候调用一次。

(agent) [559860] Called com.kxxou.common.network.netgate.o.a(int, java.lang.String, java.lang.String)
(agent) [559860] Called com.kxxou.common.network.netgate.o.a(java.lang.String, java.lang.String, java.lang.String)
(agent) [559860] Called com.kxxou.common.network.netgate.o.a(int, java.lang.String, java.lang.String)


然后我们可以写js来慢慢分析了。


一个尴尬的故事


正准备分析的时候,发现一个尴尬的事。我能抓到包了……


也许是App启动的时候自动判断了要走http不走quic协议了吧。


根据职场第一守则:老板是不会错的。  我们毫不犹豫的告诉李老板,搞定了,能抓到包了。  手动狗头。


signature分析

在新歌里面随便点一个评论。10.png

我们今天的目标是这个 signature


掰指头数了数32位,很有md5的潜质。


jadx搜一下 "signature"10.png


这个 hashMap.put 应该是重点考察对象。


一路点进去看到了熟悉的 MD5。


继续用 objection 把整个类跟踪一下

objection -g com.kxxou.android explore -P ~/.objection/plugins
android hooking watch  class 'com.kxxou.common.utils.ba'


结果是 a b c这三个函数都有被执行。

(agent) [641383] Called com.kxxou.common.utils.ba.a(byte)
(agent) [641383] Called com.kxxou.common.utils.ba.a(byte)
(agent) [641383] Called com.kxxou.common.utils.ba.a(byte)
(agent) [641383] Called com.kxxou.common.utils.ba.b(java.lang.String)
(agent) [641383] Called com.kxxou.common.utils.ba.c([B)


那就把这三个函数都批量打印下12.png


逮住了,再缩小下范围可以定位到 signature 是 b函数算出来的。


可以写js了

var signatureCls = Java.use('com.kxxou.common.utils.ba');
signatureCls.b.overload('java.lang.String').implementation = function(a){
    var retval = this.b(a);
  console.log(">>> signature inStr  = " + a);
    console.log(" >>>  signature rc= " + retval);
    return retval;
}

搞定收工。


三、总结


App里还有个sign的算法,大家可以练练手


多积攒点业内动态,协议这块,大家还是互相学习的居多,纯独创的还是比较少的。


有时候要相信运气,说不定睡一觉起来,就突然可以抓包了。11.png


别动不动说把一切交给时间,时间才懒得收拾你的烂摊子。


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号: 奋飞安全,最新技术干货实时推送

.

相关文章
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
638 1
|
13天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
网络协议 Linux 网络安全
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
|
3月前
|
API 数据安全/隐私保护
【Azure 应用服务】App Service 通过 wardeploy 部署 war 包,如何指定到 root目录为wwwroot
【Azure 应用服务】App Service 通过 wardeploy 部署 war 包,如何指定到 root目录为wwwroot
|
3月前
|
数据库 Python
【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
|
3月前
|
C# 开发工具
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
|
3月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)

热门文章

最新文章