SCTF 2020 是作为第六届XCTF国际联赛的第三场分站赛,由我们 Syclover 小组的师傅们为本次大赛提供了出题,7 月 4 日上午九点开始,7 月 6 日上午九点结束,时长两天。
两天的比赛战况可以说是动荡起伏,激烈程度也出乎了我们出题师傅的意料,尤其是排行榜前三名一直风云变幻。第一天上午还比较平静,到了中午时候各大强队就开始陆续发力了,后面随着题目地不断放出,比赛排行榜也在一直更迭。
第二天的夜里各大战队都还在肝题目,排名第一的 W&M 战队的师傅最后一天通宵肝出来了两个题目的一血,直到最后一个小时排名第二的 L3H Sec 战队还丢出来了一道 Web 题目的一血,让人在想他们是不是要翻盘了。
关于比赛更详细的情况可以看下 XCTF 社区的这篇文章,《SCTF 2020 W&M高位出圈丨5元代打出题人,冲鸭!》。
文章开始需要提下的就是,在如今看雪论坛的用户一发关于安卓加固的文章动辄就是有关脱壳机、vmp、函数级指令抽取或者各大厂商的加固等技术的情况下,为何我要发一个代码抽取壳的分析,并且还是早期的那种整体抽取、整体还原回去、没有混淆、代码风格十分民风淳朴的那种壳…
原因是我开始尝试复现论坛中一些很优秀的关于 so 层的分析帖子时候,尽管很多帖子都力所能及进行了十分详细的说明,可是有些步骤我复现起来还是觉得不太理解或者有点力不从心,很多时候也是因为一些知识点和操作对大佬来说是比较简单的事情,说起来比较琐碎大佬就给一笔带过略了。
然后自己也尝试着去找一些 App 的 so 文件或者厂商加固的 App 进行分析,但是移动安全毕竟发展了这么多年,很多保护对抗技术都很成熟了,结果就是很多时候分析计划首先卡在了混淆上了…
混淆是件很头疼的事,变量函数名混淆、汇编指令的混淆、ollvm 混淆等这些都很好地阻碍了入门分析者的脚步,很多时候我们只是刚入门的新手,so 层的分析还不太熟练,壳和加固原理也没有那么的清晰,去混淆也没有那么手到擒来,很多文章能浅显的读懂但是没有碰到过一个很好的分析案例来帮我们巩固等等…一言以蔽之,段位太低了。
然后问题就出现了,刚入门想提高,然后去找 App 练手分析,结果一看首先就是各种胡里花哨的混淆甚至连 JNI_Onload 函数都找不到,但是想着逆向分析要有耐心,更是想到了看没几天的四哥 scz 刚发的文章 《有技术追求的人应该去挑战那些崇山峻岭》,里面说到:
“对于某些志存高远的逆向工程爱好者来说,或者对于一些永远充满好奇心的人们来说,破解如果只是拼手速,显得没劲。我要是你们,我就去剁一下Burp企业版。”。
最近又找了个不符合核心价值观的 App 练手,比上篇帖子中的那个还要过分,本来还在犹豫要不要写帖子发出来,后 @r0ysue 巨佬说这是伸张正义打击违法犯罪的事情表彰还来不及,遂仔细整理了下分析思路和经验来发帖子了,给像我一样的入门者提供一个完整的案例来分析练手,以提升巩固学习到的零碎的技术,顺便打击下违法犯罪。
由于这个 App 的每一个界面都十分违规就不展示了,这里让我们脱离 App 的内容本身,把重点放在技术方向上。
当我们看到这里时候,第一直觉是以破解内购的思路去购买 vip,本地修改观影次数改成无限次,但是这样是不行通的,在分析过程中逐步会发现这个 App 的防护工作做的蛮好的,首先是加了壳,然后通信过程中给数据进行了加密,最重要的是这个 App 是在服务器进行了 token 的管理和验证的,和简单内购就可以破解的 App 呈现截然不同的样子,下面让我们通过一点点分析这个 App,来熟悉 App 的一些简单的防护策略和对应的逆向思路。
frida 是一个十分强大的工具,已经学习它有一段时间了,但也只是零零碎碎的练习与使用。最近在对一个 APP 进行分析的过程中,使用 frida 完成了脱壳、hook 破解、模拟抓包、协议分析的操作,可以说是一条龙服务了, 感觉十分有意义,学到了很多,对 frida 的理解和掌握程度也提高了不少,记录下来这次实战分享给各位正在学习 frida 的看雪用户。(在看雪上论坛水了这么久,也该反馈些东西了,逃
frida 入门这里就不多说了,论坛已经有很多优秀的入门帖子了,我也是看着这些帖子一点一点学习的。不过提一下我在安装时候踩的坑,当时折腾很久也安装不上心态被搞得有点爆炸。。