内容简介

  KaliLinux面向专业的渗透测试和安全审计,集成了大量精心挑选的安全检测工具。《Kali Linux高级渗透测试》在KaliLinux平台上从一个攻击者的角度来审视网络框架,详细介绍了攻击者“杀链”采取的具体步骤。通过阅读《Kali Linux高级渗透测试》读者能快速学习和掌握渗透测试方法和工具。

作者简介

  作者简介罗伯特W.贝格斯(RobertW.Beggs)是DigitialDefence公司的创始人和首席执行官,该公司专门从事信息安全事件的预防和处理。他拥有超过15年的安全业务技术管理经验,涉及有线和无线网络的渗透测试、事件响应、数据取证等内容。

  罗伯特是一个资深的信息安全传播者,并且是多伦多地区安全大会(TorontoAreaSecurityKlatch,TASK)的联合创始人之一,在北美多伦多地区安全大会是众所周知的、大的独立–供应商安全用户群。他是部门安全会议(SecTorSecurityConference)咨询委员会的成员,以及其他几个安全学术委员会的成员。他是一个热心的安全培训教师,他在加拿大几所大学教授研究生、本科生和继续教育学生的信息安全课程。

  罗伯特拥有女王大学的计算机科学与技术MBA学位,同时是一个认证信息系统安全专家。

目录

推荐序

作者简介

审校者简介

前言

第一部分 攻击者杀链

第1章 走进KaliLinux2

1.1 KaliLinux2

1.2 配置网络服务和安全通信4

1.2.1 调整网络代理设置5

1.2.2 使用安全Shell保护通信安全6

1.3 更新KaliLinux7

1.4 配置和自定义KaliLinux9

1.4.1 重置超级用户密码9

1.4.2 添加普通用户10

1.4.3 加速Kali运行10

1.4.4 与MicrosoftWindows共享文件夹11

1.4.5 用TrueCrypt创建加密文件夹13

1.5 第三方应用程序的管理17

1.5.1 安装第三方应用程序17

1.5.2 作为普通用户运行第三方应用程序18

1.6 渗透测试的有效管理19

1.7 总结21

第2章 确定目标——被动侦察22

2.1 侦察的基本原则22

2.2 开源情报23

2.3 DNS侦察和路由映射25

2.3.1 WHOIS25

2.3.2 DNS侦察26

2.3.3 映射路由到目标29

2.4 获得用户信息31

2.4.1 收集姓名和电子邮件地址31

2.4.2 收集文件元数据32

2.5 分析用户密码列表34

2.6 小结35

第3章 主动侦察和漏洞扫描36

3.1 隐形扫描策略37

3.1.1 调整源IP栈和工具识别设置37

3.1.2 修改数据包参数38

3.1.3 使用匿名网络代理(Tor和Privoxy)39

3.2 识别网络基础设施42

3.3 枚举主机43

3.4 端口、操作系统和发现服务44

3.4.1 端口扫描44

3.4.2 指纹识别操作系统45

3.4.3 确定主动服务46

3.5 采用综合侦察应用47

3.5.1 nmap47

3.5.2 recon-ng框架49

3.5.3 Maltego51

3.6 漏洞扫描52

3.7 小结53

第4章 漏洞利用54

4.1 威胁建模55

4.2 使用在线和本地漏洞资源56

4.2.1 Metasploit框架59

4.2.2 利用易受攻击的应用程序63

4.3 使用Armitage的多目标渗透64

4.3.1 Armitage测试团队66

4.3.2 Armitage攻击脚本66

4.4 绕过IDS与反病毒侦测67

4.5 小结73

第5章 后期利用——行动的目的74

5.1 绕过Windows用户账户控制75

5.2 对已入侵的系统进行快速侦察77

5.3 找到并提取敏感数据——掠夺目标80

5.4 创建附加账户83

5.5 使用Metasploit工具进行后期渗透活动84

5.6 在已入侵主机上提升用户权限87

5.7 使用incognito重放身份验证令牌88

5.7.1 使用Windows凭据编辑器操作访问凭据89

5.7.2 从管理员升级到系统管理员90

5.8 访问新账户实现横向升级90

5.9 消除痕迹91

5.10 小结93

第6章 后期利用——持久性94

6.1 破解现有的系统和应用程序文件进行远程访问95

6.1.1 启用远程服务95

6.1.2 启用远程Windows终端服务96

6.1.3 启用远程虚拟网络计算97

6.2 使用持久代理98

6.3 使用Metasploit框架保持持久性101

6.3.1 使用metsvc脚本101

6.3.2 使用persistence脚本103

6.4 使用Metasploit框架创建一个独立持久代理104

6.5 重定向端口来绕过网络控制106

6.5.1 示例1——简单端口重定向106

6.5.2 示例2——双向端口重定向107

6.6 小结107

第二部分 交付阶段

