b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · •...

46
b1o0p 的 DEF CON CTF 2016 记录 刘煜堃

Transcript of b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · •...

Page 1: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

b1o0p 的 DEF CON CTF 2016 记录

刘煜堃

Page 2: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

蓝莲花(Blue-lotus)

• 由段海新教授与诸葛建伟于2010年12月共同创建

• 寓意是寄托着追求自由、永不凋零的传统黑客与竞

技精神

• 2013年成为华人世界历史上首支成功闯入DEFCON

CTF Final的队伍

Page 3: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

Blue-lotus + 0ops = b1o0pBlue­-lotus• 清华大学 + 多高校联合

• 去年、前年参加DEF CON CTF决赛获

得第五名

• 队长kelwin

• 由百度赞助

0ops• 上海交通大学

• Codegate 2015 冠军

• 去年首次参加DEF CON CTF决赛获得

第六名

• 前队长slipper

• 由腾讯赞助

Page 4: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

• Kelwin• libmaru• cxm• Riatre• BrieflyX• yuf4n• Maskray• lgm• Firesun• ……

• slipper• memeda• neoni• xky• xty• lmq• Hen• 小花椒• md5salt• Azure• ……

Page 5: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

关于本届DEF CON CTF

• 人机对抗: CGC比赛冠军Mayhem与14支人类队伍同台竞技

• 采用Cyber Grand Challenge(CGC)的比赛平台

• 使用DECREE环境

Page 6: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

DECREE环境• 修改Linux源码,采用基于x86­-32的受限平台

• 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式• 不支持dynamic linking• 只支持static linking

• Magic page• 启动时内核自动在0x4347c000分配一页,填充随机值• 代替了传统Attack­ & Defence CTF中的flag文件。

Page 7: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

DECREE环境

• 设置了7种系统调用,x86­-32的其他系统调用均不可用:• allocate , mmap 的包装• deallocate , munmap 的包装• fdwait , select 的包装• random ,获取随机数• receive , read 的包装• terminate , exit 的包装• transmit , write 的包装

Page 8: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

传统Attack & Defence模式简介

• 每个队伍控制一台机器机器,称为gamebox

• 在gamebox上部署着若干服务

• 每个gamebox的初始状态相同

• 攻击其他队伍获得flag得分

• 主办方定时使用checker确认服务可用性

Page 9: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

传统Attack & Defence模式 对比 CGC比赛模式

• 每个队伍控制一台机器机器

• 在gamebox上部署着若干服务

• 攻击其他队伍获得flag得分

• 主办方定时使用checker确认服务可

用性

• 提供流量

• 由主办方提供平台接口,队伍不控制机器• 主办方提供比赛题目(Challenge Binary)• 防御:编写IDS规则/给CB打补丁(公开)• 提交Proof of vulnerability由主办方判断攻

击是否成功• 主办方每轮通过poller确认服务的可用性、

以及时间和内存的额外开销• 提供流量

Page 10: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

传统Attack & Defence模式计分规则

• 零和游戏

• 受到攻击的队伍丢失一定分数,均分给攻击成功的

队伍

Page 11: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

本次DEF CON CTF比赛规则• 逐轮加分

• 评分标准• 每轮某题如果上传CB或IDS,不得分;否则根据以下三个要素加分:

• Security,1或2,防御成功取2,被任意一个队伍攻击则取1• Availability,0~1,由通过poller的比例和内存时间开销计算• Evaluation,1~2,为1+可攻击队伍数/对手数

• 每道题加分为• 200∗ security∗ availability∗ evaluation

• 一轮加分为所有题目的加分之和

Page 12: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

策略考虑

• 做好防御非常重要

• 尽可能少的上传CB

• 在被攻击之后再上传CB

• 可以参考其他队伍的CB

Page 13: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

赛前准备

• 订套房

• 小套房+amazon折叠桌+宜家折叠椅

• 联系后勤同学

• 沃尔玛采购干粮+饮料

Page 14: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 15: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 16: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

出发!拉斯维加斯

• 分别从北京、上海前往拉斯维加斯

• 再次巧遇TK教主

Page 17: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

比赛前24小时

• 比赛分工

• 准备工具• Team-Interface• Pcap Search• Patch• SIG• BinDiff

Page 18: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

网络配置

Page 19: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

赛前聚餐

Page 20: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

悲剧总是常常发生

• 一个同学电脑显卡损坏无法开机

• 另一个同学电脑显示屏损坏

• NewEgg购买新显示屏

• 更换时未拔电池,导致主板损坏

• Macbook AIR + 远程桌面

Page 21: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

比赛开始!

• 只有8个badge,8个人去现场

• 9点~10点配置网络,10点~11点测试系统、熟悉系统

• API采用HTTP Basic Authentication,Mayhem也不得

不改接口

• 主办方系统直到下午3点才修复问题

Page 22: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 23: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 24: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 25: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

题目清单CSID 时间 描述 大小

LEGIT_00008 day1~day2中午 简单栈溢出 434KB

LEGIT_00003 day1~day3中午 PowerPC模拟器 323KB

LEGIT_00007 day1~day2结束 解释器 467KB

LEGIT_00004 day2~ 菜单题 128KB

LEGIT_00006 day2~ 编译器 492KB

LEGIT_00001 day2~ 多CB通讯 ~380KB x 4

