精通Metasploit渗透测试(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-12 16:50:14

点击下载

作者:贾斯瓦尔(Nipun Jaswal)

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

精通Metasploit渗透测试

精通Metasploit渗透测试试读:

前言

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

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

通常一次完整的渗透测试包含下面七个阶段。

(1) 前期交互阶段

 在前期交互阶段,渗透测试工程师要确定渗透测试预期达到的目标,并确定测试的范围。渗透测试工程师将在这个阶段与客户展开讨论,确定本次渗透测试的所有业务与细节。

(2) 信息收集阶段

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

(3) 威胁建模阶段

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

(4) 漏洞分析阶段

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

(5) 渗透攻击阶段

 在渗透攻击阶段,渗透测试工程师要利用之前得到的成果来入侵目标系统的漏洞。这意味着在这个阶段渗透测试工程师会尝试去获得目标系统的控制权。

(6) 后渗透攻击阶段

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

(7) 报告阶段

 在报告阶段,渗透测试工程师需要将所有渗透测试过程中的工作进行汇总,并以书面报告的形式提交给客户。报告中还应该包括漏洞修补和安全升级的解决方案。

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

本书的目标就是为读者介绍世界上最为流行的渗透测试框架Metasploit。本书着重介绍在以下几个方面掌握Metasploit:渗透攻击、编写自定义渗透攻击模块、移植渗透攻击模块、测试服务以及进行复杂的客户端测试。本书还会指导读者将用指定的Ruby、汇编或者脚本语言(如Cortana)编写的外部渗透测试模块转换成Metasploit中的模块。阅读本书还将有助于提高读者的编程能力。本书内容

第1章 走近Metasploit渗透测试框架。这一章将带领读者完成一次基础的渗透测试过程。这将有助于读者初步认识Metasploit,同时学会搭建测试环境。此外,还将带领读者系统地认识渗透测试的各个环节。最后介绍了与传统测试和人工测试相比,采用Metasploit渗透测试框架进行渗透测试的优势。

第2章 打造定制化的Metasploit渗透测试框架。这一章中涵盖了编写Metasploit模块所必需的Ruby编程语言的基础知识,还介绍了如何掌握Metasploit的现有模块以及编写自己的模块,例如扫描模块、后渗透攻击模块、meterpreter模块。最后介绍了如何使用RailGun开发自定义模块。

第3章 渗透攻击模块的开发过程。这一章阐述了如何完成一个渗透攻击模块的开发过程,同时涵盖了必需的汇编语言基础知识。之后谈及了fuzz测试和调试器,着重讨论了如何通过分析调试器下应用程序的行为来收集必需的开发信息。最后展示了依靠收集来的信息在Metasploit模块下开发一个渗透攻击模块的过程。

第4章 渗透攻击模块的移植。这一章将帮助我们将那些已经公开的可用渗透工具移植到Metasploit框架中。这一章重点描述了如何找出那些使用Perl、Python以及PHP语言编写的模块的核心功能,并通过Metasploit库将这些功能转化为与Metasploit框架兼容的模块。

第5章 服务测试技术的幕后揭秘。这一章阐述了如何对各种服务进行渗透测试。首先介绍了一些重要的专门用来渗透SCADA(信息采集与监控)服务的Metasploit模块。之后讨论了针对数据库的测试,以及在其上运行的特权命令。接下来揭示了如何对VOIP进行欺骗性攻击。最后介绍了苹果设备上的后渗透攻击模块。

第6章 虚拟化测试的原因及阶段。这一章对如何开展白盒测试和黑盒测试进行了简要的论述。首先着重介绍了其他可以与Metasploit结合使用共同完成渗透测试任务的工具。之后展示了当前流行的漏洞扫描工具,例如Nmap、Nessus和OpenVAS,讲述了如何将这些软件的扫描报告导入到Metasploit中,并在Metasploit中运行这些工具。最后介绍了如何手动和自动生成渗透报告。

第7章 复杂的客户端攻击。这一章将学习重点转移到了客户端渗透攻击,重点讨论了如何从传统的客户端渗透攻击转变为更为复杂精准的方式。首先介绍了一个基于浏览器的渗透攻击和一个基于文件格式的渗透攻击模块。之后阐述了对被渗透的Web服务器和网站用户的影响。接下来演示了如何绕过目标的反病毒和安全保护机制。最后展示了如何通过Metasploit中的DNS欺骗模块,将浏览器的渗透攻击模块变成一个致命的武器。

第8章 社会工程工具包。这一章介绍了将Metasploit作为后台工具与社会工程工具包结合使用来发起自动化客户端攻击。这一章展示了各种网络页面攻击向量以及高级的网络钓鱼攻击手段。重点介绍了攻击向量,例如最新的浏览器标签劫持、Java applet伪装等。还讲解了目前最为优秀的社会工程工具包内的模块功能。最后讲解了如何使用社会工程工具包的图形用户界面,以及如何实现各种攻击的自动化。

第9章 提高渗透测试的速度。这一章主要介绍如何加快渗透测试的进程。首先介绍了Fast Track工具,并演示了使用Fast Track渗透攻击数据库的过程。之后讨论了一些在当前版本中已经去除了的Metasploit的经典功能,以及如何能够再次使用这些功能。最后,展示了另一个强大的工具WebSploit,并利用它实现了一次巧妙的客户端渗透攻击。

第10章 利用Armitage实现Metasploit的可视化管理。Armitage是目前最流行的专门为Metasploit设计的图形用户界面。这一章首先使用Armitage进行目标扫描和目标渗透。然后讨论了Cortana,它可以用来开发在Armitage下的自动化攻击脚本以及开发虚拟机器人来辅助渗透攻击。最后讨论了如何在Armitage中添加自定义功能以及构建自定义界面和菜单。本书要求

如果读者想完成本书中的示例,将需要两到三台计算机,其中一台作为渗透测试机,另外两台可以作为渗透测试的靶机。如果读者的硬件资源十分有限,也可以在同一台计算机上运行多个虚拟机来搭建渗透测试实验环境。

除此以外,读者还需要最新的Kali Linux安装镜像文件,Kali作为Metasploit的运行平台,同时集成了本书提到的其他渗透测试工具。

另外读者还需要Ubuntu、Windows XP、Windows Server 2003、Windows 7和Windows Server 2008这几个系统作为渗透测试的靶机。值得注意的是,本书会介绍所有其他工具及其具体版本。读者对象

本书的读者群主要是从事专业渗透的测试者,安全领域的工程师,对Metasploit有简单了解并想要精通的分析师,希望提升渗透攻击模块编写能力的人,以及希望掌握各种服务的渗透测试技能的读者。此外,本书也可以帮助那些想将自己的模块添加到Metasploit渗透测试框架中的研究人员。通过阅读本书,读者将平稳地完成从一个初中级使用者到专家的转变。本书会涉及Ruby编程、汇编语言以及使用Cortana编写攻击脚本等内容,因此阅读本书需要具有一定的编程基础。排版约定

本书采用了不同的文本格式,以区分不同类型的信息,以下是这些格式的解释。

正文中的代码、用户输入会以等宽字体进行表示,如:“这可以用db_export方法来实现。”

代码块的表示如下所示:require 'msf/core'require 'rex'require 'msf/core/post/windows/registry'class Metasploit3 < Msf::Post include Msf::Post::Windows::Registry def initialize super( 'Name' => 'Drive Disabler Module', 'Description' => 'C Drive Disabler Module', 'License' => MSF_LICENSE, 'Author' => 'Nipun Jaswal' ) End

命令行输入和输出如下所示:#services postgresql start#services metasploit start

新术语或者关键词会使用楷体表示。 这个图标表示提示或者技巧。

  这个图标表示警告或需要特别注意的内容。读者反馈

我们欢迎读者的反馈意见。如果对本书有任何的想法,喜欢或者不喜欢哪些内容,都可以告诉我们。这些反馈意见对于帮助我们创作出对大家真正有所帮助的作品至关重要。

你可以将一般的反馈以电子邮件的形式发送到feedback@packtpub.com,并在邮件主题中包含本书书名。

如果你在某一方面很有造诣,并且愿意著书或参与合著,可以参考我们的作者指南http://www.packtpub.com/authors。客户支持

现在你已经是我们Packt图书的尊贵读者了,我们会尽力帮助你充分利用手中的书籍。勘误

虽然我们已尽力确保本书内容正确,但出错仍旧在所难免。如果读者在书中发现任何文字或者代码错误,欢迎将这些错误提交给我们,以便帮助我们改进本书的后续版本,从而避免其他读者产生不必要的误解。如果读者发现了错误,请访问网页http://www.packtpub.com/submit-errata,选择相应图书,单击errata submission form链接,然后填写具体的错误信息即可。勘误一经核实,读者的提交将被接受,此勘误将被上传到本公司网站或添加到现有勘误表。读者可以通过在网页http://www.packtpub.com/support上选择书名来查看该书的勘误表。侵权声明

版权问题是每一个媒体都要面对的问题。Packt非常重视版权的保护。如果读者发现我们的作品在互联网上以任何形式被非法复制,请立即告知我们相关网址或网站名称,以便我们采取措施。

请将可疑盗版材料的链接发到copyright@packtpub.com。

非常感谢读者帮助我们保护作者的权益。问题

如果对本书有任何方面的疑问,都可以通过questions@packpub.com与我们联系,我们将尽最大的努力解决。致谢

感谢母亲在人生的每一个关键阶段对我的帮助。感谢Youssef Rebahi-Gilbert先生提供的所有帮助以及创造性想法。感谢Joel Langill先生、Maninder Singh博士、Sagar A. Rahalkar先生、Krishan P. Singh先生和Kubilay Onur Gungor先生百忙之中抽出时间来审阅本书,以及在每一个阶段对我的帮助。感谢印度拉夫里科技大学的Gurpreet Singh先生和其他专家的不断支持。感谢Packt出版公司的Swati Kumari女士、James Jones先生、Akshay Nair先生和Kapil Hemnani先生,他们是一个优秀的团队,帮助我完成了本书写作的每一个阶段。感谢Packt出版公司的整个团队,他们给了我写作并出版本书的机会。最后,感谢全能的上帝给予我巨大的力量,让我得以完成这个项目。 第 1 章走近Metasploit渗透测试框架

渗透测试是一种有目的性的、针对目标机构计算机系统安全的检测评估方法。渗透测试可以发现系统的漏洞和安全机制方面的隐患,并以此进行渗透攻击来取得目标计算机的控制权。通过渗透测试可以知道目标机构的计算机系统是否易于受到攻击,现有的安全部署是否能完善地抵御攻击,以及哪部分安全机制可能被绕过,等等。渗透测试的主要目的是改善目标机构的安全性。

正所谓“工欲善其事,必先利其器”,渗透测试能否成功很大程度上取决于测试时是否使用了正确的工具和技术。渗透测试工程师必须选择正确的渗透测试工具和技术,才能保证任务的完成。当提到最优秀的渗透测试工具时,安全业界的绝大多数人士都会首先想到Metasploit渗透框架。现在,Metasploit被公认是进行渗透测试最有效的安全审计工具,它提供了最全面的漏洞渗透模块库,集成了优秀的模块开发环境,具有强大的信息收集和Web测试能力及其他许多功能。

本书不仅介绍了Metasploit渗透框架的功能与用法,同时也重点讲解了如何开发Metasploit模块和扩展Metasploit框架。本书假定读者已经掌握了Metasploit渗透框架的基础知识。在本书的部分章节中,我们也将带读者回顾一些Metasploit渗透框架的基础性操作。

根据本书涵盖的所有知识,我们将按照下图所示的流程进行讲述。

本章将回顾渗透测试和Metasploit渗透框架的基础内容,这有助于我们学习后面的内容。

本章将着眼于以下几个要点。● 掌握渗透测试中各个阶段的详细工作内容。● 搭建使用Metasploit渗透框架进行渗透测试练习时所需要的

模拟环境。● 回顾Metasploit渗透框架的基本用法。● 熟悉Metasploit渗透框架中的经典攻击模块。● 学习Metasploit渗透框架的渗透测试方法。● 了解Metasploit渗透框架和数据库结合使用的优势。

正如“罗马不是一天就能建成的”,我们也不可能一天就成为专家级的渗透测试人员。从一个菜鸟转变成一个渗透高手需要大量的实践工作,需要熟悉工作环境,具备对危急情况的处理经验,而最为重要的是,需要在反复的渗透测试工作中不断加深自己对该技能的领悟。

通过这一章,我们将会深入了解Metasploit的渗透测试功能,同样读者会看到一些历史可以追溯到Metasploit诞生之时的经典模块。在本章中,我们将着眼于以下内容。● 介绍这些经典的Metasploit渗透模块是如何工作的。● 列举这些经典的Metasploit渗透模块针对的系统服务。● 演示系统是如何被这些Metasploit模块渗透的。

要对一个目标进行渗透测试,首先必须确保安全测试计划遵循了渗透测试执行标准(Penetration Testing Execution Standard,PTES)。如果对渗透测试的流程并不了解,可以登录http://www.pentest-tandard.org/index.php/PTES_Technical_Guidelines来学习渗透测试和安全分析部分的内容。依照PTES的要求,下图给出了渗透测试过程的各个阶段。 请参考http://www.pentest-standard.org网站,了解如何在工作环境中设置硬件和渗透测试系统阶段信息。这些设置都是进行专业的渗透测试所需要的。1.1 环境的建立

在开始先进、复杂的Metasploit攻击之前,必须先适应工作环境。获得关于工作环境的信息是一个很关键的因素,而它在进行渗透测试之前就开始起作用了。我们在开始Metasploit的练习之前先来了解一下渗透测试的各个阶段,看看一个专业的渗透测试是如何组织的。1.1.1 前期交互阶段

作为渗透测试的第一个步骤,前期交互阶段将确定客户(可能是一个公司、机构或者网络)的渗透测试的关键细节。这一切都是在与客户进行商讨之后决定的。这个阶段是连接客户与渗透测试工程师的桥梁。在这个阶段,渗透测试工程师要与客户进行充分的交流,以便客户对即将开展的渗透测试会对他的网络或者服务器产生的影响有足够的了解。因此,渗透测试工程师此时要以一个客户指导者的身份来进行这一阶段的工作。这一阶段还将确定渗透测试的范围、目标以及代表客户进行测试时的特殊需求,例如特殊的权限、关键系统的访问许可等。商讨的范围还将包括渗透测试预期对测试目标所产生的积极效果。在本阶段,需要商讨的一些关键点如下所示。● 渗透测试的范围:这一部分需要确定渗透测试的范围并预估

整个项目的工作量。同时要确定哪些目标是在渗透测试范围内,

哪些是不允许进行渗透测试的。测试者要确认渗透区域内涉及的

IP地址范围和域名范围,以及采用的测试类型(黑盒测试和白盒

测试)。比如,当进行白盒测试时,会给予测试者哪些权限,是

否可以对目标管理人员展开问卷调查,在什么时间段可以开展渗

透测试,是否能对目标环境进行网络流量压力测试,以及商定本

次渗透测试的费用以及支付条款。● 渗透测试的目标:这一部分要商定本次渗透测试预期达到的

主要和次要效果。● 渗透测试用到的术语和定义:这一部分要向客户介绍整个测

试过程中出现的专业术语和定义,以便客户能够更好地理解整个

渗透测试工作。● 渗透测试的规定:这一部分要商定完成渗透测试的工期,具

体工作展开的进度表,渗透攻击的授权许可,以及定期召开会议

以跟进渗透测试进程中出现的各种情况。 如果想获得关于前期交互的更多信息,请访问网址http://www.pentest-standard.org/index.php/Intelligence_Gathering。1.1.2 信息收集/侦查阶段

在信息收集阶段,你需要尽可能采用各种方式来收集目标网络的所有信息。这个目标网络可能是互联网的一个网站,或者是一个社会性的组织,甚至可能是一个财力雄厚的老牌商业公司。在这个阶段,最重要的是要通过各种社交媒体网络来收集相关信息,以及使用Google dorks技术(一种使用特殊的查询方法通过Google搜索引擎收集敏感信息的工具)去寻找目标的相关信息。另外,对目标使用主动扫描和被动扫描技术进行踩点(foot printing)也是一种可行的办法。

信息收集是整个渗透测试过程中最为重要的阶段之一。与尝试所有可行的渗透测试方法相比,对目标有适当的了解可以让测试者选择合适和准确的渗透测试攻击方式。这样做将会大大缩短整个渗透测试耗费的时间。通常这个阶段会占到整个渗透测试所需时间的40%~60%。最终能否成功渗透进入目标网络很大程度上取决于测试者在这个阶段的工作成果。

作为一个渗透测试者,必须要把通过对目标网络进行各种扫描以获得足够的信息作为自己的职责。扫描目标计算机上运行的服务、开放的端口,以及验证这些端口上运行着的全部服务,然后判断这些服务中哪些是可以被攻击的,并且决定如何利用它们作为入侵目标的通道。

其次,在这个阶段还要明确目标网络当前部署的安全控制措施以及如何才能破坏这些措施。

接下来用一个示例来讨论这一点。设想这里有一个针对Web服务器的黑盒测试,客户希望我们能够对他的网络进行网络流量压力测试。我们将对服务器进行网络流量压力测试以判断目标的抗流量压力水平。简言之,就是服务器对拒绝服务(Denial of Service,DoS)攻击的应对能力。DoS攻击或网络流量压力测试指的是向目标服务器发送数量极为巨大的网络请求或数据,其目的是检测目标服务器在面对此类情形时,是能够继续正常工作还是因资源耗尽而拒绝服务。

为了实现这个目标,我们启动网络压力测试工具,并对目标网站发起一次攻击。然而,在攻击发起之后的几秒,服务器端就不再响应我们的客户端请求,从Web客户端也无法打开目标服务器的Web页面。此外,浏览器上还会显示目标Web页面已经不在线的提示。这是怎么回事呢?是我们已经成功搞掉了目标服务器吗?可惜的是,并非如此。事实上,这表明目标服务器存在保护机制。由于目标服务器的管理人员事先设置的保护机制发现了恶意攻击的企图,从而禁止了从我们的IP地址发起的后续访问请求。在发起攻击前必须准确地收集目标信息以及验证目标提供的各种网络服务。

因此,利用多个不同的IP地址对目标Web服务器进行测试是更好的选择。在测试时使用两到三个不同的虚拟专用服务器是一个值得推荐的办法。另外,我建议在使用攻击模块对真实目标进行渗透测试前,在虚拟环境下对所有的攻击模块进行模拟测试。一个正确的关于攻击的模拟验证是必需的。如果没有进行虚拟测试就开展了渗透测试,那么很有可能攻击模块会直接导致目标服务崩溃,而这并不是我们所期望见到的。

现在来看一下第二个示例,一次针对安装了Windows 2000 Server系统的服务器的白盒测试。我们知道安装了这种系统的服务器很容易遭到分布式组件对象模型(Distributed Component Object Model,DCOM)漏洞的攻击,这个漏洞在Windows 2000 Server系统中普遍存在。然而,当对目标服务器开始攻击之后,我们并没有像预计的那样渗透进目标。相反,我们得到了一个错误提示,显示连接失败,或者干脆显示不能建立与远程目标计算机的连接。发生这种错误最有可能的原因是,目标网络中使用了第三方防火墙,而这个防火墙切断了通信连接并禁止了从我们这里发起的到目标计算机的连接。

在这种情况下可以简单地改变入侵的方式,让目标服务器主动建立到我们的连接,而不是由我们去连接目标服务器。这是因为与出站

12连接相比,入站连接更容易被防火墙屏蔽掉。

1由企业内部经防火墙发往企业外部的连接。——译者注

2由企业外部经防火墙发往企业内部的连接。——译者注

这一阶段涉及下列步骤。● 目标选择:选择攻击的目标,确定攻击达到的效果以及整个

攻击过程花费的时间。● 隐私收集:这包括现场信息采集,检查使用的设备信息,甚

至从丢弃的废品中收集信息。此外,它还包含了目标单位外部的

信息收集,例如识别目标单位所使用的数据仓库。通常这个阶段

在白盒测试时进行。● 踩点工作:包含针对目标的主动和被动扫描技术,例如网络

端口扫描、标志获取等。● 验证目标的安全机制:包含防火墙、网络流量过滤系统、网

络和主机的保护措施的确认工作等。 如果想获得关于信息收集的更多信息,请访问网址http://www.pentest-standard.org/index.php/Intelligence_Gathering。

了解测试环境

大多数时候,当渗透测试者开始进行渗透的时候,他们已经明确下一步要做什么了。这意味着如果他们看到一个Windows操作系统在运行,将会选择专门针对Windows操作系统的渗透攻击模块(exploit)。以一个针对NETAPI服务漏洞的渗透攻击模块为例,由于Windows XP操作系统普遍存在这个漏洞,这个模块就是一个极佳的选择。假设这样一种情形,渗透测试者需要访问一个组织。在访问开始之前,他已经知道了该机构所使用的计算机中约有90%使用了微软的Windows XP操作系统,还有一些使用了Windows 2000 Server操作系统。他此时就可以打定主意,采用Metasploit框架中针对NETAPI服务漏洞的渗透攻击模块,对那些安装了Windows XP的计算机开始渗透测试,另外选用针对DCOM漏洞的模块对Windows 2000 Server开始渗透测试。我们也将在本章后面演示如何在实际中利用这些漏洞。

接下来考虑另一个关于Web服务器的白盒测试,在这台服务器上运行的网站中的页面都是.asp或者.aspx类型。在这种情况下,我们可以选择针对Windows的渗透攻击模块和针对微软互联网信息服务(Internet Information Services,IIS)的测试工具。另外,在这次测试中我们就不用考虑针对Linux操作系统的渗透攻击模块和测试工具了。

因此,对目标测试环境的了解使得我们在接下来对客户的测试变得容易了许多。

如果想获得关于NETAPI的更多信息,请访问网址http://technet.microsoft.com/en-us/security/bulletin/ms08-067。

如果想获得关于DCOM的更多信息,请访问网址http://www.rapid7.com/db/modules/exploit/Windows/dcerpc/ms03_026_dcom。1.1.3 威胁建模

为了保证我们的渗透测试能够正确进行,必须进行威胁建模。在这个阶段,主要的工作是模拟出对目标准确的威胁以及这些威胁的作用,并根据这些威胁可能对目标产生的影响对其进行分类。根据之前在信息收集阶段做出的分析,在这个阶段我们可以确定最佳的攻击方式。威胁建模方法适用于商业资产分析、过程分析、威胁分析以及威胁能力的分析。这一阶段将解决以下问题。● 如何攻击指定的网络?● 需要获得的重要信息是什么?● 在攻击时采取什么方法最为合适?● 对目标来说最大的安全威胁是什么?

威胁建模将有助于渗透测试人员完成以下一系列工作:● 收集有关高等级威胁的相关文档;● 根据基本的分类方法对组织的资源进行标识;● 对威胁进行识别和分类;● 将组织的资源映射成模型。

威胁建模将有助于明确哪些资源最容易受到威胁,以及这些威胁各自是什么。

现在来讨论第三个例子,假定现在有一个针对公司网站的黑盒测试。目标公司的客户信息是公司的重要资产。然而,在同一后台程序的另一个不同的数据库中保存了客户交易的记录。在这种情形下,一个攻击者就可能利用一个SQL注入漏洞获取客户交易的记录,而交易记录属于其他资产。因此在这个阶段,应该建立一个针对重要资产和其他资产的SQL注入漏洞威胁模型。

漏洞扫描工具(例如Nessus)可以自动化地帮助我们轻松并且快速地建立威胁模型。Nessus已经被证明适用于同时进行多任务大型网络扫描。 如果想获得关于威胁建模的更多信息,请访问网址http://www.pentest-standard.org/index.php/Threat_Modeling。1.1.4 漏洞分析

漏洞分析是在一个系统或者一个应用程序中发现漏洞的过程。这些漏洞多种多样,涵盖了很多方面,从服务器的配置到Web程序服务,从应用程序到数据库服务,从一个基于VOIP的服务器到基于SCADA的服务都可能存在漏洞。在个阶段包含了三个不同的机制,那就是测试、验证和研究。测试包括主动测试和被动测试。验证包括去除误报和通过手动验证确认漏洞的存在。研究指的是发现并触发漏洞以确认它的存在。 有关威胁建模阶段的各个过程的更多信息,请访问http://www.pentest-standard.org/index.php/vulnerability_analysis。1.1.5 渗透攻击和后渗透攻击

渗透攻击阶段可以利用之前漏洞分析阶段的成果。这个阶段一般被认为是真正的攻击阶段。在这个阶段,渗透测试者可以针对目标系统的漏洞使用对应的入侵模块获得控制权限。本书主要介绍的就是这个阶段。

后渗透攻击阶段发生在渗透攻击阶段之后,这个阶段包含了当成功渗透攻击到对方计算机以后的很多任务,比如提高权限、上传和下载文件、跳板攻击,等等。 有关渗透攻击阶段各个过程的详细信息,请访问http://www.pentest-standard.org/index.php/Exploitation。有关后渗透攻击的更多信息,请访问http://www.pentest-standard.org/index.php/Post_Exploitation。1.1.6 报告阶段

在进行渗透测试时,创建整个渗透测试的正式报告是在最后一个阶段进行的。渗透测试报告的重要组成部分包括:确定目标最为重要的威胁,将渗透得到的数据生成表格和图表,对目标系统的改进建议,以及这些问题的修复方案。在本书的后半部分,将会用一节来详细描述如何编写渗透测试报告。 有关报告阶段各个过程的详细信息,请访问http://www.pentest-standard.org/index.php/reporting。1.2 工作环境的准备

在战争开始之前,士兵们必须确保其武器装备处于最佳状态。这个原则也正是我们要遵循的。成功的测试环境取决于你的测试实验室是如何配置的。一个成功的测试需要回答以下问题。● 你的测试实验室的配置如何?● 具备所有必需的测试工具吗?● 你的硬件是否可以顺利地支持这些工具的运行?

在开始测试任何东西之前,必须确保所有的工具都已准备好并且都能顺利地工作。1.2.1 渗透测试实验环境的建立

在开始使用Metasploit之前,需要有一个测试用的实验环境。建立这种环境最好的办法就是拥有数目众多的计算机,同时在这些计算机上安装不同的操作系统。然而,如果只有一台计算机的话,最好的办法就是建立一个虚拟的实验环境。因此,我们来查看一个建立虚拟环境的示例。

我们需要两种操作系统:Backtrack/Kali Linux和Windows XP/7。将使用Backtrack/Kali Linux对Windows XP/7系统进行渗透测试。

另外,虚拟化技术在如今的渗透测试中扮演了十分重要的角色。由于硬件设备的价格相对昂贵,采用虚拟化技术可以使得渗透测试经济有效。在一台计算机上模拟出多个操作系统不仅可以节省大量的成本,同时也降低了电力的使用和空间的占用。建立一个虚拟化的渗透测试环境可以避免对你的真实主机系统进行任何的修改,并使得我们的所有操作都在一个独立的环境中进行。虚拟化的网络环境允许你的渗透测试在一个独立的虚拟网络中运行,从而无需去使用或者修改主机系统的网络硬件。

此外,虚拟化技术的快照功能可以每隔一段特定的时间保存虚拟机的工作状态。这个功能被证明是相当有用的,因为我们在进行一个虚拟测试的时候,可以随时拿系统当前的状态与之前的状态进行比较,也可以将系统随时恢复到之前的状态。

主机系统需要拥有足够的硬件资源(比如RAM、处理能力、驱动器空间等 )来保证虚拟化能顺利运行。 有关快照的更多信息,请访问http://kb.vmware.com/kb/1015180。

现在来看看如何创建一个拥有两个操作系统的虚拟环境。在这种情况下要将Windows XP和Kali安装在虚拟机上。然而,要创建虚拟操作系统,我们需要支持虚拟化的仿真软件。可以从当前最为流行的两款软件VirtualBox和VMware Player中选择一个。好了,我们可以按照下面的步骤开始安装了。

(1) 在VirtualBox的官方网站(http://www.virtualbox.org/wiki/Downloads) 下载VirtualBox安装程序。在下载的时候要注意选择与工作环境匹配的版本。

(2) 开始运行安装程序,直到系统安装工作完成。

(3) 完成了安装工作之后,接下来就可以启动VirtualBox程序。运行效果如下图所示。

(4) 现在,要在VirtualBox中安装一个新的操作系统,首先要做的是在工具栏上选择New。

(5) 然后在Name文本框字段中为新建立的操作系统输入一个合适的名称。然后选择Operating System类型和Version,如下所示。● 对于Windows XP操作系统,需要在Operating System下拉列

表框中选择Microsoft Windows选项,在Version下拉列表框中选

择Windows XP。● 对于Kali Linux操作系统,需要在Operating System下拉列表

框中选择Linux选项,在Version下拉列表框中选择Ubuntu选项。

如果不能确定你所使用的系统,可以选择Other Kernel 2.6。

设置完成以后的界面如下图所示。

(6) 设置分配给这个虚拟系统运行时需要的内存。如果你刚刚安装的虚拟系统是Windows XP,通常要分配512 MB的系统内存;如果是Kali Linux,则至少要分配1 GB的系统内存。

(7) 接下来要给虚拟系统分配物理硬盘空间作为虚拟系统的硬盘。在创建虚拟硬盘的时候要选择dynamically allocated disk选项。选择这个选项的好处就是物理机所提供的硬盘空间可以随着虚拟系统占用空间的增长而变大,这样就不必一次性分配给虚拟系统大量的硬盘资源。

(8) 然后设置分配给虚拟系统的虚拟硬盘初始大小,在这里设置为10 GB就足够了。

(9) 现在可以开始单击Create按钮来创建虚拟磁盘了。

(10) 单击Start按钮开始运行虚拟系统。第一次运行时,通常会弹出一个窗口,显示这是第一次运行。要在硬盘文件目录中选择Windows XP和Kali Linux的.iso文件,这个过程如下图所示。

(11) 如果你使用了另一台计算机,请继续安装过程。

(12) 到此为止我们已经完成Windows XP虚拟系统的安装。按照同样的方法可以完成Kali Linux虚拟系统的安装过程,但是要注意,在选择Operating System和Version的时候要记得选择Linux和Ubuntu(或者Other kernel 2.6)。

如果要安装VMware,可以从网址http://www.vmware.com/products/player/下载VMware player。

有关Kali Linux的完整安装指导,请参阅http://docs.kali.org/category/installation。1.2.2 Metasploit基础

到现在为止我们已经回顾了渗透测试的基础内容,也完成了一个虚拟测试实验环境的建立。接下来介绍一下重点部分:Metasploit。Metasploit是一种安全框架,为渗透测试者提供了大量的渗透攻击模块和扫描模块。2003年H.D Moore创建了Metasploit,从那之后Metasploit快速发展起来,如今已被公认为最为流行的渗透测试工具之一。Metasploit是一个完全的Ruby驱动项目,提供了大量的漏洞渗透、有效载荷、编码技术以及后渗透攻击模块。

Metasploit提供了以下多种不同的版本。● Metasploit pro版:这是Metasploit的一个商业化版本,提供

了大量的Web扫描攻击模块、漏洞渗透模块、自动化渗透测试工

具等。● Metasploit community版:这是Metasploit pro精简后的免费

版本,对于小企业和学生来说,这是一个不错的选择。● Metasploit framework版:这是一个完全在命令行中运行的版

本。这个版本的所有任务都在命令行下完成,比如说手工渗透、

第三方模块导入等。

本书中采用的是Metasploit community版。Metasploit还提供了下面几种类型的用户界面。● GUI界面:在图形化工作模式下,往往轻点一下鼠标就能完

成所有的任务。这种工作方式提供了友好的操作模式和简单快捷

的漏洞管理方式。● 控制台界面:最为普遍也最为流行的工作方式。这个界面提

供了一个统一的工作方式来管理Metasploit的所有功能。这种管

理方法通常也被认为是最稳定的控制方法之一。本书中,这种管

理方式是最常用的。● 命令行界面:命令行界面是功能最为强大的界面,它支持对

渗透模块的所有操作(例如,有效载荷的生成)。然而在使用命

令行时,大量的命令格式的记忆工作是十分有难度的。● Armitage:Armitage是Raphael Mudge编写的一个充满了黑

客风格的图形化界面。Armitage提供轻松的漏洞管理、内置的

NMAP扫描、渗透攻击推荐,并提供使用Cortana脚本实现自动

化功能的能力。本书最后用了一整章的内容来细致地讲解

Armitage和Cortana脚本语言。 有关Metasploit community版的更多信息,请访问https://community.rapid7.com/community/Metasploit/blog/2011/12/21/Metasploit-tutorial-an-introduction-to-Metasploit-community。1.2.3 在不同环境下配置Metasploit

在Linux和Windows下我们都可以运行Metasploit。另外,我们可以通过网络连接远程控制Metasploit。我们可以通过以下三种方式来使用Metasploit:● 在Windows下使用;● 在Ubuntu下使用;● 通过SSH通道远程使用。

1. 在Windows XP/7上配置Metasploit

在Windows操作系统下安装Metasploit十分简单。首先从Metasploit的官方网站下载安装文件,安装的整个过程与在Windows下安装其他软件的方法相同。不过在Windows下安装Metasploit时需要关闭很多安全保护机制。因此,与在Windows下安装相比,在Linux下安装会更方便一些。

这里有Metasploit community和Metasploit pro两个不同的版本可以选择,其中Metasploit pro是商业化版本,使用时需要支付一定的费用,当然这个版本提供了完整的功能。Metasploit community是免费版本,你不需要为此支付任何费用,但是在这个版本中,有些功能被去掉了。如果你想得到Metasploit的全部功能,就需要购买Metasploit pro版;如果你的目的仅仅是学习,那么完全可以选择Metasploit community版。 你可以从网址https://community.rapid7.com/community/Metasploit/blog/2011/12/21/Metasploit-tutorial-an-introduction-to-Metasploit-community下载Metasploit的Linux和Windows环境下的安装包。

 

在Metasploit的安装过程中,不要忘记关闭掉杀毒软件和防火墙。否则,杀毒软件会将Metasploit中的很多渗透模块当作病毒删除掉。

要禁用或启用系统的ASLR保护机制,请更改以下路径的注册表项的值:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement\MoveImages。

2. 在Ubuntu上配置Metasploit

在Ubuntu 12.04 LTS下安装Metasploit实际上是一件很轻松的工作。首先在Ubuntu的官方网站下载最新版本的Ubuntu系统文件,然后安装在计算机上;或者,在虚拟环境中重复之前对Backtrack-Linux所执行的步骤即可。

完成了Ubuntu的安装工作之后,需要根据计算机的配置情况下载对应的Metasploit的Linux安装版本。

当基于Linux的安装程序下载完成后,只需执行以下步骤即可。

(1) 打开Ubuntu终端,在终端中打开Metasploit的安装目录,如下面的屏幕截图所示。

(2) 现在,需要让这个安装程序文件执行以下命令:chmod +x Metasploit-latest-linux-installer.run

上面的命令给予了所有人执行这个安装文件的权限,即无论是用户、组还是世界上的任何人,都可以执行这个文件。

(3) 接下来,只需使用./[File-Name](在本例中应该为./Metasploit-latest-linux-installer.run)执行此文件。

(4) 然后会弹出一个简洁的GUI风格安装界面,只需按照下面的截屏继续操作即可。

(5) 这一步中会出现一个版权许可协议。在勾选了同意选项以后,会出现一个安装路径的选择界面,默认情况下会安装到/opt/Metasploit。不用修改该选项,继续安装。

(6) 这一步需要确认是否将Metasploit安装为系统的一个服务。这意味着每次系统启动的时候,Metasploit都会自动启动。我们选择将它安装为系统的一个服务,然后继续下一步,如下面的截屏所示。

(7) 在这一步中你必须要确认关闭了防火墙和杀毒软件。必须注意的一点是,当防火墙再次开启的时候,Metasploit的连接可能会被切断。另外,杀毒软件可能会将Metasploit的一些模块当作病毒。要避免这些模块被杀毒软件发现并删除,必须选择关闭杀毒软件和防火墙。

(8) 在这一步中你需要选择Metasploit使用的端口。保持默认选项不改变,除非这个端口已经被你计算机上的其他应用使用,之后,你就可以创建一个用于远程安全连接的SSL安全认证。

(9) 如果一切正常的话,我们可以看到如下图所示的安装界面。

(10)成功安装Metasploit之后,只需打开该终端,然后键入msfconsole命令来设置Metasploit控制台界面。接下来可以开始我们的渗透测试工作,如下图所示。

可以从网址http://www.ubuntu.com/download/desktop下载Ubuntu的最新版本。

你可以在以下网址找到关于SSH访问的优秀教程:http://rumyittips.com/configure-ssh-server-on-kali-linux/。1.2.4 错误处理

有时会在Metasploit框架的安装过程中遇到一些错误。不过,我们知道如何处理这些错误。无论是在Windows下还是在Linux下,安装都有可能遇到错误,如果处理得当的话,这些错误都是很容易解决的。 在网页https://community.rapid7.com/上进行注册可以得到有关支持问题的更多信息。

1. 基于Windows的安装中的错误

Windows最容易出现的问题就是数据库错误,即数据库没有和Metasploit连接到一起。这可能是因为PostgreSQL服务器没有正常工作,也可能是因为Metasploit没有正确地安装到默认目录中。

为了解决这些错误,可以执行以下操作。● 尝试人工启动PostgreSQL服务器,在命令行窗口键入

services.msc,然后找到并启动PostgreSQL服务。● 在安装Metasploit的时候选择默认路径。

2. 基于Linux的安装中的错误

在Linux环境下进行安装,错误的发生可能是由于安装包的依赖项被损坏,从而导致安装失败。如果安装失败,你可以人工修复这些依赖项,通过终端下载和安装正确的依赖项来手动配置Metasploit。

我们可以通过下面的命令下载Metasploit需要的所有依赖项:$sudo apt-get install build-essential libreadline-dev libssl-devlibpq5 libpq-dev libreadline5 libsqlite3-dev libpcap-dev openjdk-7-jresubversion git-core autoconf postgresql pgadmin3 curl zlib1g-dev libxml2-dev libxslt1-dev vncviewer libyaml-dev ruby1.9.3

上述命令会下载所有必需的依赖项,比如基本包、Ruby、PostgreSQL,以及Metasploit需要的所有其他主要依赖项。

如果是Ruby的库文件发生错误的话,可以使用以下命令来重新安装Metasploit所需的Ruby必要库文件。$sudo gem install wirble sqlite3 bundler 要完全从命令行安装Metasploit,请参考http://www.darkoperator.com/installing-Metasploit-in-ubunt/。

  请尝试从命令行安装Metasploit;这肯定将提高你识别Metasploit所必需的依赖项方面的技能,也会使你更了解它的核心。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载