App逆向百例|14|某旅行攻略App zzzghostsigh参数分析

简介: App逆向百例|14|某旅行攻略App zzzghostsigh参数分析

观前提示:

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

样本:aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMVVRVnNwRzJvTWVCRGJLOXlvSHZmdGc/cHdkPWxpbm4=

0x1 准备工作

样本无壳 存在证书验证 使用objection脚本直接Pass

本次受害参数

jadx-gui打开样本APK

直接搜索zzzghostsigh

跳转过来查找用例

继续跳转

可能在ghostSigh里面实现 在objection 验证一下结果

Arguments com.mfw.core.login.util.SecurityTools.ghostSigh(GET&https%3A%2F%2Fmapi.mafengwo.cn%2Fsearch%2Fsearch%2Fget_result_list%2Fv3&app_code%3Dcom.mfw.roadbook%26app_ver%3D10.8.6%26app_version_code%3D1016%26brand%3Dgoogle%26channel_id%3DTengXun%26dev_ver%3DD2218.0%26device_id%3D088fd48f2e39f6dd%26device_type%3Dandroid%26hardware_model%3DPixel%26has_notch%3D0%26jsondata%3D%257B%2522switched_search_type_by_user%2522%253A0%252C%2522page%2522%253A%257B%2522boundary%2522%253A%25220%2522%252C%2522num%2522%253A10%257D%252C%2522keyword%2522%253A%2522%25E5%25B9%25BF%25E5%25B7%259E%2522%252C%2522is_correct%2522%253A%25220%2522%252C%2522search_id%2522%253A%2522616876f0-d55b-4642-9861-49d1487d4677%2522%257D%26mfwsdk_ver%3D20140507%26o_coord%3Dgcj%26o_lat%3D23.210456%26o_lng%3D113.276382%26oauth_consumer_key%3D5%26oauth_nonce%3D20758a6d-750b-4bfb-aff4-05e194f652e4%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1670304163%26oauth_token%3D0_0969044fd4edf59957f4a39bce9200c6%26oauth_version%3D1.0%26open_udid%3D088fd48f2e39f6dd%26screen_height%3D1794%26screen_scale%3D2.88%26screen_width%3D1080%26shumeng_id%3DDurXXFIkF8p6cnynFKceRZixZovBGYlg0uwzlwlxeMcSE5umYEfhbsraVbvpLsybIFUGNsoCyBKpymAQDzelEQpg%26sys_ver%3D8.1.0%26time_offset%3D480%26x_auth_mode%3Dclient_auth)
(agent) [292326] Return Value: d043330bcff1ecfe2bd3e096ab729986c6eb1e9e

得到传入明文和传出结果 接下来只需要找出具体算法实现即可

最终定位到libmfw.so中的xPreAuthencode

其中this.a为主动调用传入的字符串

回到上层 从这里知道传入的就是包名

从objection验证可确定

0x2 Unidbg主动调用

直接用Unidbg造个框架 无需补环境就能跑出结果

主动调用

对比结果一致

0x3 加密分析

从加密结果可知 无论我们输入的长度多长 都输出固定长度密文

那可以猜测这可能是一个哈希加密

而且输出的密文长度为40 可以猜测这是一个SHA1

那先拿到一份py的SHA1实现

github:https://github.com/alex-a-robinson/SHA1/blob/master/sha1.py

这是SHA1的一个加密流程

从中可以知道一个SHA1会经过20+20+20+20=80轮的加密 而且ABCDE贯穿了整个加密 最终得到一个40位的结果

ABCDE对应的就是魔数 每20轮对应的不同的K值 所以要判断这是不是一个SHA1只需要找到这些值就可以了

根据搜索 可以判断这是一个SHA1

那主动调用加密123456和正常的sha1对比发现结果不一致

那猜测就是有魔改 从这里可知是从x0里取出魔数

debugger onsole看x0

01 23 45 67 →0x67452301

