011.11.222.12.22.333.13.23.3455.166.17目錄介绍一、夺旗比赛1.1、找一场CTF1.2、找一份工作二、漏洞挖掘2.1、源代码审计2.2、二进制审计2.3、Web应用审计三、漏洞利用程序的构建3.1、二进制的漏洞利用(1)3.2、二进制的漏洞利用(2)3.3、Web应用的漏洞利用四、电子取证五、工具箱的构建5.1、工具箱的准备六、可实施的谍报技术6.1、案例研究七、参与者CTF 领域指南2CTF 领域指南原文:CTF Field Guide译者:做个好人来源:CTF领域指南协议:CC BY-NC-ND 3.0译者声明:本文翻译自美国trailofbits团队发布在Github上的《CTF Field Guide》手册,我们已与对方联系获得翻译授权,由于手册内容尚在更新过程中,故有部分缺失。如有翻译不当之处,请与我们联系更正:@IDF实验室。“Knowing is not enough; we must apply. Willing is not enough; we must do.” (仅仅知道还不够,我们必须付诸实践。仅有意愿还不够,我们必须付诸行动。)—— Johann Wolfgang von Goethe欢迎!很高兴你能来到这里,我们需要更多的像你这样的人。如果你想拥有一种能够自我防卫的生活,那就必须像攻击者那样思考。所以,学学如何在夺旗比赛(CTF)中赢得比赛吧,这种比赛将专业的计算机安全活动规则进行了浓缩,且具有可客观评判的挑战题。CTF比赛趋向关注的主要领域是漏洞挖掘、漏洞利用程序构建、工具箱构建和可实施的谍报技术(tradecraft)。无论你想赢得CTF比赛,还是想成为一名计算机安全专家,都至少需要擅长这些方面中的其中之一,理想情况下需要擅长所有这些领域。这就是我们编写此手册的目的。在这些章节中,你会找到赢得下一次CTF比赛的一切要素:以往CTF挑战赛的题目的查看和研究;帮助你设计和构建属于自己工具集的引导;包括现实世界中的和以往CTF比赛中的攻击者行为案例研究;为了让你更好过一些,我们在每节课程中补充了互联网上最好的配套参考资料,这些资料来自于一些计算机安全领域最好的人员之手。更进一步,我们希望你能够将此手册与实际工作结合起来使用。CTF 领域指南3介绍我们编写该手册是为了帮助你能够尽可能地快速学习,如果在学习过程中有任何问题,请与我们联系,我们将把你的问题转达给最合适的专家。如果有足够的需要,我们甚至可以安排一节线上课程。现在,让我们开始吧。CTF 领域指南4介绍一、夺旗比赛为什么选择CTF?计算机安全因其跨领域的特性在人才教育方面提出了一个挑战。计算机安全的课题领域的分布从计算机科学理论方面到信息技术管理方面的应用,这样很难简短概括计算机安全专业的灵魂是什么。评估这种专业性的一种近似方法已经出现:“夺旗”比赛。攻击为导向的CTF比赛尝试将专业计算机安全工作许多方面的本质浓缩为可客观评估的简短挑战题目。CTF比赛趋向于关注的领域包括漏洞挖掘、漏洞利用程序构建、工具箱构建和可实施的谍报技术(tradecraft)。一个现代的计算机安全专家应该至少其中一个领域的专家,理想情况下应该擅长所有这些内容。在CTF比赛中赢得胜利要求参赛选手在所有这些领域中至少是其中一方面的专家。所以,准备和参与CTF比赛是一种有效将计算机科学的离散面聚合、聚焦于计算机安全领域的方法。CTF 领域指南5一、夺旗比赛1.1、找一场CTF如果曾经你想开始练习跑步,那么可能你是将5000米作为一个目标。同样的原则在这里也适用:选择一个在不久之后你想要参加的一场CTF比赛,并设定一个练习计划。下面是我们推荐的一些CTF比赛:CMU主办的PicoCTF和PlaidCTF针对高校学生的HSCTFGhost in the Shellcode(Gits)NYU-Poly主办的CSAW CTF只针对学院派的UCSB iCTFDefcon CTF访问CTF Time和CapCTF calendar可以看到一年中每个星期都在发生的更多、更全的CTF比赛。Wargame有什么不同?除了持续进行之外,Wargame和CTF很相似。典型的情况是,Wargame题目被组织为许多级别,并随着被解决题目的增多而逐渐变难。Wargame是为CTF进行练习的绝佳方式!以下是我们最喜欢的一些Wargame站点:Micro CorruptionSmashTheStackOverTheWireExploit ExercisesCCDC怎么样?有一些仅做防御的比赛也将自己看作是CTF比赛,主要是高校网络防御挑战赛(CCDC,Collegiate Cyber Defense Challenge)及其地区比赛,我们的建议是你应该无视这些比赛。无奈的是它们的题目都是不切实际的题目,很少会教授你和安全相关的内容。虽然他们乐此不疲的将自己作为红队(Red Team)看待!CTF 领域指南61.1、找一场CTF1.2、找一份工作职业列表[编辑注:这是为pentest.cryptocity.net编写的一篇较老的文章,我们正在更新过程中。]以下这些是基于我已有的经验和你情况的不同而写的对于信息安全职业生涯的看法。如果你住在纽约市,而且对于应用安全、渗透测试或逆向工程感兴趣,刚刚踏入信息安全领域开始你的职业生涯,那么以下信息会对你非常适合。1. 雇主2. 角色3. 书本中学习4. 课程中学习5. 大学6. CTF比赛7. 沟通8. 见人9. 会议10. 认证11. 链接12. 指引的朋友雇主就我可讲的而言,在信息安全产业有五类主要的雇主(不计学院派)。政府非技术型财富500强(大多数是金融类)大型技术供应商(大多数是在西海岸)大型咨询公司(大多数非技术企业)小型咨询公司(大多数很酷)CTF 领域指南71.2、找一份工作你所工作的产业决定了你需要解决的主要问题。例如,金融行业重点强调的是对于商业过程将风险降低到最低损失(大规模自动化的原因)。另一方面,咨询常常意味着向人们销售想法X,X实际上就是一个漏洞或研究发现新的漏洞。角色我主要将信息安全职位分离对应到互联网网络安全、产品安全和咨询。进一步我将这些类型的工作分类为以下几个角色:应用安全(代码审计/应用评估)攻击者(攻击)合规性电子取证事件处理管理者网络安全工程师渗透测试政策/策略研究员逆向工程师安全架构师以上的每一个角色都要求有不同的、高专业性的知识面。这个站点对于应用安全和渗透测试是一个不错的资源,但是如果你对其他角色感兴趣就需要找其他资源。书本中学习幸运的是,关于每个信息安全方面的主题都有一打好书。Dino Dai Zovi和Tom Ptacek都有绝佳的读书列表。我们建议阅读以下图书:Gray Hat HackingThe Myths of SecurityHacking: The Next GenerationO'Reilly出版的任何一本你选择的脚本语言书如果你不知道自己在找什么书,那么可以访问O'Reilly提供的书单。他们可能是这个产业中最执着和最高质的图书出版商了。CTF 领域指南81.2、找一份工作别忘了,单纯的读书不会给予你超越谈资之外的任何附加技能,你需要练习或基于你从书本中实际学到和理解的内容创造一些东西。课程中学习如果你在找一些可以随手拿来和直接了当的东西,那么有许多在线的大学课程是关于信息安全的。我在下方列出了一些绝佳的课程资源(根据机构名称排序)。RPI课程是和这些课程最相似的一个,Hovav可以通过最佳学术阅读列表的内容获得绩点,但是列表中的每个课程都很出色。[编辑注:表格待添加/之后更新。]大学找到一所有专业安全课程大学的最容易和简单的办法是通过NSA Centers of AcademicExecllence(NSA-COE)机构列表。这个资质要求正逐渐放低以至于越来越多的大学已经获得此资质,它也可以帮助你寻找那些刚刚获得COE-CO资质的单位。记住,资质仅供参考。你需要深入了解每所大学实际的课程,而不是仅依靠资质做选择。一旦进入大学,要上那些能够强迫你编写大量代码解决难题的课程。IMHO的课程聚焦于理论或提供有限价值的模拟问题。如果你无法从整个CS课程表中确定哪些是有编程内容的CS课程,那么就向学长征求意见。另一种达成此项目的的方式是报考学校的软件开发专业而不是计算机科学专业。夺旗比赛如果你想获得和学到技能技巧,且想要做地更快,那么应该参加CTF比赛或一头扎进Wargame。值得注意的一点是许多这种挑战赛都有附加的会议(各种规模),参加这些比赛就意味着会错过整个会议。试着不要赛过头,因为参加会议有参加会议的好处(见下文)。有一些仅做防御的比赛也将自己定位为CTF比赛,主要是高校网络防御挑战赛(CCDC)及其地区比赛,我的建议是无视它们。他们的题目是关于系统管理,很少会教你安全相关的内容。尽管他们乐此不疲地将自己看作是红队(Red Team)。沟通在任何角色中,你的时间都主要花费在与其他人的沟通上,主要通过Email和会议,少量是通过电话和即时通讯(IM)。雇主的角色决定了你是否需要和内部安全团队、非安全技术人员或商业用户接触更多。例如,如果你在金融公司做网络安全工作,那么就需要和内部技术人员沟通更多。在大型组织中做好沟通的建议:学习写简洁、明了、专业的邮件。学习让事情有组织地被解决。不要随心所欲。CTF 领域指南91.2、找一份工作学习公司或客户的商业内容。如果你从商业层面考虑,你的选择就有a)不做任何事 b)解决事情 和c)考虑时间和成本更有说服力做事。学习你所在公司或客户是怎样工作的,比如关键人物、过程或其他能够让事情达成的激励因素。如果你仍然在学校学习CS课程,参加人文类课程会强迫你写东西。见人找到并参加你所在城市的安全聚会(CitySec),在大多数城市每个月都会有一次没有演讲的非正式会面。顺道提一句,我们参加的是我们本地的NYSEC。ISSA和ISC2关注于政策、合规性和其他新兴且不确定的话题。类似的,InfraGard主要关注在非技术性法律执行方面的话题。OWASP是由厂商发起形成的活动中最糟糕的例子,与其说它是和技术相关,不如说是和销售相关。会议如果你此前从来没参加过信息安全会议,使用下面的Google日历可以帮你找到一个低消费的本地会议。我的学生中有人认为参加一场会议是某种测验,所以尽可能地推脱不去。我保证我不会带着期末测验从灌木丛中跳出来,并在事后扣你的分数。信息安全会议日历如果你参加一场会议,不要太看重每个时间段的会谈。会谈只是吸引所有聪明的黑客在某个周末聚集到一个角落的诱饵:你应该见见其他与会者!如果一个特别的会谈非常有意思和有用,那么你应该和演讲者进行互动。关于这个主题,Shawn Moyer在Defcon嘉宾角的这篇文章中有更多描述。如果你在某个地方工作,并焦虑着如何向公司交代出席会议的事情,那么Infosec Leadersblog中有一些有用的建议。认证这个产业需要特别的知识和技巧,为了认证考试而学习不会对你的知识和技能有任何帮助。事实上,在很多情况下它还有坏处,因为你花费时间学习认证考试而导致你分心无法做该手册中提到的事情。即便如此,有一些便宜的和中立厂商的认证可以在你当前阶段帮助你突出你的简历,例如Network+和Security+或者甚至一个NOP,但是我认为认证在你找工作或专业发展中起不到什么作用。通常,有两种原因需要获得认证:你已经支付认证的费用,通过支付培训和考试或有时候在你获得认证之后会自动支付费用(通常是政府认证)。CTF 领域指南101.2、找一份工作你的公司或你的客户强迫你获得认证。这通常有助于销售增长,比如“你应该选择我们,因为我们所有的员工都有XYZ认证!”通常,花费时间在参加CTF上更加有产出效率,然后用你的最终排名来证明你的能力。链接关于该文章的Reddit和Hacker News子内容安全建议How to Break Into Security, Ptacek EditionVRT: How