Kali Linux 2网络渗透测试实践指南

978-7-115-48033-0
作者: 李华峰 商艳红 高伟 毕红静
译者:
编辑: 胡俊英

图书目录:

详情

本书由资深的网络安全教师撰写。本书共16章,内容围绕如何使用kali这款目前最受瞩目的网络安全审计工具集合展开。本书从kali的基础讲起,系统讲述了网络安全审计的作用、价值、方法论,以及kali在网络安全管理上的应用,以及kali在实现这些应用时需要的相关网络原理和技术。结合实例讲解使用kali进行网络安全审计的方式和方法,以及在实际渗透中的各种应用。

图书摘要

版权信息

书名:Kali Linux 2网络渗透测试实践指南

ISBN:978-7-115-48033-0

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    李华峰 商艳红 高 伟 毕红静

责任编辑 胡俊英

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(76010)81055315


Kali是世界渗透测试行业公认的优秀的网络安全审计工具集合,它可以通过对设备的探测来审计其安全性,而且功能完备,几乎包含了目前所有的热门工具。

本书由资深的网络安全领域的教师编写完成,全书共16章,内容围绕如何使用Kali这款网络安全审计工具集合展开。本书涉及网络安全渗透测试的相关理论和工具、Kali Linux 2使用基础、被动扫描、主动扫描、漏洞扫描、远程控制、渗透攻击、Armitage、社会工程学工具、BeEF-XSS渗透框架、漏洞渗透模块的编写、网络数据的嗅探与欺骗、身份认证攻击、无线安全渗透测试、拒绝服务攻击、渗透测试报告的编写等内容。

本书面向网络安全渗透测试人员、运维工程师、网络管理人员、网络安全设备设计人员、网络安全软件开发人员、安全课程培训人员、高校网络安全专业方向的学生等。读者将从书中学习到实用的案例和操作技巧,更好地运用Kali Linux 2的工具和功能。


陈虹

这是一位天赋极佳的前端设计师,她在本书的编写过程中,从艺术的角度提出了很多重要且准确的建议。可以这样说,正是由于她的努力和智慧才保证了本书的顺利完成。

张珺、孟一珍

此二人有着丰富的Web开发经验,他们共同完成了本书Web相关部分的内容审校和修订工作。

赵宇

这是一位少有的同时精通JAVA语言和汇编语言的编码者,他协助完成了本书软件调试和漏洞渗透部分的内容审校和修订工作。

李爽

长期从事网络设计方面的工作,相关经验非常丰富,目前正在主讲MPLS与VPN方面的高级网络课程,她完成了本书网络相关部分的内容审校和修订工作。


我们暂且不谈Kali,先来谈谈黑客。

长期以来,黑客在人们心目中都是一个神秘的职业。但是,在人们心目中这个职业为社会带来的好像更多的是负面的影响,因为只要一提到黑客,就会和攻击、泄密和破坏这些词汇联系到一起。然而事实确实如此吗?在现实生活中普通人很难见到从事这个职业的人,不过在影视作品中出现的黑客往往具备两个特点:足够聪明,喜欢单干。其实在现实生活中,黑客的年龄从十几岁到几十岁不等,他们从事着各种各样的职业,他们可能精通从编写病毒到漏洞测试的各种技能中的某一项。

虽然近年来,我们经常可以看到“某天才黑客被大企业以天价年薪招安”的新闻,但是绝大多数的黑客却并没有这么好的机会,他们的才华很难得到社会的肯定,要么没有企业接纳他们,要么企业接纳他们之后没有合适的岗位。所以很多拥有天赋的黑客选择了铤而走险,利用自己的技术走上了违法的道路。

就在不久前,我的一个大学同学创办的公司推出了一款新的行业软件。这款软件的前景十分光明,一时间几乎垄断了某省份该类软件的全部市场份额。可是好景不长,就在这款软件投入部署不久,研发部门收到了一封匿名邮件。这封邮件清楚地指出了该软件存在漏洞,并且这个漏洞会导致全部数据库信息的泄露。匿名邮件发送人开出了一个并不很高的价格,只要支付费用,就不会公布这个漏洞,并会提供修复的信息。

这件事情后来成为了我课堂上的一个经典案例,除了用来对这个类型漏洞进行分析之外,也用来帮助学习网络攻击这门课程的学生进行职业生涯规划。网络攻击是计算机专业中一个比较另类的课程,在这门课上讲述每一种技术,每一种工具,甚至每一个思路好像都不是为了建设,而是为了破坏。这些黑客技术就像是一件件武器,掌握了这些武器的人又该去做些什么呢,这些黑客技术能否用在正途上呢?

这个问题的答案很肯定。现在随着网络安全越来越受到各方面的重视,一个新兴的职业正在蓬勃发展起来,那就是网络安全渗透测试。在国外,出现了很多专门提供这个服务的企业;在国内,虽然起步较晚,但是前景却非常广阔。

网络安全渗透测试严格的定义应该是一种针对目标网络进行安全检测的评估。通常这种测试由专业的网络安全渗透测试专家完成,目的是发现目标网络存在的漏洞以及安全机制方面的隐患并提出改善方法。从事网络安全渗透测试的专业人员会采用和黑客相同的方式对目标进行入侵,这样就可以检测网络现有的安全机制是否足以抵挡恶意的攻击。

网络安全渗透测试专家将会像黑客一样思考,在别有用心的人之前找出目标的问题,提前采取预防手段。

但是一个出色的黑客并不一定就是一个合格的网络安全渗透测试专家。因为很多黑客只掌握了众多技术中的一种,他们在某一个领域出类拔萃,但是可能对另一个领域毫无所知。而网络安全渗透测试专家必须掌握全面的知识。

本书讲解了大量的网络安全渗透测试的实例,希望能为各位有志于从事这个行业的读者提供一些帮助。祝各位成为网络安全渗透测试方面的优秀人才,为我国的网络安全与信息安全事业作出贡献。

李华峰

2018年1月于唐山


多年前,我曾经领略了传奇黑客工具BO2K的神奇,对这款工具的创造者——“死牛之祭”(The Cult of the Dead Cow,CDC)也是极为仰慕。不过在许多年之后,我才知晓“死牛之祭”并非是一个人,而是一个团体。“死牛之祭”由很多人组成,有趣的是,他们中有的人完全不懂密码学,有的人又不怎么了解软件调试技术,但是他们中的每个人都有自己独特的技能。单独来看这些人中的每一个,可能都不是一个理想的黑客,但是当他们聚在一起的时候,却又变成了一股全世界都不能忽视的力量。

在本书的编写过程中,我曾经一度感到十分迷茫,网络安全渗透测试需要极为全面的知识和技能。因为现实中的网络安全渗透测试用“千里之堤,溃于蚁穴”来形容是再为贴切不过了,任何一个方面出错,都会影响到整个测试的成功与否。现在既然要系统地讲解网络安全渗透测试,那么如何能将各种渗透测试的技能都完整而又准确的介绍出来,这是一个十分严峻的挑战。受到“死牛之祭”的启发,我想为什么不去建立一个技能全面的团队呢?好吧,事实上我真的这样去做了。幸运的是,在短短的时间里,一些有着丰富经验的老手们纷纷加入了本书的编写和审校团队。十分感谢他们的参与和热情!本书的完成包含着你们辛勤的付出。感谢人民邮电出版社的胡俊英编辑,在本书的编写过程中始终支持我的写作,正是她的鼓励和帮助,我才能顺利完成全部书稿。


时至今日,网络安全问题已经成为社会热点中的热点。随着近年来网络和计算机的安全越来越受重视,渗透测试技术已经成为网络安全研究的核心问题。而渗透测试的成功与否又取决于对目标信息的掌握情况,这就要求渗透测试者必须精通网络安全审计技术。尤其是对网络的保护者来说,精通网络安全审计技术,意味着可以先于攻击者发现网络和计算机的漏洞,从而有效地避免来自于企业内部和外部的威胁。因此无论是安全渗透测试人员、网络管理人员、网络安全设备和安全软件开发人员的工作都包含了网络安全审计技术。目前,国内的网络安全正处于起步阶段,大家所使用的工具多种多样,缺乏先进、专业、完善的学习资料,基本上都是依靠摸索学习。

