- 对本书的赞誉
- 序一
- 序二
- 序三
- 前言
- 第一部分 安全架构
- 第 1 章 企业信息安全建设简介
- 第 2 章 金融行业的信息安全
- 第 3 章 安全规划
- 第 4 章 内控合规管理
- 第 5 章 安全团队建设
- 第 6 章 安全培训
- 第 7 章 外包安全管理
- 第 8 章 安全考核
- 第 9 章 安全认证
- 第 10 章 安全预算、总结与汇报
- 第二部分 安全技术实战
- 第 11 章 互联网应用安全
- 第 12 章 移动应用安全
- 第 13 章 企业内网安全
- 第 14 章 数据安全
- 第 15 章 业务安全
- 第 16 章 邮件安全
- 第 17 章 活动目录安全
- 第 18 章 安全热点解决方案
- 第 19 章 安全检测
- 第 20 章 安全运营
- 第 21 章 安全运营中心
- 第 22 章 安全资产管理和矩阵式监控
- 第 23 章 应急响应
- 第 24 章 安全趋势和安全从业者的未来
- 附录
18.7 网络攻防大赛与 CTF
2018 年 7 月,银保监会发了一个《关于银行保险业网络安全攻防比赛的通知》,要求各机构积极报名参赛。其实在此之前,一些地方银监局就已经在组织类似的比赛了。此类比赛,在业内有更专业的名词—夺旗赛,我们下面进行阐述。
1.概述
夺旗赛(Capture The Flag,CTF),在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF 起源于 1996 年 DEFCON 全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。CTF 为团队赛,通常以三人为限,要想在比赛中取得胜利,团队中每个人在各种类别的题目中至少要精通一类,三人优势互补,取得团队的胜利。
2.赛事介绍
CTF 的大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称为“Flag”。
CTF 竞赛模式具体分为以下三类:
·解题模式(Jeopardy)。在解题模式 CTF 赛制中,参赛队伍可以通过互联网或者现场网络参与竞赛,与 ACM 编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与利用、Web 渗透、密码、取证、隐写、安全编程等类别。
·攻防模式(Attack-Defense)。在攻防模式 CTF 赛制中,参赛队伍在网络空间互相进行攻击和防守,通过挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式 CTF 赛制可以实时通过得分反映比赛情况,最终也以得分直接分出胜负,是一种竞争激烈、具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续 48 小时以上),同时也比团队之间的分工配合与合作。
·混合模式(Mix)。结合了解题模式与攻防模式的 CTF 赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式 CTF 赛制的典型代表如 iCTF 国际 CTF 竞赛。
3.题目类别
(1)Reverse
题目涉及软件逆向、破解技术等,要求选手有较强的反汇编、反编译功底。主要考查参赛选手的逆向分析能力。
所需知识:汇编语言、加密与解密、常见反编译工具。
(2)Pwn
Pwn 在黑客俚语中代表着攻破、获取权限;在 CTF 比赛中它代表着溢出类的题目,其中常见溢出漏洞类型有整数溢出、栈溢出、堆溢出等。主要考查参赛选手对漏洞的利用能力。
所需知识:C,OD+IDA,数据结构,操作系统。
(3)Web
Web 是 CTF 的主要题型,题目涉及许多常见的 Web 漏洞,如 XSS、文件包含、代码执行、上传漏洞、SQL 注入等。也有一些简单的关于网络基础知识的题目,如返回包、TCP/IP、数据包内容和构造。可以说题目环境比较接近真实环境。
所需知识:PHP、Python、TCP/IP、SQL。
(4)Crypto
题目涉及各种加解密技术,包括古典加密技术、现代加密技术,甚至出题者自创加密技术,以及一些常见编码解码,主要考查参赛选手密码学相关知识点。通常也会和其他题目相结合。
所需知识:矩阵、数论、密码学。
(5)Misc
Misc 即安全杂项,题目涉及隐写技术、流量分析、电子取证、人肉搜索、数据分析、大数据统计等,覆盖面比较广,主要考查参赛选手的各种基础综合知识。
所需知识:常见隐写术工具、Wireshark 等流量审查工具、编码知识。
(6)Mobile
主要分为 Android 和 iOS 两个平台,以 Android 逆向为主,选手破解 APK 并提交正确答案。
所需知识:Java、Android 开发、常见工具。
4.一些经验
(1)选人与分工
企业的安全人员(尤其在甲方)往往身兼数职,久而久之容易出现技能退化的情况。要参加比赛,首先得选好人,结合比赛涉及的知识点以及团队成员技能情况报名。考虑到以后 CTF 比赛可能是常态,所以招人时可以优先考虑有参加 CTF 比赛获奖的应聘者。有的企业可能安全人员才 1~2 人,这时候可以适当借助其他兄弟部门的力量(比如开发人员)参与。
既然是团队参加比赛,肯定涉及合作与分工。市面上招聘安全人员,普遍发现从事 Web 渗透的居多,从事二进制的偏少,因为二进制学习成本更高,难度更大,所以如果有二进制人才一定要拉进来。
(2)准备好工具
前面分析了题目类别及所需要的知识点,建议收集一些常用的工具或脚本,虽然在比赛现场手写代码让人觉得很厉害,但时间有限,还是要多做准备工作,图 18-7 为笔者收集的工具截图。
有了工具,还要会用,多用不同的工具,看哪些功能顺手,哪些需要配合使用。比如,同样是二进制工具,010Editor 就比 WinHex 方便很多;再比如,同样是看数据包的工具,Wireshark 支持的格式丰富,但 NetworkMiner 可以方便地看数据包里文件、参数等。
(3)适当练习
网上有很多 CTF 训练平台,建议参赛队伍先进行练习,看看各类题目到底是怎么样的,有哪些套路在里面。可能知识点选手们都掌握了,但还是没找到 Flag,这时候可以换个思路,或者跟大家交流讨论。因为这里涉及很多实操部分,不容易总结成文字,下面举个例子说明一下。
某 APK 里找 Flag,常规套路是先用 dex2jar 转换为 jar,然后用 JD-GUI 工具打开看代码,搜索 Flag,key 等关键字找,找不到就慢慢看代码,如图 18-8 所示。
图 18-7 CTF 工具集
图 18-8 CTF 找 Flag 举例
有的人可能还想看其算法实现,但有的人可能看到这个 base64 编码顺手反解一下就得到 Flag 了,这就是我们所说的套路或经验,多交流会有帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论