首页
社区
课程
招聘
[原创]看雪CTF从入门到存活(一)问题的提出
发表于: 2018-7-5 11:50 10264

[原创]看雪CTF从入门到存活(一)问题的提出

2018-7-5 11:50
10264

看雪CTF是圈内知名度最高的技术竞技
其规则设置严格周全 既给了防守方足够的施展空间 也避免过度浪费攻击方的时间
从攻防两个角度看 都是个难得的竞技和学习机会

本人初步涉足这个领域 见识了许多大佬们的‘惊人’能力
例如:精通数学的ccfer、无坚不摧的风神、每‘猜’必中的po叔 等等
每次打开精化wp 都觉得醍醐灌顶脑洞大开
对dalao的仰慕之情 如滔滔江水。。。

(好 下面我们开始说正题)

我曾思考 是否存在一种可公开的通用方法 它能够设计出无限量个算法不相同的CrackMe 使之都能满足看雪CTF的规则且无人能攻破?

常识告诉我们 这个答案应该是不存在的
因为 如果它存在的话 那么应该会有人在CTF比赛中使用过吧?应该战绩不错吧?
我们来看看历届比赛‘存活’下来的作品:
1)看雪 2016CrackMe 攻防大赛 第十二题。未公开wp 不好判定该方法是否可以继续产出其它算法不同且不会被攻破的CM
2)看雪.Wifi万能钥匙 2017CTF年中赛 无作品存活。
3)看雪.TSRC 2017CTF秋季赛 有2件作品存活
3.1)第九题 九重妖塔。此题除了使用‘动态地址加载dll’、‘静态完整性检查’、‘用校验和解密代码’、‘监视调试寄存器’等常规反跟踪反调试手段以外 最重要的防护是‘自定义安全算法’、‘双重VM’,堪称CM防守作品的代码流防守典范之作
3.2)第八题 cm2017-ccfer。此题涉及知识包括:IFFT变换、频域滤波器等 除此以外还利用整数运算替代了浮点运算并使用查找表加速。可以说 此题是CM防守作品的算法流防守典范之作
(是否有的作品其实设计思路很好 但是因为‘阴沟里翻船’而未能存活下来呢?应该会有。但是我们暂时无法进行评价)

在欣赏了高手作品以后 让我们来静静想一想 他们的手法是可复制的吗?
我所说的‘复制’并不是copy他们的代码 而是 他们的设计思路还能产出更多的CM吗?
他们思路产出的更多CM 依然能够像他们的第一次CM作品那样 在比赛中存活下来吗?

此时我们不得不回头来考量一下攻击者们
看雪是个交流和学习的好场所 其中有像我一样的初学者 也有让人不可望其项背的高人 而更多的活跃者是正在快速进步的战士们
虽然攻击者参差不齐 但如果作品想存活下来 当然只能瞄准那些破解高手的水平了

让我们来看看这些高手们具备哪些特征吧
1)在CrackMe相关领域中 但凡是已知的成熟技术和工具 就没有这些高手不熟练的(只要是有成熟技术能解决的问题 没有他们解决不了的)况且他们还有自制的神器
2)这些高手是可以不吃不睡不上班的(其实实际情况是 就没有几道题能迫使他们这样做)
3)尽管高手们一般不需要帮助 但任何人都无法阻止高手们互相帮助(所以不能假设高手有知识盲区 高手们私底下关系都很好)
OK,看完这些 作为防守方 你该绝望了吧
其实 我也绝望过
当我认识到上述事实之后 我知道 这些高手是不可阻挡的 至少是我不可阻挡的

可毕竟有作品活下来了呀?!
让我们回顾一下 那些曾经的存活作品

那些靠‘代码级’防护手段能存活下来的作品 用一句不客气的话说 叫‘见光死’!(如果冒犯了作者,请恕罪)
同样的防护手段 如果故技重施 恐怕难以达到‘第一次上市’时的存活期
如果下次还想存活 必须要绞尽脑汁设计新的‘坑’

而那些‘算法流’的防护手段呢?感觉好一些
假如作者换一个算法 应该又能挡住一波攻击者 似乎可以立于不败之地
但是 这种方法 对普通参与者来说 是不可复制的 因为普通参与者难以具备算法牛那样的理论功底
而且 即便是算法牛 每次要给出一个新的算法 新的CM 也都需要付出不小的设计和实现代价

所以 看起来 不管是走哪条路 防守方付出的成本都远高于攻击者的成本(48小时或者至多1周)

想得到一种公开通用的方法 能够低成本地产出CM且每个CM都能有效阻挡破解者 真的就不可能吗?

让我们来换个角度看问题
假如看雪的规则放宽一些 允许防守方保留一个解密私钥
那么防守方将很容易设计出一种‘基于非对称密码算法’的CM 轻松挡住所有的破解者(就如同WannaCry的设计那样)
当然 这是看雪规则所禁止的!

但是 这个例子说明了一个道理:之所有防守作品能够存活下来 是因为CM中隐藏了某些‘攻击方不知道的知识’,或者‘攻击方暂时没找到的秘密’

让我们来看看 这个道理对不对
1)在九重妖塔中 双重VM及其handle就是这个秘密。在攻击者还不知道有2层VM时 不知道每个指令的handle时 不知道OnTimer中检查了硬中断寄存器时 破解是困难的。但一旦破解者知道了这些秘密 破解只是个时间问题 而且不会很长。而下次作者如果还想获得这样的存活期 恐怕代价远不止1周
2)在cm2017-ccfer中 IFFT变换和梳理滤波是大多数攻击者不知道的知识。但一旦见光了 这招就不好用了。下次作者再换个题目 至少也得多白1根头发吧(开个玩笑哈)

