Corelan Win32漏洞开发实战训练营回顾
刚刚从BruCON 2012回来,我在会议周开始时参加了Corelan Live - Win32漏洞开发实战训练营。很多人询问这门课程的内容,因此我整理了这篇回顾。
首先,当Peter说禁止录音时,他是认真的!课程的前五分钟,Peter解释了课程是如何创建的,并重申了为什么他不希望任何材料被录制。他强调在课程期间和之后会提供尽可能多的帮助,而且学员可以带走幻灯片和练习的副本,因此没有必要录制任何内容。尽管如此,第一天午餐后,我们还是发现一个人因为使用录音笔而被赶出教室。他声称由于语言障碍跟不上进度,但后来发现他来自一家培训公司——大家可以自行联想。
课程内容概述
简而言之,课程非常艰苦,但很有收获。第一天从早上9点持续到晚上10:30。我们从大量关于操作系统工作原理和应用程序如何在其内部运行的理论开始。这让我回想起了大学时的理论课,现在这些知识变得更有意义了。然后,我们转向一个简单的缓冲区溢出,先讲幻灯片,然后进行实验,接着学习了控制EIP的不同方法、绕过栈保护,最后以堆喷射结束第一天。第二天的主要内容是绕过DEP和ASLR,同样有大量的幻灯片和实验。由于酒店要求我们提前离开房间,我们在晚上8点结束,快速概述了一些未涵盖的内容。
我还没有仔细核对,但幻灯片中大约有20个模块,我们可能只覆盖了一半。这听起来好像我们错过了很多内容,但我真的觉得无法吸收更多了。对于未涵盖的部分,我希望在掌握(或者更准确地说,勉强理解)已学内容后,能抽时间自学。如果课程节奏再快一点,我肯定会错过一些东西。有些实验可能再多5分钟会更好,但当我们觉得某件事快要成功时,总会这么说。
最大化学习效果的建议
-
提前充分休息:在一封准备邮件中提到,确保课程前有充足的睡眠。不幸的是,我带着家人一起参加了BruCON,而两岁的Pippa决定前一晚不让我睡觉。因此,当晚上7:30左右开始讲堆喷射时,我开始走神,只记住了堆喷射攻击的要点。看来我暂时不会研究基于浏览器的漏洞利用了。
-
保持专注:即使短暂分心,也可能错过重要内容。确保所有需要的工具都已设置、准备并测试好。我习惯在Linux中使用VirtualBox,因此以为可以在当天快速设置所需的网络,但由于某些原因,在Windows中它的工作方式不同,导致我短暂慌乱。幸运的是,我较快地解决了问题,没有错过太多,但这可能破坏整个学习体验。
-
提前复习Python和Ruby技能:不需要成为编程高手,但必须知道如何连接字符串并进行基本的字符串长度数学运算。如果在脚本编写上挣扎,实验将无法进行。
-
了解Metasploit漏洞模块的结构:课程中会编写一个模块,虽然框架已经写好,只需要插入实际的漏洞代码,但理解整体结构会大有帮助。
-
记住使用!mona help:它是你的好朋友。
-
最后,别忘了栈调整(这在当天会变得有意义!)
推荐这门课程吗?
这取决于你的背景。要从中获益,你需要对应用程序的工作原理、程序如何组装以及操作系统功能有良好的理解。Peter在课程开始时很好地解释了这些内容,但如果你是第一次接触这些概念,可能会很吃力。此外,你需要具备一些基本的脚本技能,否则无法组装实际的漏洞利用代码。如果你满足这些前提条件,我绝对推荐参加。Peter是我见过的最热情洋溢的讲师之一,课程期间提供的支持以及后续的帮助使得这门课程物超所值,内容也是一流的。
不过要注意,我原本期望课程结束后能够开始为发现的任何易受攻击的应用程序编写漏洞利用代码。但现实是,要达到那个水平还需要付出大量努力。这与课程内容无关,而是因为漏洞开发本身的技术难度很高。从我的观察来看,初始学习曲线非常陡峭。
最后,建议你把录音笔留在家里,它们真的不受欢迎!