-
-
[原创] KCTF 2021 Win. 第一题 算力与攻击模式
-
发表于: 2021-11-17 18:43 4123
-
算力与攻击模式
【摘要】
“签到题”标签,自然是尽可能简易,本题主要采用了CRC32算法。提供了样本name/key,设计者有预想的简单攻击模式,但由于掌握信息的差异,攻击者不一定会按照设计者思路进行攻击,这里阐述设计者预想的攻击模式和另一种预想之外的攻击模式,后者触发了多解。
第1节 算法原理
1.1 静态分析
这里我们直接采用静态分析的方式,直接样本进IDA Pro。如图1-1,其为程序入口经过运行时初始化后的设计者代码入口。
图1-1 用户代码入口
DialogFunc是我们的窗体消息响应函数,如图1-2,eWinMsg是我们添加的enum类型,内容参考附件xtypes.h内容,提取自VS2019的C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinUser.h,可通过加载xtypes.h添加;也可以通过【View|Open Subviews|Local Types】让后Insert键粘贴xtypes.h内容添加。定位到函数参数上,通过Y快捷键,输出enum eWinMsg,重新F5实现。
图1-2 DiagFunc窗体消息响应主函数
可见,Hi_OnClick_check_2F1340为我们检测控件响应函数,上图地址已经rebase,可通过idapython【idc.Jump(idaapi.get_imagebase()+0x1340)】直接跳转。如图1-3
图1-3 检测控件点击响应函数
1.2 算法识别
如何确定Hi_crc32_buf_size、Hi_atoi、Hi_int2str函数原义?
(1)crc32函数Hi_crc32_buf_size的确定,如图1-4,我们通过网络搜索引擎搜索 0xEDB88320常量,出现crc32关联;
通过python测试比对输入输出参数验证为crc32.
import zlib hex(zlib.crc32(b'KCTF')) #0x5ee54f4c
图1-4 crc32函数
同理,通过观测Hi_atoi和Hi_int2str输入输出结果,得到其原义。
1.3 检验算法
#算法描述 (1)key 为 "0123456789"字符集,且key_len长度最大为10 (2)kxn = crc32(name,name_len)^atoi(key) 要求 crc32(itoa(kxn,radix=16),8)==0x13B88C77 #python描述 name=b'01F845C5B7C52E56' key=653259165 kxn = zlib.crc32(name)^key kxn_hex = "{:08x}".format(kxn) rc = zlib.crc32(kxn_hex.encode()) rc == 0x13B88C77 #由于rc固定,假设crc32映射唯一,则kxn_hex固定,则kxn值固定; #由已知的name&key可得到kxn=0x52a1ed5a #要求name=b'KCTF'时的key,有key=zlib.crc32(name)^kxn,则 "{:010}".format(zlib.crc32(b'KCTF')^(zlib.crc32(b'01F845C5B7C52E56')^653259165)) 0205824534 #当然,写本文时,发现key最长是10,所以也可以是key=205824534
第2节 攻击展示
上述1.3中已经展示了设计者预想的攻击模式。
另一种利用CPU或GPU算力暴力破解的方式,因为【要求 crc32(itoa(kxn,radix=16),8)==0x13B88C77】,
即,我们要找到由8个十六进制字符集[0-9a-f]的组成组合,其crc32为0x13B88C77,这里我们通过hashcat进行算力攻击,如下攻击命令;
-a 3选择暴力攻击,-m 11500 为 crc32算法 ?h表示[0-9a-f]字符集,12秒我们得到,kxn=0x6eb5dd36
hashcat -a 3 -m 11500 --hex-charset 13B88C77:00000000 ?h?h?h?h?h?h?h?h
通过下述python,我们得到对应kxn的KCTF的key为0810586746或810586746。
"{:010}".format(zlib.crc32(b'KCTF')^(0x6eb5dd36)) #0810586746
图1-5 hashcat利用CPU&GPU爆破crc32
第3节 总结思考
(1)hashcat利用了CPU尤其是GPU的算力,网络新闻摘要,最近几天,【我国量子计算研究获重要进展,中国科学技术大学潘建伟团队在论文中介绍,经过一系列改进,光量子计算机“九章二号”处理特定问题的速度比超级计算机要快上亿亿亿倍,超导量子计算机“祖冲之二号”在量子随机线路采样问题上的计算速度,也比目前最快的超级计算机快一千万倍】,也许某天,2048的RSA也可以秒爆。
(2)提供name&key的CTF,可以首先考虑以中间量为入口。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [原创] KCTF 2022 Win. 第六题 约束与伪随机 6757
- [原创] KCTF 2021 Win. 第二题 排排坐 21181
- [原创] KCTF 2021 Win. 第一题 算力与攻击模式 4124
- 鸿蒙通识 26079
- [原创] KCTF 2021 Spr. 第二题 未选择的路 9269