而Kali是世界渗透测试行业公认的优秀的网络安全审计工具集合,它可以通过对设备的探测来审计它的安全性,而且功能极为完备,几乎包含了目前所有的热门工具。Kali的强大功能是毋庸置疑的,它几乎是必备工具,你几乎可以在任何经典的网络安全图书中找到它的名字,甚至可以在大量的影视作品(例如最新的《黑客兵团》等)中看到Kali的身影。现在,国内对于Kali的研究也越来越热。近年来正是国内网络安全飞速发展的阶段,Kali这个曾经只有顶尖高手才会涉及的工具,也逐步走入了普通网络安全工作人员的“寻常百姓家”,从而受到了广大网络安全从业人员的喜爱。假以时日,它势必将成为国内流行的网络安全审计工具。本人从2009年开始正式涉足网络渗透领域,对于Kali的使用,花费了大量的时间和精力进行研究,尤其是阅读了大量国外的相关文献。在本书中将会分享自己学习Kali的使用经验、方法,并对其精心汇总,希望可以减少其他Kali学习者的学习成本。

本书将Kali应用实例与网络原理相结合进行讲解,不仅讲述Kali的实际应用方法,还将从内部原理的角度来分析Kali实现网络安全审计的技术,实现了将各种网络协议、各种数据包格式等知识与Kali的实践应用相结合,真正做到理论与实践相结合。

本书的读者对象如下:

本书的结构是按照渗透测试的流程来展开编写的,全书内容共分为16章。

第1章 “网络安全渗透测试的相关理论和工具”,这一章对什么是网络安全渗透测试,以及如何开展网络安全渗透测试进行了介绍。

第2章 “Kali Linux 2使用基础”详细地讲解了Kali Linux 2的安装和使用。

第3章 “被动扫描技术”,被动扫描是整个渗透测试过程中极为重要的一个阶段。这一章介绍了间接扫描中优秀的3种工具,分别是Maltego、Recon-NG、ZoomEye。

第4章 “主动扫描”以Nmap为工具,详细地介绍了主动扫描的各种方法。

第5章 “漏洞扫描”介绍了在漏洞扫描阶段需要完成的任务。

第6章 “远程控制”以Android和Windows作为目标平台,通过实例介绍了Metasploit框架中提供的优秀工具Meterpreter。

第7章 “渗透攻击”以网络安全渗透测试工具Metasploit的正式介绍作为开头,然后以实例的形式开始介绍Metasploit框架的使用方法。

第8章 “Armitage”引入了Metasploit的图形化操作界面—Armitage,这是一款由Java开发的工具。

第9章 “社会工程学工具”,在这一章中介绍了Kali Linux 2中社会工程学工具包的基本使用方法,工具包social-engineer-toolkit提供了大量成熟的社会工程学攻击方式,随后就其中最为经典的几种方式进行了介绍,

第10章 “BeEF-XSS渗透框架的使用”介绍了一个新的渗透测试方法XSS(跨站脚本攻击),这是一种令人防不胜防的渗透方式,用户往往只是访问了恶意攻击者建立的网站就会被渗透。

第11章 “漏洞渗透模块的编写”针对一个特定漏洞进行渗透模块开发,这是一个存在于FreeFloat FTP Server软件中的栈溢出类型漏洞。

第12章 “网络数据的嗅探与欺骗”介绍了如何在网络中进行嗅探和欺骗,这是极为有效的一种攻击方式。

第13章 “身份认证攻击”介绍了一些网络渗透中常见的密码破解方式。

第14章 “无线安全渗透测试”总结了无线网络的各种渗透方式。

第15章 “拒绝服务攻击”,按照TCP/IP协议的结构,依次介绍了数据链路层、网络层、传输层和应用层中的协议漏洞,并讲解了如何利用这些漏洞来发起拒绝服务攻击。

第16章 “渗透测试报告的编写”介绍了渗透测试报告的编写规范及包含的内容,并介绍了Kali Linux 2中最为优秀的测试报告编写工具Dradis的使用方法。

大家可以根据自己的需求选择阅读侧重点,不过还是希望能够按照顺序来阅读,这样不仅可以对渗透测试有一个清晰的认识,还可以对渗透测试中的技术有一个简单的对比。

作者和编辑尽最大努力来确保书中内容的准确性,但难免还会存在差错。欢迎您将发现的问题告诉我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区主页https://www.epubit.com/,搜索到本书页面,点击 “提交勘误”,相应输入信息,最后单击“提交”按钮即可。之后本书的作者和编辑会对您提交的勘误进行审核。确认并接受后,您将获赠异步社区的100积分。积分可用于在社区兑换优惠券,以及兑换样书或奖品之用。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请发邮件到此邮箱,邮件标题中请注明本书书名。

如果您有兴趣出版图书、录制教学视频,或参与图书翻译、技术审校等工作,可以发邮件,或者到异步社区在线提交投稿:

www.epubit.com/selfpublish/submission

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,请发邮件联系我们。

如果您在网上发现有针对异步图书的各种形式的盗版行为,包括图书或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的举动是对作者权利的保护,我们也由此才能继续为您带来有价值的内容。

异步社区是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务,社区创办于2015年8月,提供超过1000种图书、近1000种电子书,以及众多技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

异步图书是由异步社区编辑团队策划出版的精品IT专业图书品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,在封面上印有异步图书的LOGO。我们的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


在美国著名电影《金蝉脱壳》中,雷·布雷斯林是这个世界上最强的越狱高手之一,他在过去8年的时间内成功地从14所守卫高度森严的重型监狱中逃脱。即便如此,雷·布雷斯林却并不是一个罪犯,他真实的身份是美国国家安全局的一位监狱安全专家。雷·布雷斯林以罪犯的身份进入监狱,寻找监狱的漏洞。而他的每一次成功越狱,就代表着他已经找出了这个监狱安全方面的漏洞。当然雷·布雷斯林的目的并不是为了破坏,而是为了确保监狱中每一个服刑的罪犯都无法逃脱。他的每一次成功越狱,都会使监狱变得更加坚固,因此他是一个合法的越狱者。剧中的雷·布雷斯林由我最喜欢的影星西尔维斯特·史泰龙所饰演。

随着目前网络的迅猛发展,人们也开始越来越重视网络的安全问题。一个网络的安全机制无论设计得多么精准,都可能存在不易察觉的漏洞。因此与雷·布雷斯林工作性质相类似的网络安全渗透测试也应运而生。

如果你是第一次接触到网络安全渗透测试这个问题的话,可能会对此充满好奇和期待。那么在这一章中我们将从以下3个主题展开对网络安全渗透测试的学习。

在开始正式学习之前,我们先来了解一下网络安全渗透测试。长期以来,很多人都认为网络安全渗透测试就是使用扫描工具找出系统的漏洞,甚至经常有一些刚刚入行不久的网络安全渗透测试的从业人员也这样认为。基于这样的理解,很多人在测试过程中会仅仅使用漏洞扫描工具对目标进行扫描。漏洞扫描的确很重要,但是它只能是整个网络安全渗透测试的一部分。实际上大多数时候漏洞扫描的结果也仅仅是能够反映出目标是否及时安装了系统更新。

可是网络安全渗透测试是什么呢?

实际上网络安全渗透测试严格的定义应该是一种针对目标网络进行安全检测的评估。通常这种测试由专业的网络安全渗透测试专家完成,目的是发现目标网络存在的漏洞以及安全机制方面的隐患并提出改善方法。从事渗透测试的专业人员会采用和黑客相同的方式对目标进行入侵,这样就可以检测网络现有的安全机制是否足以抵挡恶意的攻击。

根据事先对目标信息的了解程度,网络安全渗透测试的方法有黑盒测试、白盒测试和灰盒测试3种。

黑盒测试也被称作外部测试。在进行黑盒测试时,事先假定渗透测试人员先期对目标网络的内部结构和所使用的程序完全不了解,从网络外部对其网络安全进行评估。黑盒测试中需要耗费大量的时间来完成对目标信息的收集。除此之外,黑盒测试对渗透测试人员的要求也是最高的。

白盒测试也被称作内部测试。在进行白盒测试时,渗透测试人员必须事先清楚地知道被测试环境的内部结构和技术细节。相比起黑盒测试时,白盒渗透测试的目标是明确定义好的,因此白盒测试无需进行目标范围定义、信息收集等操作。这种测试的目标网络都是某个特定业务对象,相比起黑盒测试,白盒测试能够给目标带来更大的价值。

