一个虚拟机里承载了7年间所有DefCon CTF的比赛试题

阅读量213639

|

发布时间 : 2016-08-10 19:13:27

x
译文声明

本文是翻译文章,文章来源:安全客

原文地址:http://fuzyll.com/2016/the-defcon-ctf-vm/

译文仅供参考,具体内容表达以及含义原文为准。

t012f647c7138cde7a7.jpg

DefCon世界黑客大会,又名电脑黑客秘密派对,诞生于1992年,于每年7月在美国的拉斯维加斯举行。参会者除了来自世界各地的黑客,还有全球各大网络安全公司的代表以及美国国防部、联邦调查局、国家安全局等政府机构的官员。而DefCon CTF夺旗赛是DefCon世界黑客大会的总决赛,它也代表着目前世界上最顶尖的网络安全技术水准。

在过去6年间,我一直在收集、汇总有关DefCon CTF的比赛题目及相关信息,并想通过一种合理的方式将它们展示出来,为的是给今后想要参加DefCon世界黑客大会的选手提供一些有价值的参考信息,帮助他们能够更好地融入这个比赛。

借着DARPA(美国国防部高级研究计划局)的网络挑战大赛落幕,以及第24届DefCon CTF夺旗赛进行之际,我将向读者介绍我所有掌握的信息。由于最近我比较繁忙,总结出来的信息不是太完整,但这并不影响读者阅读,其中还是有很多有价值的信息的。

最新版本的虚拟机(V0.1.0)的下载链接为:https://drive.google.com/file/d/0B_Jd5opFbnddOG1HekdZUTNENnM/view?usp=sharing

此版本是于2016年8月8日推出的,相关文本的修正情况请查阅:https://www.reddit.com/r/netsec/comments/4wprce/7_years_of_defcon_ctf_finals_challenges_in_one_vm/d68xmjg

什么是DefCon CTF?

DefCon CTF是DefCon世界黑客大会的总决赛,是一项持续时间较长的黑客夺旗赛。它代表着世界上最顶尖的黑客技术水准,有着“黑客奥林匹克运动会”的美誉。首届DefCon CTF夺旗赛起源于1996年的第四届DefCon世界黑客大会。2002年,在第十届DefCon世界黑客大会上,一些黑客对CTF的竞赛模式进行了修改,便形成了今天的我们所看到的CTF。而在2005年的第十三届DefCon世界黑客大会上,由于Kenshoto公司将目光重新聚焦到游戏上,并提出了要加强二进制软件及其补丁的研发力度的要求,大会再一次对CTF的竞赛模式进行了细化。

相关的竞赛流程和规则每年都会有所不同,但总的可以归结为以下几点:

1.  参加CTF夺旗赛的队伍数量为8—20支。其中,每个队伍都会获得由主办方提供的专用局域网。网络端口的分配以及相关参数的设置由赛事主办方完成;

2.  网络以及邮件服务器也是由主办方创建,同时,在比赛开始之前,他们会对相关网络功能进行调试,保证参赛选手能够正常使用;

3.  参赛队伍之间可进行攻防模式的角逐,即:参赛队伍在网络空间中互相进行攻击和防守,挖掘网络服务漏洞,并攻击对手服务来得分,修补自身服务漏洞进行防御,以避免丢分,也被称为夺旗模式。

4.  因为在比赛中所使用到的通常是二进制编译文件,这也就意味着,在攻防过程中,这些二进制文件可以被编辑为十六进制文件;

5.  CTF中所说的“旗子”,实际上就是一些带有字符标记的文本(例如:0e63d4223b01d9aba596259dc155a174),类似的文本其实代表了一些敏感数据(例如:队伍的专有信息以及成员的个人资料等);

比赛结束时,每支队伍的最终得分将会以“uptime * value of flags”的形式给出。在某些年里,队伍所取得的“旗子(flag)”的分值都相同,而在有些年份中,对于一些修补难度较大的漏洞,当有队伍拿到该漏洞所代表的“旗子(flag)”时,获得的分数会更高。而“uptime”指的是分给每支队伍的网络服务的可用时间占比(系统能够自动判断队伍的使用时间,同时采用轮换的方式使用。在每个事件间隔内,每支队伍都可使用不同的网络服务。)

