App逆向百例|15|某特惠App参数分析

简介: App逆向百例|15|某特惠App参数分析

观前提示:

本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除

样本:aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMWpMMEs3TGZTb3hEOUZURW1SOFhmakE/cHdkPWxpbm4=

0x1 抓包

直接抓包 找到本次受害参数api_signedata

0x2 api_sign

直接搜索api_sign 随便选一个都行

跳转过来后根据代码逻辑找具体生成位置

一直进一直进 最终到达可以看到这里为调用了gs方法 却点不进去了 观察方法流程 可以看到有初始化方法

进到初始化方法

点进去keyInfo 可以看到这里加载了libkeyinfo.so

往下看 看到gs方法 最终调用的native方法为gsNav

打开大姐姐 进到so文件 导出区域搜索JAVA_可以看到是静态注册

进到gsNav根据内容大致可分为

进到j_Functions_gs直接看伪代码逻辑

前面部分为对map的操作 大概就是取key和value拼接成字符串的操作

继续往下看 看到后面出现了j_getByteHash

进来一看发现是SHA1算法

所以 大概流程可能就是map取key和value拼接 然后sha1

具体几次sha1加密 有无加盐 拼接的字符串长啥样 还得看hook 静态分析到这 该动态分析了

直接hookj_getByteHash方法一把梭

0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
aeb47cc0  61 65 65 34 63 34 32 35 64 62 62 32 32 38 38 62  aee4c425dbb2288b
aeb47cd0  38 30 63 37 31 33 34 37 63 63 33 37 64 30 34 62  80c71347cc37d04b
aeb47ce0  61 70 69 5f 6b 65 79 3d 32 33 65 37 66 32 38 30  api_key=23e7f280
aeb47cf0  31 39 65 38 34 30 37 62 39 38 62 38 34 63 64 30  19e8407b98b84cd0
aeb47d00  35 62 35 61 65 66 32 63 26 6c 6f 67 73 3d 70 3a  5b5aef2c&logs=p:
aeb47d10  61 63 74 69 76 69 74 79 5f 69 64 25 33 44 37 35  activity_id%3D75
aeb47d20  30 30 30 34 25 32 36 61 63 74 69 76 69 74 79 5f  0004%26activity_
aeb47d30  70 61 72 61 6d 25 33 44 25 32 35 37 42 25 32 35  param%3D%257B%25
aeb47d40  32 32 63 6f 6d 6d 6f 6e 5f 73 65 74 25 32 35 32  22common_set%252
aeb47d50  32 25 32 35 33 41 25 32 35 37 42 25 32 35 32 32  2%253A%257B%2522
aeb47d60  68 6f 6c 65 25 32 35 32 32 25 32 35 33 41 25 32  hole%2522%253A%2
aeb47d70  35 32 32 31 25 32 35 32 32 25 32 35 32 43 25 32  5221%2522%252C%2
aeb47d80  35 32 32 73 74 5f 63 74 78 25 32 35 32 32 25 32  522st_ctx%2522%2
aeb47d90  35 33 41 25 32 35 32 32 2d 39 39 25 32 35 32 32  53A%2522-99%2522
           0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
bb5f7608  61 65 65 34 63 34 32 35 64 62 62 32 32 38 38 62  aee4c425dbb2288b
bb5f7618  38 30 63 37 31 33 34 37 63 63 33 37 64 30 34 62  80c71347cc37d04b
bb5f7628  33 37 37 63 33 32 37 36 37 32 32 34 61 36 66 39  377c32767224a6f9
bb5f7638  37 65 66 30 31 65 61 63 62 32 34 32 36 30 31 39  7ef01eacb2426019
bb5f7648  64 61 37 35 61 65 33 66                          da75ae3f

通过hook可知 俩次的头部都出现aee4c425dbb2288b80c71347cc37d04b这个固定字符串 可能是一段salt

每次计算都调用三次j_getByteHash根据代码分析可知

第一次为取包信息进行sha1

后面俩次就为api_sign的计算操作

验证第一次sha1 将salt+拼接的字符串进行一次sha1

然后sha1结果拼接salt再进行一次sha1

结果正确

0x3 edata

跟前面api_sign一样 最后跟到libkeyinfo.so

这里edata走的是esNav方法

大姐姐跳转过来和前面分析的一样

直接进到j_Functions_es

往下随便一翻就看到调用了AES标准算法 模式为AES/CBC/PKCS5Padding

而后结果经过拼接进行base64编码

那接下来的目标就很明确了 找KEYIV

根据拼接内容往回找 最终v59确定为IV 继续找IV的来源

往上看即可看到 就是随机生成的

而第二次拼接的v48为AES结果

根据代码可以看到KEY的来源

懒得看了 直接hook看KEY是否固定值

算法名:AES|Hex密钥:cdd17ab29b84b32552ddcfbb4abf0225
算法名:AES|Hex密钥:cdd17ab29b84b32552ddcfbb4abf0225

根据hook直接拿到结果简简单单

验证结果

base64解码 能看到解码后的结果前16位为拼接的IV

然后AES解密

成功解密


感谢各位大佬观看

感谢大佬们的文章分享 

如有错误 还请海涵

共同进步 带带弟弟


点赞 在看 分享是你对我最大的支持

逆向lin狗

相关文章
|
1月前
|
UED
|
8天前
|
开发框架 监控 .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月前
|
Java
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
|
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,只能通过内网访问,无法从公网访问的情况下)