将白盒测试和黑盒测试组合使用,就是灰盒测试。灰盒测试时,渗透测试人员只能了解部分目标网络的信息,但不会掌握网络内部的工作原理和那些限制信息。

网络安全渗透测试的目标包括一切和网络相关的基础设施,其中包括以下方面。

网络安全渗透测试的成果通常是一份报告。这个报告中应当给出目标网络中存在的威胁,以及威胁的影响程度,并给出对这些威胁的改进建议和修复方案。

另外需要注意的一点是,网络安全渗透测试并不能等同于黑客行为。相比起黑客行为,网络安全渗透测试具有以下几个特点:

作为网络安全渗透测试的执行者,我们首先要明确在整个渗透测试过程中需要进行的工作。当我们接收到客户的渗透测试任务时,往往对于所要进行测试的目标知之甚少甚至一无所知。而在渗透测试结束的时候,我们对目标的了解程度已经远远超过了客户。这个期间,我们要从事大量的研究和工作,根据pentest-standard.org 给出的渗透测试执行标准,整个渗透测试过程中工作可以分成如下7个阶段。

下面分别介绍一下这7个阶段中所需要完成的工作。

这个阶段中渗透测试者需要得到客户的配合来确定整个渗透测试的范围,也就是说要确定是对目标的哪些设备和哪些问题进行测试。而这些内容是在与客户进行了商讨之后得出的。整个商讨的过程中我们重点要考虑的因素主要有以下几个。

1.渗透测试的目标

通常这个目标会是一个包含了很多主机的网络。这时我们需要确定的是渗透测试所涉及的IP地址范围和域名范围。但是客户所使用的Web应用程序和无线网络,甚至安保设备和管理制度也可能会是渗透测试的目标。同样需要明确的还有,客户需要的是全面评估还是只针对其中某一方面或部分评估。

进行渗透测试过程所使用的方法如下:

这个阶段我们可以采用的方法主要有黑盒测试、白盒测试和灰盒测试3种。

2.进行渗透测试所需要的条件

如果采用的是白盒测试,就需要客户提供测试所必需的信息和权限,客户最好可以接受我们的问卷调查。确定可以进行渗透的时间,例如是只能在周末进行,还是随时可以。如果在渗透测试过程中导致了目标受到了破坏,应该如何补救等。

3.渗透测试过程中的限制条件

在整个渗透测试过程中,必须与客户明确哪些设备不能进行渗透测试,以及哪些技术不能应用。另外也需要明确在哪些时间点不能进行渗透测试。

4.渗透测试过程的工期

根据客户的需求,我们需要给出整个渗透测试的进度表。客户可以了解渗透测试的开始时间与结束时间,以及我们在每个时间段所进行的工作。

5.渗透测试的费用

这个话题其实很少出现在一本教科书中,但是这恰恰是一个在实践中很复杂的问题,需要考虑的因素很多。例如我们在对一个拥有了100台计算机的网络进行渗透测试的时候,收取的费用为10万元,那么平均每一台计算机的费用就是1000元。但是这并不是一种线性的关系,如果某个客户只要求我们对1台计算机进行渗透测试的话,那么费用就不能只是1000元了,因为工作量明显不同了。在计算费用的时候要充分考虑到各种成本。

6.渗透测试过程的预期目标

作为渗透测试者必须牢记的一点是,我们并非黑客。发现目标存在的漏洞,获取目标的控制权限,或者得到目标的管理密码只是完成了一部分任务。我们还需要明确客户期望在渗透测试结束时应该达到什么目标,最终的渗透报告应该包含哪些内容。

这里的“情报”指的是目标网络、服务器、应用程序的所有信息。渗透测试人员需要使用各种资源尽可能地获取要测试目标的相关信息。

如果我们现在采用了黑盒测试的方式,那么这个阶段可以说是整个渗透测试过程中最为重要的一个阶段。所谓“知己知彼,百战不殆”也正是说明了情报收集的重要性。这个阶段所使用的技术也可以分成两种。

1.被动扫描

这种扫描方式通常不会被对方所发现,打一个比方,如果我们希望了解某一个人信息的话,那么可以向他身边的人询问,比如他的邻居、他的同事,甚至他所在社区的工作人员。那么收集到的信息包括哪些呢?可能是他的名字、年龄、职业、籍贯、兴趣、学历等。

同样对于一个目标网络来说,我们也可以获得很多信息,比如现在我们仅仅知道客户的一个域名——www.testfire.net(这是美国IBM公司提供的一个专门用来进行渗透测试训练的目标,所以在对该目标进行扫描时无需担心法律问题)。

通过这个域名我们就可以使用Whois来查询到这个域名所有者的联系方式(包括电话号码、电子邮箱、传真、公司所在地等信息),以及域名的注册和到期时间。通过搜索引擎查找与该域名相关的电子邮箱地址、博客、文件等。

2.主动扫描

这种扫描方式的技术性比较强,通常会使用专业的扫描工具来对目标进行扫描。扫描之后将会获得的信息包括目标网络的结构、目标网络所使用设备的类型、目标主机上运行的操作系统、目标主机上所开放的端口、目标主机上所提供的服务、目标主机上所运行的应用程序等等。

如果将开展一次渗透测试看作是指挥一场战争的话,那么威胁建模阶段就像是在制定战争的策略。在这个阶段有两个关键性的要素——资产和攻击者(攻击群体)。首先我们要对客户的资产进行评估,找出其中重要的资产。例如我们的客户是一家商业机构,那么这家机构的客户信息就是重要资产。

在这个阶段主要考虑如下问题。

分析以上不同群体发起攻击的可能性,可以更好地帮助我们确定渗透测试时所使用的技术和工具。通常这些攻击群体可能是:

这个阶段是从目标中发现漏洞的过程。漏洞可能位于目标的任何一个位置。从服务器到交换机,从所使用的操作系统到Web应用程序都是我们要检查的对象。我们在这个阶段会根据之前情报收集时发现的目标的操作系统、开放端口和服务程序,查找和分析目标系统中存在的漏洞。这个阶段如果单纯依靠手动分析来完成的话,是十分耗时耗力的,不过在Kali Linux 2系统中提供了大量的网络和应用漏洞评估工具,利用这些工具可以自动化地完成这些任务。另外一点需要提到的是,对目标的漏洞分析不仅限于软件和硬件,还需要考虑人的因素,也就是长时间地研究目标人员的心理,从而对其实施欺骗以便达到渗透目标。

找到目标上存在的漏洞之后,就可以利用漏洞渗透程序对目标系统进行测试了。

这个阶段中,我们关注的重点是,如何绕过目标的安全机制来控制目标系统或访问目标资源。如果我们在上一阶段中顺利完成了任务,那么这个阶段就可以准确顺利地进行。这个阶段的渗透测试应该具有精准的范围。漏洞利用的主要目标是获取我们之前评估的重要资产。最后进行渗透时还应该考虑成功的概率和对目标可能造成破坏的最大影响。

目前最为流行的漏洞渗透程序框架就是Metasploit了。通常这个阶段也是最为激动人心的时刻,因为渗透测试者可以针对目标系统使用对应的入侵模块获得控制权限。

这个阶段和上一个阶段连接得十分紧密,作为一个渗透测试者,必须尽可能地将目标被渗透后所可能产生的后果模拟出来。在这个阶段可能要完成的任务包括:

这个阶段的主要目的是向客户展示当前网络存在的问题会带来的风险。

这个阶段是整个渗透测试阶段的最后一个阶段,同时也是最能体现我们工作成果的一个阶段,我们要将之前的所有发现以书面的形式提交给客户。实际上,这个报告也是客户唯一的需求。我们必须以简单直接且尽量避免大量专业术语的形式向客户汇报测试目标中存在的问题,以及可能产生的风险。这份报告中应该指出,目标系统最重要的威胁、使用渗透数据生成的表格和图标,以及对目标系统存在问题的修复方案、当前安全机制的改进建议等。

在BackTrack(也就是Kali Linux的前身)出现之前,执行网络安全渗透测试的方法很难统一。这主要是因为在Linux平台上存在大量的渗透测试工具,而渗透测试者们又往往会有不同的选择。这种情况的后果就是在进行渗透测试的教学或者培训时,很难有一个统一规范的体系。

