查看原文
其他

看雪.京东 2018 CTF 第十五题 智能设备 点评与解析

看雪CTF 看雪学院 2019-09-17

第15题终于落下帷幕,

长舒一口气,来看看15题过后的排名:

第15题作者brichfire 以被8人攻破的成绩位列第8名。

第15题过后,攻击方排名如下:

最后一题已结束,排名初步确定。

我们会在明天公布获奖名单~敬请期待哦!



看雪版主&评委 netwind 点评


本题作为一道智能设备破解类题目,验证程序藏在a9rootfs文件系统中,该文件系统为ext3格式,可以将文件系统挂载到本地目录,验证程序所在路径为/BIN/SH。验证程序所用的加解密算法是变型的hex编解码算法,除了原始的hex编码,还增加了4种变型,将这4种变型叠加使用,对输入进行解码操作,得到的密文结果与校验值匹配,匹配成功后才对flag进行解密。题目思路完整,把硬件破解抽象到固件逆向中,却并没有设计太大的难度,而是引人入胜,带大家进入智能设备破解之路,非常优秀!



看雪.京东 2018 CTF 第十五题 作者简介


brichfire

bbs.pediy.com/user-410833

第十五题出题者简介:


brichfire,看雪论坛资深粉丝,喜欢程序逆向分析,长期从事基于污点传播方法的二进制代码分析和漏洞挖掘方法研究,特别感谢看雪论坛提供这么好的学习平台,喜欢的书有《0Day漏洞》、《Android软件安全与逆向分析》、《软件安全分析与应用》等。


看雪.京东 2018 CTF 第十五题 设计思路


题目类型:智能硬件



设计思路

       

验证程序作为子系统启动后运行的第一个用户程序,认证用户输入的密码,通过认证后输出flag,攻击者提交该flag即可。此外攻击者想进入系统还得进行exploit,通过对第二次输入简单的解码运算得到busybox程序的参数,只要解码后得到sh,即可执行shell,进入系统。

       

验证程序藏在a9rootfs文件系统中,该文件系统为ext3格式,可以将文件系统挂载到本地目录,验证程序所在路径为bin/sh。

       

验证程序所用的加解密算法是变型的hex编解码算法,除了原始的hex编码,还增加了4种变型,将这4种变型叠加使用,对输入进行解码操作,得到的密文结果与校验值匹配,匹配成功后才对flag进行解密,flag解密所用的秘钥是输入运算得到,如果通过修改程序跳转流程,那么解密所用的秘钥将是错误的。

 


运行环境


操作系统:ubuntu 16.04 32位

软件:qemu-system-arm 2.10版本,pediy_ctf_2018.tar.gz压缩包内的三个文件

Uboot的目标板:vexpress-a9

Uboot的内存:128M

Qemu uboot引导命令1:qemu-system-arm -M vexpress-a9 -m 128M -dtbvexpress-v2p-ca9.dtb -kernel zImage -append "root=/dev/mmcblk0 rw"-sd a9rootfs (有图形化界面)

Qemu uboot引导命令2:qemu-system-arm -M vexpress-a9 -m 128M -dtbvexpress-v2p-ca9.dtb -kernel zImage -nographic -append "root=/dev/mmcblk0rw console=ttyAMA0" -sd a9rootfs (无图形化界面)

 


解题步骤


1、分析a9rootfs的文件系统类型,将a9rootfs文件系统挂载到磁盘上的目录:sudo mount -t ext3 a9rootfs tmpfs/ -o loop

2、分析tmpfs文件系统中的文件,根据文件修改时间、或者对系统启动的理解,猜想认证程序可能是bash或者sh,系统中没有bash文件,故取出tmpfs/目录中的bin/sh文件

3、对bin/sh文件进行逆向分析,当然也可以用qemu-arm用户态模式动态调试,该程序静态编译,已经不再依赖其它动态库,因此无需再指定arm的libc库。

4、逆向写出求解算法,需要写出2个变型hex编码、2个变型hex解码和1个数组xor解码的子函数,再将这些函数有序组成解密函数,运行得到需要输入的password

5、运行子系统,输入正确的password,系统输出flag,如下图所所示

              

6、提交flag:B1732120572455BAFD30F062F9C49A8A996A8A9DDB4283



看雪.京东 2018 CTF 第十五题解析



本解析来自看雪论坛 


题目给出了一个完整的qemu环境。

 

跑起来看看,发现要输入key。

 

于是先定位这个要求输入key的程序。


$ mkdir test
$ sudo mount -t ext3 -o loop ./a9rootfs test
$ sudo rg -a "key:"
bin/sh
5600:0CS40pPD4P@ 0S:?:0UU 0p0 X         2@-0123456789ABCDEFFDB08642ECA9753113579BDF02468ACE0369CF258BE147ADFA50B61C72D83E94please input your key:%100sC1371DA51A9030079E21DCDC5B78E38563872139C13F6F5B7B541D49541B0847551A16435D060D0A66%s%s%c

把sh载入IDA分析,搜字符串,找到入口点为0x11374,如下图。

 

 