89 AB CD EF →0xefcdab89

FE DC BA 98 →0x98badcfe

7C 1F 4A 5E→0x5e4a1f7c

76 54 32 10→0x10325476

原本的魔数为0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0

从这里可以看到后俩个魔数被更改了 手动更正魔数运行看结果

看来不仅仅更改了魔数 存在其他魔改

从前面可知 SHA1存在80轮加密 那我们手动输出80轮加密的每个结果 对比tracecode不就行了

根据对比每轮的结果发现在第16轮的时候开始出现不同

前15轮的K值为0x5A827999

在第16次循环的时候就将K值提前换成0x6ED9EBA1

搜索0x6ED9EBA1出现4次

验证结果

按照这个思路接着看第20轮往后到39轮使用的K值为0x8F1BBCDC

第40轮开始又用回K值为0x5A827999

根据tracecode可知这区间又出现EOR又AND可知 这里的计算方式和前16轮一致 K值也一致

搜索0x5A827999可知一共出现了36次 减去前16轮 所以后面又使用了20轮

在60到79后跟原代码一致

所以算下来一共分为 16+4+20+20+20=80轮

if i <= 15:
 f = d ^ (b & (c ^ d))
 k = 0x5A827999
elif i <= 19:
 f = b ^ c ^ d
 k = 0x6ED9EBA1
elif i <= 39:
 f = (b & c) | (b & d) | (c & d)
 k = 0x8F1BBCDC
elif i <= 59:
 f = d ^ (b & (c ^ d))
 k = 0x5A827999
else:
 f = b ^ c ^ d
 k = 0xCA62C1D6

验证结果发现并不完全一致 到底是哪里的问题

根据错误位置 输出h2h3cd的值

回到tracecode搜索

从这里就可以看到0xee9397da与之相加的是0x5e4a1f7c0x2ee2fec3与之相加的是0x98badcfe

也就是需要将cd的位置互相调换

最后拼接得到结果

对比结果 输出一致



感谢各位大佬观看

感谢大佬们的文章分享

如有错误 还请海涵

共同进步 带带弟弟


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

逆向lin狗

相关文章
|
2月前
|
移动开发 小程序 开发工具
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
104 1
|
2月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取
|
1月前
4. 解决uni-app开发过程中view、image等标签出现诸如“出现错误:类型“{ class: string; }”的参数不能赋给类型“.......”
4. 解决uni-app开发过程中view、image等标签出现诸如“出现错误:类型“{ class: string; }”的参数不能赋给类型“.......”
84 0
|
3月前
|
数据采集 小程序 网络安全
云擎技术---分析工信部APP备案的“传闻”
APP备案并非新事物,自2005年起已有非经营性互联网信息服务备案制度。备案针对的是网站主办者,而非用户,不涉及个人用户网络访问。网络接入服务提供者包括ISP和IDC,不限于三大运营商。通知要求不为未备案网站提供接入,但不影响国外软件使用。个人开发者不能涉及经营性内容,备案审核时长1-20个工作日。境内服务器和国内应用商店需备案,境外则无需。手机厂商不会开启白名单制,仅实行黑名单制。APP备案与民营经济发展壮大意见不冲突,工信部有权颁布相关规定。该政策不存在逐步试探底线情况,所有解读均有法律依据。
88 3
云擎技术---分析工信部APP备案的“传闻”
|
3月前
|
移动开发 JavaScript 前端开发
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
39 0
|
3月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
85 4
|
3月前
|
算法
某圈app算法分析
某圈app算法分析
45 0
|
3月前
|
算法 安全 数据安全/隐私保护
某影视APP算法逆向分析
某影视APP算法逆向分析
43 0
|
3月前
|
算法 Java
某江app算法分析
某江app算法分析
26 0
|
3月前
|
算法 数据挖掘 数据安全/隐私保护
某合伙人app算法分析
某合伙人app算法分析
34 0

热门文章

最新文章