BackTrack系统出现以后,在这个系统中集成了大量的优秀工具。而且BackTrack按照这些工具的用途进行了分类,这样我们在进行网络安全渗透测试时就无需面对数量众多的工具眼花缭乱了。下面我们先就世界上几款最为流行的渗透测试工具进行简单介绍,这些工具也将会在本书中的实例讲解到。

1.Nmap

如果规定只能使用一款工具进行渗透测试的话,我的选择一定会是Nmap。这是一款极为富有传奇色彩的渗透测试工具。Nmap在国外已经被大量的网络安全人员所使用,它的身影甚至出现在了很多的优秀影视作品中,其中影响力最大的要数经典巨著《黑客帝国》系列。在《黑客帝国2》中,Tritnity就曾使用Nmap攻击SSH 服务,从而破坏了发电厂的工作。Nmap是由 Gordon Lyon设计并实现的,于1997开始发布。Gordon Lyon最初设计Nmap的目的只是希望打造一款强大的端口扫描工具。但是随着时间的发展,Nmap的功能越来越全面。2009年7月17日,开源网络安全扫描工具Nmap正式发布了5.00版,这是自1997年以来最重要的发布,代表着Nmap从简单的网络扫描软件变身为全方位的安全工具组件。可以毫不夸张地说,在Nmap的面前,一个网络是没有隐私的。网络中有多少台主机,每台主机运行的操作系统,每台主机运行的应用程序,甚至每台主机上面存在的漏洞,这些信息都可以利用Nmap获得。

2.Maltego

Maltego和Nmap一样都是信息收集工具,但是两者的工作方式全然不同。Nmap是典型的主动扫描工具,而Maltego则是一款极为优秀的被动扫描工具。和Nmap获取的操作系统、端口、服务等信息不同,Maltego获取的往往是一些网络使用者的信息。利用Maltego,我们就可以仅仅从一个域名找到和它有关联的大量信息,并把这些信息整合。此外,Maltego支持用户操作上的自定义行为,从而整合出最适合用户的“情报拓扑”。

3.Recon-NG

Recon-ng是一个由Python语言编写的全面Web探测框架,目前这个框架中包含拥有超过80个独立的模块。因此并不能简单地将Recon-ng看作是一个主动扫描工具或者被动扫描工具。它提供了一个强大的开源Web探测机制,帮助渗透测试人员快速彻底地进行探测。

4.OpenVAS

OpenVAS是一个开放式漏洞评估系统,这是一款威力极为强大的工具。一般来说,这款工具也是绝大多数人眼中最为神奇的一款工具。因为你只需要把要测试目标的IP填进OpenVAS,它就会把目标操作系统上存在的漏洞显示出来。也就是说你需要做的,仅仅是填写一个IP地址而已,而得到的却是一份关于目标系统存在漏洞的详细报告。OpenVAS可以分成两个核心部分,一个是网络漏洞测试引擎,另一个是网络漏洞库。它的工作原理就是由测试引擎向目标发送特制的数据包,然后将目标的回应与网络漏洞库中的样本进行比较,如果匹配成功,则可以认为存在该漏洞。

5.Metasploit

Metasploit可以说是当今世界上最富盛名的渗透测试工具了,在网络安全行业是无人不知。如果说OpenVAS的用途是发现目标的漏洞,那么Metasploit就是开启漏洞的钥匙。拥有了这把钥匙的人,可以轻而易举完成对目标的渗透。这款强大的工具是H.D. Moore在2003年开发的,当时它只集成了少数几个可用于渗透测试的工具。但是这确实是一个革命性的突破,在Metasploit出现之前,渗透测试者总需要自己去编写漏洞渗透模块,或者通过各种途径寻找漏洞渗透模块。而Metasploit帮助渗透测试者从这样的工作中解放了出来,它集成了大量的漏洞渗透模块,统一了这些模块使用方法,并且提供了大量的攻击载荷和辅助功能。可以这样说“有了Metasploit,任何人都可以如同电影中的黑客一样轻松地入侵目标。”

6.SET

社会工程学是一门新兴的学科,在最近这些年中这门学科得到了迅速发展。越来越多的黑客入侵事件都与社会工程学分不开。

我们经常会听说钓鱼邮件、钓鱼网站之类的说法,这些其实都是社会工程学的典型应用。David Kenned特意使用Pyhotn编写了一个功能众多的社会工程学工具包(SET)。SET利用人们的好奇心、信任、贪婪及一些愚蠢的错误来进行攻击。在这个工具包中提供了大量功能,例如发送木马邮件、生成假冒网站、利用U盘传播后门等,目前该工具包已经成为渗透测试行业部署实施社会工程学攻击的标准。

7.Ettercap

Ettercap的功能主要是实现对目标主机的欺骗和监听,这种工具的应用范围有限,但是在其应用范围之内能力极为强大。在一个网络中,有的计算机可能安全性能较高,因而难以渗透;而有的计算机安全性能较差,因而容易渗透。这时我们就可以首先选择那些安全性能较差的主机进行渗透。然后就是Ettercap这类工具大显身手的时候,可以说利用Ettercap渗透一台同一子网的主机是一件易如反掌的事情。

8.Burpsuite

随着互联网的快速发展,网络安全的侧重点已经向Web应用转移。近年来,我们在进行网络安全渗透测试时主要的对象大都是Web应用。目前所有的单位都会对自身所使用的Web应用进行严格的测试。同时,Web应用的问题也是近年来网络安全的重灾区。SQL注入、跨站、cookie盗取等问题层出不穷。BurpSuite 就是用于一款专门测试Web应用程序的集成平台。BurpSuite分为试用版和专业版,其中包含了大量针对Web应用测试的工具,而且BurpSuite中为这些工具设计了许多接口,我们还可以自行编写脚本以完善它的功能。

9.Wireshark

严格来说,Wireshark并不是一款专门的渗透测试工具,它的作用是监控网络的流量。但是我每次都会跟我的学生说,熟练使用Wireshark是网络渗透测试专业的必备技能。Wireshark主要有两个功能:一是可以监控网络,发现网络中的那些恶意流量,并找出这些恶意流量的源头;二是可以对应用的工具进行调试,有些时候我们在进行渗透测试的时候,运行了工具却完全没有反应,这时很难判断到底是这个工具本身的问题,还是目标的问题。利用Wireshark我们就可以查看这个工具是否正常地发送出去了数据包,从而找到问题的源头。另外通过这种调试也可以帮助学习这些工具的设计原理。

10.Dradis

几乎我认识的所有人都对计算机行业有这样一个看法,编写程序才是真实的本领,文档的编写则不是那么的重要。因此我们经常看到一些很优秀的程序员写出的天书一般的文档。渗透测试也是一样,虽然我们在前6个阶段付出了大量的努力,但是最后呈现在用户面前的只有一份报告。那么这份报告也将决定着客户对我们的工作是否满意。

渗透测试报告的编写是一件相当复杂的工作,不过好在现在有一些相当优秀的工具可以帮助我们来完成。其中的Dradis框架就是一个极为优秀的开源协作和报告平台。它是由Ruby开发的一个独立的平台。利用这个工具可以轻松地将前6个阶段的工作成果整合在一起,并生成一份详实的报告。

在本章中,我们对什么是网络安全渗透测试,以及如何开展网络安全渗透测试进行了介绍。掌握渗透测试的标准对于我们后来的学习有很大的帮助。如果你希望对本章讲解的网络安全渗透测试标准有更深入的了解,可以访问www.pentest-standard.org,在这个网站中极为详细地介绍了渗透测试的7个阶段。

在本章的最后我们还介绍了一些当今世界上最为优秀的渗透测试工具。在后面的章节中我们将对这些工具的使用进行详细的案例讲解。在下一章中,我们将会详细讲解Kali Linux 2的使用。


在现实生活中经常有人会问我一个问题,“黑客是不是都不用Windows操作系统?”。其实这也是很多人都想要了解的一个问题,这个问题的答案并不是绝对的。但是大多数从事网络安全的专家的确不会选择使用Windows来完成自己的工作。那么下一个问题就是:在进行网络安全渗透测试时,要使用什么操作系统呢?

