我们如何准备CTFZone-2020资格认证阶段

11月30日-12月1日通过了CTFZone锦标赛的资格审查阶段,该锦标赛注册了来自全球的1043支球队。 根据我们的数据,即使在津巴布韦(26个唯一IP)也解决了问题。 更深入地挖掘,它是来自布拉瓦约市的一个大学团队。


今年CTFZone成为DEF CON CTF的排位赛阶段,因此赢得决赛的队伍(定于2020年4月16日至17日在OFFZONE举行)将前往拉斯维加斯参加比赛。 为了使幸运者有时间获得签证,会议日期甚至被移到了较早的日期。


DEF CON CTF是许多团队中最古老,最受尊敬的安全竞赛。 优胜者没有得到一个棕榈树枝,但即使没有它,一切都进展顺利。 现在,世界上只有6个锦标赛,您可以通过这些锦标赛获得DEF CON CTF的资格。





参与者地理位置CTFZone

关于概念


在国际CTF运动中,来自不同地区的团队专门研究某些领域。 例如,从历史上看,俄罗斯人更擅长解决网络问题,而亚洲和美国团队则更擅长PWN。 在同一DEF CON上,几乎所有任务都是二进制文件。 也许这就是为什么最近美国和亚洲团队在那里表现更好的原因。 我们在CTFZone试图证明CTF不仅是PWN,而且还包括许多其他有趣的类别:Web,加密,反向,OSINT,取证,PPC。


网页


在基于Web的任务中,作者(工作时间内的渗透测试专家)试图从实际项目中转移漏洞。 例如,在Web-Shop任务中,我们使用了流行的python-markdown2库,我们的专家在比赛前几周发现了一个零日漏洞来绕过XSS过滤器。 但是,在CTF期间,四个决策团队各自发现了此漏洞的自己版本,这使我们考虑了库中过滤的质量。


对于Web Card作业,我们在标准Java XML验证类中使用了零日漏洞。 它是在测试实际的Web应用程序防火墙时发现的,因此我们邀请参与者绕过为该任务专门开发的WAF。 Wrightup的详细版本将在以后。


好吧, EmeraldRush任务显示了GitLab和Github在过去一年中的情况-与Ruby相关的漏洞,它们都被编写在上面。 其中一个基于CVE-2018-18649(但是没有针对它的开源漏洞利用),第二个是最近发现并发布在HackerOne平台上的(有关描述,请参见文章 )。 当然,根据负责任披露的原则,在竞赛之前,会将这些漏洞和所有其他网络漏洞通知开发人员。


加密货币



反过来,加密任务开发团队不仅将CTF中经常遇到的与RSA实施相关的错误作为基础,而且还将近年来的轰动性攻击作为基础。 例如,任务OCB2必须应对对同名对称加密系统的攻击,为此在加密会议上被发现并授予最佳论文奖。


NTRU任务中,有必要研究对非对称晶格系统的攻击。 九月份曾对她进行过描述,但仅找到和阅读相应的文章还不够。 问题的作者本人在发现出版物采用最方便的方式进行描述时遇到了问题,该情况不适用于最终任务中选择的参数。 我不得不重做算法! 有趣的是,其中一位参与者(来自LC / BC团队的Alexey Udovenko)在没有文章的情况下解决了问题,并根据相同的原理提出了略有不同的解决方法。

法证


好吧,我们CTF上最棘手的类别是取证。 每个人都习惯使用以下三个工具来解决此类任务:最重要的是,波动性和字符串。 但是我们有不同的任务-例如,一个不寻常的阴影任务,要解决该问题,必须使用此处描述的技术。 稍后还将在区委员会中发布详细信息。


关于培训


直接准备CTFZone资格包括几个主要阶段(聚集项目团队,开发任务,测试和部署基础设施,向太空发射火箭)和许多辅助阶段(寻找灵感,建立沟通,折磨和怀疑,沮丧,克服生存危机)。


大会开始前三个月,选择了日期-12月7日至8日。 团队得出的结论是,什么都没有时间,但仍然可以开展业务。 七天后,这些不切实际的截止日期又提前了一周,因为选定的日期和其他所有日期都已经采用了其他周转基金。 剩下的就是微笑,咬紧牙关,以三倍的精力工作。 没有回头路;初级的发展。





