
版权声明
metasploit渗透测试手册
copyright © packt publishing 2012. first published in the english language under the title advanced penetration testing for highly-secured environments: the ultimate security guide.
all rights reserved.
本书由英国packt publishing公司授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。
版权所有,侵权必究。
内容提要
本书是一本介绍渗透测试的安全类技术书籍,全书以metasploit这一最流行的渗透测试框架为演示和实验工具,内容由浅入深,易于理解,同时具有极强的可操作性与实用性。
本书总共分为10章,前两章对metasploit及信息收集与扫描进行简单介绍;第3章介绍使用metasploit对操作系统漏洞进行攻击渗透;第4章介绍使用metasploit进行客户端漏洞攻击和防病毒软件规避;第5章、第6章介绍非常重要的meterpreter,并演示了利用该工具探索已攻陷目标机器的情况;第7章、第8章分别介绍框架中模块和漏洞利用代码的使用问题;第9章介绍armitage;第10章介绍社会工程工具包的使用问题。
本书作为metasploit渗透测试技术手册,适合于渗透测试人员、网络安全管理人员、信息安全专业的学生及对信息安全感兴趣的读者阅读。
关于作者
我要感谢我的父母,谢谢他们一直以来对我的支持和信任。我还要感谢我的姐姐,作为我的医生,她对我悉心照料。谢谢sachin raste先生,他为审校本书付出了宝贵的精力。谢谢kanishka khaitan,他是我最完美的榜样。我还要感谢我的博客读者们,他们向我提供了宝贵的建议和意见。最后,我要感谢packt publishing出版社,与他们的默契合作,让我终生难忘。
关于审稿人
kubilay onur gungor当前以web应用安全专家的身份供职于sony欧洲公司,他还是sony欧洲和亚洲地区的事件经理。
他在it安全类领域已经工作了5年多的时间。独立在安全领域研究了一段时间以后,他凭借图像的密码分析(即使用混乱的逻辑图来加密)开始了其安全职业生涯。通过在isik大学数据处理中心的工作,他在网络安全领域积累了大量经验。在netsparker担任qa测试人员工作期间,他开始进入渗透测试领域,并为土耳其的一家领先的安全公司工作。他曾经为很多大型客户(例如银行、政府机构、电信公司)的it基础设施进行多次渗透测试。他还为多家软件厂商提供了安全咨询服务,以帮助他们维护软件安全。
kubilay还一直在研究多学科的网络安全方法,其中包括犯罪学、冲突管理、感知管理、恐怖主义、国际关系和社会学。他还是arquanum多学科网络安全研究学会(arquanum multidisciplinary cyber security studies society)的创始人。
kubilay经常以发言人的身份参与安全会议。
kanishka khaitan是印度普纳大学计算机应用专业的一名硕士研究生,她在瓦拉纳西印度大学获得了数学专业的荣誉学位。在过去的两年里,她一直在amazon的web领域工作。而在此之前,她参与了infibeam(一家位于印度的在线零售公司)为期6个月的实习生项目。
sachin raste是一位著名的安全专家,在网络管理和信息安全领域有17年以上的工作经历。他与其团队为印度的一些大型商业机构设计过网络和应用,并将它们与it流程以流水化的形式集成起来,从而实现业务的连贯性。
他当前以自身安全研究人员的身份与microworld(信息安全解决方案电子扫描范围[escan range]的开发团队)一起工作。他设计并开发了一些开创性的算法用来检测和预防恶意软件和数字欺诈,从而保护网络免于黑客和恶意软件的攻击。sachin raste在其专业领域内还发表了多篇白皮书,并出席了许多以“宣传防止数字欺诈,增强防范”为主题的电视节目。
与microworld一起工作的经历也提升了sachin的技术技能,从而使其可以跟上信息安全业界的当前趋势。
首先,我要特别感谢我的妻子和儿子,以及为我提供帮助的密友们。正是因为你们的存在,世间一切之事才有了可能。谢谢来自microworld及其他单位的同事们,谢谢你们能够耐心地聆听,并帮助我成功完成了许多复杂的项目;与你们的合作令人愉快而难忘。感谢我的老板——microworld的md——他给了我足够的自由和时间来探索自己的未知。
感谢你们!
献词
谨将本书献给我的祖父母,感谢他们的祝福。将本书献给我的父母和姐姐,感谢他们的支持和鼓励。还要将本书献给我的密友neetika,他是我永不止步的动力。
前言
对当前环境下的网络安全而言,渗透测试是核心工作之一。渗透测试通过进行实质意义上的入侵式安全测试,对目标的安全性进行完全分析,这有助于识别目标系统主要组件中硬件或软件方面的潜在弱点(即安全漏洞)。渗透测试之所以重要,是因为其有助于从黑客的视角来识别目标系统的威胁与弱点,并且在发现目标中存在的安全漏洞之后,可以实时地对其进行渗透利用以评估漏洞的影响,然后采用适当的补救措施或打补丁,以便保护系统免遭外部攻击,从而降低风险因素。
决定渗透测试可行性的最大因素是对目标系统相关信息的了解情况。在不具备目标系统先验知识的情况下,就只能实施黑盒测试。在黑盒测试工作中,渗透测试人员只能“白手起家”,一点一滴地收集目标系统的相关信息。而在白盒测试中,测试人员已全面掌握目标系统的相关信息,此时需要做的工作是识别目标系统中存在的已知(或未知)弱点。这两种渗透测试方法都有相当的难度,并且每种环境都会有特定的需求。业界专家提炼了一些关键步骤,这些步骤对几乎所有形式的渗透测试都是至关重要的,包括以下几点。
目标发现与枚举:识别目标,收集目标相关的基本信息,但不与目标建立任何形式的物理连接。
漏洞识别:通过扫描、远程登录、网络服务等多种方法,统计出目标系统中运行的软件和提供的服务。
漏洞利用:对目标系统软件或服务中存在的已知或未知漏洞进行利用。
漏洞利用后的控制程度:成功地进行漏洞利用后,攻击者在目标系统中具备的访问控制权限级别。
报告:针对发现的漏洞及其可能的应对措施提出建议。
这些步骤看起来很简单,但事实上,要对运行着大量服务的高端系统进行全面的渗透测试,需要花费数天甚至数月的时间才能完成。渗透测试之所以是一项耗时的任务,原因在于渗透测试以“试错法”技术作为基础。对漏洞的渗透与利用依赖于大量的系统配置要素,如果不去实践尝试,就不可能确定某一个特定的漏洞是否能够成功利用。试想一下,以对运行着10项服务的windows操作系统进行漏洞利用为例,渗透测试人员必须对这10种不同服务中是否存在已知漏洞进行全面的分析与识别。而且在识别之后,才能开始漏洞利用的过程。这还只是仅需要考虑一个系统的小型场景,如果面对的是包含大量类似系统的整个网络,我们又该怎样逐一地对其进行测试呢?
这就是渗透测试框架发挥作用的地方。渗透测试框架可以将多个测试过程进行自动化实现,例如网络扫描、基于可用服务及其版本信息的漏洞识别、自动式漏洞利用等。渗透测试框架为测试人员提供了一个全面的控制面板,测试人员可以借助控制面板对所有测试活动进行有效的管理,同时还可以对目标系统进行有效监控,从而加快渗透测试进程。渗透测试框架的另一个优势是报告生成。利用渗透测试框架,可以自动保存渗透测试结果,并生成测试报告以备后续使用,或者与远程工作的其他人员共享。
本书旨在帮助读者掌握当前应用最为广泛的测试框架之一—metasploit。metasploit框架是一个开源平台,有助于创建实用型漏洞利用工具,并提供了渗透测试需要的其他核心功能。本书将带领读者畅游metasploit世界,并介绍怎样使用metasploit进行有效的渗透测试。此外,本书还将涉及metasploit框架之外的其他一些扩展工具,并讨论怎样提高其功能以便提供更好的渗透测试体验。
本书内容
第1章,给安全专业人员的metasploit快速提示,将带领读者初探metasploit与渗透测试,对metasploit框架及其体系结构、库等内容进行初步认识。要使用metasploit框架进行渗透测试,需要先对其进行安装,本章将介绍怎样使用虚拟机构建自己的渗透测试环境。然后讨论怎样在不同的操作系统上进行安装,最后对metasploit的使用进行初步尝试,并对其使用界面进行介绍。
第2章,信息收集与扫描,这是渗透测试的第一步,本章从最传统的信息收集方式开始,然后介绍怎样使用nmap进行高级扫描。本章在内容上还涵盖了一些其他工具,例如nessus与nexope。与nmap相比,nexope提供了一些额外的信息,从而弥补了nmap的不足。最后,讨论dradis框架,渗透测试人员广泛使用这一框架与远程的其他测试人员共享测试结果和报告。
第3章,操作系统漏洞评估与利用,主要讨论目标系统中运行的、尚未打补丁的操作系统中漏洞的发现与利用。利用操作系统漏洞成功率高,并且操作简便。还讨论对几种流行的操作系统的渗透测试,例如windows xp、windows 7及ubuntu等,包括这些操作系统中常见的、已知的一些漏洞,以及怎样在metasploit中利用这些漏洞来突破目标机器。
第4章,客户端漏洞利用与防毒软件规避,讨论怎样使用metasploit进行客户端漏洞利用的主题。本章在内容上涉及一些流行的客户端软件,例如microsoft office、adobe reader及ie浏览器。本章还进一步讨论如何规避或关闭客户端防病毒软件,以防止目标系统产生告警信息。
第5章,使用meterpreter探索已攻陷目标,讨论漏洞利用成功后的下一个步骤。meterpreter是一款在漏洞利用成功之后使用的工具,包含一些功能,有助于在攻陷的目标机器中获取更多信息。本章还包括一些有用的渗透测试技术,例如权限提升、文件系统访问、键盘截获窃听等。
第6章,高级meterpreter脚本设计,通过介绍构建自己的meterpreter脚本、使用api 组合工作等高级主题,本章使读者对metasploit知识的认识进入一个新高度。通过本章的学习,读者可以更灵活地运用metasploit,因为可以根据渗透测试的实际场景,自己设计实用脚本,并将其融入到metasploit框架中使用。本章还包括一些高级的“后渗透”概念,例如劫持、哈希注入及持续连接等内容。
第7章,使用模块进行渗透测试,本章将读者的注意力转移到metasploit中另一个重要方面:模块。metasploit框架中收集整合了大量模块,不同的模块适用于不同的特定场景。本章包括metasploit中一些重要的辅助性模块,也包括怎样构建自己的metasploit模块。需要注意的是,准确理解本章内容需要一些关于ruby脚本的基本知识。
第8章,使用漏洞利用代码,通过讨论怎样将任意的攻击代码转换为metasploit模块,本章将终极武器加入到metasploit库中。本章涉及一些高级主题,将向读者讲解怎样构建自己的metasploit攻击代码,并在框架中进行使用。由于本章不可能涉及metasploit框架中的所有漏洞利用代码,建议读者可以将本章作为手册,以便为metasploit库之外的漏洞利用代码进行测试时提供参考。本章还涉及模糊测试模块,该模块可用于对任何漏洞构建自己的概念性验证代码。最后,本章以一个完整的实例作为结尾,包括怎样对一个应用程序进行模糊测试、怎样发现缓冲区溢出漏洞,以及怎样构建针对该漏洞的metasploit模块。
第9章,使用armitage,简单讨论armitage,它是最流行的metasploit模块之一。armitage为metasploit框架提供了一个图形化界面,并提供一些点击式的漏洞利用选项增强metasploit框架功能。本章重点关注armitage的一些重要方面,例如快速发现漏洞、多目标处理、标签间移位,以及成功渗透后的处理等内容。
第10章,社会工程学工具包,这是本书的最后一章,介绍metasploit框架中的另一个重要扩展—社会工程学工具包(social engineer toolkit,set),用于生成利用目标用户的疏忽大意对目标进行渗透的测试用例。本章内容涉及set相关的一些基本攻击手段,包括钓鱼攻击、网站攻击、usb感染攻击等。
阅读本书的先决条件
为在阅读过程中重现和实践本书介绍的一些场景,读者需要准备两套系统,一套作为渗透测试实施系统,一套作为目标系统。另一种方法是,只需准备一套系统,之后使用虚拟化软件在其上建立测试环境。
此外,读者还需要准备一个backtrack 5的iso镜像文件,其中已包含预先安装的metasploit和本书中讨论的其他工具。另一种方法是,从官方网站下载适合于读者的操作系统平台的metasploit。
本书读者对象
本书的目标读者既包括专业的渗透测试人员,也包括希望体验这一工具的metasploit新手,书中包含了适合每个人的全部内容。本书采用了易于阅读、理解和场景再现的“食谱”结构,从初学者层次的渗透测试基础知识讲起,自然地过渡到专家级的高级知识和技能。因此,各个层次的读者都可以很容易地阅读和理解本书的内容。此外,本书需要读者具备扫描、漏洞利用和ruby脚本的基本知识。
本书体例
提示框中的警告或重要提示以如此形式出现。
技巧与窍门则以这样的形式出现。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
目录
<a href="https://yq.aliyun.com/articles/102599">第1章 给安全专业人员的metasploit快速提示</a>
<a href="https://yq.aliyun.com/articles/102599">1.1 介绍</a>
<a href="https://yq.aliyun.com/articles/102606">1.2 在windows操作系统中配置metasploit</a>
<a href="https://yq.aliyun.com/articles/102612">1.3 在ubuntu操作系统中配置metasploit</a>
<a href="https://yq.aliyun.com/articles/102618">1.4 backtrack 5与metasploit——终极组合</a>
<a href="https://yq.aliyun.com/articles/102625">1.5 在单机上建立渗透测试环境</a>
<a href="https://yq.aliyun.com/articles/102632">1.6 在带有ssh连接的虚拟机上构建metasploit环境</a>
<a href="https://yq.aliyun.com/articles/102648">1.8 在metasploit框架中建立数据库</a>
<a href="https://yq.aliyun.com/articles/102651">1.9 使用数据库存储渗透测试结果</a>
<a href="https://yq.aliyun.com/articles/102657">1.10 分析数据库中存储的渗透测试结果</a>
第2章 信息收集与扫描
<a href="https://yq.aliyun.com/articles/102665">第3章 操作系统漏洞评估与利用</a>
<a href="https://yq.aliyun.com/articles/102665">3.1 介绍</a>
<a href="https://yq.aliyun.com/articles/102668">3.2 exploit用法快速提示</a>
<a href="https://yq.aliyun.com/articles/102672">3.3 在windows xp sp2上进行渗透测试8.7 使用metasploit进行模糊测试</a>
<a href="https://yq.aliyun.com/articles/102677">3.4 绑定远程访问目标机器的shell</a>
<a href="https://yq.aliyun.com/articles/102681">3.5 在windows 2003 server上进行渗透测试</a>
<a href="https://yq.aliyun.com/articles/102684">3.6 windows 7 server 2008 r2 smb客户端无限循环漏洞</a>
<a href="https://yq.aliyun.com/articles/102687">3.7 对linux(ubuntu)机器进行攻击渗透</a>
<a href="https://yq.aliyun.com/articles/102699">3.8 理解windows dll注入漏洞</a>
第4章 客户端漏洞利用与防病毒软件规避
第5章 使用meterpreter探索已攻陷目标
第6章 高级meterpreter脚本设计
第7章 使用模块进行渗透测试
<a href="https://yq.aliyun.com/articles/102705">第8章 使用漏洞利用代码</a>
<a href="https://yq.aliyun.com/articles/102705">8.1 介绍</a>
<a href="https://yq.aliyun.com/articles/102728">8.2 探索模块结构</a>
<a href="https://yq.aliyun.com/articles/102731">8.3 常用的漏洞利用代码mixins</a>
<a href="https://yq.aliyun.com/articles/102736">8.4 使用msfvenom</a>
<a href="https://yq.aliyun.com/articles/102742">8.5 将漏洞利用代码转换为metasploit模块</a>
<a href="https://yq.aliyun.com/articles/102747">8.6 移植并测试新的漏洞利用代码模块</a>
<a href="https://yq.aliyun.com/articles/102752">8.7 使用metasploit进行模糊测试</a>
<a href="https://yq.aliyun.com/articles/102760">8.8 编写filezilla ftp模糊测试器</a>
第9章 使用armitage
第10章 社会工程学工具包