在本章中将会介绍世界上最为著名的渗透测试系统——Kali Linux 2。在这一章中我们将会围绕以下3个问题展开学习。

Kali Linux 2是一个面向专业人士的渗透测试和安全审计的操作系统,它是由之前大名鼎鼎的Back Track系统发展而来。Back Track系统曾经是世界上最为优秀的渗透测试操作系统,取得了极大成功。之后Offensive Security 对Back Track进行了升级改造,并在2013年3月,推出了崭新的Kali Linux 1.0,相比起Back Track,Kali Linux提供了更多更新的工具。之后,Offensive Security每隔一段时间都会对Kali进行更新,在2016年又推出了功能更为强大的Kali Linux 2。目前最新的版本是2017年推出的Kali Linux 2017.1。在这个版本中包含有13个大类超过了300个的各种程序,几乎涵盖了当前世界上所有优秀的渗透测试工具。如果你之前没有使用过Kali Linux 2 ,那么相信在你打开它的瞬间,绝对会被里面数量众多的工具所震撼。

需要注意的一点是,Kali Linux本身并不是一个新的操作系统,而是一个基于Debian的Linux发行版。如果你之前熟悉Debian的话,那么使用起来Kali Linux将会十分容易。不过Kali Linux也提供了类似Windows的图形化操作界面,即使你此前完全没有使用Linux经验的话,也可以轻易上手。

和普通的应用软件不同,操作系统的安装一直都是一件比较麻烦的事。而且和只能安装在计算机上的Windows操作系统不同,Kali Linux可以说是一个几乎能安装到任何智能设备上的操作系统。计算机、平板、手机、虚拟机、U盘播放设备、光盘播放设备都可以成为Kali Linux的载体,另外现在极为流行的Raspberry Pi(中文名为“树莓派”,简写为RPi)也可以安装Kali Linux。甚至连亚马逊公司推出的云计算服务平台AWS中也提供了装有Kali Linux系统的主机。

下面我们就来介绍其中几种最为常用的安装方式。

我们首先要到https://www.kali.org/downloads/下载到Kali Linux2的安装镜像,本书采用的Kali版本为2017.1版。如果你之前为计算机安装过Windows操作系统的话,那么就会发现这个安装过程其实很简单,下面我们以完整版的32位Kali安装为例。

Kali Linux2对系统硬件的需求很小,几乎现在所有的计算机都可以满足。当然在更高配置的计算机上可以更加流畅地运行Kali Linux2。下面列出了官方给定Kali Linux2安装的最低硬件要求:

下面我们开始Kali Linux 2的安装过程,这个过程可以分成两个步骤。第一步先将镜像文件刻录到U盘或者光盘上,第二步再通过U盘或者光盘启动来安装系统。

首先来介绍如何将下载好的kali-Linux-2017.1-i386.iso文件刻录到光盘或者U盘上,鉴于现在系统几乎都采用了U盘安装,所以这里只介绍如何刻录到U盘的步骤。

步骤1 首先我们使用UltraISO打开下载的kali-Linux-2017.1-i386.iso文件,如图2-1所示。

图2-1 使用UltraISO打开Kali Linux 2的镜像文件

步骤2 单击菜单栏上的“启动”选项,然后在弹出的菜单中选中“写入硬盘映像”,如图2-2所示。

图2-2 选中“写入硬盘镜像”

步骤3 在弹出的“写入硬盘映像”菜单中,首先选中“格式化”对U盘中的数据进行格式化,然后单击“写入”按钮,如图2-3所示。

图2-3 将镜像中的文件写入到U盘中

现在我们已经制作好了一张Kali Linux 2的系统安装盘了,那么接下来就可以在计算机中安装系统了。首先我们需要将计算机设置为U盘启动,然后执行如下步骤。

步骤1 启动计算机后,你就可以看到Kali Linux 2的启动界面了,这里还列出了Kali Linux2设计者的忠告:“the quieter you become,the more you are able to hear”(越安静,听到的就会越多)。在这里我们需要选择安装的类型,将Kali Linux 2安装到硬盘主要有第7项“Install”(基于文本的安装方式)和第8项“Graphical Install”(基于图形化的安装方式)两种,我们这里以“Graphical Install”为例,如图2-4所示。

图2-4 Kali Linux2的启动界面

步骤2 接下来选择安装系统所使用的语言,这里面我们选择“中文简体”,如图2-5所示。

图2-5 安装语言选择菜单

步骤3 接下来系统会弹出一个提示,如图2-6所示,提醒我们使用简体中文的话,系统并不会完全以中文显示,很多地方仍然会以繁体中文或者英文显示。这里我们选择“是”。

图2-6 提醒窗口

步骤4 选择我们所在的区域,如图2-7所示,选择“中国”。

图2-7 区域选择列表

步骤5 选择要使用的键盘设置,这里选择“汉语”,如图2-8所示。

图2-8 键盘设置列表

步骤6 现在需要为你的系统输入一个主机名。在这个例子中,我们输入“Kali”作为主机名,如图2-9所示。

图2-9 设置主机名

步骤7 在这里要输入一个域名,如果没有的话,随意填写一个即可,如图2-10所示。

图2-10 设置域名

步骤8 接下来为使用该系统的root用户创建一个密码,这个密码应该尽量复杂一些,如图2-11所示。

图2-11 为Kali Linux 2设置密码

步骤9 这时我们需要设置分区,默认情况可以选择“使用整个磁盘”即可,如图2-12所示。这里还提供了LVM功能,LVM的全称是“Logical Volume Manager”(逻辑卷管理器),使用LVM可以在安装完成后管理分区和调整分区大小。对于刚接触Kali Linux 2的用户并不推荐使用LVM。如果你对Linux非常熟悉的话,也可以选择“手动”。

图2-12 为Kali Linux 2设置分区

步骤10 选择要分区的硬盘,如图2-13所示。

图2-13 磁盘分区

步骤11 接下来要根据你的需求进行选择,这里如果你不知道如何选择的话,就选择第一个方案,如图2-14所示。

图2-14 将所有文件放在同一个分区中

步骤12 接下来单击“继续”按钮后,将开始安装系统,如图2-15所示。

图2-15 确定要格式化的分区

步骤13 接下来,就要开始系统的安装过程了,我们需要耐心等待一些时间,如图2-16所示。

图2-16 Kali Linux 2的安装过程

步骤14 配置网络镜像,Kali Linux 2使用中心源来发布软件,这里选择“是”,如图2-17所示。

图2-17 Kali Linux 2的配置软件包管理器

步骤15 下一步要安装GRUB,如图2-18所示。

图2-18 将GRUB安装到硬盘

步骤16 可以选择GRUB的安装位置,这里保留默认设置即可,如图2-19所示。

图2-19 安装启动引导器的设备

步骤17 到此,系统已经安装完毕。如图2-20所示,单击“继续”按钮重启系统后就可以进入安装好的Kali Linux 2了。

图2-20 结束安装进程

拔掉U盘重新启动计算机,操作系统的用户登录界面如图2-21所示,这里可以使用用户名“root”和步骤8中设置的密码进行登录。

图2-21 Kali Linux 2的登录界面

在现实生活中,你可能会发现很多工作必须在Windows下来完成,所以我们往往需要保留Windows,但还要在计算机上安装一个Kali Linux 2操作系统。这时通常有两个选择,一是安装双系统,二是使用虚拟机。这里从使用方便的角度来说,我更建议你使用第二种方法。因为虚拟机的最大的好处就在于可以在一台计算机上同时运行多个操作系统,所以你可以获得的其实不只是双系统,而是多个系统了。这些操作系统之间是独立运行的,跟实际上的多台计算机并没有区别。但是模拟操作系统的时候会造成很大的系统开销,因此最好加大计算机的物理内存。

目前最为优秀的虚拟机软件包括VMware workstation和Virtual Box,这两个软件的操作都很简单,这里我们以VMware workstation为例。截止到目前VMware workstation的最新版本为12.5.7,建议大家在使用的时候尽量选择最新的版本。

