某设备注册加密分析

admin 2021年9月23日18:00:07评论85 views字数 2628阅读8分45秒阅读模式

某设备注册加密分析

本文为看雪论坛优秀文章
看雪论坛作者ID:chionyuna


本文章仅作学习交流用途,最近看个样本,是4代注册协议了,来兴致分析了下。
 
某设备注册加密分析
 
跟3代比,没有了finger和pri。我猜测data和ep也是八九不离十,也是这两个东西。

某设备注册加密分析

jni注册是这3个函数,比之前少了很多,后面hook了下w11是主函数加密。之前tn,pri都是在java层加密的。现在全部放在了ndk中。
 
进去w11这个之后,就是ollvm混淆的,hook一遍入参之后:

某设备注册加密分析
 
这里先从rsakey出发,为了验证之前的猜想。查看引用,

某设备注册加密分析

跟到这一块有字符串加密了:

某设备注册加密分析

那直接frida看内存就行。
 
这里推荐用unidbg去跑这个脚本,刚好之前龙哥也跑过sm,拿来就用。
 
先unidbg下个断点。
Debugger debugger = emulator.attach();debugger.addBreakPoint(module.base + 0x17E00+ 1);

断下来之后在控制台直接看这一片的内存。
 
某设备注册加密分析

一清二楚了。
sub_8C1E8(v48, &byte_DB176, *orgation);sub_8C1E8(v48, &byte_DB183, &byte_DB186);sub_8C1E8(v48, &byte_DB18E, *appiddetaily);sub_8C258(v48, &byte_DB194, COERCE_UNSIGNED_INT64(2.0), HIDWORD(COERCE_UNSIGNED_INT64(2.0)));sub_8C258(v48, &byte_DB19B, COERCE_UNSIGNED_INT64(3.0), HIDWORD(COERCE_UNSIGNED_INT64(3.0)));sub_8C1E8(v48, &byte_DB1A4, v52);// data  这个时候的data已经加密好了 随机数的md5keysub_8C1E8(v48, &byte_DB1A9, v50);// tn a100str(有b1,就是data加密前的str)+ep+orgation+appid+sm_tn 的md5 加密,在一次rsasub_8C1E8(v48, &byte_DB1AC, v51);// ep 随机数的rsa

拿到这些,8c1e8一看就是hash.put这样的操作。
 
先从ep开始分析。在5280c这块查看了引用(这是另一个so,本文中调试的so不是这个地址)。

某设备注册加密分析

某设备注册加密分析

unidbg断下来之后。看看这个函数的参数。一般都是r0-r4.r0就是第一个参数。

某设备注册加密分析

更加确定了ep会用rsa加密。
 
第二个参数。

某设备注册加密分析

分析过3代的都知道,是根据一个随机数加密的rsa。这个随机数就是指纹最终加密的aes的key。
 
这里我把它固定住了。

某设备注册加密分析

从这个函数黎赋值的跟进去:

某设备注册加密分析
 
某设备注册加密分析

用了这些c库,那就是随机值了,当前时间为随机种子。把它固定住好分析。
 
然后再跟进去51200这个地址,大致看一下,也就是调用java层的rsa加密。
 
这里可以通过unidbg的jni打印来验证猜想。

某设备注册加密分析

确实是,那直接从unidbg中hook住这些结果看看。

某设备注册加密分析

这是我写3代的时候写的代码,结合unidbg输出看看。

某设备注册加密分析

果然一看:

某设备注册加密分析

那没事了。跟3代一样。
 
继续分析tn,回到开始hash.put这里。也是同样的套路。废话我就不多说了。

某设备注册加密分析

到这里要注意,aa994是一个append操作。byte_d51fa就是sm_tn。这个也很熟悉。51200就是rsa加密的函数。然后hook住这个v40。
 
是一串md5、从4d06c那里打下断点来看,

某设备注册加密分析


某设备注册加密分析

v43是字符串拼接之后的东西,应该是md5了一下。拿去验证一下,结果是的。

某设备注册加密分析

最后在验证一下这个值,是对的, tn的加密值也就出来了。

某设备注册加密分析
最后重头戏,看data。

data这里有很多处引用。慢慢分析吧,也可以根据unidbg先去打印一遍函数的执行流程,根据流程来trace。

某设备注册加密分析

这里我也是习惯断在函数的前一个地址。

某设备注册加密分析

v68就是之前那个随机数了。v66是res,那么v67是啥。
 
v54 = sub_6D46C(a3, &v67);
 
这个函数引用了。a3就是我们需要加密的str。这个把a3做了一些操作。
 
deflateInit2_(&strm, 9, 8, -15, 8, 0, &byte_D5C55, 56); deflateEnd(&strm);
 
里面用到了压缩算法,那就是把整体的a3压缩了一遍,在aes一下。4c140里面是:

某设备注册加密分析

某设备注册加密分析

的确从内存中看,也是byte流。

为了进一步的验证,我把hex提取出来。解压一下试试:

某设备注册加密分析

没啥问题。最后为了验证那个aes的算法。我们生成出来的data是根据随机值加密的。
 
固定住了,key也就固定住了。
 
拿到结果,进行解密一下,在解压缩。

某设备注册加密分析

正常解。最终的算法我就不放了,自己研究一下就能搞定,都是标准算法。没有任何魔改的点。
 
最终试试。

某设备注册加密分析

没有任何毛病。
 
附上样本 链接:https://pan.baidu.com/s/17p3dWoFPMgPNHpNltqmEOg 
提取码:mr8l
app名:本地探聊陌生交友
 
unidbg部分的代码,需要大家自己去龙哥星球下载啦。https://t.zsxq.com/JEUVfYf
 
另外:有个小问题,

某设备注册加密分析

烦请大佬不吝赐教。



某设备注册加密分析 


看雪ID:chionyuna

https://bbs.pediy.com/user-home-775817.htm

*本文由看雪论坛 chionyuna 原创,转载请注明来自看雪社区



某设备注册加密分析

官网:https://www.bagevent.com/event/6334937


某设备注册加密分析


# 往期推荐

1. large chunk分配过程调试

2. 混淆后OKHTTP框架的通用抓包方案探索

3.CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

4. 高Glibc版本下的堆骚操作解析

5.新人PWN堆Heap总结off-by-null专场

6. CVE-2012-3569 VMware OVF Tool格式化字符串漏洞分析



某设备注册加密分析
公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]



某设备注册加密分析

球分享

某设备注册加密分析

球点赞

某设备注册加密分析

球在看



某设备注册加密分析

点击“阅读原文”,了解更多!

相关推荐: 如何做系统功能FMEA

故障模式及影响分析(FMEA)是一种系统性分析方法,用于识别潜在失效模式、失效原因及其对系统性能的影响。FMEA可以在系统设计的不同阶段应用,随着设计的不断深入,反复更新。当系统可以用功能框图表示时,FMEA就可以开始。 FMEA的适用范围非常广泛,可以有不同…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年9月23日18:00:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某设备注册加密分析http://cn-sec.com/archives/554556.html

发表评论

匿名网友 填写信息