第7章 物理攻击与社会工程学110

7.1 社会工程工具包111

7.1.1 网络钓鱼攻击曝光113

7.1.2 使用网站攻击向量——Java小程序攻击方法118

7.1.3 使用网站攻击向量——凭据收割攻击方法121

7.1.4 使用网站攻击向量——标签钓鱼攻击方法123

7.1.5 使用网站攻击向量——综合攻击网页方法124

7.2 使用PowerShell字母数字的shellcode注入攻击曝光125

7.3 隐藏可执行文件与伪装攻击者的URL126

7.4 使用DNS重定向攻击的升级攻击127

7.5 物理访问与敌对设备130

7.6 小结133

第8章 利用无线通信134

8.1 配置Kali实现无线攻击曝光134

8.2 无线侦察135

8.3 绕过一个隐藏的服务集标识符138

8.4 绕过MAC地址验证140

8.5 破解WEP加密142

8.6 攻击WPA和WPA2146

8.6.1 暴力攻击曝光146

8.6.2 使用Reaver攻击无线路由器曝光149

8.7 克隆接入点149

8.8 拒绝服务攻击曝光150

8.9 小结151

第9章 基于Web应用的侦察与利用153

9.1 对网站进行侦察154

9.2 漏洞扫描器158

9.2.1 扩展传统漏洞扫描器功能158

9.2.2 扩展Web浏览器功能159

9.2.3 具体网络服务的漏洞扫描器160

9.3 使用客户端代理测试安全性163

9.4 服务器漏洞167

9.5 针对特定应用的攻击168

9.5.1 暴力破解访问证书169

9.5.2 数据库注入攻击曝光169

9.6 使用网站后门维持访问171

9.7 小结172

第10章 利用远程访问通信174

10.1 利用操作系统通信协议175

10.1.1 破解远程桌面协议175

10.1.2 破解安全外壳177

10.2 利用第三方远程访问应用程序179

10.3 攻击安全套接字层180

10.3.1 为SSLv2扫描配置Kali181

10.3.2 SSL连接的侦察182

10.3.3 使用sslstrip进行中间人攻击曝光186

10.3.4 针对SSL的拒绝服务攻击曝光188

10.4 攻击IPSec虚拟专用网络188

10.4.1 扫描VPN网关189

10.4.2 指纹识别VPN网关190

10.4.3 截获预共享密钥191

10.4.4 执行离线PSK破解191

10.4.5 确定默认用户账户192

10.5 小结192

第11章 客户端攻击技术详解193

11.1 使用恶意脚本攻击系统曝光193

11.1.1 使用VBScript进行攻击曝光194

11.1.2 使用WindowsPowerShell攻击系统曝光196

11.2 跨站点脚本框架198

11.3 浏览器开发框架——BeEF204

11.4 BeEF浏览器的演练206

11.4.1 整合BeEF和Metasploit攻击210

11.4.2 用BeEF作为隧道代理211

11.5 小结213

附录 安装KaliLinux214

