看雪.京东 2018 CTF 第十五题 智能设备 点评与解析
第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 第九题 PWN-羞耻player 点评与解析
看雪.京东 2018 CTF 第十一题 PWN-3pigs 点评与解析
看雪.京东 2018 CTF 第十二题 破解之道 点评与解析
看雪2018安全开发者峰会
2018年7月21日,拥有18年悠久历史的老牌安全技术社区——看雪学院联手国内最大开发者社区CSDN,倾力打造一场技术干货的饕餮盛宴——2018 安全开发者峰会,将在国家会议中心隆重举行。会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。此外峰会将展现当前最新、最前沿技术成果,汇聚年度最强实践案例,为中国软件开发者们呈献了一份年度技术实战解析全景图。
戳下图↓,立即购票!