步骤1 首先我们可以在VMware workstation的官方网站(https://www.vmware. com/products/workstation.html)下载安装程序。国内很多下载网站也都提供了VMware workstation的下载途径。

步骤2 开始运行VMware workstation的安装程序,这个安装的过程很简单,这里不再逐步介绍。

步骤3 完成了安装工作之后,接下来就可以启动VMware workstation程序,启动以后的界面如图2-22所示。

图2-22 VMware workstation的启动界面

步骤4 现在,我们在VMware workstation中安装一个新的操作系统,首先要在菜单栏上选择“文件”选项卡,然后在弹出的下拉菜单中选择“新建虚拟机”。

步骤5 这时会弹出一个“欢迎使用新建虚拟机向导”,这里选择“典型”即可,如图2-23所示。

图2-23 新建虚拟机向导

步骤6 接下来,我们要为操作系统选择一个安装文件。你可以使用安装光盘,也可以使用下载的光盘镜像文件(iso文件),根据安装文件的不同类型,可做出对应的选择,如图2-24所示。

图2-24 安装程序光盘映像文件

步骤7 在这里根据你所安装系统的类型,选择对应的操作系统,例如这里我们安装的是Kali Linux,这个版本是基于Debian 8.x开发的,所以在这里我们在客户机操作系统中选择Linux,然后在版本里选择“Debian 8.x”,如图2-25所示。

图2-25 选择客户机操作系统

步骤8 接下来设置虚拟机的名称和存放的位置,这里注意最好选择一个合适的名称,例如Kali-Linux2。在下面的位置处可以为虚拟的操作系统选择一个存放目录,如图2-26所示。

图2-26 为虚拟机命名

步骤9 接下来,我们给这个虚拟系统分配物理硬盘空间,这里我们使用默认的20GB作为最大磁盘大小,如图2-27所示。不过VMware一开始只会为其分配很小的空间,当你在使用虚拟机的时候,这个空间会逐渐变大。在本书所有的实验结束之时,这个空间可能要扩大到60GB左右。

图2-27 指定磁盘容量

步骤10 然后单击“完成”按钮就结束了虚拟机的安装过程,如图2-28所示。

图2-28 创建完成

步骤11 重新启动虚拟机之后,会出现如图2-29所示的Kali安装启动界面,接下来的安装过程和第2.2.1节中是一模一样的。

图2-29 在VMware中安装Kali Linux 2

除了上面我们介绍的在虚拟机中安装Kali Linux 2 之外,你还可以选择直接下载Offensive security所提供的虚拟机镜像文件。下载地址为https://www.offensive-security. com/kali-Linux-vmware-virtualbox-image-download/。本书中所使用的实例都是使用在该地址下载的Kali Linux 32 bit VM PAE下进行调试的(见图2-30),经测试这也是最为稳定的一个版本。所以在本书的学习过程中,建议选择相同的版本。

图2-30 Kali Linux 32 bit VM PAE的下载地址

下载之后是一个压缩文件,将这个文件解压到指定目录中。例如我将这个文件解压到了E:\Kali-Linux-2017.1-vm-i686目录。那么启动VMware之后,在菜单选项中依次选中“文件”/“打开”,如图2-31所示。

图2-31 在菜单选项中依次选中“文件”/“打开”

然后在弹出的文件选择框中选中“Kali-Linux-2017.1-vm-i686.vmx”,如图2-32所示。

图2-32 选中“Kali-Linux-2017.1-vm-i686.vmx”

双击打开之后,在VMware的左侧列表中,就多了一个Kali-Linux-2017.1-vm-i686系统,双击这个选项就可以启动这个系统了。

上面介绍的安装方法和Windows操作系统没有太大区别。你可以按照这种方法将Kali Linux 2安装到自己的台式机或者笔记本上。可是在现实生活中,即使是笔记本计算机,我们也不可能总是随身携带。不过,现实世界中计算机是随处可见的,只是这些设备大都不可能安装Kali这种专业操作系统。如果我们可以将Kali Linux安装到U盘,然后在任何计算机执行运行U盘中的系统就好了(注意这里要和前一节的用U盘作为安装盘不同,这里指的是将U盘插入主机后直接可以使用)。

如果你看过日本著名的黑客题材电视剧《血色星期一》,其中出现过这样一个情节,由三浦春马饰演的男主人公将自己的U盘插入到便利店的计算机中,然后启动了自己的操作系统。电影中的这款U盘在当年引起了很多人的关注,几乎成了传说的神器。

现在,我们来介绍一下这款神器的制作方法,首先需要一个U盘,最好不要小于32GB,通常来说64GB的U盘更合适,因为后期我们在进行软件安装和更新的时候,系统会很快地变大。

将Kali Linux 2安装到U盘上的方法有很多种,下面介绍使用虚拟机进行安装的方法,这个安装过程和之前介绍大部分是一样的,但是需要注意以下几点。

第一,在上一节介绍的出现系统启动界面之前将U盘插入到计算机中,并在出现启动界面的时候右键单击虚拟机右下角的移动设备挂载按钮,如图2-33所示。

在弹出的下拉菜单中选中“连接(断开与主机的连接)”选项,如图2-34所示。

图2-33 Kali Linux 2的启动界面

图2-34 Kali Linux 2的启动界面

在新弹出的对话框中单击“确定”,这时真实计算机就看不到这个设备了,这个设备被加载到了虚拟机中。

  第二,在选择磁盘分区时,要选择“向导-使用整个磁盘并配置加密的LVM”,如图2-35所示,这样就可以为U盘添加一个密码。

图2-35 Kali Linux 2的磁盘分区向导

第三,在磁盘分区选择安装目录的时候,要选择U盘而不是硬盘,如图2-36所示。

图2-36 选择U盘

等安装完成之后,一个装有Kali Linux 2的U盘就做好了。注意,虽然这个U盘系统在大多数的主机设备上都可以正常运行,但是也存在少量设备不兼容的问题。

我们启动了Kali Linux 2之后,可以看到一个和Windows相类似的图形化操作界面,这个界面的上方有一个菜单栏,左侧有一个快捷的工具栏。单击菜单上的“应用程序”,可以打开一个下拉菜单,所有的工具按照功能的不同分成了13种(菜单中是有14个选项,但是最后的“系统服务”并不是工具分类)。当我们选中其中一个种类的时候,这个种类所包含的软件就会以菜单的形式展示出来,如图2-37所示。

但是这里展示的只是其中的一部分工具,而不是全部。如果你希望能看到所有应用程序的话,可以单击左侧的快捷工具栏最下方的显示全部程序按钮,如图2-38所示。

图2-37 Kali Linux 2中的菜单

图2-38 显示全部程序按钮

这时在屏幕上才会显示出全部的应用程序,如图2-39所示。

图2-39 显示出来的全部程序

这时直接双击图标就可以启动这个工具了。另外,也可以使用终端的命令来打开工具。

如果你使用的是从官网下载的Kali Linux 2虚拟机镜像文件的话,那么其中默认的密码是“toor”。如果你想修改这个密码的话,可以使用命令“passwd”+用户名的方式,例如我们需要修改root用户密码的话,就可以使用“passwd root”,过程如图2-40所示。

图2-40 修改root用户密码

当你再次登录的时候,就需要使用新的密码了。

虽然很多程序都要求必须只有root权限的用户才能运行。但是在很多情况下,更高的权限也意味着更大的风险。我们如果以root用户的身份操作失误的话,可能会对正在测试的系统造成破坏。所以在很多时候以非root用户的身份来进行测试是一个更好的选择。

现在我们来创建一个权限较低的账户,创建用户的命令为adduser,现在我们来打开一个终端,然后在里面输入命令“adduser ll”,执行的结果如图2-41所示。

图2-41 添加一个用户

这里我们需要为新创建的用户设置一个密码,如图2-42所示。

图2-42 为这个新用户设置一个密码

到此一个新的普通用户就创建好了,需要注意这个用户不具备root权限。

我们如果想要使用Kali Linux 2功能的话,就必须对它的网络进行正确的配置。首先来查看一下当前主机的网络配置情况,具体的操作是首先打开一个终端,如图 2-43所示。

图2-43 打开一个终端

然后在打开的终端中输入命令“ifconfig”,这条命令可以用来查看网络的设置情况,显示的内容如图2-44所示。

图2-44 使用ifconfig查看网络

这里面因为我们使用的是VMware虚拟机,VMware已经自动地为Kali Linux 2设置了IP地址、子网掩码和网关。但是如果我们使用的Kali Linux 2系统并不是安装在虚拟机中的话,就需要手动来设置这些网络参数了。

比如你需要为这个系统设置如下:

那么你就可以在命令行中执行如下命令:

root@kali:~# ifconfig eth0 172.16.1.100 netmask 255.255.255.0
root@kali:~# route add default gw172.16.1.254
root@kali:~# echo nameserver 211.81.200.9 > /etc/resolv.conf

但是仅仅这样设置是不够的,如果系统重启之后,IP地址和路由的所有的设置就会丢失(不过DNS的设置仍然还在)。如果希望这个设置能够一直起作用的话,就需要将这些设置写到文件中去,这个文件的目录位于/etc/network/interfaces文件中,打开之后如图2-45所示。

图2-45 /etc/network/interfaces文件

在打开的文件下方添加如下语句:

auto eth0
iface eth0 inet static
address172.16.1.100
netmask 255.255.255.0
network172.16.1.0
broadcast172.16.1.255
gateway172.16.1.254

图2-46 修改之后的/etc/network/interfaces文件

Kali Linux 2的DNS服务器地址不在这个文件中,我们可以使用前面的echo命令来修改。也可以打开DNS配置文件来修改。我们需要打开另一个“/etc/resovl.conf”文件进行配置,这个文件中使用“nameserver”来指定DNS服务器地址,最多可以指定3个DNS,只有当前面的DNS服务器无效的时候,后面的DNS才会起作用。在resolv.conf中指定DNS服务器的格式如下:

domain
nameserver 10.10.10.10
nameserver 102.54.16.2

完成上面的设置之后,执行如下命令:

root@kali~# /etc/init.d/networking restart

这样,新的网络设置就可以成功了。

虽然在Kali Linux 2中已经预装了超过300种的应用程序,但是有时我们仍然会需要安装一些程序来保证高效地进行渗透测试。在Kali Linux 2中安装第三方的应用是比较简单的。

这里我们同样可以使用apt-get命令来实现对软件进行管理,这条命令主要用于从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。我们可以使用命令apt-get install命令在kali Linux 2中安装软件。比如说我们现在要安装apt-file这个软件,apt-file 是一个命令行界面的APT包搜索工具。当我们在编译源代码时,时有缺少文件的情况发生。此时,通过 apt-file 就可以找出该缺失文件所在的包,然后将缺失的包安装后即可让编译顺利进行了。安装的命令就是“apt-get install apt-file”,如图2-47所示。

图2-47 安装apt-file

安装完成之后,就可以执行这个软件了,如图2-48所示。

图2-48 执行apt-file

Kali Linux 2中的菜单里的选项是固定的,如果我们希望对其进行调整的话,可以使用一款名为alacarte的程序,Kali Linux 2并没有安装这款程序。我们可以使用刚讲过的方法来下载并安装这个程序,输入命令“apt-get install alacarte”,执行的结果如图2-49所示。

图2-49 安装alacarte

安装完成之后,在终端中输入如下命令:

root@kali~# alacarte

alacarte是一款图形化操作软件,启动以后的操作界面如图2-50所示。

图2-50 alacarte的操作界面

alacarte这个软件的操作十分简单,这里不再详细介绍。

本书中使用的Kali Linux 2是在虚拟机中运行的。有时候,我们需要在虚拟机Kali Linux 2系统和外面的Windows系统中共享文件,为了操作方便,我们可以装上vmtools,安装的方法如下:

root@kali:~#apt-get update

root@kali:~#apt-get install open-vm-tools-desktop fuse

执行的过程如图2-51所示。

图2-51 安装vmtools

之后重新启动系统:

root@kali:~#reboot

重新启动之后,就可以在Kali系统和外面的Windows系统中拖动共享文件了。

有时候我们可能需要远程控制Kali Linux 2系统。默认情况下,Kali Linux2系统并没有开始SSH服务。如果希望远程使用SSH服务连接到Kali Linux 2的话,需要先在Kali Linux 2中进行如下设置。

首先来设置用于连接的密钥,Kali Linux 2中已经预先配置好了SSH的密钥。但是我们在使用SSH服务的时候,最好不用这个默认的密钥,而是自己重新创建一个新的,首先就必须先停用这个默认的密钥。将这个默认的密钥移动到一个备份文件夹中,然后使用如下的命令创建一个新的密钥:

dpkg-reconfigureopenssh-server

好了,这里我们首先打开SSH所在的目录:

root@kali:~# cd /etc/ssh/

在这个文件夹中创建一个备份文件夹keys_backup,用来保存默认的密钥,如图2-52所示。

root@kali:/etc/ssh# mkdir keys_backup

图2-52 创建好的备份文件夹

然后将默认的密钥移动到keys_backup文件夹中:

root@kali:/etc/ssh# mv ssh_host_* keys_backup

然后我们使用命令重新创建一个新的密钥:

root@kali:/etc/ssh# dpkg-reconfigure openssh-server

这几条命令完整的执行过程如图2-53所示。

图2-53 对密钥的操作

我们可以将新生成的密钥的md5值与之前默认的md5值相比较,如图2-54所示。

图2-54 将两个密钥进行比较

修改sshd_config文件,该文件的目录位于/etc/ssh/sshd_config,如图2-55所示。

图2-55 修改sshd_config文件

将#PasswordAuthentication yes的注释去掉,然后将PermitEmptyPasswords no修改为PermitRootLogin yes,如图2-56所示。

图2-56 修改之后的sshd_config文件

接下来,我们在终端中启动SSH服务,使用的命令如下:

root@kali:~# /etc/init.d/ssh start

执行的结果如图2-57所示。

图2-57 启动SSH服务

如果你想查看SSH服务运行状态的话,可以使用以下命令,如图2-58所示。

root@kali:~#netstat -antp

图2-58 查看SSH服务运行状态

可以看到目前SSH服务已经在22端口上运行起来了。

现在我们在另外一台计算机上使用SSH服务来远程控制Kali Linux 2,这里我们使用PuTTY来完成远程登录,其工作界面如图2-59所示。

图2-59 PuTTY的工作界面

PuTTY的使用很简单,只需要输入目标的IP地址和要使用的端口即可,如图2-60所示。

图2-60 远程连接到Kali Linux 2

我们需要经常性地对Kali Linux 2系统进行升级操作。一种升级的方法是使用APT,我们也可以使用APT来对整个Kali Linux 2系统进行更新。APT中最为常用的几个升级命令如下。

我们只需要执行如下命令就可以完成对系统的更新。

root@kali:~#apt-get update
root@kali:~#apt-get upgrade

在进行渗透测试的学习时,我们有很多技术不能直接应用在真实世界中,因为这些技术的破坏性可能会带来法律上的问题。如果我们能拥有一个属于自己的网络安全渗透实验室,将会是一个非常理想的选择。将现实中的网络,在实验室中模拟出来,这样我们就可以更好地研究各种渗透测试的方法,而不必担心以此引发的后果。

不过假想一下,我们即使是模拟一个只有5台计算机的网络,那么也需要占用不小的空间,而且切换着对这些设备进行调试也十分麻烦。不过好在除了使用真实设备之外,我们还有一个选择,那就是使用虚拟机。使用VMware虚拟机软件就可以在一台计算机上模拟出多台完全不同的计算机来。这样你只需要一台计算机就可以建立一个网络安全渗透实验室了。当然这台计算机的硬件配置要越高越好,其中影响最大的硬件就是内存,最好使用8GB以上的内存。

在第2.2节Kali Linux 2安装中,我们提到了VMware的安装方法。接下来,我们就来了解如何使用VMware来建立一个网络渗透实验室。

1.安装Metasploitable2

Metasploitable2是一个专门用来进行渗透测试的靶机。这个靶机上存在着大量的漏洞,这些漏洞正好是我们学习Kali Linux 2 时最好的练习对象。这个靶机的安装文件是一个VMware虚拟机镜像,我们可以将这个镜像下载下来使用,使用的步骤如下:

步骤1 首先从https://sourceforge.net/projects/metasploitable/files/Metasploitable2/下载Metasploitable2镜像的压缩包,并将其保存你的计算机中。

步骤2 下载完成后,将下载下来的metasploitable-Linux-2.0.0.zip文件解压缩。

步骤3 接下来启动VMWare,然后在菜单栏上单击“文件”/“打开”,然后在弹出的文件选择框中选中你刚解压缩文件夹中的Metasploitable.vmx。

步骤4 现在这个Metasploitable2就会出现在你左侧的虚拟系统列表中了。单击就可以打开这个系统。

步骤5 对虚拟机的设置不需要更改,但是要注意的是,网络连接处要选择“NAT”,如图2-61所示。

图2-61 Metasploitable2的网络连接方式

步骤6 现在Metasploitable2就可以正常使用了。我们在系统名称上单击鼠标右键,然后依次选中电源/启动客户机,就可以打开这个虚拟机了。系统可能会弹出一个菜单,选择“I copied it”即可。

步骤7 使用“msfadmin”作为用户名,“msfadmin”作为密码登录这个系统。

步骤8 成功登录以后,VMware已经为这个系统分配了IP地址。现在我们就可以使用这个系统了。

2.安装Windows 7虚拟机

我们平时进行渗透测试的目标是以Windows为主,所以这里我们还应该搭建一个Windows操作系统作为靶机。这里有两个选择,如果你有一个Windows 7的安装盘的话,那么就可以在虚拟机中安装这个系统。另外我建议你最好到https://developer. microsoft.com/en-us/microsoft- edge/tools/vms/下载微软提供的测试镜像。在这个地址中微软提供了如图2-62所示的各种系统的虚拟机镜像,利用这些镜像,渗透测试者可以极为方便地对各种系统和浏览器进行测试。

图2-62 微软提供的操作系统镜像列表

这里我们下载其中的“IE8 on Win7(x86)”作为靶机,使用的方法和之前的一样,不再进行介绍。

我们可以按照自己的想法在VMware中建立任意的网络拓扑。在之前的章节中我们已经提到过NAT的概念了,实际上VMware中使用了一个名为VMnet的概念,在VMware中每一个VMnet就相当于一个交换机,连接到了同一个VMnet下的设备就都同处于一个子网内,你可以在菜单栏中单击“编辑”/“虚拟网络编辑器”来查看VMnet的设置,如图2-63所示。

图2-63 VMware中的虚拟网络编辑器

这里面只有VMnet0、VMnet1、VMnet8这3个子网,当然我们还可以添加更多的网络,这3个子网分别对应着VMware虚拟机软件中提供的3种进行设备互联的方式,分别是桥接、NAT、仅主机模式。这些连接方式与VMvare中的虚拟网卡是相互对应的。

另外,当我们安装完VMware软件之后,系统中就会多出两块虚拟的网卡,分别是VMware Network Adapter VMnet1和VMware Network Adapter VMnet8,如图2-64所示。

图2-64 多出的两块虚拟网卡

VMware Network Adapter VMnet1:这是Host用于与Host-Only虚拟网络进行通信的虚拟网卡。

VMware Network Adapter VMnet8:这是Host用于与NAT虚拟网络进行通信的虚拟网卡。

我们来看一下这3种连接方式的不同之处。

1.NAT网络

这是VMware中一种最为常用的联网模式,这种连接方式使用的是VMnet8虚拟交换机。同处于NAT网络模式下的系统通过VMnet8交换机进行通信。NAT网络模式下的IP地址、子网掩码、网关和DNS服务器都是通过DHCP分配的。而该模式下的系统在与外部通信的时候使用的是虚拟的NAT服务器。

2.桥接网络

这种模式很容易理解,凡是选择使用桥接网络的系统就好像是局域网中的一个独立的主机,就是和你真实的计算机一模一样的主机,并且它也连接到了这个真实的网络。因此如果我们要这个系统联网的话,就需要将这个系统和外面的真实主机采用相同的设置方法。

3.仅主机模式

这种模式和NAT模式差不多,同处于这种联网模式下的主机是相互连通的,但是默认是不会连接到外部网络的,这样我们在进行网络实验(尤其是蠕虫病毒)时就不会担心传播到外部。

在本书中我们将所使用的虚拟机都采用了NAT联网模式,这样既可以保证虚拟系统的互联,也能保证这些系统连接到外部网络。

1.VMware的快照功能

在进行渗透测试的时候,经常会引起系统的崩溃。如果每一次系统崩溃,我们都要进行系统重装的话,那么这个工作量也是相当之大的。VMware中提供了一个系统快照的功能,这个快照类似于我们平时所使用的“系统备份”功能,这个功能可以将系统当前状态记录下来,如果需要的话,可以随时恢复到快照时的状态。通常我们在对Kali Linux 2进行升级之前,或者对目标系统进行渗透之前都会对系统进行快照。如果升级失败或者渗透导致系统不可正常使用时,再恢复快照。

创建快照的操作很简单:

1)启动虚拟机,在菜单中单击“虚拟机”,然后在下拉菜单中选中“快照”选项,然后单击“拍摄快照”。