动态调试即可发现满足break出while循环那个条件即为正解。

 

主要的加密函数就是图中标注的hash2。如下图,函数功能比较简单,基本就是unhex和enhex,结合简单的单表替换,故均可逆。

 

 

func1比较冗长,动态调试发现好像没干什么事,就此忽略。

 

于是编写出这些编码函数的解码函数,


from pwn import *
v9 = unhex("C1371DA51A9030079E21DCDC5B78E38563872139C13F6F")
def dexor(s):
   ret = s[0]
   for i in range(1, len(s)):
       ret += xor(s[i], s[i-1])
   ret = ret[::-1]
   return ret

def deunhex1(s):
   dic = "13579BDF02468ACE"
   s = enhex(s)
   s = [int(i, 16) for i in s]
   s = ''.join([dic[i] for i in s])
   return s

def deunhex2(s):
   dic = "FA50B61C72D83E94"
   s = enhex(s)
   s = [int(i, 16) for i in s]
   s = ''.join([dic[i] for i in s])
   ret = ''
   for i in range(0, len(s)/2):
       ret += s[2*i+1]
       ret += s[2*i]
   return ret

def deenhex1(s):
   ret = ''
   dic = "FDB08642ECA97531"
   for i in s:
       ret += hex(dic.index(i))[2:]
   return unhex(ret)

def deenhex2(s):
   ret = ''
   dic = "0369CF258BE147AD"
   for i in s:
       ret += hex(dic.index(i))[2:]
   return unhex(ret)

print deenhex1(deunhex1(dexor(deenhex2(deunhex2(dexor(deenhex1(deunhex2(dexor(deenhex2(deunhex1(dexor(v9))))))))))))


得到答案为2018ctf0520pediy1314yyp,提交发现不对。然后再动态跑一下,输入这个key,


$ qemu-arm ./sh
please input your key:2018ctf0520pediy1314yyp
flag:you got it [B1732120572455BAFD30F062F9C49A8A996A8A9DDB4283]
you have a chance to exploit it:
qweoijqwjq
: applet not found


提交B1732120572455BAFD30F062F9C49A8A996A8A9DDB4283对了。

 

这里看起来是可以通过busybox执行命令了,对应逻辑如图。

 

 




合作伙伴



京东集团是中国收入最大的互联网企业之一,于2014年5月在美国纳斯达克证券交易所正式挂牌上市,业务涉及电商、金融和物流三大板块。

 

京东是一家技术驱动成长的公司,并发布了“第四次零售革命”下的京东技术发展战略。信息安全作为保障业务发展顺利进行的基石发挥着举足轻重的作用。为此,京东信息安全部从成立伊始就投入大量技术和资源,支撑京东全业务线安全发展,为用户、供应商和京东打造强大的安全防护盾。

 

随着京东全面走向技术化,大力发展人工智能、大数据、机器自动化等技术,将过去十余年积累的技术与运营优势全面升级。面向AI安全、IoT安全、云安全的机遇及挑战,京东安全积极布局全球化背景下的安全人才,开展前瞻性技术研究,成立了硅谷研发中心、安全攻防实验室等,并且与全球AI安全领域知名的高校、研究机构建立了深度合作。

 

京东不仅积极践行企业安全责任,同时希望以中立、开放、共赢的态度,与友商、行业、高校、政府等共同建设互联网安全生态,促进整个互联网的安全发展。


CTF 旗帜已经升起,等你来战!

扫描二维码,立即参战!


看雪.京东 2018 CTF 

看雪.京东 2018 CTF 第一题点评与解析

看雪.京东 2018 CTF 第二题点评与解析

看雪.京东 2018 CTF 第三题点评与解析

看雪.京东 2018 CTF 第四题点评与解析

看雪.京东 2018 CTF 第五题点评与解析

看雪.京东 2018 CTF 第六题点评与解析

看雪.京东 2018 CTF 第七题 密室逃脱 点评与解析

看雪.京东 2018 CTF 第八题 薛定谔之猫 点评与解析

看雪.京东 2018 CTF 第九题 PWN-羞耻player 点评与解析

看雪.京东 2018 CTF 第十题 暗风吹雨 点评与解析

看雪.京东 2018 CTF 第十一题 PWN-3pigs 点评与解析

看雪.京东 2018 CTF 第十二题 破解之道 点评与解析

看雪.京东 2018 CTF 第十三题 NeuralCrackme 点评与解析

看雪.京东 2018 CTF 第十四题 PWN-mine sweeping 点评与解析



看雪2018安全开发者峰会

2018年7月21日,拥有18年悠久历史的老牌安全技术社区——看雪学院联手国内最大开发者社区CSDN,倾力打造一场技术干货的饕餮盛宴——2018 安全开发者峰会,将在国家会议中心隆重举行。会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。此外峰会将展现当前最新、最前沿技术成果,汇聚年度最强实践案例,为中国软件开发者们呈献了一份年度技术实战解析全景图。



戳下图↓,立即购票








戳原文,立刻加入战斗!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存