精通Metasploit渗透测试(第3版)
上QQ阅读APP看书,第一时间看更新

前言

如今,在商业领域到处都需要渗透测试。近年来,随着网络和计算机犯罪现象的逐年递增,渗透测试已成为网络安全研究的核心问题之一。应用渗透测试技术可以有效地避免来自企业内部和外部的威胁。企业应用渗透测试的必要性就在于它可以发现网络、系统或者应用程序的漏洞。此外,由于渗透测试是从攻击者的角度出发,因而可以更好地发现企业的弱点和威胁。在发现系统中的各种潜在缺陷以后,渗透测试还要利用这些漏洞来评估系统存在的风险因素以及漏洞可能产生的影响。

不过,渗透测试能否成功很大程度上取决于渗透测试工程师对目标信息的掌握情况。因此渗透测试工程师通常会采用黑盒测试和白盒测试两种截然不同的方法进行工作。黑盒测试指的是渗透测试工程师在事先并没有目标信息的情况下开展的测试。因此渗透测试的第一步是系统地收集目标的信息。而在进行白盒渗透测试时,渗透测试工程师事先掌握了足够的目标信息,可以直接验证目标系统可能存在的安全漏洞。

通常,一次完整的渗透测试包含如下7个阶段。

前期交互阶段:渗透测试工程师要确定渗透测试的目标和测试范围。他们要和客户讨论渗透测试的所有关键细节。

信息收集阶段:渗透测试工程师采用主动和被动两种方法来收集目标信息,其中被动信息收集可以在完全不接触目标的情况下进行。

威胁建模阶段:渗透测试工程师要根据之前获得的信息,找出对目标系统威胁最大的弱点,从而确定最为高效的渗透攻击方式。

漏洞分析阶段:渗透测试工程师要找到并确认目标系统上存在的已知的和未知的漏洞,然后在实验环境中进行验证。

渗透攻击阶段:渗透测试工程师要利用在上一阶段发现的漏洞来入侵目标系统。这通常意味着渗透测试工程师会尝试获得目标系统的控制权。

后渗透攻击阶段:渗透测试工程师要开展一些实际的入侵行为。例如,盗取目标计算机的某个机密文件,直接关闭目标系统,或者在目标系统上创建一个新的远程管理账户,等等。总之,渗透测试工程师应该完成渗透攻击后的所有工作。

报告阶段:渗透测试工程师需要将渗透测试的结果汇总为一个文件,并提供漏洞修补和安全升级的解决方案。

当渗透测试的目标仅仅是一台计算机时,完成以上7个阶段的难度不大。可是当渗透测试工程师要面对的目标环境包含数以百计的计算机时,一切就不那么容易了。因此,在对大型网络进行渗透测试的时候,往往需要使用自动化渗透测试框架来代替手工测试。设想这样一个场景:渗透的目标刚好是100台计算机,它们运行着同样的操作系统和服务。如果渗透测试工程师手动对每一台计算机进行测试,那么将会耗费掉大量的时间和精力。这种复杂情况正是渗透测试框架可以应对的。使用渗透测试框架不仅可以节省大量的时间,同时也可以提供更大的灵活性,从而灵活地改变攻击向量,覆盖更多的目标系统。渗透测试框架还可以将大部分攻击向量、扫描过程、漏洞识别以及(最重要的)漏洞渗透攻击自动化,从而节省时间并控制测试节奏。这就是Metasploit的作用所在。

Metasploit是目前最优秀,同时也是使用最广泛的渗透测试框架之一。Metasploit在IT安全社区享有盛名,不仅是一种优秀的渗透测试框架,还有很多创新特性,能让渗透测试更加轻松。

本书的目标就是为你介绍这个传奇性的渗透测试框架。本书着重介绍Metasploit渗透测试框架的开发、渗透模块的编写、其他平台成熟渗透模块的移植、系统服务的测试以及复杂的客户端测试。此外,本书还会指导你将用Ruby、汇编或者脚本语言(如Cortana)编写的外部渗透测试模块转换成Metasploit中的模块。阅读本书不仅能丰富你的渗透测试知识,还能提高你的编程能力。

读者对象

