防病毒、恶意软件、僵尸网络等正在成为我们日常生活中越来越大的一部分。是否有任何资源讨论创建防病毒工具、安全工具等?似乎是一个有趣的话题,但我无法找到任何真正的资源来参考以了解更多信息。
建议?(好和坏?)
我假设大多数用于此的语言是 C++ 或汇编?或者还有其他适合这类物品的吗?
防病毒、恶意软件、僵尸网络等正在成为我们日常生活中越来越大的一部分。是否有任何资源讨论创建防病毒工具、安全工具等?似乎是一个有趣的话题,但我无法找到任何真正的资源来参考以了解更多信息。
建议?(好和坏?)
我假设大多数用于此的语言是 C++ 或汇编?或者还有其他适合这类物品的吗?
Alex 对 Bruce Schneier 工作的建议非常好,每个人都应该阅读他的东西,但可能不会解决你在说什么。即便如此,你也应该阅读它。他是当今安全话题最清晰的作家,并且在一个经常歇斯底里的行业中发出理智的声音。
SANS 阅览室是一个免费的入门场所。这还远远不够,但这是基础。
我对The Shellcoder's Handbook相当满意。这是一个很好的介绍,其中包含一些实用的代码。它展示了如何编写真正的漏洞利用程序,这是了解如何防范漏洞利用程序的第一步。
漏洞利用工作有很多种,但对于经典的堆栈粉碎攻击,您需要了解 C 和目标平台(通常是 Intel)的汇编程序。C++ 在这个世界上并不常见。当编译器完成它时,它太曲折了,而且对于需要的东西来说太臃肿了。在我看来,Objective-C 几乎更有用,因此您可以理解Mac 逆向工程。但这不是通常进行安全性的地方。在这我说的是利用本身。许多安全工具当然是用 C++ 编写的。
对于安全工具方面,您可能想询问 serverfault。有很多,上面的SANS链接应该有一些常用工具(Nessus、nmap、hping、metasploit等)的链接。sectools.org维护着一个我喜欢的大列表。
如果你要成为一名安全开发人员,你需要很大的广度和深度。您需要了解网络协议以及与之对话的代码。您应该对从汇编程序到 ruby 的语言相当熟悉。其中大部分是一种思维方式,而不是实际的技能组合,但那些擅长它的人往往拥有广泛的技能,并且能够快速、经常地学习新事物。
由于您特别提到了检测和监控漏洞,您应该深入研究诸如 snort(用于学习如何检测)和 metasploit(用于生成要检测的攻击)之类的工具。
对于安全的整体观点,强烈推荐Bruce Schneier的任何内容——不是您心目中的特定威胁焦点,而是一种背景,无论您扮演什么角色,无论您拥有什么背景,都能让您更有效地解决安全问题。
对于更具体的观点,我会推荐这本书(以及我在同一系列中深入研究过的每一本书,但我不能亲自担保所有这些,它们有几十个!-)。
去http://www.milw0rm.com/查看漏洞。
除了 Alex Martelli 发布的内容外,您还可以考虑这本书。