前言/序言

  Preface《Kali Linux高级渗透测试》致力于介绍如何使用KaliLinux对网络执行渗透测试。渗透测试可以模拟内部或外部的恶意攻击者对网络或系统进行攻击。不同于漏洞评估,渗透测试包括漏洞利用阶段。因此,漏洞是存在的,而且如果不采取相应的措施将会有很大风险。

  在这《Kali Linux高级渗透测试》中,“渗透测试人员”“攻击者”和“黑客”使用完全相同的技术及工具评估网络和数据系统的安全性。他们之间唯一的区别是他们的目标——数据网络的安全或数据的外泄。

  大多数的测试人员和攻击者遵循一个非正式的、开源的或专门定义的测试方法,指导测试过程。下面的一些方法有其固有的优势:

  测试过程的部分方法可以自动生成(例如,测试人员可以经常使用ping扫描发现潜在的目标;因此,这可以作为脚本利用),鼓励测试人员把重点放在发现和利用漏洞的技术创新上。

  结果是可重复的,允许反复比较,交叉验证测试的结果,确定随着时间的推移,目标的安全性是否有所改善。

  定义的方法在时间和人员的要求方面是可见的,鼓励成本控制并使成本小化。

  测试方法已经预先获得客户批准,在对网络或数据造成任何损害时测试人员免责。

  正式的方法包括以下著名的例子:

  KevinOrrey的渗透测试框架:这种方法为测试人员提供一个渗透测试的序列步骤,以及工具的超链接和相关命令。更多信息请参见www.vulnerabilityassessment.co.uk。

  信息系统安全评估框架(InformationSystemsSecurityAssessmentFramework,ISSAF):这个综合性指南的目标是单一的网络测试,更多信息请参见www.oissg.org。

  NISTSP800-115,信息安全测试和评估技术手册:完成于2008年,这种四步走的方法已经有些过时。然而,它确实为渗透测试提供了一个很好的基本步骤总结。更多信息请参见http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf。

  开源安全测试方法手册(OpenSourceSecurityTestingMethodologyManual,OSSTMM):这个老的方法之一,并且新版本试图量化确定的风险。更多详细内容参见www.osstmm.org。

  开放Web应用安全工程(OpenWebApplicationSecurityProject,OWASP):该工程主要关注了基于Web应用的10个常见的漏洞。更多信息请关注www.owasp.org。

  渗透测试执行标准(PenetrationTestingExecutionStandard,PTES):积极维护,这种方法能完整并且精确地反映恶意者的行为。更多信息请关注www.pentest-standard.org。

  攻击(Web)测试框架(Offensive(Web)TestingFramework,OWTF):在2012年提出,结合了OWASP方法和更完整、严格的PTES方法,这是一个非常有前途的研究方向。更多详细信息请关注https://github.com/7a/owtf。

  但是,使用一个结构化的渗透测试方法可能会导致测试过程陷入泥潭:

  模型中很少考虑为什么要进行渗透测试,或哪些数据是业务的关键数据,并且需要保护。缺少这至关重要的一步,渗透测试无法抓住重点。  很多渗透测试人员不愿遵循现成的模型方法,他们担心模型会阻碍他们进行网络渗透的创造力。

  渗透测试不能反映恶意攻击者的实际活动。通常,客户希望看到你能不能在一个特定的系统中获得管理上的访问权(“你可以打开这个盒子吗?”)。然而,攻击者可能会重点关注复制关键数据的方式——不需要底层接入,或引起拒绝服务。

  为了解决形式化测试方法所固有的局限性,它们必须被整合在一个框架中,从一个攻击者的角度看这个网络框架,这就是“杀链”(killchain)。

  渗透测试的“杀链”方案在2009年,LockheedMartinCERT的MikeCloppert介绍了这个概念,现在被称为“攻击者杀链”(attackerkillchain)。当攻击者攻击网络时,“杀链”包含攻击者采取的步骤。“杀链”不总是以一个线性流呈现,因为一些步骤可能会并行出现。多发攻击可以对同一个目标瞬时进行多种攻击,并且在同一时间攻击步骤可能发生重叠。

  在《Kali Linux高级渗透测试》中,我们已经修改了Cloppert的杀链,使之能更准确地反映攻击者如何在测试网络和数据服务时应用这些步骤。下图显示了一个攻击者的典型杀链:

  图 典型的杀链一个攻击者的典型杀链可以描述为:

  侦察阶段。有一句格言:“侦察永远不浪费时间”。大多数军事组织承认,在进攻敌人之前,好尽可能地去了解敌人的一切信息。同样,攻击者在攻击之前也会对目标展开广泛的侦察。事实上,据估计,针对渗透测试或攻击,至少有70%的“工作量”是进行侦察!一般来说,可采用两种类型的侦察:

  被动侦察。这种方式并不直接与目标以敌对方式进行交互。例如,攻击者将会审查公共的可用网站,评估在线媒体(尤其是社交媒体网站),并试图确定目标的“攻击表面”。

  一个详细的任务将会产生一份过去和现在的雇员名称的列表。这些名称将成为尝试蛮力攻击或密码猜测的基础。同样它们也被用到社会工程的攻击中。

  这种类型的侦察很难从普通用户的行为中区分出来。

  主动侦察。这种方式可以被目标检测到,但是很难从常规的背景中区分出大多数在线组织的表现。

  主动侦察期间的活动包括物理访问目标前端、端口扫描和远程漏洞扫描。

  交付阶段。交付是选择和开发武器,武器用于完成攻击中的任务。精确的武器选择取决于攻击者的意图以及实施路线(例如,借助网络、通过无线,或通过基于Web的服务)。交付阶段的影响将在《Kali Linux高级渗透测试》第二部分进行研究。

  利用或攻击阶段。一个特定的漏洞被成功利用的时刻,此时攻击者实现他们的目标。攻击可能已经在一个特定的情景下发生(例如:通过缓冲区溢出利用一个已知操作系统的安全隐患),或者攻击可能在多个情景下发生(例如:一个攻击者物理访问公司住所,偷取他们的电话簿,用公司员工的名字来创建门户登录蛮力攻击列表。此外,电子邮件被发送到所有员工以引诱他们单击一个嵌入式链接,下载制作的PDF文件,这些文件会危及员工的计算机)。当恶意攻击者针对特定的企业时,多情景攻击是常态。

  后期利用阶段:对目标的行动。这经常被称为“渗漏阶段”(exfiltrationphase),这是错误的,因为通常理解的攻击,仅仅以窃取敏感信息作为唯一的目的(如登录信息、个人信息和财务信息);但是,通常情况下,攻击者有不同的攻击目标。例如,这一阶段必须专注于攻击者的许多可能的行动。

  常见的利用活动是攻击者试图提升他们的访问权限到高级(纵向升级),并且破解尽可能多的账号(横向升级)。

  后期利用:持久性。如果攻击一个网络或者系统是有价值的,那么这个价值很可能在持续攻击下增长。这就需要攻击者持续与被攻破的系统之间保持通信。从防护者的角度来看,这是攻击杀链中容易检测到的一部分。

  当攻击者试图攻击网络或特定的数据系统时,攻击杀链是攻击者行为的一种基本模型。作为一种元模型,它可以吸收任何私人的或商业的渗透测试方法。但是,也不同于这些方法,它使攻击者在一个战略高度上关注如何接近网络。这种专注于攻击者的活动将引导《Kali Linux高级渗透测试》的布局和内容。

  《Kali Linux高级渗透测试》涵盖的内容《Kali Linux高级渗透测试》分为两个部分。第一部分会根据杀链的步骤,详细分析每个阶段。第二部分会专注于交付阶段和一些有用的方法,来明确攻击是怎么发生的,以及如何用这种方法来保护网络。

  第1章介绍了KaliLinux的基础知识和它支持渗透测试的优配置。

  第2章提供了一个关于怎么样利用公共可用资源搜集目标信息的背景,以及简化侦察和信息管理的工具。

  第3章介绍用来获得目标信息的隐形方法,尤其是识别漏洞的信息,这种信息可以充分利用。

  第4章证明了可以用来找到并执行渗透的方法,允许黑客攻击一个系统。

  第5章描述攻击者怎样逐步提高自己的权限,实现他们攻击系统的目标,包括盗窃数据、改变数据、发动更多的攻击,或创建一个拒绝服务。

  第6章介绍了怎样设置一个受损系统,以便攻击者可以任意返回和继续利用漏洞进行攻击。

  第7章介绍了为什么可以在物理上访问一个系统,或者与系统管理者交互,该章提供了一个佳的利用方法。

  第8章阐明了怎样利用普通无线链接来访问数据网络与隔离系统。

  第9章提供一个关于获得安全的、复杂的交付阶段的简要综述:暴露在公共因特网上的基于Web的应用。

  第10章提供一个进入系统的重要方法,因为越来越多的机构采用分布式和在家办公的模式,这种模式依赖于远程访问通信,而这种通信很容易受到攻击。

  第11章主要讨论针对终端用户系统上应用的攻击,因为这些应用不会频繁地为终端用户的系统提供与企业的私人网络相同程度的保护。

  附录概述安装KaliLinux的主要步骤,以及怎样采用全盘加密来避免机密测试数据的拦截。

  学习《Kali Linux高级渗透测试》需要准备什么为了练习《Kali Linux高级渗透测试》中出现的示例,需要虚拟化工具,例如VMware或者VirtualBox。

  需要下载和安装KaliLinux操作系统及工具套件。通过访问互联网来确保你的系统是新的,并且安装了所有的工具。

  不幸的是,不是KaliLinux系统上的所有工具都会呈现,因为工具太多了。《Kali Linux高级渗透测试》的目标不是将所有的攻击和选项展现给读者,而是提供一个测试方法,这个方法可以为读者提供学习和掌握新工具的机会,经过一段时间后,将它们变为自己的经验和知识。

  虽然《Kali Linux高级渗透测试》中大多数示例是基于MicrosoftWindows的,但是方法和大多数工具是可以转换到其他操作系统的,例如Linux和其他UNIX系统。

  后,《Kali Linux高级渗透测试》应用Kali来完成攻击者的攻击流程,对目标系统进行攻击。你需要一个目标操作系统。《Kali Linux高级渗透测试》的许多示例是基于MicrosoftWindowsXP的。虽然它在2014年4月已被弃用,但是该系统为许多工具提供了一个行为标准的“基线”。如果你知道怎样将一个方法应用到一个操作系统,那么你可以将它应用到更多现有的操作系统,例如Windows7和Windows8。

  《Kali Linux高级渗透测试》的读者对象《Kali Linux高级渗透测试》适用于想要学习更多关于数据安全知识的人。特别是,它的目标人群是那些在实践中明白为什么要使用一个特定工具的人;而不是相反的一些人(为了查看一个系统是否有漏洞,他们使用尽可能多的工具)。我的目标是使读者开发他们自己的方法和方式来进行有效的渗透测试,这可以让他们试验和学习,使他们进步。我相信这种方法是理解黑客怎样攻击数据系统的唯一有效的方式;自然,这也是了解怎样在漏洞被利用之前弥补漏洞的唯一方法。

  如果你是一名专业的安全人员、渗透测试人员,或者是对复杂数据环境的安全感兴趣的人,那么这《Kali Linux高级渗透测试》是为你准备的。




其他推荐