长亭百川云 - 文章详情

某老牌反作弊产品分析-(存在加密漏洞可被中间人攻击)二

矛和盾的故事

51

2024-07-13

目录:
5.8、采集设备信息
初始化获取设备信息的类名与对应的方法名
000000709EDF9090  00 00 00 00 00 00 00 00  05 00 00 00 61 6E 64 72  ............andr

多层反射获取设备信息

双重反射获取设备信息
其它设备信息:

在跳出VM的Hadnle处下断点即可分析出获取其它的设备信息。

5.9、VM加密设备信息

每获取一次设备信息加密一次,在VM中执行对应Handle加密。

.text000000709EA93920 A8 02 40 B9                   LDR             W8, [X21]

六、加密流程分析

6.1、压缩设备数据
计算设备信息CRC与设备数据组合
.text:000000709EB765F8                   EncData_sub_70576365F8 

压缩组合后设备数据

__int64 __fastcall sub_705762D9DC(__int64 a1, _QWORD *a2, __int64 a3, __int64 a4, unsigned int a5)
6.2、生成AES KEY IV

随机数组合生成AES KEY IV

gettimeofday
6.3、RSA加密AES KEY IV

将随机数AES KEY IV组合成一个字符串fda958f6-07e5-47e4ae2f7b-96b5-4a,RSA私钥加密该字符串。
RSA私钥(隐去部分):

MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALE2OfQ8BYg9Lq4nKGTamXyia6raCc1adzCOsFrnk/VN0s2W8yQJfYdq+QUNRHv0zANW0Uafh7nHCWeBn/GOC26xTsUku3/ElECGthT5ED0MOO8EQ6dhci4So/Y/fNuAczqDFk5RKRbmo1gz7xuCdUTQYmD+h1cjl95HGrY6TMinAgMBAAECgYBCHYwjvh0GRmVbHkrozdID+QkYdj6/+eeMG0BauhmupLlocNAH+u51joiXxOpvINbYzBRKOAzIWCT/FBKbabaDl5IhuUwV+CJ90SBLAbs/Wd+QjnUhXbyKb+Tm3+Uz2y26xWc7XdhGNe3Wjyz2+fN8CbfdC2SlUnibADOEQXJFIQJBAOUgSH/+uyIJKo6DOHJSfrhDlYX875H4Yq8ifuS1R7hQcK5T8sYV/OIzTRSvFaYL+FG8nA9vr8rulojcDPYzqrcCQQDF/yuUtb1wliR+zH7iE/5pv0dGfuwhSec777TYuLEP6VnX68zI/Kyq2JdIYYO7MidjH4bFd50NnRacHi3AtKGRAkEAiU+Gg0Y6CVSq70sOSdzMWksOUYTaYYUURtaKay+Ecp2qWZ6vkCxfJ4QM/odKlv73aqx4bfvFwvymtBADqIwgEwJBAIHtZq3ZbQz6mcxTaVf2Atdl2+HY3B8kHgdoz2YAHMDyQjC83c9ub+hU5UFsLEOlL8+OGqRuT7NlSDb+Xsu8POECQQDPcNOysMNbrLh1mGe6ydUsojSbheAIOZPQ/lhUbhzPXAXTYaPkTq7uty6SYZOMtWLxIFZ1eA9HHm3tJOCgC888

反射调用JAVA加密:

.text:000000709EB328D0                   decode_sub_70575F28D0

RSA私钥加密后的AES KEY IV:

00000000   98 93 1B 85 66 82 76 26  88 2B 09 13 AA 22 4E 76  
6.4、AES加密压缩后设备数据

用随机数生成的KEY加密压缩后的设备数据:

// X0:key,x1:长度,X2:返回值
6.5、组合数据发送服务器

RSA加密后的AES KEY IV与AES加密的设备数据组合发送给服务器,组合格式图6-5所示:

图6-5

url

成功后服务器返回blackbox:

{"code":"000","desc":"k9OCtUBncUi1/r3N84z30FFW3AwxnmZnJfuKa2bhCcS/s9mKZAuBFnJ6BYRDDpUkz+fxJhWvD+bbun3eUbCyiw=="}

这个值是根据硬件ID,OAID、文件ID生成。

七、加密漏洞还原与中人间攻击过程

7.1、通过私钥解析出公钥

理论上我们很难从私钥(只有d,n)中推导公钥的,也无法通过公钥推导出私钥,但是该SDK使用了私钥为PKCS编码格式,该私钥数据可以按如下结构进行解析:

RSAPrivateKey ::= SEQUENCE {

从结构中可以看出私钥其实是含有生成密钥对的p和q以及公私钥对(e,n)。通过私钥格式分析可以分析出公钥数据,用代码实现如下:

加载私钥:

 /**

解析出公钥:

     //从SDK中的私钥解析出公钥(隐去部分)
7.2、公钥解密出AES KEY IV

得到公钥后做解密测试,只要能把上报到服务器端的请求体中加密的AES KEY IV解密出来就能解出AES加密的设备数据。

 //私钥加密的AES KEY IV
7.3、AES解密出压缩后设备数据
 /**

还有一层解密是VM中的,要还原大部分Handle,VM代码没有强混淆,分析起来还是比较容易的,这里就留一个坑吧,给有意愿深入搞搞的同学入坑。

八、总结

业务:

该产品也是多年的老品牌,最近几年从营销与渠道反作弊转向金融安全领域,可能在营销与渠道反作弊发力点偏弱,产品从体验、移定、易用、安全方面都有很多的不足点。

代码:

产品包休过大,架构不够精简,模块过多,代码冗余,对抗逆向方面将部分算法进行VM还是比较有效的。很多空数据加密时未做判断,导致空数据时也要执行VM引擎影响性能。

安全:

安全能力还是可以的,代码中字符串加密,代码逻辑通过AB两个模块拆分逻辑,A模块中大多数方法逻辑通过B模块中的VM引擎来实现,增加逆向度,不足点就是使用了不安全的密钥加密方式。

样本获取方式,关注公众号,公众号输入框回复“td” 获取下载链接。

作者简介:

我是小三,目前从事软件安全相关工作,虽己工作多年,但内心依然有着执着的追求,信奉终身成长,不定义自己,热爱技术但不拘泥于技术,爱好分享,喜欢读书和乐于结交朋友,欢迎加我微信与我交朋友(公众号输入框回复“wx”即可)

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2