结果,任务比平时多-30件。 每个任务都是唯一的,但寿命不会很长:准备3个月,飞行只有36个小时。 可是! 您在前端精心绘制的按钮将被世界领先的CTF员工触摸-它们将使您沉浸在您的想法中并为您提供个人反馈。 这是一次很棒的经历,也是一个与大型社区讨论您的工作的机会。 毕竟,经常伴随任务中存在的漏洞,某种故事是相关的。 有些任务是如此艰巨,以至于没人能解决。 在未解决问题的鉴定结束时,剩下两个: 流行取证Web卡


关于基础设施


比赛基础设施的组织可以通过不同的方式进行。 例如,以老式的方式,为任务开发人员剪切虚拟机,并为他们提供访问权限。 在这种情况下,每个开发人员都可以成为本地主机的满意管理员,一切都可以按他的意愿进行,并且仅用于提供网络连接。 但是很明显,在这种情况下,没有任何复制和容错的讨论。 负责我们基础架构的人在2016年ZeroNights的一次CTF失败了,这次,在痛苦的经验教训下,他们决定采取不同的行动。


我们决定了很长的住所,最后我们决定在云中转身。 原因很明显:黑客的竞争,所以最好打破Google的形象,并且zashnik中已经有现成的开发。 创建平台的主要工具是Terraform,它允许您以声明性格式的代码形式描述基础架构,并处理所有其他手势。 也就是说,例如,您无需考虑如何使用Google API并告诉他您要部署多少个虚拟机以及要部署哪个虚拟机。
还必须决定如何启动任务。 我们非常幸运,所有开发人员都已经能够在Docker中编写任务。 这种炒作式的容器化程序使您可以将服务和所有依赖项打包在一个隔离的环境中,该环境在两次重启之间不会改变。 使用Docker的方法并不多:主要是协调器,例如Compose和k8s。 要完美地完成所有工作,即以平衡,提示,容错和其他方式实施愿望清单,乐团的选择很明显-Kubernetes。




但是,在这里,基础架构的创建者和开发者之间存在一些误解。 渗透测试人员是IT界的特殊阶层:他们在某种程度上像管理员,网络专家一样,懂数据库,并且以编程为导向。 通常,不是人,而是瑞士刀。 他们非常非凡而雄心勃勃,但是不幸的是,当决定为每项任务写Helm时,以某种方式忘记了渗透测试者仍然不是专业的管理员。 这导致了一场小规模的战争,在这场战争中,有必要解释为什么强行做出某些决定并设置限制。


他们没有编写Helm的经验,但是他们都知道如何编写Compose。 您自己知道,本地的Compose和Helm-chart之间在学习资料的几周甚至几个月之间存在差距。 这是第一次暗示存在一些问题(CTF没有这些问题,尤其是在团队和管理员几乎每次都是新手的情况下)。


由于时间紧缺,不可能使所有事情自动化-有些事情必须传递给开发人员自己。 渗透测试者必须坐在开会的地方,告诉他们如何编写头盔,而他们自己显然是在嘲笑这个灯火通明的人。 但是尽管如此,我们还是成功了-所有任务均已描述并打包在Helm图表中,并且以Grafana和Prometheus的形式配置了监视功能。 真相的时刻到了。


在这里,令所有人感到欣慰的是,最终的基础架构非常易于管理。 当一切都描述完并部署到Google上后,我们为值班人员进行了简报。 其中有十个,每个人都做得很好:他们举起下落的,收集的东西并将校正后的版本推出一个立方体。


关于决赛入围者


结果,入围了10支明星队。 为什么是恒星? 事实是,每10支球队中就有6支在CTFtime的世界锦标赛前十名中,其余四支分别落后于前十名,但也名列前茅。


比赛的主要特征是,最激烈的争夺不是在前三名中排名,而是在第十名中。 对于参赛者来说,进入决赛很重要,在那里重新设置局面,根据资格赛的结果,我们所拥有的席位分布会发生很大变化。




CTFZone 2019 Quals决赛选手决赛排名

接下来是什么?


此外,可以稍稍呼气,然后再次深呼吸,并开始为决赛做准备。 它将以“攻击/防御”格式举行,这是一个完全不同的故事。 有人可能会问:这是为什么? 这个问题很好,但是可能没有合乎逻辑的答案。 只是如果您至少能在5秒钟内真正掌握正在发生的事情,充满活力并看到您属于哪个团队,那么一切就不会白费!

Source: https://habr.com/ru/post/zh-CN481280/


All Articles