CTF学习笔记【二】

CTF学习笔记【二】

离线攻击和防御经验

首先,正常的比赛会会提供提交 flag 的接口,该接口地址类似于 http://x.x.x.x/x/ 的形式。一般我们需要根据主办方给出的文档接口来提交 flag 。在比赛要求接口地址使用 POST 方式提交,提交时带两个参数,一个是 Answer ,其值为获取到的 flag 字符串,另外一个值是各个队伍各自的 Token 口令牌。

然后比赛时主办方也会给每个参赛队伍提供一台用于分析网络流量的虚拟机,选手需要访问地址下载流量文件进行分析。

关注 Gamebox 状态:

比赛中可以查看己方和敌方 GameBox 状态。时刻关注可以尽早获取比赛信息,根据信息做出调整。

对于己方 GameBox,有存在如下原因造成 GameBox 被 down 掉:

1.主办方裁判系统存在失误,误判 GameBox 为不可用状态。这种情况一般在比赛开始前可以发现,如果发现存在这种情况,要尽早向工作人员示意处理以减少损失。

2.程序 patch 失误导致服务不可用。在程序 patch 完之后要进入下一轮关注 GameBox 状态,如果 patch 失误导致不可用,需要及时挽救。但是也不要过度担心把原来的未修补过的漏洞程序换回去。因为 down 掉是所有队平分得很少的分,而直接上漏洞程序会使的强势的队伍直接利用得到很高的得分。所以要依据具体情况对待。

3.对手不正当攻击导致 GameBox 不可用。如果发现,需要及时补救。

4.主办方加强程序 check。这种情况主办方会对所有队员进行通知公告。在 GameBox 状态墙上的状态会显示该题的各队 GameBox 大面积不可用。

对于敌方 GameBox。我们可以获取以下信息。

1.根据攻击流观测哪些队伍的 GameBox 没有防御成功。针对这些队伍可以更多地实现攻击

2.有队伍拿出一血时。可以根据各队 GameBox 状态推断出一血队伍是否已经写出利用脚本。写出利用脚本后可以观测己方是否做好了防御。

分清区段于端口

比赛过程中会主办方会安排好合理的网段分布。

维护的时候需要连接到本队 GameBox 所在网段上,根据主办方提供的 CTF 账号与密码登录。而与其他队伍的 GameBox 交互时则需要连接到对应的网段里与漏洞程序进行交互。提交 flag 则需要到指定的答题平台上提交。

服务 Patch 与防御

1.程序 patch 要合理并同时符合裁判系统 check 条件。虽然系统的 check 并未公开是 check 哪里,但是一般情况下,系统是不会过度为难的。

2.程序 patch 使用 IDA 进行修改,IDA 提供了三种方式的 patch:byte,word,assemble. 其中字节码修改比较好用。因为逐字节修改不需考虑汇编指令,一般这样的修改改动也很小,在一定场合下十分好用。汇编指令级别的修改虽然方便不需要修改字节码,但是也造成了一定的不便。比如需要额外考虑汇编指令的长度,结构是否合理完整,逻辑是否和原来一样,修改的汇编指令是否合法等问题。

3.在 patch 程序时要记得备份原来的漏洞程序,以供队伍分析使用。在上传 patch 的时候应该先删除原来的漏洞程序,然后将 patch 过的程序复制进去,复制进去之后还需要给程序赋予相应的权限。

4.一般比赛中,漏洞程序会有十几处需要 patch 的地方。Patch 的时候不仅要讲究有效合理,还要满足能够在一定程度上防范或混淆对手的分析。

构造脚本框架快速展开攻击

在攻防比赛过程中,一血显得尤其重要。因此有一个攻击脚本框架是非常有利的。快速开发攻击脚本,可以在前期保持优势地位,也可以在不断拿分的同时省下时间去做好防御。

比赛的一些策略

1.在比赛过程中,不宜死耗在一道题上,由于一血的优势性,在比赛过程中更应该全面了解赛题难度,先从 简单题 开始进行分析,步步为营。

2.比赛过程中,两极会严重分化。应该着力打击和自己实力相当和比自己队伍更强的队伍,尤其是分数相差无几的情况下,更要严防严守。

3.比赛中 NPC 会不定时发出攻击流量。从攻击流量中可以得到 payload。

4.一定要把 NPC 往死里打。

6.在开赛初可以将所有的管理密码都设置为同一个密码,这样方便队员登录管理。在初期将所有文件备份下来供队内分享。

CGC Super Challenge

CGC 网络超级挑战赛是全球首次机器网络攻防比赛,比赛过程全自动,无任何人工干预。考验机器自动漏洞挖掘、自动软件加固、自动漏洞利用和自动网络防护水平。使用简化的 Linux 操作系统 ------DECREE,类似 Snort 的规则过滤防火墙。对 Linux 二进制程序进行漏洞挖掘。所有参赛队都没有程序源码。

在 2016 年的 CGC 比赛中,挑战的赛题包含了 53 种 CWE。其中包含 28 个堆溢出漏洞、24 个栈溢出漏洞、16 个空指针访问漏洞、13 个整数溢出漏洞和 8 个 UAF 漏洞。

攻防过程由组织方发出挑战程序,各团队服务器可以向组织方提供补丁程序,防火墙规则和攻击程序。修补过的程序和防火墙规则会分发给其他团队。组织方为每个团队运行挑战程序,进行服务测试和攻击并进行评估。

性能评价指标 

1.服务正常访问的反应时间;

2.打补丁频率;

3.加固程序的效率;

4.成功防御攻击的次数统计;

5.攻击成功次数统计。

明确核心任务 

拿到二进制程序,进行自动分析,在明确防火墙规则后对程序进行加固并生成攻击程序。

分析方法 

1.具体执行 - 使用正常的执行模式;

2.符号执行 - 辅助 Fuzzing 阶段的路径选择;

3.混合执行 - 带有具体输入的符号执行,根据输入选择路径,但保留符号条件。

CGC 经验总结 

1.完美防守的难度远大于生成攻击的难度;

2.二进制加固程序需要避免功能损失,并最小化性能损失;

3.安全自动化处理的大趋势已经形成,多数团队可以在几秒钟的时间对简单应用形成攻击并生成有效防守;

4.对抗中的策略值得研究,根据自身和对手的攻防能力,对资源和动作进行合理调整。


回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2020-04-27 02:13:14

修改时间:2020-04-27 02:13:14

查看次数:138

评论次数:0