本书的目标读者是专业的渗透测试工程师、信息安全工程师和执法机构分析人员,这些人已经具备了Metasploit的基础知识,希望掌握Metasploit框架的使用技巧,同时增强渗透模块开发技能。本书还适合想要向Metasploit中添加自定义功能的研究人员阅读。本书可帮助初级和中级Metasploit框架使用者顺利成长为专家级使用者。此外,本书还讨论了Ruby编程和用Cortana编写攻击模块脚本,所以读者应该对这些编程语言有所了解。

本书内容

第1章“走近Metasploit渗透测试框架”,将介绍Metasploit渗透测试的基础知识。我们将学习渗透测试的方法论以及如何建立一个渗透测试的模拟环境。此外还将系统地介绍渗透测试的各个阶段,并讨论使用Metasploit相较于采用传统手工测试的优势。

第2章“打造定制化的Metasploit渗透测试框架”,将介绍为构建Metasploit渗透模块所需具备的Ruby编程基础,分析现有Metasploit模块的结构,还将详细介绍如何编写自定义扫描器、认证测试工具、后渗透模块和登录凭证采集模块。最后阐明如何使用RailGun开发自定义模块。

第3章“渗透模块的开发过程”,将系统演示如何编写渗透模块,并研究其中的开发要点。之后将讲解如何进行fuzz测试,以及如何利用调试器观察应用程序的行为,进而收集开发模块所需的重要信息。最后演示如何利用收集到的信息编写一个Metasploit模块,并讨论绕过SEH和DEP这类系统保护机制的方法。

第4章“渗透模块的移植”,将讲解如何将公开可用的渗透工具移植到Metasploit框架中,重点描述如何找出那些使用Perl、Python和PHP语言编写的模块的核心功能,并通过Metasploit库和函数将它们转化成与Metasploit兼容的渗透模块。

第5章“使用Metasploit对服务进行测试”,将讨论如何对各种常见服务进行渗透测试,并介绍Metasploit中的一些重要模块,这些模块可用来对SCADA、数据库和VOIP服务进行测试。

第6章“虚拟化测试的原因及阶段”,将简要介绍使用Metasploit进行渗透测试的整个过程,并重点介绍可与Metasploit协同完成渗透测试任务的工具(例如Nmap、Nessus和OpenVAS)以及它们在Metasploit中的使用方法。最后讲解如何手动和自动生成报表。

第7章“客户端渗透”,重点讨论如何将传统的客户端渗透攻击变得更加复杂、精准。首先介绍一个基于浏览器的渗透模块和一个基于文件格式的渗透模块,并讲解这些模块对被渗透的Web服务器和网站用户的影响。然后展示如何通过Metasploit中的DNS欺骗模块将浏览器的渗透模块变成“致命武器”。最后讲解如何使用Kali NetHunter渗透Android系统。

第8章“Metasploit的扩展功能”,将研究Metasploit的基本后渗透功能和高级后渗透功能。首先讨论Meterpreter提供的基本后渗透功能,然后讨论高级的后渗透模块。这一章不仅有助于你快速了解如何加快渗透测试过程,同时还会介绍Metasploit中的许多功能,它们可以在你编写漏洞脚本时帮你节省大量时间。这一章最后将探讨如何实现后渗透过程的自动化。

第9章“Metasploit中的规避技术”,将研究如何使用Metasploit的功能来实现攻击载荷对各种高级防御机制(例如杀毒软件)的规避,还会概述如何绕过各种IDPS工具(例如Snort)的签名过滤功能,以及如何绕过Windows防火墙的端口阻塞机制。

第10章“Metasploit中的‘特工’技术”,讨论执法机构如何使用Metasploit。这一章的内容包括:会话代理,使用APT技术实现控制持久化,从目标系统中清除文件,利用代码打洞技术隐藏后门程序,使用Venom框架生成无法检测的攻击载荷,以及使用反取证模块避免在目标系统上留下痕迹。

第11章“利用Armitage实现Metasploit的可视化管理”,将讲解当前Metasploit最为流行的图形用户界面——Armitage,并使用Armitage对目标进行扫描和渗透。之后介绍在渗透测试中红队如何使用Armitage。此外,还将详细讲解Cortana,并利用它来编写自动化渗透攻击的脚本。最后讨论如何在Armitage中添加自定义功能,以及如何创建自定义界面和菜单。

第12章“技巧与窍门”,会讲解加速渗透测试和高效使用Metasploit的各种技巧。

本书要求

如果你想完成本书中的示例,将需要六七台计算机(也可以是虚拟机),其中一台作为渗透测试机,其他几台则作为渗透测试的靶机。