而我前面说过了 “不能假设高手有知识盲区”
换句话说 能够挡住破解者的唯一方法就是:在CM中隐藏一个‘攻击方暂时没找到的秘密’
到这里,摆在我们面前的问题是:CM到底怎样隐藏这个秘密 才是破解者暂时找不到的呢?

我的好朋友Q老师劝告我 此问题是无解的
因为CM一定是可以运行的 且处于白盒攻击环境 所以此题无解

这里我解释一下白盒这个词 它的意思是:
1)攻击者可以任意查看执行的代码,可以任意修改代码
2)攻击者可以任意查看运行的数据,可以任意修改数据
3)攻击者可以任意反复执行上述操作
看雪CTF比赛 正是这种白盒攻击环境

不仅是Q老师 有其他高人也持有与他相同的观点 劝我死了这条心
但是我很执(pian)着(zhi),一定想去试一试
于是 我抛出了‘密室逃脱’一题

这道题代码很短 算法很直白 但是我在其中隐藏了一个秘密
我的设计是:只有找出了这个秘密 才能逆推出正确的序列号
(我希望CM尽可能简单 这样就能让攻击者直接下手挖掘这个秘密 以验证我的设计是否安全)

但是 对不住观众的是,我的题目很快就被攻破了 而且全部都是‘非预期解’
没有一个破解者是真的挖掘出了我隐藏的这个秘密而破解此题
反而是因为找到了我不小心留下的2个bug而迅速破解了
好尴尬。。。(其中那个‘不逆推而顺着跑’的破解思路 实在是令人钦佩)

虽然这一题已经被破解了 但到目前为止 并无人宣称 真正发现了我隐藏的秘密
(也许是因为题目已破 他们不再有兴趣了)
但这对于我来说 也算是一种鼓励
至少 对于我提出来的这个问题 并没有被立刻拍死 我还是有机会成功的!

最后 感谢看雪的平台 感谢各位大佬们垂青出手!
争取下次再奉献上更好的作品!
(我还会回来的 的 的...)

看场雪

图片描述


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-1-11 19:24 被kanxue编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (11)
雪    币: 465
活跃值: (667)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
纯文字阅读有障碍了,除了xx小说。
在实际运用中,可能更为复杂。即使被破解了,如果还有利用价值,就不会公开破解结果(或小范围共享),所以也根本不知道被破解,也无法全面衡量算法或加密思路是否可靠。白灰帽子暴露的估计也是少数。
2018-7-5 13:28
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
3
所以秘密是啥
2018-7-5 13:54
0
雪    币: 10845
活跃值: (1054)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
4
ssarg点评有道理 所以我才来看雪 因为在这里被公布出来的可能性更大一些
2018-7-5 14:29
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
5
深有同感
其实想要增加难度是非常简单的事,用多种算法把把注册码分段加密,要得到答案就必须逆出每一个算法,当然能把时间拖到48以外
不过这就是无赖玩法了
设计CM最大的乐趣不是别人没解出来,而是让别人不能轻易找到自己隐藏的秘密,但是又必须让别人找出秘密
这样才算是一个好玩的,有意思的CM
2018-7-5 19:37
0
雪    币: 1829
活跃值: (1377)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
6
看得出来,作者有怨念,心有不甘。理解理解
2018-7-5 22:34
0
雪    币: 166
活跃值: (392)
能力值: ( LV13,RANK:357 )
在线值:
发帖
回帖
粉丝
7
让别人(短时间内)破不了,最简单的方式就是加大工作量。
  我这次出题的初衷就想出点有意思又简单的题。
2018-7-5 23:32
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
8
有意思又简单,这确实应该成为CM的设计原则。
这几年论坛上的CTF大赛,给我印象深刻的题,不是有多难,而是设计精巧,四两拔千斤,找到关键点的秘密就是拨云见日,让人感觉豁然开朗淋漓尽致。
比如前几年的魔方题,第一次把魔方解法放到CM中,非常好玩。再比如去年的题把brainfuck引入其中,长见识啊。
对于anti debug的使用应该谨慎,用的多了就把破解的乐趣变成了体力活,作者也累玩家也累。去年那道VB题的做法值得参考,仅仅在发现调试器时修改几个pcode代码让算法无解,用作者的话说就是“过犹不及”。要不就走向另一个极端,像九重妖塔这种,各种anti一环套一环,也是另一种美(捂脸)
最后用盗梦空间里的一句话送给各位CM设计者共勉:设计最复杂的迷宫,但是永远保留一条捷径能直达终点
2018-7-6 08:03
0
雪    币: 10845
活跃值: (1054)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
9
太经典了!
设计最复杂的迷宫,但是永远保留一条捷径能直达终点
2018-7-6 08:12
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
10
10号是我的CM,看看有没有人找到我藏着的捷径,或者另辟捷径
2018-7-6 08:30
0
雪    币:
活跃值: (12)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
(Me)读文字困难户啊,通读了2遍,哈哈,终于理清了看场雪要说的重点:“能够挡住破解者的唯一方法就是:在CM中隐藏一个‘攻击方暂时没找到的秘密’”,mark!
2018-7-6 15:06
0
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
#寻宝大战#祝看雪19岁快乐!
2019-1-11 20:23
0
游客
登录 | 注册 方可回帖
返回
//