2)在“拍摄快照”窗口中填入快照的名字和注释,单击“拍摄快照”。

如果我们需要将当前的虚拟机恢复到快照时的状态,同样要在菜单中单击“虚拟机”/“快照”,在弹出的菜单选中要恢复的快照名称即可。

2.VMware的克隆功能

当我们需要模拟一个拥有3个Windows 7操作系统的网络时,无需一个个地安装虚拟机,只需要在创建了一个虚拟机之后,执行两次克隆操作即可。

克隆是一种和快照很像的操作,但是两者又有着明显的不同。快照和克隆都是对操作系统某一时刻的状态进行的备份。但是快照不能独立运行,必须要在原来系统的基础上才能运行。而克隆可以脱离原来系统运行,一旦克隆完成,克隆的系统与原来的虚拟机是相对独立的,可以看作是两个互不相干的系统。而且VMware在克隆的时候,会给新系统一个MAC地址。这样原来的系统和克隆的系统就可以同处于一个网络而不会发生冲突,创建一个克隆的方法如下。

1)启动虚拟机,在菜单中单击“虚拟机”,然后在下拉菜单中选中“管理”选项,然后单击“克隆”。

2)在虚拟机克隆向导中,系统会要求选择一个克隆源,这个克隆源可以是虚拟机的当前状态,也可以是某一快照的状态,根据实际需求作出选择即可。