除此以外,你还需要Kali Linux的最新VMware映像文件,它在默认情况下已经包含了Metasploit,并且包含创建本书示例所需的所有其他工具。不过,在某些情况下,你可以使用安装了Metasploit的最新版Ubuntu桌面操作系统。

你还需要将Ubuntu、Windows 7、Windows 10、Windows Server 2008、Windows Server 2012和Metasploitable 2安装到虚拟机中,或者直接安装到计算机上,这些操作系统将作为Metasploit渗透测试的靶机。

此外,本书的每一章都提供了示例中使用的其他工具和存在漏洞的软件的下载链接。

下载示例代码文件

你可以使用自己的账户从www.packtpub.com下载本书的代码示例文件。如果你是通过其他途径购买的本书,那么可以访问www.packtpub.com/support进行注册,这些文件将会通过电子邮件发送给你。

你可以通过以下步骤来下载这些代码文件。

(1)在www.packtpub.com进行登录或者注册。

(2)选择“SUPPORT”标签。

(3)点击“Code Downloads & Errata”。

(4)在搜索框中输入书名,并遵循提示指令。

下载之后,请确保使用如下软件的最新版本来解压该文件:

❏ WinRAR / 7-Zip(Windows)

❏ Zipeg / iZip / UnRarX(Mac)

❏ 7-Zip / PeaZip(Linux)

也可以在GitHub上获取本书的代码文件:https://github.com/PacktPublishing/Mastering-Metasploit-Third-Edition。如果代码有所更新,我们将会在GitHub中更新。

https://github.com/PacktPublishing/上还有很多其他Packt图书的代码和视频。欢迎查看!

下载彩色图片

本书提供了一个PDF文件,其中包含了书中出现的屏幕截图和图表的彩色版本,下载链接是:https://www.packtpub.com/sites/default/files/downloads/MasteringMetasploitThirdEdition_ColorImages.pdf

排版约定

本书采用以下排版约定。

正文中的代码、数据库表名和用户输入用等宽字体表示。例如:“可以看到,我们在会话1里面使用了post/windows/manage/inject_host模块。”

代码段的格式如下:

          irb(main):001:0> 2
        => 2

命令行输入或者输出写成如下形式:

          msf > openvas_config_list
        [+] OpenVAS list of configs

新术语和重点强调的内容以黑体字显示。

此图标表示警告或重要说明。

此图标表示提示和技巧。

联系我们

欢迎你与我们取得联系。

一般反馈:请以电子邮件的形式发送到feedback@packtpub.com,并在邮件主题中注明书名。如果你对本书有任何疑问,可以将问题发送至questions@packtpub.com。

勘误:虽然我们已尽力确保本书内容正确,但出错仍旧在所难免。如果你在书中发现任何文字或者代码错误,欢迎将这些错误提交给我们,以便帮助我们改进本书的后续版本,从而避免其他读者产生不必要的误解。如果你发现了错误,请访问网页http://www.packtpub.com/submit-errata,选择相应图书,单击Errata Submission Form链接,然后填写具体的错误信息即可。本书中文版勘误请到http://www.ituring.com.cn/book/2657查看和提交。——编者注

反盗版:如果你发现我们的作品在互联网上以任何形式被非法复制,请立即告知我们相关网址或网站名称,以便我们采取措施。请将可疑盗版材料的链接发送到copyright@packtpub.com。

成为作者:如果你在某一方面很有造诣,并且愿意著书或参与写作,可以参考我们的作者指南:authors.packtpub.com

评论

我们欢迎读者的反馈意见。如果你阅读并使用了本书,为什么不在购书网站上发表一条评论呢?如果你发表了评论,那么潜在的读者就可以看到并根据你公正的意见来做出购买决定,Packt也可以了解你对我们产品的看法,作者也可以看到你对他们的书的反馈。谢谢!

有关Packt的更多信息,请访问http://packtpub.com

免责声明

本书内容仅限于以合乎道德的方式使用。如果你没有得到目标系统所有者的书面许可,请勿使用本书中的任何内容发起渗透攻击。如果你采取非法行动,很可能会被逮捕并起诉。如果你滥用本书中的任何信息,Packt出版社将不承担任何责任。本书内容只能在测试环境时使用,并且须得到目标系统负责人的书面授权。

电子书

扫描如下二维码,即可购买本书的电子版。