书名:高度安全环境下的高级渗透测试
ISBN:978-7-115-34256-0
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
• 著 [英] Lee Allen
译 孙松柏 李 聪 陈力波
责任编辑 傅道坤
• 人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
• 读者服务热线:(010)81055410
反盗版热线:(010)81055315
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公司授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。
版权所有,侵权必究。
本书是一本介绍高级安全渗透测试的安全技术图书,采用步骤方式讲解了在安全环境下进行渗透测试的相关技术、工具和知识。
本书分为11章,分别讲解了如何计划和界定一次成功的渗透测试,用来进行侦查以求获取信息的技术和方法,进行系统识别和网络扫描的方法,远程漏洞利用,Web应用攻击,客户端渗透攻击与利用,后渗透攻击,如何绕过防火墙和规避入侵检测系统,如何收集测试数据并对结果进行验证,以及如何搭建各种类型的虚拟环境等知识。本书最后一章还通过建立一个真实的测试环境,让读者在其中从头至尾地执行渗透测试,以确保其完全掌握了书中的内容。
本书适合渗透测试人员、网络安全管理人员、信息安全专业的学生,以及对渗透测试、信息安全感兴趣的读者阅读。
记得第一次将翻译稿交给本书的责任编辑,应该是差不多一年之前的事情了。如今,2013年即将收官,在我忙着进行年度总结和来年规划的时候,突然收到了责任编辑的通知:该书即将出版,请提交最终版本的译者序。顿时感觉眼前一黑,心中一颤。忙而不乱的年终节奏终于要被这本拖延已久的图书给打断了。于是赶紧抽出半小时不到的时间,匆忙写就该序。
近些年来,渗透测试是计算机安全行业中非常抢手的一项工作,究其原因,是因为渗透测试已经成为网络中对抗各种脚本小子、骇客、黑客的有效手段。而要想成为一名合格的渗透测试人员,则需要具备大量的计算机基础知识、计算机安全知识,学会从黑客的角度、思维来渗透网络系统,从而发现问题,并及时修复,只有这样,才能最大限度地低于各种入侵行为。然而,由于黑客都是那些痴迷计算机技术,且具备超高水平的一类人,这些人的能力和思维远非一般人可以比拼,因此,想要真正模拟黑客的思维和攻击手段实属不易。正是在这样的情况下,渗透测试人员和安全从业者需要不断地学习各种黑客攻防技术,学习国外安全技术专家的实战经验和思维方式。
本书作者Lee Allen就是一名值得我们学习,而且具有丰富经验的安全研究和渗透测试人员。他在安全业界已经浸淫了15年之久,本书是他多年从事渗透测试的经验总结,事无巨细地涵盖了渗透测试的各个环节。另外,作者在本书中体现出来的严谨态度,以及滴水不漏的描述让我深深折服。毕竟,渗透测试面对的环境复杂而且多变,描述稍有不慎,则可能导致最终的测试差之毫厘谬以千里。
本书主要是基于Linux系统的渗透测试,由于译者从事渗透测试工作已经有多年,深知国内同行在这方面的不足,而本书很好地起到了填补空白的作用。需要重点提及的是,本书还得到了国际上几位知名“黑客”的倾力推荐,比如,知名的渗透测试框架Metasploit项目的发起者和创始人HD Moore就对本书大加赞赏。
尽管本书由很多优点,但是作为译者,我们也先指出其中的不足:书中的示例普遍比较简单,作者的原意是通过这些简单但常见的案例来讲解渗透测试中最常碰到的问题,因此如果您打算从本书中学到一些高深莫测的技术,那么您就要失望了。另外,由于本书涉及的面很广,包括了渗透测试过程的各个环节,因此无法做到面面俱到。从这一点上来说,本书更像渗透测试的参考手册。
最后,我首先要感谢本书的合作译者:我的兄弟、同窗波波童鞋和聪哥,在研究生阶段和你们的学习、交流是我人生道路上一笔重要的财富,我从你们身上学到很多东西,没有你们的辛苦付出,也不可能在短时间内完成本书的翻译工作。翻译期间,波波的儿子刚刚出生,晋升为奶爸的他尽管非常忙碌,但还是按时按质完成了翻译工作,他的责任感让我由衷敬佩。另外,感谢本书责任编辑傅道坤为本书所做的协调以及细致的审查。最后,感谢远在家乡的父母和年近90的奶奶,祝你们平安、健康。你们永远是我的精神支柱。
末了,还需要不能免俗的来一句,“由于时间和水平有限,译者有时候并不能完全准确地理解本书作者要表达的意思,书中也可能存在一些语法错误,如有翻译不到位之处,还请各位读者谅解”。
孙松柏
2013年12月于朝阳公园
Lee Allen目前是一家世界500强公司漏洞管理项目的领导,主要负责安全评估和渗透测试等工作。
Lee 对渗透测试和安全研究相当具有激情。在 20 世纪 80 年代,Lee 借助他挚爱的Commodore 64电脑,在满地都是5.25英寸磁盘的房间里登录到BBS,由此步入激动人心的安全世界。经过在安全行业和社区内多年的浸淫,他一直是这个圈子里最伟大的专家。
他持有多个行业认证,其中包括OSWP,而且已经在IT领域工作了15年之久。他爱好并执着于对概念攻击代码的验证和评审、编程、安全研究、出席安全会议、技术探讨、写作、3D游戏开发和滑雪。
我要感谢我的爱妻Kellie,她一直是我的贤内助,还要感谢我的孩子Heather、Kristina、Natalie、Mason、Alyssa和Seth,他们让我的多任务处理艺术得以进一步完善。我还要感谢我的女婿Justin Willis,谢谢他对我们国家所做的服务。此外,我还要感谢Kartikey Pandey和Michelle Quadros,谢谢他们在我写作本书期间给予的帮助和指导。我还要特别感谢Steven McElrea和Aaron M. Woody,他们花费了大量的时间来验证本书中的所有示例,并指出了其中的错误。正是得益于你们这样的人存在,安全社区才变得格外有趣。
Steven McElrea以Steven McElrea以Microsoft Windows和Exchange服务器管理员的身份,在IT领域工作了10多年。在被安全bug折磨过几次之后,他开始学习和研究InfoSec,而且已经学习了好多年。他有一个很不错的小型博客(www.kioptrix.com),并在上面竭尽全力地为新手讲解和演示信息安全的基本原理。他当前在安全领域工作,而且他真的很热爱这份工作。将工作领域专项InsoSec是他所做的最好的选择。
谢谢Amelie、Victoria和James,我爱你们。谢谢Richer让我一开始就从事该书的审校工作,尽管我曾经为此焦头烂额。我还要感谢Dookie,是他帮助我冷静下来并理清头绪。我还要感谢我的父母,是你们的支持让我们度过了最艰难的时光。我爱你们!
Aaron M. Woody是信息安全领域的一位专家,拥有14年以上的工作经验,先后涉及过多个垂直行业。他的经历包括执行、实施外设安全和取证调查,以保护世界上一些大型金融机构的安全。当前,Aaron是一家领先的信息安全公司Accuvant Inc.的解决方案工程师,该公司位于科罗拉多州的丹佛。他是一位活跃的讲师,主要讲解破解和取证技术,同时还负责n00bpentesting.com博客的维护。大家可以通过@shai_saint在Twitter上找到他。
衷心感谢我的爱妻Melissa和爱子Alexis、Elisa、Jenni,谢谢他们能够与我分享在编写本书时的得失欢乐。我还要感谢Steven McElrea(@loneferret)对本书评审期间所做的完整性检查。我还要特别感谢Lee Allen,谢谢他邀请我参与到该书的编写中来。
渗透测试人员需要面对由防火墙、入侵检测系统、基于主机的保护、加固后的系统以及知识渊博的分析人员团队构成的整体环境,其中分析人员会对通过其安全信息管理系统收集到的数据进行分析处理。在这样的环境中,仅仅运行自动化工具通常不会得到什么结果。而且由此导致的这种虚假安全感可以很容易地丢失关键数据和资源。
本书则对基本的自动扫描之外的内容进行了讲解。通过本书讲解的知识,读者可以进行复杂而艰巨的测试任务,以有效地衡量传统上的安全环境所遭受的整个攻击平面。
本书只使用了可以免费获取的工具和资源来讲解这些概念。其中将要用到的一个工具是知名的渗透测试平台BackTrack。BackTrack的团队开发人员会不断更新该平台,以提供一些可用的最佳安全工具。我们用来模拟渗透测试的大多数工具都包含在BackTrack的最新版本中。
渗透测试执行标准(Penetration Testing Execution Standard[PTES],地址为http://www.pentest-standard.org),是我们执行测试的指南。尽管我们不会讲解该标准中的所有内容,我们会尽可能地让本书中的知识符合标准中的基本原理。
本书采用步骤式讲解,并使用VirutalBox、pfSense、snort和类似的工具在自己的系统上模拟一个高度安全的环境。这可以让读者在一个安全的环境中来练习书中所学的知识。而且在你执行测试时,也可以有机会通过安全响应小组的视角来看待渗透测试。
本书在讲解时,会先提出一个挑战,其中你将使用虚拟实验室来从头到位地模拟整个渗透测试。渗透测试人员需要能够向其客户来解释相应的缓解策略。我们还会讲解一些不同的缓解策略来应对书中所列的攻击。
第1章,计划和界定一次成功的渗透测试,将为您剖析渗透测试的各个环节。你将学习如何正确界定一次渗透测试的范围和限制,比如遇到第三方的设备或环境时。我们还会讨论使用各种技术的优先顺序。
第2章,高级侦查技术,将会引导你学习一系列不引起目标系统警告的数据收集技术。我们将会关注各种侦查策略,包括深入挖掘目标系统的Web站点和其他特殊网站中包含的信息。
第3章,扫描:明智地选择目标,将描述一系列关于系统识别和网络扫描的方法,从而让你能够明智地选取目标。本章的目标是扫描目标环境,从而讲解如何从中选取目标系统。本章将涉及到高级Nmap技术以及使用PBNI来检测网络中的变化。本章最后将会介绍如何躲过一些扫描手段,以此来迷惑攻击者(为应急响应团队争取时间)。
第4章,远程漏洞利用,深入讲解了Metasploit框架,还描述了使用Armitage进行的团队测试。我们还将看到来自Exploit-DB.com的概念利用代码的证明,我们稍后会重写以及编译。本章还将讲解用于密码攻击的THC Hydra和John the Ripper。
第5章,Web应用攻击,主要讲解Web应用攻击。本章首先通过步骤方式来讲解如何构建一个Web应用攻击实验室,然后再详细讨论w3af和WebScarab的使用。在很多环境中讲解的负载平衡现在也有了一些特性。本章将通过示例来讲解用来检测Web应用防火墙和负载平衡的方法。本章最后讲解了Mantra浏览器。
第6章,客户端渗透攻击与利用,本章讨论了如何绕过AV特征,以及Social Engineering Toolkit的更多高级特性。本章还详细讲解了缓冲区溢出和fuzzing。
第7章,后渗透攻击,讲解了在完成一次成功的攻击之后,所要执行的行为。我们会讲解权限提升、高级的Meterpreter功能,在不同类型的OS中设置账户权限,以及在攻击结束之后进行清理,以免留下蛛丝马迹。
第8章,绕过防火墙和规避入侵检测系统,讲解了在进行渗透测试时,用来绕过检测的方法。这包括避免入侵检测系统和高级的逃避技术。我们还讲解了可以提升恶意用户或应用的可检测性的方法。
第9章,数据收集工具与结果汇报,可以帮助你利用测试期间收集到的数据创建报表和统计。你将学到如何收集所有的测试数据,以及如何对结果进行验证。你还将学到生成报告的所有过程。
第10章,建立虚拟的测试实验环境,帮助你创建一个测试环境来模拟一个具有多层DMZ环境的公司。该公司是使用IDS和某些加固系统以及app来实现多层DMZ环境的。这包括设置VBOX、BackTrack、虚拟防火墙、IDS和监控。
第11章,综合挑战,通过使用书中学到的技巧来获得实践经验。我们将会给读者设置一些挑战,它会要求你在自己的测试环境中从头到尾地执行渗透测试。我们还为该挑战提供了一个步骤式的解决方案,来确保你确实已经完全掌握了书中的内容。
为了练习书中内容,你需要一台计算机,而且该计算机具有足够的能力和空间来运行虚拟化工具,我们稍后会使用这些工具来创建实验室。如果计算机的硬盘空间有限,则无法胜任该任务。书中描述的虚拟化工具可以在大多数现代的操作系统中运行。
本书适合对安全测试持有热忱和学习意愿的人士阅读。本书假定读者具有基本的安全概念以及不同的操作系统知识。如果你是一名渗透测试人员、安全顾问,或者仅仅是对安全测试有兴趣,都可以阅读本书。
请注意:
本书中的信息只能用于合法目的;
未经设备拥有者的书面许可,不得在其设备上使用本书中讲到的知识;
如果你利用本书中的内容执行非法行为,则会导致你身陷囹圄;
如果因为滥用本书中的信息而导致惩罚,我们不承担任何责任。
书中的内容只能在得到授权和许可的测试环境中使用。
提示框中的警告或重要提示以如此形式出现。
技巧与窍门则以这样的形式出现。
本章将介绍在对一个复杂和加固环境进行渗透测试时,该如何进行计划和准备。本章将讲解下述主题:
渗透测试能有效检测你的信息系统抵御真实攻击的状况。由于渗透测试经常与漏洞评估混淆,因此,我们有必要向客户详细解释这两者之间的区别。
漏洞评估需要在整个信息系统中找到潜在的漏洞。由于很多工具能够自动查找系统中潜在的漏洞,所以甚至一些没有经验的安全专业人员或管理员都能够有效查找出信息系统中存在的漏洞。受检测范围的影响,我们也有必要加入额外的人工测试。完全攻陷一个系统或者服务通常不在漏洞评估的范围内,漏洞评估需要扫描信息系统,然后评估是否存在漏洞。评估过程经常在系统授权或没有授权的情况下进行。大多数漏洞管理和扫描的解决方案会提供给客户一个包含解决安全问题策略的可执行报告,例如打上遗漏的安全补丁,或者修改不安全的系统配置等。
渗透测试通过引入渗透攻击而拓展了漏洞评估的作用。
相较于漏洞评估,执行渗透测试所产生的意料之外的拒绝服务攻击或其他故障的风险要更高一些。在一定程度上,这种风险能够通过设定适当的方案进行缓解,对测试过程中所用技术的深入理解也能有效避免此类风险。因此,渗透测试员有必要不断更新和强化自己的技能。
渗透测试需要让客户能够查看部署了安全措施后是否和预期的效果一样好,这是一件非常值得弄清楚的事情。渗透测试员应该能够模拟出攻击者将要实施的攻击手段,并且能够证明他们具备进入一个安全系统(目标)的能力。一个最成功的渗透测试应该能够证明:除非得到合理的解决,否则渗透测试员发现的漏洞将导致大量的经济损失。想象一下,如果你能够向世界上任何一个客户证明,你可以轻而易举地获得他的最机密的信息,那将具有怎样的影响力!
渗透测试要求的技能水平远高于漏洞分析。这就意味着一次渗透测试的价格要比漏洞分析高出很多。如果你还不能入侵被测试的网络,那么你需要保证该客户系统在你的认知范围内是一个安全的系统。如果你想晚上睡得安稳,我建议你通过上述的描述以及其他信息来保证客户的安全。
某些信息系统环境相比其他环境更加安全,你可能会面对采用了以下技术手段的信息系统:
有效使用这些安全控制措施,显著增加了渗透测试的难度级别。客户应该完全信任这些安全机制和措施,相信它们能够保证系统的完整性、机密性和可用性。他们也需要理解:有时候,一些系统误配置或者设计不完善的IT框架会导致攻击者能够攻陷某个信息系统。
请注意,在安全中没有灵丹妙药。作为渗透测试员,我们有责任从各个角度看待问题,使客户认识到攻击者能够从各个方面攻击,从而影响他们的业务。
高级渗透测试高于标准的渗透测试,因为其使用了最新的安全研究技术和可用的渗透攻击方法。高级渗透的目标是,能够证明系统和敏感数据是有保护措施的,甚至能够避免有针对性的攻击,既使无法做到这些,也需要给予客户正确的指导来做出某些改变,以确保系统安全。
一次渗透测试是当前安全情况的一个快照,所以渗透测试应该建立在一个持续进行的基础上。
很多攻击方法并没有好的解释文档,通常难以使用,需要具有实际经验以确保高效地执行。在DefCon19上,Bruce“Grymoire”Barnett提供了一个精彩的演讲“Deceptive Hacking”。在这个演讲中,他讨论了黑客如何使用魔术师使用的很多类似技术。这与我坚定的信念完全一致,渗透测试员也必须有创新思维,只有通过汗水、努力、实践并具有探索未知领域的意愿,才能够模仿一个野外的恶意黑客所进行的攻击类型。通常情况下,你会成为一个渗透测试团队中的一员,与其他人并肩作战,你需要了解如何使用工具,以便让你的渗透测试过程稳定和有效。这是当前渗透测试员面临的又一挑战。在一个局限的环境下工作是一件平常的事,因为你的测试范围决定了你要在一个非常有限的时间内进行测试。
在某些环境下,公司可能使用不规范的方法保护他们的数据,这使你的工作变得更困难。在它们复杂的安全系统中彼此关联的节点,实际上可能是它们的安全战略中最薄弱的环节。
发现攻击弱点的可能性很大程度取决于被测试环境的复杂性。
在渗透测试开始之前,必须考虑一些需求:你需要界定测试的范围、时间限制和约束条件、测试的类型(白盒测试、黑盒测试)、如何处理第三方的设备以及IP地址空间。渗透测试执行标准(PTES)列出一些界定范围的条款作为“前期互动”阶段的部分内容。我强烈建议你在http://www.pentest-standard.org/index.php/Pre-engagement
查看这一部分的内容。
尽管这本书不直接遵循PTES进行讲解,但是我将试着将本书与PTES相关的部分关联起来。
在你准确地界定测试的范围之前,你需要收集尽可能多的信息。在渗透测试之前,深入了解以下几点非常重要。
你必须尽力弄清属于客户的网络范围和设备,否则可能会陷于法律指控的危险之中。
你需要维护一个列表,列出根据客户要求需要测试的内容。大部分数据可以从客户那里直接收集,但是还有一些数据需要你们团队进行处理。
如果担心法律问题,建议你咨询法律顾问以确保你对渗透测试的合法性有一个完全了解。一旦开始测试,要获取尽可能多的信息。无论在任何情况下,你应该始终确保你获得的信息是准确的。你不希望直到测试时才发现即将进行测试的系统实际上并不属于你的客户!
获得准确的书面授权是在你对客户系统进行渗透测试前最重要的事情,不这样做将可能导致你面临法律诉讼的问题,更有可能为此锒铛入狱。请进行正确的判断!你还需要考虑到在进行渗透测试时,出现错误和遗漏是必然的。
如果你想成功地实施渗透测试,设置合适的范围是非常必要的。你的客户需要理解测试过程的所有细节,也应该告知他们一些额外的服务(没有列在合同清单中的)产生的费用。
为你的服务设定开始和结束的日期。清楚地约定测试中的规则以及可能测试的IP地址范围、建筑物、时间等,不在约定文档中的内容则不应被测试。在开始测试之前,应在会议中事先定义好测试内容,同时让客户准确地了解到你将交付的结果会是怎么样的。
每个渗透测试都需要从规则文档开始,所有参与方都应有这份文档。这份文档至少应该包含如下条款。
规则文档应当包含所有决定测试范围的细节信息,任何问题都应该在起草规则文档之前得到解决,以确保在测试开始之前不会再有任何疑问。在测试过程中,测试团队的每个成员都应该保存一份签署的协议文档。
试想你被雇佣来测试客户无线网络的安全情况,你在私有停车场鬼鬼祟祟地带着巨大的WiFi定向天线和笔记本来回走动。如果有人注意到你的行为,他们很有可能会心存戒备,从而打电话告诉执法部门。你需要随身携带某些文档以证明你在这里的合法性。拥有雇主公司领导的联系信息也是一个非常方便的办法。
一旦开始测试,你需要准备一些东西。这需要一个执行计划,你的所有设备和脚本都需要启动并处于运行状态,你还需要制定一些机制来记录所有的步骤和操作。这样也能为你自己和团队其他成员提供一个参考。你可能现在还记得绕过某台防火墙的步骤,但是当你在4个月之后面对同样的防火墙时,你还记得住么?做好记录对一次成功的渗透测试而言至关重要。
对于本书而言,我们将使用VirtualBox来回顾BackTrack套件的安装过程。VirtualBox是在GNU通用公共许可协议(GPL)保护下,由Oracle公司提供的软件。这个开源的虚拟化工具可以用来建立相关平台的虚拟测验环境,例如Linux、OSX、Windows。
我强烈建议你使用BackTrack系统作为你的测试系统。如果你不熟悉BackTrack,可参考Packt Publishing最近出版的名为BackTrack 4: Assuring Security by Penetration Testing的图书。该书详细讲述了BackTrack套件的各种安装方法,同时给出了Backtrack携带的各种工具的全面介绍。如果你仍对渗透测试比较陌生,你更有可能从这本BackTrack 4的图书中获益。由于本书是针对高安全环境下的高级渗透测试,专注于高级的攻击技巧,所以不会讲解BackTrack套件上的所有工具。
你也可以在BackTrack论坛
http://www.backtrack-linux.org/forums/backtrack-5-forums/
上查看更多有关BackTrack的信息。BackTrack的开发人员非常专业,他们为安全社区贡献了大量的时间和精力。
目前Windows操作系统仍是最常见的桌面操作系统,因此我将详细说明如何在Windows 7上安装VirtualBox。当然,安装过程对所有操作系统都是简单明了的,因此你可以选择在自己最喜爱的系统平台上安装它。
本书涉及的几乎所有工具都基于Linux或FreeBSD系统。由于很多人将Windows作为他们的主桌面系统,因此我们将提供在Windows 7上安装VirtualBox的具体指令。一旦安装并运行该软件,无论虚拟测试环境使用哪种操作系统作为宿主主机,你都可以遵从该软件的指令进行操作了。
1.访问http://www.virtualbox.org/
。
2.单击页面左侧的Downloads链接。
3.下载适用于Windows x86/amd64主机的最新版VirtualBox。
4.开始安装(你可能需要以管理员身份进行安装,这取决于你的系统配置)。
5.在初始化安装窗口单击Next>。
6.确保安装位置是你想要程序安装的位置,同时确定所有应该安装的选项都已经选择好,然后单击Next>。
7.选择是否生成桌面快捷方式选项,并单击Next>。
8.如果你愿意使用之前选定的设置继续安装。
9.单击Install继续安装。该步骤花费的时间取决于你的系统性能。安装过程中可能会要求用户安装设备驱动程序,只需在弹出窗口单击Install进行安装即可。
这种情况可能不止发生一次。在我的安装过程中,弹出了4次窗口,询问是否允许将其他的网络添加至我的防火墙设置中。
10.在Oracle VirtualBox管理界面出现后单击Finish。
你现在已经安装并启动运行了VirtualBox,可以开始第一步:创建自己的虚拟实验环境,并且通过本书的指导进行手动实践操作。
在讨论攻击和防御策略时,我们将使用安装说明中提到的系统和虚拟网络的名字。
安装BackTrack虚拟机有两种主要的方法:一种方法是利用LiveCD ISO将BackTrack安装在一台物理主机上;另一种则是已经制作好的虚拟机文件,该文件就是BackTrack- Linux.org的下载站点上的VMWare镜像。
我们将使用LiveCD来安装BackTrack,这样安装能使我们自由地决定磁盘的大小以及其他选项。使用ISO文件安装的另一个好处是你将了解如何在物理主机上安装BackTrack。如果使用整个磁盘安装,安装过程将与在虚拟机上安装相似。
BackTrack可以在http://www.backtrack-linux.org/
下载,确保自己选择正确的ISO版本,是32位的架构还是64位?如果你的宿主主机不是64位,那么你也不能在客户主机上运行一个64位的操作系统。如果宿主主机是64位,你可以自由地选择32位或者64位的操作系统作为你的客户主机。
宿主机器是你安装 VirtualBox的系统。使用镜像文件安装在 VirtualBox上的虚拟操作系统被认作是客户主机。
1.一旦获得BackTrack ISO,就可以进行下一步了。
2.在你的Start菜单选择Oracle VM VirtualBox管理。
3.单击左上角的New图标。
4.在Welcome to the New Virtual Machine Wizard界面上单击Next按钮。
5.提示你输入客户主机的名字,输入BT5_R1_Tester1
,选择Linux作为Operating System,Version为Linux 2.6(32 bit或64 bit),然后单击Next,如图1.1所示。
图1.1
6.在Memory界面上,你将需要使用滑动条来选择Base Memory Size。如果你的宿主机有超过2GB的RAM,那么你需要给客户主机分配至少512MB内存。你也可以依照例子选择更少RAM,但是将感觉到系统运行缓慢,选择好RAM后单击Next。
7.虚拟硬盘:确保已经选中Start-Up Disk复选框以及Create new hard disk单选按钮,然后单击Next按钮。
8.在新弹出的窗口中选择VDI(VirtualBox Disk Image),单击Next。
9.当要求你选择Virtual disk storage details时,选择Dynamically allocated并单击Next继续安装。
10.现在该选择客户主机虚拟文件存放的位置了。选择Location输入区域右边的文件夹图标。
11.创建并选择一个命名为APT_VirtualLab
的新文件夹,我们将在这个文件夹中存储有关实验的所有客户主机文件,确保你选择的磁盘有足够空间存储多个虚拟机。
12.虚拟磁盘应至少有10GB大小,我们在本书中将频繁使用这个客户主机,因此最好能够避免重新分配VDI文件容量,如图1.2所示。单击Next继续。
图1.2
13.在Summary页面上验证数据是否准确,然后单击Create。
14.如果一切顺利,你将再一次看到VirtualBox应用管理界面弹出,并看到一个新的客户主机(见图1.3)。
图1.3
15.我们希望这台主机有两个网卡。选择BT5_R1_Tester1,然后单击Settings,然后在弹出的左侧菜单栏中单击Network选项,如图1.4所示。
图1.4
16.单击Adapter 2,并选择Enable Network Adapter复选框。
17.需要将Attached to:下拉列表设置为Internal Network。
18.将Name:文本框设置更改为Vlab_1,并单击OK。
现在完成了在虚拟磁盘上安装一个操作系统所需要的准备工作。在安装其他操作系统时,这个过程变化不大。VirtualBox有许多配置细节,有时你可以通过修改客户主机的设置来增加它们的性能。使用部分设置能够让你对这个工具有充分的了解。
你可以随时修改虚拟机的设置。但是有时候需要在设置生效前先关闭计算机。
现在虚拟机已经安装完毕,下面准备安装BackTrack。正是由于Backtrack-Linux.org团队的努力工作,这个安装过程才变得简单且不繁琐。
1.打开VM VirtualBox Manager,选择屏幕左边的BT5_R1_Tester1客户主机,单击程序菜单上方那个大的Start图标,启动虚拟机。
2.你的机器已经开始启动。由于我们还没选择好从哪个镜像上启动,因此我们需要在初始化系统前,从菜单选项中选择一个系统。
3.可能会跳出一个信息窗口说明Auto Capture Keyboard选项已经打开。单击OK按钮继续进行系统初始化。
4.First Run Wizard仅在虚拟机开启的第一次出现,这将允许你轻松地选择想启动的ISO系统文件。
5.你也可以在Storage类别的Virtual Machine Settings类别下添加安装媒体选项。
6.单击Next继续,如图1.5所示。
图1.5
7.在Select Installation Media界面上,你需要单击Media Source框右侧的文件夹图标,然后需要找到下载BackTrack ISO的文件夹,选择该文件以便让它显示在以下截图中。一切就绪后单击Next(见图1.6)。
图1.6
8.在显示的汇总信息上进行确认,然后单击Start初始化主机。如果系统在boot:
命令阶段中止,按下Enter键,系统将继续启动:输入Enter系统将继续启动。这样能够完全加载镜像(默认的启动选项),你可能会见到Keyboard Host Capture消息,选择那些对完成一次成功渗透攻击有用的选项,单击OK。
9.在root@root:~#
弹出后输入startx
(见图1.7)。
图1.7
10.现在你已经将Backtrack ISO运行在你的虚拟机上了,你需要将Backtrack安装到硬盘上,以便保存对系统的更改。单击Insiall BackTrack图标,开始一个简短的安装过程(见图1.8)。
图1.8
11.选择你偏好的语言并单击Forward。
12.让安装程序知道你在这个世界上的位置,这将影响到你的时间设置,同时帮助你选择最近的更新服务器,单击Forward继续。
13.选择你偏好的键盘布局并单击Forward。
14.为了尽可能简单,我们将选择使用整个可用磁盘空间而不进行人工分区。选择Erase and use the entire disk单选按钮,单击Forward。
15.单击Install以初始化上面的配置,这阶段可能花几分钟完成,见图1.9。
图1.9
16.当安装完成时,需要重启系统。单击Restart Now按钮,然后卸载ISO文件。你需要选择Devices | CD / DVD Devices | {Your BackTrack ISO image name },这样就能够在重启之前弹出ISO镜像。按Enter键进行重启(见图1.10)。
图1.10
恭喜,你现在已经拥有了世界上最强大的渗透工具集,并且已经安装好供你使用了。整本书将致力于介绍BackTrack——Linux平台上最优秀的工具集,该工具集无疑将会为你在渗透测试阶段节省大量的时间。
安装的默认登录信息如下所示:
bt login:root
bt password:toor
登录后,我们应该尽快修改默认密码。通过终端输入passwd
,将密码替换为例子中的1NewPassWordHere
这个密码作为你的安全密码。
root@bt:~# passwd
Enter new UNIX password:1NewPassWordHere!
Retype new UNIX password:1NewPassWordHere!
passwd:password updated successfully
root@bt:~#
如果你的屏幕显示出现问题或者还有其他小问题,你可能需要安装VirtualBox Guest附加组件。当客户主机运行时,单击Devices再单击Install Guest Additions,开始安装客户附加组件,在这之后你可能需要重新启动BackTrack。
安装BackTrack过程中,将你的虚拟网卡配置为允许通过NAT的方式连接到宿主机器的Internet网络。为了更新操作系统。你需要熟悉一些命令。
如果你没有Internet连接,那么就不能更新系统。
值得注意的是,BackTrack是基于Ubuntu系统开发的,与其他操作系统一样,需要为系统打好最新的安全补丁。更新里面的应用程序同样重要,这样能够让你使用最新的测试技术和工具。
在默认情况下,BackTrack仅使用BackTrack软件库。如果对此感到好奇,你可以通过查看/etc/apt/sources.list
文件来了解这些软件。
你需要执行的第一个初始化命令是advanced packaging tools(APT)的更新功能。这将同步服务器上的软件包索引,以确保你能够更新最新的软件包。更新功能应该在你安装任何软件之前完成。
# apt-get update
在这个更新完成之后,你就可以使用apt的升级指令来更新所有已经安装的软件包。
# apt-get upgrade
还有一个命令用来更新系统:dist-upgrade
。该命令也能将BackTrack更新为最新的系统。例如,如果你正在运行BackTrack 4,同时想不通过下载来安装最新版本的BackTrack 5系统,你可以通过输入下述命令来升级系统:
# apt-get dist-upgrade
你不必担心系统的依赖关系,所有这些都可以通过
apt-get dist-upgrade
命令来自动处理。
现在你的系统已经更新,该开始进入用户图形界面(在命令行中输入startx
)并查看所有的新工具。在本书中,你将会广泛使用这些工具。
如果使用
apt-get dist-upgrade
来更新,最好重启一下虚拟机。这样可以确保操作系统内核的更新生效。
有时你需要打开电子表格查看IP的范围,或者需要迅速查看你的ROE。很多时候,在BackTrack中,最好让你的数据收集工具所导出的数据直接生成一个文字处理文件。目前,有很多与Microsoft Word 类似的开源软件,OpenOffice 就是一个非常好的选择。OpenOffice已经被很多公司采用,它可以输出各种文件格式。在BackTrack上安装OpenOffice只需要打开一个终端,并输入下述命令即可:
# apt-get update
# apt-get install openoffice.org
通过按下Y键接受下载。几分钟后,你就成功地把强大的Office套件添加到你的BackTrack工具集中了。
在一次渗透测试的过程中你将使用到各种工具,几乎所有的工具都会输出你想要保存的结果。一个主要挑战就是将所有数据结合并集中放在一个地方,以便你能够轻松地通过整体观察数据来增加测试的效果,同时也能够缩短报告生成环节。
MagicTree是Gremwell开发的一个Java程序,它是一个支持主动收集数据和生成报告的工具。它通过树形结构的节点来管理你的数据,这种分层存储方法对管理主机和网络数据特别有效。MagicTree真正强大的功能在于分析数据。例如,在一次大型网络的扫描期间,(借助MagicTres)搜索已经扫描到的所有ISS Web服务器仅需要片刻时间。
除了出色的数据收集机制,MagicTree还可以基于你选择的优先级创建可操作的报告利用MagicTree生成的报告是完全可定制的,以满足你的报告要求。你甚至可以使用它将数据导出到OpenOffice中!
MagicTree允许XML数据的导入,同时对许多常见的格式执行XSLT转换,例如:
值得注意的是,MagicTree的开发人员是职业的渗透测试人员。在开发MagicTree的过程中,他们很清楚每天做渗透测试时遇到的挑战。可以说明这个问题的一个例子是,他们开发的一个功能可以允许你通过XSLT转换文件格式供其他工具使用。如果你需要的XML数据不能通过转换工具来导入,你可以自己动手制作!
与我们在本书中使用的大多数工具一样,MagicTree已经在BackTrack 5 R1预安装了。
要在BackTrack中启动MagicTree,我们需要选择Applications | BackTrack | Reporting Tools | Evidence Management | magictree。在界面弹出而且许可协议显示出来(需要接受许可协议)之后,主应用程序界面才显示出来,如图1.11所示。
图1.11
为了添加一个节点,按下Ctrl+N并在一个Input弹出框中输入127.0.0.1
。这将使用两个额外的节点来填充树。一个用于testdata,另一个为主机127.0.0.1。
有若干个类型的节点供你存储数据。为了高效地使用这个工具,你需要熟悉各种节点的类型。
MagicTree将来自不同数据源的数据合并到单个节点中,试图避免数据重复。例如,利用多个不同的工具对主机127.0.0.1扫描时,不会产生表示相同数据的多个节点。
我们收集一些关于127.0.0.1的数据。除了可以选择在MagicTree之外运行的工具所生成的扫描结果,你也可以在MagicTree中使用变量来选择目标范围或主机。
在Tree View菜单中选择host 127.0.0.1节点,单击Q*按钮(代表查询所有内容),然后在Command文本区域输入如下命令(一定要通过单击确保它在启动状态):
# nmap - vv - O - sS - A - p- P0 - oX $out.xml $host
这会初始化一个针对127.0.0.1的Nmap扫描并将结果输出到一个名叫$out.xml
的XML文件中,如图1.12所示。
图1.12
我们将选择$out.xml
文件,单击Import按钮,让MagicTree基于扫描结果自动生成节点架构(框架),如图1.13所示。
图1.13
MangicTree导入了Nmap的扫描结果并合并到主机中。看起来postgresql 8.4.0已经在BackTrack虚拟机上运行并监听在7175上。
现在已经有了一些扫描结果,我们来看一下生成报告是多么得简单。通过BackTrack 5 R1预安装的OpenOffice有5个配置好的模板供你选择,当然你也可创建自己的模板。
在菜单栏的顶部,选择Generate Report的后面选择Report选项,这将初始化Generate Report模板选择界面。通过浏览选项选择open-ports-and-summary-of-findings-by-host.odt
,然后单击Generate Report。片刻之后,OpenOffice就会打开自动生成的报告,报告中将列出与主机对应的所有打开端口以及你找到的其他信息,如图1.14所示。
图1.14
这就是对MagicTree项目的一个快速介绍。这个工具非常强大,它将需要你经过实践之后才能发挥潜在的功能。MagicTree提供的官方文档非常规范并且经常更新。如果你主要是在一个非常小的团队(或是一个人组成的团队)中执行渗透测试,那么MagicTree将是你唯一需要的数据收集工具。
Dradis框架是一个Rails应用程序,它可以用于管理在渗透测试时出现的数据过载情况。Dradis基于Web的用户界面体验良好,它简化了渗透测试周期的数据收集过程,并且能够将数据方便地分享给团队其他成员。
在结合不同的数据源,例如Nmap、Nessus,甚至Metasploit时,你通常需要构造某种数据库,然后使用各种方法管理导入的数据。Dradis可以让你单击几下鼠标,就能通过插件导入这些数据。Dradis也允许你上传附件(例如截图),或将你自己的注释添加至数据库中。
Dradis框架可以安装在Linux、Windows或OSX上。
Dradis服务器可以通过单击快捷方式Applications | BackTrack | Reporting Tools | Evidence Management | Dradis,或在终端输入以下内容来开启:
# cd /pentest/misc/Dradis/
#./start.sh
一旦服务开启,你需要打开你的浏览器并输入https://127.0.0.1:3004
,这将进入Dradis应用程序的介绍界面。
由于证书是自签署的,所以浏览器会向用户提示警告消息。将证书添加至你的例外列表中并继续。你可能也想在 No Script 浏览器插件中选择Allow 127.0.0.1。
你将看到“What is Dradis”欢迎界面.为了设置服务器共享密码,你需要单击页面右上角的back to the app链接。图1.15是设置密码页面的截图。
图1.15
Dradis框架使用了可以供所有团队成员共享的密码。在Password区域中输入你选择的密码。
永远不要重复使用密码!
单击Initialize按钮继续。这将建立新密码并接受默认元服务器(Meta-Server)选项。
你现在可以在Login字段选择一个新的用户名。用户登录作为信息使用,它不会影响工作区域。在Password区域输入共享的服务密码。一旦你单击Log in按钮,Dradis主工作区域就会出现。用户名及密码输入页面如图1.16所示。
图1.16
我们将通过创建一个新分支来设置个Dradis环境,该分支将代表我们的渗透测试工作。这些分支可以基于用户创建的标准来管理检测结果
1.在程序窗口顶部的工具栏中单击add branch按钮。
2.你可以为新的分支重命名。使用PracticePenTest
重写branch #2,并按Enter键。
3.右键单击PracticePenTest并选择add child来分级。
4.试验一下并添加几个文件夹,然后思考你将如何安排你的数据,以方便访问和易于管理。
图1.17是一个项目树示例,假定该项目树在渗透测试期间用来收集数据。
图1.17
测试包含一系列计划好的阶段和过程这些阶段计划在不同测试情况下变化不大。为了充分利用这一事实,我们将创建一个可重复利用的模板。
在选择好PracticePenTest节点后,在顶部菜单栏上单击export图标。当展开Project export菜单时,将看到As template选项。单击该选项可以将项目模板以XML文件的形式存储到我们需要的位置。导出操作如图1.18所示。
图1.18
将文件保存到你的BackTrack Desktop文件夹并使用默认名dradis-template.xml
。返回你的Dradis Web应用窗口,选择PracticePenTest
节点,右键单击,然后(在弹出的菜单中)选择Delete node,将其删除。
PracticePenTest节点伴随着剩下的数据一起删除了。现在是我们重新利用它的时候了,我们需要导入dradis-template.xml
文件。单击菜单栏中的Import from file选项,然后选择old importer。从下拉菜单中选择Project template upload,单击Upload完成导入程序,一旦你的屏幕刷新,将会有两个新的文件夹出现:一个文件夹名为Upload files,另一个自然就是原来的PracticePenTest节点结构。具体操作如图1.19所示。
图1.19
为了完全领会Dradis框架的价值,我们将使用一些在渗透测试和漏洞测试中常用的工具来产生一些测试数据。大多数人应该比较熟悉这些工具,所以这里不会深入讨论这些工具。
要是BT5_R1_Tester1还没有启动,我们首先要做的就是立刻让它跑起来。一旦你登录到BackTrack客户端主机并通过startx命令打开了用户图形界面,那么在顶部菜单栏单击终端图标就会启动一个新的终端会话。用户图形界面如图1.20所示。
图1.20
你可能已经注意到,自己在以root身份运行,因为很多工具都需要管理员权限才能正常运行。
将目录更改为Desktop
,然后自己创建一个名为testData
的新目录。这里将存储一些将要使用的导出文档。将你的当前工作目录更改为/Desktop/testData
。
# cd Desktop/
# mkdir testData
# cd testData/
现在我们将使用Nmap生成数据,扫描生成的数据随后会导入到Dradis中:
nmap -vv -O -sS -A -p- P0 -oA nmapScan 127.0.0.1
该命令会初始化Nmap,使其扫描本地主机,并命令结果保存成三个格式的文件:XML文件、标准文件、grepable文件。由于没有指定目录,所以文件将保存在当前工作目录下。我们进行了一个针对所有端口和操作系统版本检测的细致TCP SYN扫描,这个命令针对在线的所有主机。
在Dradis Web控制台已经打开,而且PracticePenTest项目树已经加载之后,选择Import from file, old improter,然后在Import from file菜单中选择Nmap upload格式,然后单击Select a file:输入区域右边的文件夹图标,浏览并选择nmapScan.xml
文件,然后单击Open。导入文件窗口如图1.21所示。
图1.21
单击Upload将完成导入。这需要一些时间来处理这些数据。处理时间与拥有的数据大小成正比。上传完成后如图1.22所示。
图1.22
数据导入后会在树上增加一个新的节点,你可以将这个节点在PracticePenTest内进行任意移动,仅需要单击鼠标左键进行拖曳即可。将127.0.0.1
的扫描结果放到PracticePenTest的逻辑结构中后,你可以轻松地将扫描结果与本次渗透测试和其他相关数据关联起来,如图1.23所示。
图1.23
使用这种集中式数据收集一个好处是,你可以在注释上设置标记,让数据导出成PDF、MS Word或者HTML格式。
在Dradis启动和运行时,我们需要选择PracticePenTest节点,同时单击工作区项目树右边的Add note按钮,在弹出的编辑器中输入This is a note,然后单击Save。这就将你的注释添加至列表中了。
这些注释对你渗透测试的工作非常重要,你应该慎重考虑并清楚写明注释内容。避免注释仅在当前环境下起作用,因为你可能在几天后重新查看这些注释。
你不会总是想将所有内容导出到你的报告中。为了解决这个问题,Dradis开发团队添加Category区域。这个区域将标记那些Dradis提供的各种格式的数据,这些数据有待导出。在此情况下,我们需要双击在“This is a note”右边列出的default category文本,在下拉菜单选择HTMLExport ready选项,见图1.24。
图1.24
为了查看数据,在顶端工具栏选择export选项,并单击HTML export,你将得到所有以HTML格式输出的PracticePenTest注释文件,该文件在整个项目树中是HTMLExport类别的一个成员。
可以看到,Dradis的输出非常友好,但如果你需要更多定制的输出呢?你可以通过更改标准模板,来定制(自定义)导出的格式,下面是如何更改文档脚的例子:
将当前工作目录更改为选择导出插件。在此情况下我们将修改html_export/template.html.erb
文件。
# cd /pentest/misc/dradis/server/vendor/plugins/html_export
为了修改template.html.erb
文件,我们将使用Nano,它是一个强大且易用的文本编辑器。
# nano template.html.erb
文件将显示在Nano文本编辑器中。如果需要参考的话,Nano的命令会显示在应用的底部。我们通过设置template.html.erb
文件来使用HTML文件对模板进行小的修改。将<h1>You can change this template to suite your needs.</h1>放到<title><%= title %></title>
行的下面。
<title><% = title %></title>
<h1>You can change this template to suite your needs. </h1>
在Nano中使用Ctrl+O保存你修改的文件并写到磁盘中。你将被问到用什么文件名来保存文件,你可以使用默认的文件名并在键盘上直接按Enter。
想查看改变是否生效,回到Dradis Web控制界面,选择PraticePenTest,然后单击工具栏的export→HTMLexport选项。你的新模板将被加载,在导出的报告中即可看到改变是否成功。模板是可以定制的,只要你付出一点努力并具备HTML技巧,你就能够定制自己想要的模板。
请注意,MS Word导出功能需要你安装MS Office。
这表示在使用BackTrack下不能完全展示Dradis的性能。Word模板容易定制,使其包含公司信息,以你喜欢的格式列出数据并将标准页眉和页脚添加到文档中。
由于Dradis是使用起来非常方便如果你需要将数据导出到MS Word的功能,但是没有许可将它安装在BackTrack上,那么你可以将Dradis安装在一台安装了MS Office的Windows主机上,将Dradis项目从BackTrack中导出并重新导入Windows的Dradis中。
在这一章中,我们讲解了一次成功的渗透测试之前所有必要的准备和计划。我们讨论了渗透测试和漏洞评估之间的区别。
详细阐述了界定恰当范围的具体步骤,这些步骤确保了在渗透测试前应该收集的信息,值得注意的是,恰当的界定范围和制定计划与测试中发现最新重大漏洞一样重要。
我们同时也讨论了如何安装VitualBox和BackTrack,不仅给出了从ISO文件安装BackTrack的必要指导,还给出了如何保持更新的指令。除此之外,我们也提供了在BackTrack上安装OpenOffice的指令。
最后,我们讨论了两个功能强大的工具,它们都具有收集数据并生成报告的功能。MagicTree是一个功能强大的数据收集和分析工具,Dradis则是在数据集中和共享方面拥有强大的功能。
在下一章中,我们将学习各种侦察技术,以及为什么需要这些技术。其中包括有效使用Internet上的搜索引擎来定位公司和员工数据,操控和阅读各种文件格式的元数据,完全发掘DNS的潜力以使渗透测试任务变的更加简单。