3) 克隆方法处有两个选项“创建链接克隆”和“创建完整克隆”。链接克隆产生的文件占用硬盘更小,但是必须能够访问原始的虚拟机时才能使用。完整克隆则完全独立,可以在任何地方使用,但是占用的硬盘空间较大。通常我们在一台计算机上做实验的话,建议选择链接克隆。

4)选择保存克隆文件的地址,然后执行到完成即可。

5)操作结束之后,在虚拟机左侧的操作系统列表处就会出现一个新的克隆操作系统。

3.VMware导出虚拟机

如果你希望将自己所使用的虚拟机镜像转移到其他计算机上,或者提供给其他人使用的时候(就像Kali官方提供的镜像那样),我们也可以选择将虚拟机导出成一个文件,这个文件移动到其他任何一个装有VMware的计算机上都可以运行了。

操作的方法是首先在左侧操作系统列表中选中目标系统,注意此时的系统应该处于关闭状态,然后单击菜单栏上的“文件”/“导出为OVF”,在弹出的文件对话框选中要保存的位置即可。生成的OVF文件就可以在其他装有VMware的计算机中运行了。

在这一章中,我们详细地讲解了Kali Linux 2的安装和使用。Kali Linux 2提供了多种安装方法,我们可以将其安装在硬盘上,也可以将其安装在随身的U盘上。

接下来,我们介绍了Kali Linux 2的一些基础操作,包括如何安装第三方软件,更改程序菜单,对系统进行升级,为系统配置网络等操作。

最后我们还介绍了建立渗透测试实验室的关键软件——VMware的安装和使用,详细地讲解了VMware中网络模式的配置、靶机的安装、快照和克隆等操作。

在下一章,我们将会正式开始网络安全渗透测试之旅,首先我们先要学习如何完成信息收集阶段的被动扫描。


相关图书

CTF快速上手:PicoCTF真题解析(Web篇)
CTF快速上手:PicoCTF真题解析(Web篇)
数字银行安全体系构建
数字银行安全体系构建
软件开发安全之道概念、设计与实施
软件开发安全之道概念、设计与实施
企业信息安全体系建设之道
企业信息安全体系建设之道
深入浅出Kali Linux渗透测试
深入浅出Kali Linux渗透测试
内网渗透技术
内网渗透技术

相关文章

相关课程