某婚恋App _t 签名分析

简介: 某婚恋App _t 签名分析

一、目标


最近也不让加班了,李老板每天早早的就回家,小视频也刷的没意思了。还是好好找个mm


正经聊聊吧。


今天我们的目标是 某婚恋App的 v11.3.2。


二、步骤

抓个包

23.png

t 参数,看上去像是时间戳加上一个md5(掰指头数了数,一共32位)。


jadx搜一搜 _t , 我去,10几万条结果。一时激动,都忘了我的独门秘籍了。这种签名一般会以字符串的方式存入一个map。所以我们应该搜索 "_t"

15.png

嗯,真香

25.png


代码就很清晰了,字符串加上个salt和当前时间,然后做md5。


找接口


26.png


从抓包数据可以看到,返回了不少mm照片。但是对李老板这种黄金单身汉来说,一次返回一个照片多没意思,一把就返回一堆mm照片才是李老板的风格。


但是很奇怪在主界面无论如何点选,就是没有抓到返回mm列表的包。不科学呀。


签名函数定位法


App好不容易搞了签名,那肯定能用的请求都会用上。


返回列表的请求一般来说应该也会带上 _t 签名,所以我们试试hook 做签名的函数,然后打出堆栈,看看有么有没抓到的请求过程。

var strUtilCls = Java.use('com.bxxxx.libs.framework.utils.j');
strUtilCls.a.overload('java.lang.String').implementation = function(a){
    var rc = this.a(a);
    console.log(a);
    console.log(">>> _t = " + rc);
    var stack = threadinstance.currentThread().getStackTrace();
    console.log(" ==== Rc Full call stack:" + Where(stack));                
    return rc ;         
}
strUtilCls.a.overload('java.io.InputStream').implementation = function(a){
    var rc = this.a(a);
    console.log("InputStream >>> _t = " + rc);
    var stack = threadinstance.currentThread().getStackTrace();
    console.log(" ==== Rc Full call stack:" + Where(stack));                
    return rc ;         
}


结论是,确实有做了签名而没有抓到的请求,但是目前掌握的证据,还是没法定位返回列表的请求在哪里。


\u670d\u52a1\u672a 的翻译


寻找数据包的过程中发现了几个返回值是  "msg":"\u670d\u52a1\u672a  的包,\uxxx肯定是中文了,写个python小程序可以很容易解析出来。不过这里有个在线解析的,就比较方便了


www.msxindl.com/tools/unico…


搜相似


正在一筹莫展之际,李老板凑过来: 奋飞呀,这个mm不错,下面还有个搜相似的按钮。


一搜一大把,返回值是一个长长的json,里面有一堆mm的数据,头像,详情和照片。


https://cpi.bxxxx.com/search/Searchuser


找到这个数据包之后,按照正常逻辑我们有理由推断,App启动的时候获取的mm列表的接口应该也在这个域名之下。


继续上jadx

27.png


这个域名下的接口不少呢,有点耐心,慢慢翻翻,真相应该不远了。


不过李老板没有这个耐心等了,他又下了个新的App,叫啥食色?难道他要学做菜了?


三、总结


大多数人都有路径依赖的,好不容易设计了一个签名,必须得用上呀。所以追踪签名函数的堆栈,是个定位的好方法。


字符串加密很重要,一堆接口url直接暴露,太不高级了。最土的办法做个base64嘛,起码不会被jadx轻松搜到。

28.png


为学之道常将狮子为喻,盖以狮子游行,不求伴侣。行动一步,群兽绝野,肝胆裂。为学之人亦复如是。


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


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


相关文章
|
7月前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
913 0
|
27天前
|
开发框架 监控 .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
|
3月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
4月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
4月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
4月前
|
C# 开发工具
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
|
4月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
6月前
|
移动开发 小程序 开发工具
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
579 1
|
6月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取
|
7月前
|
数据采集 小程序 网络安全
云擎技术---分析工信部APP备案的“传闻”
APP备案并非新事物,自2005年起已有非经营性互联网信息服务备案制度。备案针对的是网站主办者,而非用户,不涉及个人用户网络访问。网络接入服务提供者包括ISP和IDC,不限于三大运营商。通知要求不为未备案网站提供接入,但不影响国外软件使用。个人开发者不能涉及经营性内容,备案审核时长1-20个工作日。境内服务器和国内应用商店需备案,境外则无需。手机厂商不会开启白名单制,仅实行黑名单制。APP备案与民营经济发展壮大意见不冲突,工信部有权颁布相关规定。该政策不存在逐步试探底线情况,所有解读均有法律依据。
134 3
云擎技术---分析工信部APP备案的“传闻”