看雪CTF 2017 比赛进行至第六题
截止至今天中午12点,第六题破解人数为16人!
爱琴海依然位居防守方第一名~
攻击方排名前十名变动较大,比赛排名有人升、有人降。
值得注意的是,前十名又出现一些新面孔,
目前ccfer冲到第六位,EricAzhe突进第9位
随着比赛的进行,选手的表现给了我们越来越多的惊喜!
比赛悄悄的走过半程了,
还会有怎样的惊喜等着我们呢?静候各位佳音啦~
接下来我们来回顾一下第六题
看看 看雪评委和出题者是怎么说的ヾ(๑╹◡╹)ノ"。
本题是一道安卓平台下的破解题,java层用了字符串加密和类名混淆,在so层采用了花指令混淆来干扰破解者,核心算法是把注册码RC4加密后再Base64编码,然后与内存中密文比较。清理掉花指令,找到关键比较的地方后就可以破解此题。
Ericky,90后,毕业于中南大学机电工程学院。目前就职于百度网络技术有限公司。因为“网瘾少年”的缘故,我踏上了逆向破解这条“不归路”,因此也与看雪结缘。虽然不是科班出身,但是从大学开始对软件的加密解密就极为感兴趣,目前研究的方向主要是系统漏洞利用、app算法分析,app逆向脱壳等。擅长于android平台的逆向破解。
1. java 层稍作字符串加密和类名方法名混淆处理。
解题:通过阅读代码,可以知道check函数为关键函数,当返回为真的时候,注册成功。2. so 层用花指令对程序指令进行混淆,在一定程度上防止分析。
解题:编写去花指令脚本,F5 就会变得很简单。去花后 check 函数如下:
这样就能很清楚看到注册过程了。sub_19DA8 为加密函数,采用了 RC4 加密 +base64 编码。
3. 值得一提的是,so中藏关键字符串数据的方式我自己觉得挺有意思的。不知道聪明的你有没有发现呢?
4. 答案:madebyericky94528
使用工具:ApkIDE3.3(分析dex) IDA6.8(分析、调试so文件) python(base64解码) notepad(记录、爆破) Android Emulator(内核4.4 调试用) DDMS(调试用)Adb
步 骤:
此 android 题对 dex 文件名进行了简单混淆,用ApkIDE打开如下,在真正的名称前加了一堆符号,但不影响分析。
从此处可以看到主要逻辑在库文件librf-chen.so中的check函数。
IDA载入librf-chen.so,可以发现能识别check函数入口如下。
此时用F5反编译,完全不明白。
再看汇编代码,sub_286C是一个死循环,混淆分析,真正的跳转地址为loc_2874处。
来到loc_2874处,发现仅有一条语句有用,从2878直到28DE全是花指令代码,可以直接填充为0(movs r0,r0;相当于x86体系的NOP)。
并且so文件中基本只有这种花指令模式重复出现,可以写脚本自动去除花指令,也可以手动进行(时间在允许范围内)。去除之后再看check函数如下,已经很正常,且99行的比较即为关键比较。
次处比较对应汇编代码位置如下,调试可以知道此处是输入注册码经过计算后与固定字符串“JPyjup3eCyJjlkV6DmSmGHQ=”对比,看到该串中的“=”有没有想到base64,没错,就是base64,但不是直接对输入进行编码,而是输入先转化后编码。
此处编码表也很清楚。
Check函数中97行取得输入字符串,98行的sub_19DA8函数对输入进行处理,进入该函数F5,如下所示,其中第28行函数sub_5AFC即base64编码,但编码前先对输入字符串中的每一个字符进行了独立处理,由于可选参数集仅为字符和数字,范围不大,考虑不再分析算法,用爆破。
即每次输入17(注册码长度)个相同的字符或数字,在sub_5AFC函数调用前记录输出结果。
最后全部结果与“24 FC A3 BA 9D DE 0B 22 63 96 45 7A 0E 64 A6 1874 00”(“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码结果)按位对比,得到注册码“madebyericky94528”(作者打广告)。
运行成功
题外话,此题主要在去除花指令要花时间,看so文件代码发现了很多反调试,有getpid、kill、exit等,但实际却没影响,可以附加调试,JNI_OnLoad中有ptrace,但调试时nop掉与否没影响,每回都是调试几次之后就不行,必须重启。
最后感谢 WiFi 万能钥匙安全应急响应中心的赞助支持,
接下来的比赛大家一定要使出洪荒之力哦!↖(^ω^)↗
比心 ❤
上海连尚网络科技有限公司成立于
2013 年,是一家专注于提供免费上网和内容服务的移动互联网企业。连尚网络自主研发的核心产品 WiFi
万能钥匙,以分享经济的模式,通过云计算和大数据技术,利用热点主人分享的闲置WiFi资源,为用户提供免费、稳定、安全的上网服务,以帮助更多的人上网,找到属于他们的机会,改变自己的命运。
往期热门内容推荐
更多比赛详情,长按下方二维码,“关注看雪学院公众号”查看!
看雪论坛:http://bbs.pediy.com/
微信公众号 ID:ikanxue
微博:看雪安全
商务合作:[email protected]