我已经阅读并完成了Reversing: Secrets of Reverse Engineering和Hacking: The Art of Exploitation。他们俩都以自己的方式进行了启发,但我仍然觉得其中提供的许多技术和信息在某种程度上已经过时了。
当臭名昭著的 Phrack 文章Smashing the Stack for Fun and Profit写于 1996 年时,就在我认为计算机安全“黄金时代”之前。
在随后的几年中编写漏洞利用相对容易。在受害者机器上执行缓冲区溢出和执行一些任意 shell 代码所需要的只是 C 和汇编的一些基本知识。
简单地说,事情变得复杂了很多。现在,安全工程师必须应对地址空间布局随机化 (ASLR)、数据执行保护 (DEP)、堆栈 Cookie、堆 Cookie 等问题。编写漏洞利用程序的复杂性至少上升了一个数量级。
如果不使用一堆标志进行编译以关闭现代保护,您将无法在今天找到的教程中运行大多数缓冲区溢出漏洞利用。
现在,如果你想编写一个漏洞利用程序,你必须想办法关闭 DEP,用你的 shell 代码喷洒堆数百次,并尝试猜测你的 shellcode 附近的随机内存位置。更不用说当今使用的托管语言的普遍性,当涉及到这些漏洞时,这些语言更加安全。
我希望将我的安全知识扩展到为十年老系统编写玩具漏洞之外的知识。面对我上面概述的所有保护措施,我无法找到有助于解决编写漏洞利用问题的资源。
有哪些更先进和流行的论文、书籍或其他资源专门用于应对为现代系统编写漏洞利用程序的挑战?