-
-
[原创] KCTF 2021 Win. 第一题 算力与攻击模式
-
发表于: 2021-11-17 18:43 4289
-
算力与攻击模式
【摘要】
“签到题”标签,自然是尽可能简易,本题主要采用了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.
1 2 3 | import zlib hex (zlib.crc32(b 'KCTF' )) #0x5ee54f4c |
图1-4 crc32函数
同理,通过观测Hi_atoi和Hi_int2str输入输出结果,得到其原义。
1.3 检验算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #算法描述 ( 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
1 | hashcat -a 3 -m 11500 --hex-charset 13B88C77:00000000 ?h?h?h?h?h?h?h?h |
通过下述python,我们得到对应kxn的KCTF的key为0810586746或810586746。
1 2 | "{: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,可以首先考虑以中间量为入口。