想像一下在不久的将来,一位攻击者决定要攻击一家跨国企业的数字资产,目标是从花费数百万美元构建的安全防御基础设施中挖掘出价值数亿的知识产权。攻击者很娴熟地祭出“神器”——最新版本Metasploit,在攻破目标组织的网络边界防御之后,他找到了一个“软肋”,并有条不紊地实施一系列渗透攻击,但是直到他攻陷网络中每一个角落之后,好戏才刚刚上演。他在系统之间神出鬼没,寻找核心业务组件,而企业仍然在按部就班地运营,没人能够察觉到他的存在。弹指之间,他让数百万美元的安全防御设施灰飞烟灭,将公司最敏感的知识产权数据手到擒来。
恭喜你完成了一次漂亮的工作,你已经展示出真正的业务影响和后果,现在是写报告和收钱的时候了。令人称奇的是,现今的渗透测试者就已经处在上面场景所描述的假想攻击者角色,应那些需要高度安全等级的企业邀请,来实施合法的攻击。欢迎来到渗透测试的神奇世界。为什么进行渗透测试?
企业在保护关键基础设施的安全计划中投入数百万美元,来找出防护盔甲的缝隙,防止敏感数据外泄。而渗透测试是能够识别出这些安全计划中的系统弱点与不足之处的一种最为有效的技术方式。通过尝试挫败安全控制措施并绕开防御机制,渗透测试师能够找出攻击者可能攻陷企业安全计划、并对企业带来严重破坏后果的方法。
当你在阅读本书时,请记住你并不是非要攻陷哪个或者哪些系统,你的目标是以一种安全和受控的方式,来展示攻击者可以如何对一个组织造成严重破坏,并影响它的业务盈利、维持声誉和保护客户的能力。
为什么是Metasploit?
Metasploit 并不仅仅是一个工具软件,它是为自动化地实施经典的、常规的,或复杂新颖的攻击提供基础设施支持的一个完整框架平台。它使你可以将精力集中在渗透测试过程中那些独特的方面上,以及如何识别信息安全计划的弱点上。
当你通过逐章阅读本书并建立起一个完整全面的渗透测试方法体系的同时,你可以看到如何在你的渗透测试过程中以多种方式来使用Metasploit 框架软件。Metasploit 能够让你通过选择它的渗透攻击模块、攻击载荷和编码器来轻易实施一次渗透攻击,也可以更进一步编写并执行更为复杂的攻击技术。在本书中,我们也会介绍几个基于Metasploit 框架所构建的第三方工具——其中一些是由本书作者所编写的。我们的目标是让你充分认识Metasploit 框架,为你展示一些高级的攻击技术,并确保你能够可靠地应用这些技术。我们希望你能够像我们编写过程中一样享受这本书。进入游戏,让我们开始玩吧!
Metasploit 发展简史
Metasploit 最初是由HD Moore 所开发和孕育的,当时HD 只是一个安全公司的雇员,当他意识到他的绝大多数时间是在用来验证和处理那些公开发布的渗透代码时,他便开始为编写和开发渗透代码构建一个灵活且可维护的框架平台。2003 年的10 月HD 发布了他的第一个基于Perl 语言的Metasploit 版本,当时一共集成了11 个渗透攻击模块。
HD 于2004 年4 月发布了完全重写后的Metasploit 2.0,这个版本包含了19 个渗透攻击模块和超过27 个攻击载荷。在这次发布之后不久,Matt Miller(Skape)加入了Metasploit 开发团队,随着项目逐步获得关注,Metasploit 框架也获得了来自信息安全社区的大量代码贡献,并很快成为了一个渗透测试与攻击的必备工具。
在使用Ruby 编程语言进行了一次完全重写之后,Metasploit 团队在2007 年发布了Metasploit3.0。Metasploit 框架从Perl 到Ruby 的移植整整花了18 个月,结果造就了超过15 万行的新代码。随着3.0 版本的发布,Metasploit 在安全社区获得了更加广泛的用户群,并在代码贡献方面也得到了快速的发展。
2009 年秋季,Metasploit 被漏洞扫描领域的一家领军企业Rapid7 公司收购,Rapid7 公司允许HD 来招募一支团队,专注于Metasploit 框架的开发。自从被收购之后,Metasploit 上的代码更新比任何人所预期的都要快得多。Rapid7 公司在Metasploit 框架的基础上也发布了两款商业版本:Metasploit Express 和Metasploit Pro。Metasploit Express 是一个带有GUI 界面的轻量级Metasploit 框架软件,并增加了一些额外的功能,包括报告生成和其他一些很有用的特性。Metasploit Pro 则是Metasploit Express 的扩展版本,能够支持以团队协作方式实施的渗透测试过程,并拥有如一键创建VPN 通道等很多有用的特性。
关于本书
本书的目标是为你传授从Metasploit 基础到渗透攻击高级技术的所有知识和技能,我们的目的是为初学者提供一本有用的指南教程,为职业的渗透测试工程师提供一本参考索引,然而我们不会总是牵着你的手前行。编程知识是在渗透测试领域中必须具备的基础,本书中的很多例子都会使用Ruby 或者Python 编程语言,虽然我们建议你去学习并掌握像Ruby 或Python 这样的一种编程语言,来帮助你进行更高级的渗透攻击和攻击定制开发,但对于阅读本书来讲编程知识不是必需的。
当你逐渐熟悉Metasploit 之后,你会发现:Metasploit 框架是一项经常更新并拥有一些新的特性、渗透代码和攻击的技术。本书在编写时,Metasploit 中的知识也在不停地更新,没有一本书能够跟上如此快速开发的脚步,因此我们更加关注于基础,因为一旦你理解了Metasploit 如何工作,你就有能力自己快速地去了解和掌握Metasploit 框架的更新内容了。
本书内容
这本书如何才能帮助你入门并让你的技能登上一个新的台阶呢?每个章都以前一章作为阶梯,这样可以帮助你从零开始来建立起作为渗透测试者的基本技能。
第1 章:“渗透测试技术基础”,帮你建立起关于渗透测试的方法学。
第2 章:“Metasploit 基础”,引领你认识Metasploit 框架中的各种工具。
第3 章:“情报搜集”,为你展示在渗透测试侦察阶段利用Metasploit 搜集情报信息的不同方法。
第4 章:“漏洞扫描”,指导你如何发现安全漏洞并充分利用漏洞扫描技术。
第5 章:“渗透攻击之旅”,带你进入渗透攻击的世界。
第6 章:“Meterpreter”,让你见识后渗透攻击阶段的瑞士军刀——Meterpreter。
第7 章:“免杀技术”,关注对杀毒软件进行逃逸的底层技术概念。
第8 章:“客户端渗透攻击”,为你展示客户端渗透攻击和浏览器安全漏洞。
第9 章:“Metasploit 辅助模块”,带你了解辅助模块的多样化能力。
第10 章:“社会工程学工具包”,这是你在社会工程学攻击中使用SET 的参考指南。
第11 章:“Fast-Track”,为你全面剖析Fast-Track——一个自动化的渗透测试框架软件。
第12 章:“Karmetasploit 无线攻击套件”,为你展示如何利用Karmetasploit 进行无线攻击。
第13 章:“编写你自己的模块”,教你如何编写自己的渗透攻击模块。
第14 章:“创建你自己的渗透攻击模块”,介绍Fuzz 测试技术,以及如何使用缓冲区溢出技术来创建渗透攻击模块。
第15 章:“将渗透代码移植到Metasploit”,让你深入地体验将已有渗透代码移植成Metasploit 框架模块的过程。
第16 章:“Meterpreter 脚本编程”,为你展示如何编写自己的Meterpreter 脚本。
第17 章:“一次模拟的渗透测试过程”,将所有的技术综合在一起,来带领你进行一次模拟的渗透攻击。
关于道德伦理的忠告
我们编写本书的目的是帮助你提升作为渗透测试者的技能。作为一名渗透测试者,我们可以击败安全防御机制,但这仅仅是我们工作中的一部分。当你进行渗透攻击时,请记着如下的忠告:
不要进行恶意的攻击;
不要做傻事;
在没有获得书面授权时,不要攻击任何目标;
考虑你的行为将会带来的后果;
如果你干了些非法的事情,天网恢恢疏而不漏,你总会被抓到牢里的。
无论本书作者,还是本书的出版商——No Starch 出版社(译者注:再加上本书译者和中文书出版商——电子工业出版社),都不会宽恕或鼓励滥用本书讨论的渗透测试技术进行非法活动的行为,也不会对其承担任何责任,我们的目标是让你变得更具能力,而不是帮助你自找麻烦,而且我们也不想,也没有能力把你从里面捞出来。