第一篇文章看这里,某app最新版 vmp算法分析一,这是第二篇关于赫利俄斯(H)的,拉顿(L)和H是同一个算法,所以L马上要下线了,而且最近看到了r0ysue代发了该公司的该算法的升级迭代招聘要求,80~130W,北深杭,寻思着已经防护的那么好了,还高薪招人,真是不给我们逆向留条活路啊.
不过这个H和L都两三年没变过了,都是hash时间戳(K)和开头的随机数,这应该是校验时间的完整性,防止攻击者通过改时间戳来逃避时间校验.因为正常你请求发过来时差不可能差几个小时,几天这样的,这种肯定就是重放的非正常用户,直接给你拦截掉.因为这个H是好几个月前看的,记得不是很清楚,说个大概逆向思路.
vmp核心还是trace,常用的是frida和unidbg,如果是ios几乎都是frida,首先这个值一直在变,需要把时间戳和随机数固定住,随机数用的是srand,时间戳之前用的是gettimeofday,现在版本是clock_gettime,这两个hook住H和L就是定值了,固定随机值也是很常见的手段,不然结果一直变化很干扰分析.
srand如论是32还是64位都是返回4字节的,如果把结果固定为0x12345678,那么H解base64后前4字节就是78563412,小端序.关键结果来自后面32字节,算法已打码.
核心需要的就是K和一个0x22长的table,这个table由随机数决定
输入就是hashlib.md5(randomBytes+aid.encode()).hexdigest(),trace文件中有敏感信息就不放出来了,这个算法比较简单,也不更新,直接看trace的文件往上追就可以.怎么看?这也是一个技巧,有单字节的,2字节的,4字节的,8字节的,怎么找上面的末64位, 然后往前推出所有流程?全靠经验,只可意会,都是一步步从中小厂过渡来的,没有固定的方法,总有一个方法可以分析出来,只是时间的问题.该app的国际版也是同一套算法哦!
2022年1月11日电视剧<开端>在腾讯视频独播,开播三天,该剧播放量破亿,完结后,播放量突破12亿,成为开年爆款网剧.内容是讲述了游戏架构师肖鹤云和在校大学生李诗情在遭遇公交车爆炸后“死而复生”,于公交车出事的时间段内不断经历时间循环,努力阻止爆炸、寻找真相的故事.最终男女主经历了数十次循环和折磨才最终找到真相并阻止爆炸.
拿这个类比逆向还原算法,在把所有随机的东西都固定住后(时间戳,随机数,pid等等),这个算法已经在自己可以掌控的范围内,你想对它做什么都行,hook,监控,直到还原出最终的算法,样本都只有一条确切的执行流.这样剩下的就是时间的问题.如果不是vmp还可以借助ida f5的代码加快还原速度,可惜的是大厂的核心算法都是放到vmp里,f5看不到有用的东西.
现在vmp已经恶心到了都是vmp加魔改算法或者自定义算法,更恶心的是安全人员针对上面说的固定随机还原算法也有对抗,直接根据随机的不同走不同的分支,比如设计1000套算法,根据时间戳算出一个值,对应哪个走哪条流程,这样如果要完整还原全部算法工作量直接提升几个数量级,而且还支持一键算法变异,key,iv,table,常量全部给你一键替换,甚至可以做到算法执行流变异,匹配这些特征也是很巨大的工作量.没错就是下一篇的美杜莎(M),可以期待一下.目前弄过的大厂中似乎只有这个样本使用这种随机执行流的,感觉各大厂商马上也要上线了.
提取剧透一下M有4套自写对称加密,16套hash,单独拎出来一套hash都要比H麻烦的多,甚至某5种情况下,执行流可以达到6000多万行汇编,其余11种只有2000多万行...后面的M更精彩
这是第一篇有小伙伴的留言,珍爱生命,远离大厂,月薪5k的爬虫让我去对抗一群年薪百万的安全?
标签:字节,app,算法,时间,随机,随机数,最新版,vmp From: https://blog.csdn.net/xmx_000/article/details/143855292