在CTF领域,我们将这种CTF比赛模式称为“全方位模式”或“攻防交替模式”,意为:每支队伍都必须进行攻击和防御。这种比赛模式不同以往广受欢迎的“Jeopardy-Style”(解题模式)。解题模式是晋级DefCon CTF夺旗赛之前的资格赛。随着比赛模式的不断改进,现在,DefCon CTF夺旗赛已经被称为世界范围内水平最高、难度最大、观赏性最高的黑客竞技大赛了。

文件存储的位置:

接下来,我将会为读者介绍我所收集到的虚拟机工具及CTF试题:

1. 基于FreeBSD 开源操作系统的虚拟机的下载地址为:https://drive.google.com/file/d/0B_Jd5opFbnddOG1HekdZUTNENnM/view?usp=sharing

在该虚拟机中,包含了历年CTF夺旗赛中的一些竞赛题,感兴趣的读者可以去挑战下。(初始的用户名为:root;密码为:defcon)

2.   在GitHub社区上,有一个介绍CTF比赛的详细知识库。里面包含所有历年CTF的竞赛题、虚拟机配置文件、以及一些说明文档。

这其中有些题目不是太完整。由于缺少必要的安装包、说明文档等,有些项目无法正常运行(我还在继续寻找相关的源文件)。有些注意事项在文档中没有记录(例如:如何建立自己的FreeBSD虚拟机),但其中大部分的项目都还是可以正常运行的。

我曾经完整地观看了第十三届(2005年举办)和第二十届(2012年举办)DefCon世界黑客大会的所有比赛。比赛的数据是用Kenshoto和DDTEK来存储的。比赛的现任主办方,Legitimate Business Syndicate公司值得人们称道的一点是:在每年的CTF比赛结束之后,它都会在GitHub社区上报道有关CTF的情况,包括比赛项目、团队情况以及比赛花絮等等。 有了Legitimate Business Syndicate公司的帮助,我就可以省去很多搜索的时间。在这里,我要对Legitimate Business Syndicate公司表示感谢。

值得注意的是,从第十四届DefCon世界黑客大会(2006年举办)开始,我们就没再看到由Kenshoto公司推出的竞赛游戏了。这是因为它们在Solaris操作系统中运行,相较于FreeBSD系统来说,它的兼容性要差一些。如果一些黑客想要重新尝试基于Solaris操作系统的竞赛项目,那么可以参考我所发布的,与这些项目相关的二进制文件。如果有人成功地做到了,请及时与我联系,我将会在此网页上加上你的操作链接。

我是如何使用这些文件的?

在建立虚拟机的过程中,你必须要确保与CTF相关的功能与网络服务能够实现。为了能够实现与服务器进行交互,你需要建立一个与该服务器端口相连的套接字连接。如果你使用的是Unix或Linux系统,那么可通过一个叫netcat的网络命令来完成上述步骤。(可编译为:nc:xxx.xxx.xxx.xxx yyyy,X表示你的IP地址,Y表示网络端口号码)。如果你使用的是Python或Ruby语言,那么可通过编译如下的一个脚本来实现该功能:

http://p1.qhimg.com/t012731b66af081f996.png

http://p9.qhimg.com/t01c8fc667e29f7f3b1.png

当然,上述步骤只能帮助你建立与服务器的连接。这个竞赛项目要求你要在每个网络服务中,都能找到漏洞,并对其进行修复。为了达到这一目的,你需要重新编译原先的可执行文件。

能够满足逆向工程行业标准的工具是IDA Pro(交互式反汇编器专业版)。同时,你可以使用Hooper和最近发布的Binary Ninja来代替。如果你不想进行付费使用,那么可以选择使用Binary Ninja prototype。因为该软件是开源软件。Radare是另一款可供用户选择使用的开源软件。如果离开了objdump来讨论反汇编器的实用性,这其实是没有任何意义的。因为在你的Linux工具库中,很容易就能获得该工具。

为了能够让很多新手很好地掌握如何寻找、修复漏洞、修改错误代码,我发布了一篇博文,在其中详细介绍了相关的情况。

我是如何报告bug情况或请求帮助的?

请将你所遇到的bug,发布在GitHub社区的虚拟机教程板块中,我会给予回复。我不能保证及时地进行回复,但我会尽力去做。一旦成功地修复了漏洞,我会在第一时间发布出来,并对之前版本的内容进行更新。

原先的虚拟机版本有什么改动吗?

现在还没有。不过我会尝试着去做一些改动,并会及时发布这些改动。

相关视频链接:https://youtu.be/C8hD8b1SERw


本文翻译自安全客 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
ResoLuT1On
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66