LEGIT_00009 day3~ 加混淆的菜单题 181KB

LEGIT_00002 day3~ 菜单题 391KB

Page 26: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

LEGIT_00002

Page 27: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

LEGIT_00002

Page 28: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

LEGIT_00002

Page 29: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

第一天大事记(15:00PM~20:00PM)• LEGIT_00008,程序很短

• Fuzz出了栈溢出,然而lokihardt马上First Blood

• 迅速重放

• LEGIT_00003,PowerPC模拟器

• 文件格式栈溢出,lokihardt继续First Blood

• 重放2个漏洞的POV,原创一个POV

• LEGIT_00007,解释器

• expandtab命令栈溢出,PPP First Blood

• 重放

Page 30: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

第一天结束积分榜

Page 31: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

第二天大事记(10:00PM~20:00PM)• LEGIT_00003打全场

• PowerPC模拟器内heap overflow,TYPE2 POV,通过寄存器泄露flag,十分隐蔽

• LEGIT_00007打全场• 漏洞1: 下标溢出,相对明显,能打的数量逐渐减少• 漏洞2: UAF,即使看到流量,难以分析漏洞点,PPP删除功能来修补,针对PPP写出POV• 第二天结束时撤下题目,当时我们能打11队(含PPP),PPP能打8队,不含b1o0p

• LEGIT_00004打全场• 多个重放• 任意写0漏洞

• LEGIT_00006• 编译器难以逆向,只会重放

• LEGIT_00001• 接近第二天结束才放出,发现/重放了一个简单栈溢出

Page 32: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

第二天分数变化

Page 33: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 34: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

第三天战况(10:00PM~14:00PM)• LEGIT_00003:继续打全场,2小时后题目下线

• LEGIT_00006:通宵分析无进展,但是已修补已知漏洞

• LEGIT_00001:两个POV,逐渐越打越少

• LEGIT_00009:混战,多个漏洞,各种重放

• LEGIT_00002:原创POV,打大部分队伍,打的时间不长

Page 35: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

最终积分榜Team Final Score

PPP 113555

b1o0p 98891

DEFKOR 97468

HITCON 93539

KaisHack GoN 91331

LC↯ BC 84412

Eat Sleep Pwn Repeat 80859

binja 80812

pasten 78518

Shellphish 78044

9447 77722

Dragon Sector 75320

!SpamAndHex 73993

侍 73368

Mayhem 72047

Page 36: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

积分曲线

Page 37: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

赛后交流• PPP

• LEGIT_00003也写出了一个打全场的隐蔽POV• 编译CGC PYTHON解释器,写PYTHON脚本的POV• 流量自动分类• RSA后门

• DEFKOR• 单打独斗,配合问题多

• HITCON• 擅长PATCH,手工删除PPP后门

• Mayhem• 自动生成LEGIT_00004的任意写0漏洞POV

• Shellphish• LEGIT_00009通过机器解出• PATCH也有后门

Page 38: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

闭幕式

Page 39: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

下一届比赛

• Custom architecture

• Custom operating system

Page 40: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

参考资料• Maskray的Bloghttps://maskray.me/blog/2016-08-26-defcon-24-ctf

• Legitimate Business Syndicate对平台的介绍https://blog.legitbs.net/2016/06/def-con-ctf-2016-is-using-cyber-grand.html

• ForAllSecure评CGChttps://blog.forallsecure.com/2016/07/26/why-cgc-matters-to-me/

• Cyber Grand Shellphish,Shellphish在DEFCON 8月7日Track 2的展示https://media.defcon.org/DEF%20CON%2024/DEF%20CON%2024%20presentations/DEFCON-24-Shellphish-Cyber%20Grand%20Shellphish-UPDATED.pdf

• HITCON的展示http://www.slideshare.net/seiyalee/hitcon-cgcautonomous-hacking-and-patching/1

• RomanGol Liarod的机器的黎明 – 第24届DEF CON CTF总决赛亚军队员访谈

• SpamAndHex的Pek Gabor写的参赛记http://blog.crysys.hu/2016/08/spamandhex-at-the-24th-defcon-ctf-finals/

• DEFKOR的Dongkwan Kim写的参赛记https://kaishackgon.blogspot.kr/2016/08/defcon.html

Page 41: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

吃喝

Page 42: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

不止于比赛

Page 43: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

清华学生网络安全技术协会招新

• 每年有多次出国参加国际CTF大赛的决赛,例如美国、欧洲、韩国、日本等等,我们有赞助商提供费用支持

• 在清华FIT楼有条件优越的实验室场地

• 提供了GoogleGlass、PS4、AppleTV等众多智能设备供大家研究

• 比赛交流共同进步

Page 44: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic
Page 45: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

怎样才能加入协会?

• 我们准备了CTF竞赛领域不同方向的7个简单且

有趣的挑战题,要求报名的同学独立完成其中的

任意2个或多个问题,鼓励尽量多地完成不同领

域的挑战题。

Page 46: b1o0p 的 DEF CON CTF 2016 记录 - EOLfree.eol.cn/edu_net/edudown/spkt/kun.pdf · • 把ELF文件头从 ELF 改成 CGC 创建了一种新的可执行文件格式 • 不支持dynamic

欢迎加入清华大学学生网络安全协会

• 招新报名群 • 协会订阅号