Kali Linux渗透测试的艺术

978-7-115-37844-6
作者: 【英】Lee Allen 【印尼】Tedi Heriyanto 【英】Shakeel Ali
译者: Archer
编辑: 傅道坤

图书目录:

详情

Kali Linux是基于Linux的渗透测试和安全审计平台。本书借助于一些前端黑客工具和技术,讲解了渗透测试的实用技巧。本书讲解了测试环境和流程的安装和配置,讨论了渗透测试的类型(黑盒测试和白盒测试),揭示了开放的安全测试方法论,然后提出了Kali Linux的渗透测试过程。本书还讨论了渗透测试必需的很多安全评估工具,并采用案例方式讲解了它们的用法和配置技巧。本书适合信息安全从业人员阅读。

图书摘要

Kali Linux渗透测试的艺术

Kali Linux: Assuring Security By Peneration Testing

[英]Lee Allen [印尼]Tedi Heriyanto [英]Shakeel Ali 著

Archer 译

人民邮电出版社

北京

图书在版编目(CIP)数据

Kali Linux渗透测试的艺术/(英)艾伦(Allen,L.),(印尼)赫里扬托(Heriyanto,T.),(英)阿里(Ali,S.)著;阿彻译.--北京:人民邮电出版社,2015.2

ISBN 978-7-115-37844-6

Ⅰ.①K… Ⅱ.①艾…②赫…③阿…④阿… Ⅲ.①Linux操作系统—程序设计 Ⅳ.①TP316.89

中国版本图书馆CIP数据核字(2015)第005396号

版权声明

Copyright © Packt Publishing 2014. First published in the English language under the title Kali Linux – Assuring Security by Penetration Testing

All Rights Reserved.

本书由英国Packt Publishing公司授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。

版权所有,侵权必究。

◆著 [英]Lee Allen [印尼]Tedi Heriyanto [英]Shakeel Ali

译 Archer

责任编辑 傅道坤

责任印制 张佳莹 焦志炜

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

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

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

北京艺辉印刷有限公司印刷

◆开本:800×1000 1/16

印张:24.75

字数:505千字  2015年2月第1版

印数:1–3000册  2015年2月北京第1次印刷

著作权合同登记号 图字:01-2014-5790号

定价:69.00元

读者服务热线:(010)81055410 印装质量热线:(010)81055316

反盗版热线:(010)81055315

内容提要

Kali Linux 是一个渗透测试兼安全审计平台,集成了多款漏洞检测、目标识别和漏洞利用工具,在信息安全业界有着广泛的用途。

本书从业务角度出发,通过真实攻击案例并辅之以各种实用的黑客工具,探讨了进行渗透测试所需的各种准备工序和操作流程。本书共分为12章,其内容涵盖了Kali Linux 的使用、渗透测试方法论、收集评估项目需求的标准流程、信息收集阶段的工作流程、在目标环境中探测终端设备的方法、服务枚举及用途、漏洞映射、社会工程学、漏洞利用、提升权限、操作系统后门和Web后文的相关技术、渗透测试文档报告的撰写等。

本书适合讲解步骤清晰易懂、示例丰富,无论是经验丰富的渗透测试老手,还是刚入门的新手,都会在本书中找到需要的知识。

关于作者

Lee Allen是在顶尖大学里任职的安全架构师。多年以来,他持续关注信息安全行业和安全界内的新近发展。他有15年以上的IT行业经验,并且持有OSWP等多项业内的资格认证。

Lee Allen 还是 Advanced Penetration Testing for Highly-Secured Environments: The Ultimate Security Guide(由Packt Publishing 出版,人民邮电出版社出版了其中文版)一书的作者。

在此向我的爱人 Kellie 和我们的孩子表示感谢;他们为了本书的创作对我多有照顾。同时,我要向祖父母Raymond 和Ruth Johnson,以及岳父母 George 和 Helen Slocum 表示谢意;感谢他们这些年对我的支持和鼓励。

Tedi Heriyanto是印尼一家信息安全公司的首席顾问。他一直在与(印尼)国内外的多家知名机构进行信息安全渗透测试方面的合作。他擅长设计安全网络架构、部署与管理企业级的信息安全系统、规范信息安全制度和流程、执行信息安全审计和评估,以及提供信息安全意识培训。在闲暇之余,他在印尼安全界的各种活动中不停地研究和学习。他还通过写作各种安全图书与大家分享界内知识。有兴趣的读者可以访问他的博客http://theriyanto.wordpress.com。

感谢我的家人,谢谢他们在本书创作过程中给我的支持。感谢我的老板,谢谢他在本书的创作过程中给予我的信任、帮助和支持。感谢各位同事和客户,你们是我的良师益友。此外,感谢为本书提供宝贵意见和建议的 Packt Publishing 的各位同仁——Rubal Kaur、SwenySukumaran、Joel Goveya、Usha Iyer和Abhijit Suvarna。与此同时,感谢为本书投入大量时间和精力并分享了个人经验的技术审稿人Alex Gkiouros 和Neil Jones。最后要感谢本书的另外两名作者——Lee Allen 和Shakeel Ali,他们通过这本书分享了各自的技术知识、热情、想法、挑战和建议,使我陶醉于这本书的创作过程。

最终要感谢的是您——本书的读者,感谢您购买了此书,希望您能喜欢它。祝您在信息安全的工作中一帆风顺。

Shakeel Ali在世界500强公司里担任安全和风险管理顾问。在此之前,他是英国Cipher Storm Ltd.的核心创始人。他从事过安全评估、系统审计、合规部门顾问、IT 管理和法证调查工作,积累了信息安全领域的各种知识。他还是CSS Providers SAL 的首席安全员。他以废寝忘食的工作态度,为全球各类商业公司、教育机构和政府部门提供了不间断的安全支持服务。作为一名活跃的业内独立研究人员,他发表了大量的文章和白皮书。有兴趣的读者可以访问他的个人博客Ethical-Hacker.net。此外,他还长期参与墨西哥举办的BugCon Security Conferences 活动,定期报告最前沿的网络安全威胁,并分享相应的应对方案。

我向参与本书创作的各位朋友、审稿人和同事表示感谢。特别感谢Packt Publishing 的团队和它们的技术编辑、审稿人,他们分享了无价的意见和建议,是这本书的幕后英雄。在此感谢本书的其他两位作者Lee Allen和Tedi Heriyanto,本书的成功离不开他们不断的奉献、贡献、理念和技术讨论。最后,感谢我迄今为止遇到的各位搭档。他们总是能够在毫不松懈的安防工作中迸发出各种灵感。我相信,没有诸位的共同努力就没有安全稳定的信息安全环境。

关于审稿人

Alex Gkiouros 当前是一名独立的IT 专业人士,参与过希腊的各种项目。他在2006 年步入IT行业,已经持有2个ISACA的资格认证,目前在学习CCNP。他热爱网络安全,并花费大量时间研究Kali Linux或Backtrack。有兴趣的读者可以访问他的个人博客http://www. voovode.net/。

Neil Jones 在一家总部在英国的全球安全公司任职安全顾问。他过去就希望在年轻的时候就进入安全行业,如今他不仅达成这一心愿,而且获取了业内认可的多项资格认证。

他是一名不折不扣的安全研究人员。他从吃饭、睡觉,甚至在呼吸之间都挤出时间进行研究,还为业内开发过多款开放源代码的安全工具。

前言

Kali Linux 是一个渗透测试平台兼安全审计平台,它集成了多款漏洞检测、目标识别和漏洞利用工具。在明确业务目标的情况下,测试人员采取适当的渗透测试方法论,结合详细的测试计划即可进行富有成效的渗透测试。

本书循序渐进地演示了多款尖端的黑客工具,连贯地介绍了各种实用的黑客技术,是一本系统化地讲解渗透测试技巧的图书。它从业务的角度出发,以时下数字时代的真实攻击案例入手,探讨了所需的各种必要的准备工序和测试流程。

本书揭示了渗透测试的最优逻辑思路和业内最佳的测试方法。

本书最先讲解了实验室的制备方法,依次说明了基本的安装和配置方法,讨论了渗透测试的不同类型,介绍了开放的安全测试方法,并提出了Kali Linux 特有的测试过程。在此之后,本书将遵循正式的测试方法论,依据渗透测试各个阶段(范围界定、信息收集、目标发现、服务枚举、漏洞映射、社会工程学、提升权限、访问维护和文档报告)的需要介绍相应的测试工具。我们会通过真实的渗透案例来演示这些工具的使用和配置方法。本书最后一部分还简要介绍了额外的渗透工具以及渗透测试人员通常会参考的重要资源。

本书从零起步介绍了渗透测试的必备技能,可作为读者专业且实用的专家指导。在学习本书的内容之后,读者可以在现实环境中或者在实验测试平台中使用Kali Linux 进行渗透测试。

本书内容

第1章,Kali Linux 入门。简要介绍Kali Linux的Live DVD的使用方法。本章首先介绍Kali Linux 的研发简史和各类工具,然后介绍获取、使用、配置、更新Kali Linux 的方法,以及多个重要网络服务(HTTP、MySQL、SSH)的配置方法。最后,本章还演示了使用镜像文件安装并配置一台漏洞百出的问题虚拟机,以及安装额外工具包的方法。

第2章,渗透测试方法论。探讨了标准渗透测试的基本概念、规则、管理、方法和流程。本章将介绍两种著名的类型渗透测试,即黑盒测试和白盒测试之间的明显区别。另外,它还分析了脆弱性评估和渗透测试之间的区别。本章重点讲解了各种渗透测试方法论的业务特性、功能和优点,分别讨论了OSSTMM、ISSAF、OWASP和WASC-TC。最后,介绍了由10 个连贯的测试阶段组成的Kali Linux 的通用渗透测试流程。

第3章,范围界定。阐述收集评估项目需求的标准流程。本章将阐述制定渗透测试项目工作路线图所需的各个要素。这个阶段的工作可分为多个关键步骤,即收集需求、筹划工作、边界分析、明确业务指标、项目管理和统筹调度。本章讲解获取测试环境具体信息的方法。

第4章,信息收集。介绍信息收集阶段的工作流程。本章首先演示了通过公共资源获取目标环境有关信息的方法,然后介绍了分析DNS信息和收集网络路由信息的手段,最后讲解了利用搜索引擎获取目标域名、E-mail地址和文件元数据的技术。

第5章,目标识别。讲解了在被测环境中探索终端设备的方法。本章介绍了目标识别阶段的任务以及相应的工具,以及对目标主机进行操作系统指纹识别的各种工具。

第6章,服务枚举。探讨了服务枚举及其用途。本章介绍了端口扫描的概念和相关工具。本章重点介绍Nmap的各种可用选项,以及在被测网络中搜索SMB、SNMP和VPN服务的各种工具。

第7章,漏洞映射。讨论了漏洞的两种类型:本地漏洞和远程漏洞。您将在本章了解漏洞区分依据和分类方法,及各种行业标准。此外,本章讲解了OpenVAS、Cisco、Fuzzing、SMB、SNMP 和 Web 应用程序分析工具,这些工具可以用来查找、分析目标网络种存在的安全漏洞。

第8章,社会工程学攻击。介绍了社会工程学专业人员操纵他人,使后者泄露信息或进行某种行为的核心原则和业内认可的做法。本章将阐述社工涉及的基本心理学原理。社会工程学专业人士制定的社工目标和具体方法都是基于这些心理学原理。本章还通过实际案例讲解了社工的攻击流程和攻击方法。本章最后介绍了Kali Linux 的社会工程学工具集,并演示了利用这些工具攻击人力资源部门的社工方法。

第9章,漏洞利用。重点介绍了可切实利用漏洞的实践方法和各种工具。本章讲解了漏洞研究领域的各个方面,以及理解、检验和测试目标环境脆弱性的关键手段。本章还列举了一些知名的漏洞资料库和使用方法。同时,本章还从安全评估的角度讲解了恶名昭彰的开发工具包,并演示了使用Metasploit的exploit模块编写简单的漏洞利用程序的方法。

第10章,提升权限。介绍了提升权限、网络监听及网络欺骗的概念。本章不仅介绍了通过本地漏洞提升权限的方法,而且介绍了分别以离线和在线的方式碰撞用户密码的工具。本章最后还讲解了可用于网络欺骗和网络监听的多款工具。

第11章,访问维护。演示了操作系统后门和Web后门的有关技术。本章介绍了各种不同的后门及其使用方法。此外,本章还讲解了多款网络隧道工具,这些工具可以在攻击者和受害者之间建立秘密通信。

第12章,文档报告。涵盖了渗透测试文档、汇报文件和现场演示的有关内容。本章内容旨在指导读者以撰写系统化的、结构化的、一致的工程文档。此外,本章还介绍了验证测试结果、报告的不同种类、现场演示及测试的后期流程工作。

附录A,辅助工具。介绍了渗透测试工作可能会用到的几款额外工具。

附录B,关键资源。列举了多个可帮助您提高渗透测试技术的参考资源。

阅读群体

本书适合大体了解UNIX/Linux操作系统,并了解信息安全各项构成因素的IT安全专业人士或网络管理员,以及想要使用Kali Linux 进行渗透测试的读者。

第1部分 系统的搭建与测试

第1章 Kali Linux 入门

第2章 渗透测试方法论

第2章 渗透测试方法论

渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体手段。方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用、系统或三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结出了一套理论——测试方法论。本章简要介绍了渗透测试方法论的各关键要点,涉及的主题包括:

● 两种广为认知的渗透测试类型——黑盒测试和白盒测试;

● 漏洞评估和渗透测试的区别;

● 业界普遍采纳的安全测试方法论,以及其核心功能、特征和优势;

● 典型的渗透测试所涉及的10 个阶段;

● 安全测试的道德准则。

渗透测试可能是单独进行的一项工作,也可能是常规研发生命周期(例如,Microsoft SDLC)里 IT 安全风险管理的一个组成部分。产品的安全性并不完全取决于 IT 方面的技术因素,还会受到与该产品有关的最佳安全实践的影响。具体而言,增强产品安全性的工作涉及安全需求分析、风险分析、威胁建模、代码审查和运营安全。

通常认为,渗透测试是安全评估最终的也是最具侵犯性的形式,它必须由符合资质的专业人士实施。在进行评估之前,有关人员可能了解也可能不了解目标的具体情况。渗透测试可用于评估所有的IT基础设施,包括应用程序、网络设备、操作系统、通信设备、物理安全和人类心理学。渗透测试的工作成果就是一份渗透测试报告。这种报告分为多个部分阐述在当前的目标系统里找到的安全弱点,并且会讨论可行的对抗措施和其他改进建议。充分应用渗透测试方法论,有助于测试人员在渗透测试的各个阶段深入理解并透彻分析当前存在的防御措施。

2.1 渗透测试的种类

虽然渗透测试各种各样,但是业内普遍将其划分为两类:白盒测试和黑盒测试。

2.1.1 黑盒测试

在进行黑盒测试时,安全审计员在不清楚被被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。渗透测试人员应能理解安全弱点,将之分类并按照风险级别(高、中、低)对其排序。通常来说,风险级别取决于相关弱点可能形成的危害的大小。老练的渗透测试专家应能确定可引发安全事故的所有攻击模式。当测试人员完成黑盒测试的所有测试工作之后,他们会把与测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常会高于白盒测试。

2.1.2 白盒测试

白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更为开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精确度。白盒测试从被测系统环境自身出发,全面消除内部安全问题,从而增加了从单位外部渗透系统的难度。黑盒测试起不到这样的作用。白盒测试所需的步骤数目与黑盒测试不相上下。另外,若能将白盒测试与常规的研发生命周期相结合,就可以在入侵者发现甚至利用安全弱点之前,尽可能最早地消除全部安全隐患。这使得白盒测试的时间、成本,以及发现、解决安全弱点的技术门槛都全面低于黑盒测试。

2.2 脆弱性评估与渗透测试

正确地理解和使用安全评估领域的技术术语十分必要。在您的职业生涯中,您可能时常会遇到那些不了解行业术语,却需要从这些专用名词里选一个进行采购的人。其实商业公司和非商业机构里大有这样的人在。至少您应该明白这些类型的测试各是什么。

脆弱性评估通过分析企业资产面临威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技术上的信息系统评估,不仅要揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则用于验证边界防护(perimeter defenses)的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。不同类型的脆弱性评估需要的测试流程、测试工具和自动化测试技术也不相同。这可以通过一体化的安全弱点管控(vulnerability management)平台来实现。现在的安全弱点管控平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。

脆弱性评估和渗透测试两者最大的区别就是:渗透测试不仅要识别目标的弱点,它还涉及在目标系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评估虽然可以充分发现系统里的缺陷,但是不会考虑去衡量这些缺陷对系统造成的危害。另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响。而脆弱性评估则是以非入侵性的方式,定性、定量地识别已知安全弱点。

为何需要渗透测试?

如果不能确定防火墙、IDS、文件完整性监控等风险减缓控制的实际效果,那么就应当进行渗透测试。虽然漏洞扫描(脆弱性评估)能够发现各个漏洞,但是渗透测试则会验证这些漏洞在实际环境里被利用的可能性。

有些观点认为,这两种类型的安全评估重复性很高,只是同义词而已。这种观点绝对有误。合格的安全顾问会根据客户的商务需求,选择一种最合适的安全评估向顾客推荐,绝对不会把不同类型的安全评估混为一谈。然而,仔细核实安全评估项目的内容和做出最终决定确实是顾客的责任。

渗透测试的价格比脆弱性评估的价格要高。

2.3 安全测试方法论

为满足安全评估的相应需求,人们已经总结出了多种开源方法论。无论被评估目标的规模有多大,复杂性有多高,只要应用这些安全评估的方法论,就可以策略性地完成各种时间要求苛刻、富有挑战性的安全评估任务。某些方法论专注于安全测试的技术方面,有些则关注管理领域。只有极少数的方法论能够同时兼顾技术因素和管理因素。在评估工作中实践这些方法论,基本上都是按部就班地执行各种测试,以精确地判断被测试系统的安全状况。

本书再次向您推荐几种著名的安全评估方法论。本章将重点突出这些方法论的关键特征和优势,希望它们能够帮助您拓宽网络安全和应用安全评估的视野。

● 开源安全测试方法论

● 信息系统安全评估框架

● 开放式Web 应用安全项目

● Web 应用安全联合威胁分类

● 渗透测试执行标准

上述这些测试框架和方法论,都能够指导安全人士针对客户需求制定最得当的策略。其中,前两个方法论所提供的通用原则和方法,几乎可以指导面向任何类型资产的安全测试。由OWASP(Open Web Application Security Project)推出的测试框架主要面向应用安全的安全评估。PTES(Penetration Testing Execution Standard)能够指导所有类型的渗透测试工作。然而需要注意的是,安全状态本身是一个持续变化的过程,而渗透测试只能够获取目标系统在被测试的那一时刻的安全状态。在测试的过程中,哪怕被测的信息系统发生了细微的变化,都可能影响安全测试的全局工作,从而导致最终的测试结果不正确。此外,单一的测试方法论并不一定能够涵盖风险评估工作的所有方面。而拟定适合目标网络和应用环境的最佳测试策略,确实是安全审计人员的职责。

安全测试的方法论有很多。要选取最佳的指导理论,就需要综合考虑成本和效果的因素。所以,评估策略的筛选工作受到多种因素的制约。这些因素包括与目标系统有关的技术细节和各种资源、渗透人员的知识结构、业务目标以及法规问题。以业务的角度看,效果和成本控制至关重要。本文介绍的这几种方法论,在官方网站上都有非常正规的详细说明文件。在此,我们对它们进行简要总结。如需了解详细的工作流程,您需要亲自访问相关网站,仔细研究各种文件和实施细则。

2.3.1 开源安全测试方法论(OSSTMM)

开源安全测试方法论(Open Source Security Testing Methodology Manual,OSSTMM)(官方网站是http://www.isecom.org/research/osstmm.html)是由Pete Herzog 创建,继而由ISECOM发展的测试方法论。它是国际公认的安全测试和安全分析标准。很多企业正在他们的日常评估工作中应用这一标准。以技术的角度看,这一方法论把安全评估工作划分为 4 组:范围(scope)、信道(channel)、索引(index)和矢量(vector)。“范围”指代评估人员收集被测单位全部资产相关信息的工作。“信道”则是这些资产之间的通信方式和互动类型;包括物理方式、光学方式和其他方式的通信。每个信道都构成了一套独特的安全组件,都要在评估阶段进行测试和验证。这些组件包括物理安全、人类心理学、数据网络、无线通信介质和电信设施。所谓“索引”,泛指特定资产和相应ID的对应关系。例如,审计人员常常要明确MAC地址和IP地址的对应关系,就是为了整理一种索引。而“矢量”指的是审计人员访问和分析功能性资产的方式。以上几个部分,组成了全面评估被测IT运营环境的整个技术流程,被称为审计范畴(audit scope)。

OSSTMM的方法论总结了多种形式的安全测试,并将它们划分为6个标准种类。

● 盲测(blind):事先不了解目标系统的任何情况的测试就是盲测。然而,在评估过程开始之前,被测单位会知道何时开始安全测试。道德黑客(Ethical hacking)和对抗竞赛(War Gaming)就是典型的盲测。因为盲测遵循了道德规范,事先通知被测单位,所以这种测试方法也被广泛接受。

● 双盲测试(double blind):在双盲测试中,审计人员事先不清楚目标系统的情况,被测单位事先也不会知道将有安全测试。黑盒审计和渗透测试都属于双盲测试。当前绝大多数的安全审计采用双盲测试方法。对于审计人员来说,选择能够胜任的最佳工具和最佳技术已经是一种考验了。

● 灰盒测试(grey box):在灰盒测试中,审计师仅了解被测系统有限的情况,被测单位也会知道审计开始和结束的时间。脆弱性评估就属于灰盒测试。

● 双灰盒测试(double grey box):双灰盒测试工作的方式类似于灰盒测试。只不过在双灰盒测试中,会给审计人员定义一个时限,而且这种测试不涉及信道测试和渗透矢量。白盒审计就属于双灰盒测试。

● 串联测试(tandem):在串联测试中,审计人员对目标系统只有最低限度的了解,而在测试开始前他们会通告被测单位。需要注意的是,串联测试会测试得比较彻底。水晶盒测试和内部审计都是串联测试的例子。

● 逆向测试(reversal):在逆向测试中,审计员充分了解目标系统;而被测单位将永远不会知道测试的时间或方式。

OSSTMM推广的技术评估框架十分灵活。即使某个项目在逻辑上可分为3个连续的信道和5个安全组件,我们照样可以使用OSSTMM的框架评估其安全性。OSSTMM体系的测试方法,通过检查访问控制安全、流程安全、数据控制、物理位置、周界防护、安全意识水平、信任关系、反欺诈控制等诸多过程,全面评估被测单位的安全性。总体而言,这一理论强调测试目标和测试方法,注重在测试前、测试中、测试后应当采用的相应策略,而且介绍了解读和综合分析测试结果的方法。确切掌握目标系统当前的防护水平至关重要,有关数据十分珍贵。OSSTMM 引入了RAV(Risk Assessment Value,风险评估值)的概念,并通过它阐述了这一理论的很多理念。RAV 的基本功能是分析测试结果,进而基于三个因素(运营安全、损耗控制、局限程度)的标称值来计算安全的标称值。最后求得的这个标称值称为 RAV 得分。在引入 RAV 得分的概念之后,审计人员可以量化评估当前的安全状态,并可为企业安全的下一步目标设定里程碑。从商业的角度来看,RAV 有助于优化安全投资,并可助您选择更为有效的安全解决方案。

主要特性与优势

OSSTMM的主要特性与优势如下。

● OSSTMM 的方法可从本质上降低假阴性和假阳性的发生率。它推出的测量方法具有普遍的应用价值。

● 该架构适用于多种类型的安全测试,可用于渗透测试、白盒测试审计、漏洞评估等其他测试。

● 它能够确保每次评估应进行得全面彻底,还能保证评估过程的一致性、可测性、可靠性。

● 该方法本身可分为4个相对独立的阶段,即定义阶段、信息阶段、调节阶段和控制测试阶段。每一个阶段都会获取、评估和验证目标环境中的相关信息。

● RAV 的计算方法综合衡量了运营安全、损耗控制、局限程度的情况。它的计算结果即RAV得分,可代表目标系统当前的安全状况。

● 这种方法的评估报告均采用安全测试审计报告(STAR,Security TestAudit Report)模板。以这种格式书写的报告同时适合被测单位的管理层和技术层阅读,有助于他们共同理解测试目标、风险评估值(RAV)和每个阶段的测试结果。

● 该方法定期更新。OSSTMM 会符合安全测试、法规和法规问题的新变化。

● OSSTMM 与行业法规、企业政策,以及政府法规兼容。此外,官方认可的审计员都是直接从ISECOM(安全与开放式方法论研究协会)获取的资格认证。

2.3.2 信息系统安全评估框架

信息系统安全评估框架(Information Systems SecurityAssessment Framework,ISSAF) (www.oissg. org/issaf)是另外一种开放源代码的安全性测试和安全分析框架。为了解决安全评估工作的逻辑顺序问题,该框架已分为若干个领域(domain)。不同领域评估目标系统的不同部分,而且可以根据实际情况对每个领域进行相应调整。把这一架构与日常业务的生命周期相结合,可以充分满足企业安全测试的准确性、完整性、高效性的需求。ISSAF兼顾了安全测试的技术方面和管理方面。在技术方面,它有一整套关键的规则和程序,形成了一套完备的评估程序。在管理方面,它明确了在整个测试过程中应当遵循的管理要则和最佳实践。应当注意,ISSAF主张安全评估是一个过程,而不是一次审计。审计框架应当分为计划、评估、修复、评审以及维护阶段,应当有更为完善的标准。然而ISSAF具有灵活和高效的特点,是审计工作各个阶段的通用准则,可适用于所有企业结构。

这一框架的交付报告分为业务活动、安全措施、目标系统中可能存在的安全弱点的完整清单。其评估过程注重分析被测单位最容易被利用的关键漏洞,侧重于以通过最短路径尽快完成测试任务。

ISSAF 的技术评估基准十分全面,可用于测试各种技术和不同流程。不过,丰富的内容带来了一大副作用,即要跟上评估领域的技术变化速度,这一框架就需要频繁更新。相对而言,OSSTMM受技术更新影响的幅度略小。即使审计人员使用不同的工具和全新的技术,他们遵循的方法论却基本不变。虽然如此,但是ISSAF仍然号称是由最新的安全工具、最佳实践,以及补充安全评估计划的管理理念所组成的广泛框架。它也可以和OSSTMM或其他测试方法论一起使用,从而能够兼有各种方法的优点。

主要特性与优势

ISSAF的主要特性与优势如下。

● ISSAF 主要测试当前安全控制措施中的严重漏洞,所以它在保障系统安全方面的意义重大。

● 它关注信息安全范畴内的各个关键领域,涵盖了风险评估、业务结构和管理、控制评估、服务管理、安全策略的开发和常规的最佳实践。

● ISSAF 渗透测试方法论评估网络、系统或应用程序的安全性。应用该框架可以无阻碍地把精力重点放在特定技术上,如路由器、交换机、防火墙、入侵检测和防御系统、存储区域网络、虚拟专用网络、各种操作系统、Web 应用服务器、数据库等。

● 通过必要的控制和处理,它可以统一技术层和管理层这两方面人员对安全测试的理解。

● 它可帮助管理人员理解当前边界防御体系的现有风险,并可指出可能影响业务完整性的安全弱点,从而帮助人们主动地减少风险。

可同时结合OSSTMM和ISSAF两种理论评估企业环境的安全状况。

2.3.3 开放式Web应用程序安全项目

开放式 Web应用程序安全项目(Open Web Application Security Project,OWASP)定期推出其top 10 project( 排名前十位的安全隐患防护守则)以提高公共对应用安全的认知意识。这个项目公开了编写安全程序所需遵循的各种原则和惯例。OWASP 的测试项目(https://www.owasp.org/index.php/owasp- Testing_Project)公布了一套非常实用的安全测试指南。您应当仔细阅读这部分内容,因为这个测试框架往往可以指导您的工作。

OWASP 的Top 10 Project 总结了各种攻击矢量,按照各种隐患可能在技术上和业务上造成的危害,对影响应用安全的风险进行分类和排名。在评估应用程序安全时,这些排名前十的安全风险揭露了普遍存在于各种技术和平台的通用攻击方法。它还阐述了测试、验证和修补应用程序安全弱点的具体方法。尽管Top 10 Project揭示了安全领域的高风险问题,但是这10种风险也只是Web应用程序安全性问题的一部分而已。尽管如此,OWASP社区的很多指南仍然可以指导开发人员和安全审计人员有效地管理Web应用程序的安全。

● 测试指南:https://www.owasp.org/index.php/OWASP_Testing-Guide_v3 _Tab1e_of_Content。

● 开发人员指南:https://www.owasp.org/index.php/Guide。

● 代码审查指南:https://www.owasp.org/index.php/Category: OWASP_Code_Review_Project。

OWASP的Top 10 Project每年都会更新。如需获取详细信息,请访问这个项目的官方网站https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project。

主要特性与优势

OWASP的主要特性与优势如下。

● OWASP 推出了Web应用程序的十大安全风险的测试方法。应用这些方法,可使应用程序避免出现常见的安全缺陷,免受常见攻击的危害,进而巩固了应用程序的保密性、完整性和可用性。

● OWASP 社区研发出大量安全工具,这些工具可辅助进行自动或手动的Web 应用程序测试。Kali Linux 收录了其中较为著名的程序,如WebScarab、Wapiti、JBroFuzz和SQLiX等。

● 在网络基础设施的安全评估方面,OWASP 测试指南为您提供了特定技术的评估细则。举例来说,它的甲骨文(Oracle)的测试方法与 MySQL 的测试方法就各有针对性。该指南采用多种相互关联的方法评估各种技术,有助于审计人员因地制宜地制定测试方法。

● 它鼓励研发人员在研发周期的每个阶段进行有计划的安全测试。这能提高应用程序的健全性、安全性,并能减少程序中的错误。

● 它在业内的认可度和知名度屈指可数。若把排名前十位的安全隐患防护守则与其他Web应用程序安全评估标准结合使用,您可同时满足一个以上的安全标准。

2.3.4 Web应用安全联合威胁分类

只有彻底、严格的测试流程,才能发现应用程序的安全隐患,而这些测试流程完全可以纳入软件的开发生命周期。Web 应用安全联合威胁分类(Web Application Security Consortium Threat Classification,WASC-TC)是这样的一个评估Web 应用程序安全性的开放标准。与OWASP标准相似,它也从攻击和弱点两方面讨论安全问题,但这一标准以更为深入的方式解决安全隐患。要识别、验证应用程序所面临的各种威胁,就要遵循标准化的工作流程。WASC-TC可以迅速适用于各种技术环境,有着显著的易用性。整体上说,它能够帮助开发人员和安全审计人员以不同的视图了解Web应用程序面临的安全威胁。

● 枚举视图:枚举视图是分析Web 应用程序攻击手段和相应安全弱点的基础。它从定义、类型和多种编程平台的实例这几个角度,详细讨论了每种攻击手段和每个安全弱点。另外,所涉及的安全弱点和攻击手段都被分配了唯一的识别编号,以便于人们引用。目前,这个视图里总共有49个WASC-ID号码(1~49)。这些编号并不代表相应条目的危害程度,仅仅是为了方便引用而分配的编号。

● 开发视图:开发视图关联分析外部的攻击和程序内部的安全弱点,将开发人员的视野转向程序自身的漏洞。这一分析适用于开发周期的三个阶段,即设计、实现(编程)、部署阶段。如果在明确应用程序的需求时没有充分考虑安全方面要求,就会在研发周期的初期阶段引发漏洞,形成设计阶段的安全弱点。不安全的编程规则或不当的惯例产生会造成实现阶段的安全弱点。无论在应用程序、Web 服务器或是其他外部系统的配置过程中哪个部分出现差错,最终都会导致部属阶段的安全弱点。可见,这个视图以最佳安全实践为蓝本,提出了将安全保障措施融入到日常的研发生命周期的具体方法。

● 交叉引用视图:这个视图关联地分析了多种Web 应用安全标准。通过对该视图的引用,审计人员和开发团队能够把当前所使用的标准中的术语(标准条款)与其他标准的相应内容进行对照分析。如此一来,只需要较少的开销,就可以让一个项目同时符合多种不同的安全标准。因为不同的应用程序安全标准会从不同的角度评估应用程序的安全性,所以它们衡量同一的风险的评估指标也不尽相同。因此,要对不同安全标准进行差异性分析,才能够正确地计算安全风险及其严重程度。当前WASC-TC 中的攻击方法和薄弱环节,可以映射到OWASP 的Top 10 Project、Mitre通用缺陷列表(Common Weakness Enumeration,CWE)、Mitre 通用攻击模式列表和分类(Common Attack Pattern Enumeration and Classification,CAPEC)、SANS-CWE 排名前 25 的软件高危错误列表(SANS-CWE Top 25 list)。

Mitre's CWE 的官方网站是https://cwe.mitre.org/。

Mitre's CAPEC 的官方网站是http://capec.mitre.org/。

SANS-CWE的排名前25的软件高危错误列表的发布网站是http://www.sans.org/top25-software-errors/。

如需详细了解 WASC-TC 及其评论,请访问官方网站:http://projects.webappsec.org/Threat-Classification。

主要特性与优势

WASC-TC的主要特性与优势如下。

● WASC-TC 围绕常见攻击和常规弱点这一中心,深入讨论了 Web 应用程序运营系统的安全评估方法。

● 无论何种Web 应用程序平台,都可使用Kali Linux 的工具集验证、测试WASC-TC提出的常见攻击和常规弱点。

● 它提出了三种不同视图,即枚举视图、开发视图和交叉引用视图。枚举视图起到了基础数据库的作用,它列举了在 Web 应用中所有可能被发现的攻击方法和安全弱点。开发视图将这些攻击方法和安全弱点进行关联分析,整理成一系列漏洞,并根据它们在开发过程中的出现阶段进行分类。而开发阶段又可分为设计阶段、实现阶段和部署阶段。WASC-TC 标准的交叉引用视图用于对照、引用其他的应用程序安全标准。

● WASC-TC 标准已经得到了业界的广泛认可。在许多开源和商业解决方案里,特别是漏洞评估和管控产品中,都能看到WASC-TC的身影。

● WASC-TC 也可以和其他著名的应用安全标准兼容,例如OWASP 和SANS-CWE。

2.4 渗透测试执行标准

渗透测试执行标准(Penetration Testing Execution Standard,PTES)的先驱都是渗透测试行业的精英。这个标准由渗透测试7个阶段的标准组成,可在任意环境中进行富有成果的渗透测试。它的官方网站详细介绍了具体测试方法,有兴趣的读者可访问 http://www. pentest-standard.org/index.php/Main_Page。

根据这一标准,标准的渗透测试可以分为下述7个阶段:

● 事前互动;

● 情报收集;

● 威胁建模;

● 漏洞分析;

● 漏洞利用;

● 深度利用;

● 书面报告。

PTES 的官方网站详细介绍了每个阶段的思维导图(mind maps)和组成步骤。这些内容有助于审计人员根据被测环境的测试要求,对PTES标准进行相应调整。只要在其官方网站上点击思维导图的构成节点,就可详细查看该节点的各个组成步骤。

主要特性与优势

PTES的主要特性与优势如下。

● 它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要的方面,如范围蔓延(scope creep)、报告,以及渗透测试人员保护自身的方法。

● 它介绍了多数测试任务的具体方法,可指导您准确测试目标系统的安全状态。

● 它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。

● 它包含了最常用的以及很罕见的相关技术。

● 它浅显易懂,您可根据测试工作的需要对相应测试步骤进行调整。

2.5 通用渗透测试框架

Kali Linux 属于通用型操作系统,它配备有多种安全评估工具和渗透测试工具。在没有合适的测试理论指导的情况下冒然使用这些工具,可能会导致测试失败,测试结果可能无法让人满意。因此,从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。

这一小节将通过黑盒测试的具体方法和白盒测试的通用测试方法介绍通用测试框架。它涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。评估人员可以根据被测目标的具体情况对上述测试方法进行相应调整。这一方法论由一系列相关步骤所组成。要想成功完成安全评估项目,必须在测试的初始化阶段、测试进行阶段以及测试结束阶段全面遵循这些步骤。这些步骤包括:

● 范围界定;

● 信息收集;

● 目标识别;

● 服务枚举;

● 漏洞映射;

● 社会工程学;

● 漏洞利用;

● 提升权限;

● 访问维护;

● 文档报告。

无论是进行白盒测试还是黑盒测试,选择和使用测试步骤都是测试人员的责任。在测试开始前,测试人员需要根据目标系统的实际环境和已掌握的关于目标系统的情况,制定最佳的测试策略。下文将会介绍每一个测试阶段,包括它们的简要描述、定义和可能适用的应用程序。虽然这种通用测试方法论可以配合其他的方法论同时使用,但是它只是一种指导建议,而不是全能的渗透测试解决方案。

2.5.1 范围界定

在开始技术性安全评估之前,务必要观察、研究目标环境的被测范围。同时还要了解,这个范围牵扯到多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来。在范围界定阶段,需要考虑的典型因素如下。

● 测试对象是什么?

● 应当采取何种测试方法?

● 有哪些在测试过程中需要满足的条件?

● 哪些因素可能会限制测试执行的过程?

● 需要多久才能完成测试?

● 此次测试应当达成什么任务目标?

审计人员只有确切理解被评估系统所使用的技术,理解其基本功能,以及相关技术与网络之间的相互影响,才能成功达成渗透测试的目标。因此,无论是进行什么类型的安全评估项目,审计人员的知识结构都将起着至关重要的作用。

2.5.2 信息收集

在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透测试人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的互联网渠道主要有:

● 论坛;

● 公告板;

● 新闻组;

● 媒体文章;

● 博客;

● 社交网络;

● 其他商业或非商业性的网站。

此外,他们也可借助各种搜索引擎中获取相关数据,例如谷歌、雅虎、MSN必应、百度等。进一步说,审计人员可以使用Kali Linux 收录的各种工具在测试目标的网络系统里挖掘信息。这些运用漏洞数据挖掘技术的工具能够收集可观信息,包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集到的信息越多,渗透测试成功的概率就越高。

2.5.3 目标识别

这个阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。Kali Linux 提供的一系列先进的网络工具,可以轻松探测到联网主机,识别这些主机运行的操作系统,并根据每个设备在网络系统中的不同角色对它们进行归类。这些工具通常采用了基于上层网络协议的主动和被动的检测技术。它们能够通过不同的方式巧妙地利用各种协议获取许多有用的信息,比如操作系统指纹等。

2.5.4 服务枚举

这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。有很多扫描端口的技术,如全开(full-open)扫描、半开(half-open)扫描、隐蔽式(stealth)扫描等。这些技术都可用来检测端口的开放情况,甚至可以扫描处于防火墙或者入侵检测系统保护下的主机。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。因此,这个阶段为其后的测试工作打下了基础,有助于测试人员继而发现各种网络设备上可能会造成严重危害的安全漏洞。Kali Linux收录的部分自动化工具可以辅助审计人员完成这一阶段的目标。

2.5.5 漏洞映射

至此为止,我们已经充分收集了目标网络的各种信息。接下来,我们就可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。Kali Linux 系统中提供的一系列自动化的网络和应用漏洞评估工具可以担任完成这个阶段的任务。当然,人工(手动)完成这些任务未尝不可,只是人工操作极为耗时,而且需要有关人员拥有专家级的知识。但是,如果能够将自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。否则,被遗漏的漏洞将会一直残留在目标网络系统里。

2.5.6 社会工程学

如果目标网络没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行会安装后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至是诱使某人出现在某个地点——这些都属于社会工程学攻击。在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要事先研究国内的法律是否有关于社会工程学的相关条款。

2.5.7 漏洞利用

在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。某些情况下不得不对漏洞利用程序(exploit)进行额外的研究和修改,否则它可能就无法正常工作。虽然这听起来就很麻烦,但是先进的漏洞利用(修改)工具可使这项工作容易得多,而且Kali Linux 已经收录了这种工具。此外,审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。整个流程可以分为3步,涉及攻击前、攻击、攻击后的相关行动。

2.5.8 提升权限

获取目标系统的控制权是渗透成功的标志。接下来,审计人员就可以依据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能够在目标系统上运行提权漏洞利用程序,就可以获得主机上的超级用户权限或者系统级权限。审计人员还可以以该主机为跳板,进一步攻击局域网络。根据之前对渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限的。而后,他们很有可能以各种方式获得与被控制系统有关的更多信息。具体的说,他们可能使用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限。

2.5.9 访问维护

多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。这些情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。这些隧道往往基于特定协议、代理或者点对点通信方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐匿行踪的具体方法。

2.5.10 文档报告

在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。为了帮助惯例人员和技术人员共同理解、分析当前IT基础架构中的薄弱环节,可能需要给不同的部门撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比较渗透测试前后目标系统的完整性。

2.6 道德准则

专业的、道德的、经过授权的安全测试服务,离不开由事先约定的规则所组成的安全测试道德准则。这些准则约定了安全测试服务的服务方式、安全实施的测试方法、合同和谈判所约定的法律条款、测试的范围、测试的准备、测试的流程,以及报告结构的一致性。要顾全上述因素,就要仔细地考察、设计在整个测试过程中都要遵循的正规的操作方法和相关流程。下面将介绍一些常见的到的准则。

● 审计人员不得在和客户达成正式协议之前对目标系统进行任何形式的渗透测试。这种不道德的营销方法有可能破坏客户的正常业务。在某些国家或地区,这种行为甚至可能是违法行为。

● 在测试过程中,在没有得到客户明确许可的情况下,测试人员不得进行超出测试范围越过已约定范畴的安全测试。

● 具有法律效力的正式合同可帮助测试人员避免承担不必要的法律责任。正式合同将会约定哪些渗透行为属于免责范围。这份合同必须清楚地说明测试的条款和条件、紧急联系信息、工作任务声明以及任何明显的利益冲突。

● 测试人员应当遵守测试计划所明确的安全评估的时间期限。渗透测试的时间应当避开正常生产业务的时间段,以避免造成相互影响。

● 测试人员应当遵循在测试流程里约定的必要步骤。这些规则以技术和管理不同角度,通过内部环境和相关人员来制约测试的流程。

● 在范围界定阶段,应当在合同书里明确说明安全评估业务涉及到的所有实体,以及他们在安全评估的过程中受到哪些制约。

● 测试结果和书面报告必须清晰,其顺序必须一致。报告中提及的所有已知的和未知的漏洞,必须以安全保密的方式递交给有权查看报告的相关责任人。

2.7 本章总结

本章详细介绍了多种渗透测试方法论,以及渗透测试的基本术语、相关类型,还有这些术语和业内其他术语之间的区别。本章的重点内容如下。

● 渗透测试可分为黑盒测试和白盒测试。黑盒测试也称为外部测试,在黑盒测试中,审计人员事先不了解目标系统的内部结构或任何技术。白盒测试也叫内部测试,在白盒测试中,审计人员了解目标系统的全部细节。结合黑盒测试和白盒测试的测试类型,称做灰盒测试。

● 脆弱性评估和渗透测试最基本的不同点在于:脆弱性评估旨在找出目标系统中存在的安全漏洞,并不会去衡量这些漏洞可能造成的相应危害;而渗透测试会进一步利用这些漏洞,发起实质性攻击以评估它们可能造成的安全问题。

● 虽然业内有很多安全测试方面的方法论,但是在评测网络系统或应用程序安全性方面,只有极少数的方法论才能够具有阶段性的循序渐进的指导意义。本章介绍了5个非常有名的开源安全评估方法论,突出了它们的技术功能、主要特征和优势。这5 个方法论分别是开源安全测试方法论( OSSTMM )、信息系统安全评估框架(ISSAF)、开放式Web应用程序安全项目(OWASP),渗透测试执行标准(PTES)以及Web 应用安全联合威胁分类 (WASC-TC)。

● 本章还介绍了一个简单的结构化的通用测试方法论。它由安全测试行业标准方法归纳而来,分为多个标准化测试阶段。这些阶段分为:范围界定、信息收集、目标识别、服务枚举、漏洞映射、社会工程学、漏洞利用、提升权限、访问维护、文档报告。

● 最后,本章讨论了在整个安全评估过程中必须遵守的渗透测试道德准则。在安全评估的各个阶段落实有关道德准则,可以切实保障审计人员和商业实体双方的各自利益。

在接到一个渗透测试任务时,如何从客户那里获取相关信息,又如何对信息进行管理?请参见下一章。

第2部分 渗透测试人员的军械库

第3章 范围界定

第4章 信息收集

第5章 目标识别

第6章 服务枚举

第7章 漏洞映射

第8章 社会工程学攻击

第9章 漏洞利用

第10章 提升权限

第11章 访问维护

第12章 文档报告

第8章 社会工程学攻击

社会工程学是利用人性弱点体察、获取有价值信息的实践方法,它是一种欺骗的艺术。在缺少目标系统的必要信息时,社会工程学技术是渗透测试人员获取信息的至关重要的手段。对所有类型的组织(单位)而言,人都是安全防范措施里最薄弱的一环,也是整个安全基础设施最脆弱的层面。人都是社会的产物,人的本性就是社会性,所以人都有社会学方面的弱点都易受社会工程学攻击。社会工程学的攻击人员通常利用社会工程学手段获取机密信息,甚至可以造访受限区域。社会工程学的方式多种多样,而且每种方法的效果和导向完全取决于使用人员的想象能力。本章将阐述社会工程学核心原则,并会介绍专业的社会工程攻击人员用其操纵他人或挖掘信息的实例。

本章分为以下几个部分:

● 透过心理学的基本原理,带领读者大致了解社会工程学的手段和目标。

● 通过几个真实的例子,演示社会工程学的攻击过程及使用方法。

从安全角度来看,社会工程学是以获取特定信息为目标的操纵他人的有力武器。很多单位都使用社会工程学的方法进行安全评估,以考核雇员的安全完整性,并通过这种方法调查工作流程和人员方面的安全弱点。需要注意的是,社会工程学是种很常见的技术,可以说各种人员都会使用这种技术。无论是渗透测试人员,还是诈骗专家、身份窃贼、商业合作伙伴、求职人员、销售人员、信息经纪人、电话推销员、政府间谍、心怀不满的员工,甚至日常生活中的孩童都会使用这种技术,只是他们的动机不同而已。

8.1 人类心理学建模

人类的心理取决于感官的输入。感官的作用是形成对现实的感知。按照感官对自然现象的识别作用来划分,人的感官可分成视觉、听觉、味觉、触觉、嗅觉、平衡和加速、温度、动觉、疼痛感和方向感的感官。人类正是利用、发展他们的这些感官的功能,得以感知外部世界。站在社会工程学的立场,任何通过显性感觉(视觉或听觉)、眼晴的动作(眼神接触、口头上的差异、眨眼频率或眼睛暗示)、面部表情(惊喜、幸福、恐惧、悲伤、愤怒或厌恶)和其他抽象实体进行观察或感觉收集到的信息,都可增加成功获取目标信息的概率。大多数情况下,社会工程学工程师必须直接与目标进行沟通,才能获取机密信息或受限区域的访问权。沟通形式可以是直接见面的接触方式,也可以是通过电子辅助技术进行的不见面接触方式。在实际工作中,常见的沟通方式分为两类:面谈或问询。但是,这两种方法都受到其他因素的制约,例如环境因素、对目标的熟悉程度和控制沟通模式的能力。所有这些因素(沟通、环境、知识和沟通模式控制)构成社会工程学工程师必备的基本技能。整个社会工程学活动取决于攻击者与目标之间的信任关系。如果不能与目标建立足够的信任关系,则所有的努力都可能付之东流。

现在,社会工程学已经形成了一门独立学科。有关社会工程学框架(Social Engineering Framework)的详细信息,请访问作者的官方网站:http://www.social-engineer.org/。Christopher Hadnagy 运营着这个网站,并且发布了社会工程学领域的各种研究成果。他将这些信息向公众开放,以便于他人继续研究社会工程学攻击的具体方法。如果需要对用户进行安全培训,可参考有关资料。

8.2 攻击过程

本节将介绍一些发动社会工程学攻击的基本步骤。虽然这不是社会工程学攻击的唯一方法,甚至可以说没有成功率高的正式方法,但是本文的这些步骤可帮助您形成社会工程学的基本认识。情报收集、识别漏洞、规划攻击和执行攻击——社会工程学工程师通常都会采用这些某本步骤,它们可有效获取目标的有关信息或访问权限。

1. 情报收集:多种技术都可用于找到最容易攻破的渗透测试目标。例如,我们可采用髙级搜索工具收集被测公司员工的E-mail地址;通过社交网络收集被测单位员工的个人信息;识別被测单位组织使用的第三方软件包;参与他们的经营活动、社交活动和参加其会议等。以这些方式提供的情报,能够准确地推测出社会工程学意义上的“线人”。

2. 识别漏洞:一旦选定了关键线人,接下来就开始与对方建立信任关系和友谊。这样就可以在不伤害、不惊动目标的情况下,截获被测单位的机密信息。保持行动的隐蔽性和保密性,对于整个过程来说至关重要。另外,也可以调査被测单位是否使用了旧版本软件,继而通过恶意的E-mail或Web内容,利用软件漏洞感染当事人的计算机。

3. 规划攻击:您可以对目标采取直截了当的攻击方式,也可以利用电子辅助技术被动地攻击目标。以这些挖掘出来的情报入口着手,我们可以轻松地拟定攻击路径和攻击方法。例如,被测单位的客户服务代表Bob和我们的关系很好,他还信任我们;他就可能在计算机上执行我们发送的E-mail附件,而这种攻击不需要高级管理人员的任何事前授权。

4. 执行攻击:社会工程学攻击的最后一步是执行攻击计划。此时,我们应该保持足够的信心和耐心,主动监控和评估工作成果。完成这一步之后,社会工程学工程师掌握了充分信息,甚至可以访问被测单位的内部系统,这些成果足以让他们进一步地渗透被测单位。在成功执行攻击计划之后,社会工程学的攻击就可宣告结束。

8.3 攻击方法

社会工程学中,有5种有助于理解、识别、结交、准备目标的攻击方法。社会工程学按照它们的特点,将它们进行了归类。本节介绍了一些真实的案例,以帮助读者在实际情况中灵活运用各种所需方法。请注意这些攻击方法针对的是个人的心理学因素,要想提高这些方法的效用,就应该进行定期的训练和练习。

8.3.1 冒名顶替

攻击人员常常假装成他人以获取对方的信任。例如,在获取目标人员的银行信息方面,只要目标人员使用 E-mail,我们就可以进行钓鱼攻击。这种攻击属于近乎完美的攻击方案。当决定使用钓鱼攻击之后,攻击人员要大量地收集目标人员用过的 E-mail 地址,然后伪造出与原银行界面一样的网页界面,以诱骗目标人员。

完成了以上准备之后,攻击人员会草拟并发送一份正式行文的E-mail(例如,银行账户更新通知)。这些E-mail看上去就像真正银行发出来的邮件,要求目标人员访问某网址更新账户信息。不过,邮件提到的网址将把目标人员提交的信息转发给攻击人员。攻击人员事先掌握了特定的 Web 技术,他们使用多种先进的工具(例如 SSLstrip)就可以通过自动化手段轻松有效地达成预定任务。与那些借助他人帮助的欺骗方法相比,这种方法通过模拟银行业务的手段可直接达成冒名顶替的目的。

8.3.2 投桃报李

通过利益交换的方式达成双方各自利益的行为,被称为投桃报李。这类攻击需要长期业务合作达成的非正式(私人)关系。利用公司之间的信任关系,可以轻松地找到可获取特定信息的目标人员。例如Bob是一个专业黑客,他想知道ABC公司办公大楼的物理安全策略。进行仔细考察之后,他决定制作一个廉价销售古玩的网站,以吸引两名雇员的关注。Bob 可事先通过社交网站掌握这两人的个人信息,了解他们的 E-mail 地址、网络论坛等资料。在这两人之中,Alice在Bob的网站上定期采购商品,成为了Bob的主要目标。Bob决定要以一件稀有古董换取她们公司的内部文件。利用人类心理学因素,他将向Alice发送了E-mail,以转让这件稀有古董为筹码,要求Alice提供ABC公司的物理安全策略。在混淆了工作责任和个人利益的状态下,Alice把公司信息透露给了Bob。在创建骗局的同时,通过价值交换的事情强化私人关系,可成为社会工程学攻击的有效手段。

8.3.3 狐假虎威

冒充目标单位业务负责人的身份从而干预正常业务的做法就是狐假虎威。有些人认为,这种攻击方法属于冒名顶替的一种特例。人们会出于本能下意识地接受权威和髙级管理人员的指示,这个时候他们会无视自己否定性的直觉。这种天性使我们容易在特定的威胁面前毫无抵抗力。例如,某人要通过XYZ公司的网络管理员获取网络认证的技术细节。经过一段时间的专注分析,他可以通过利益交换方法获得网络管理员和CEO的电话号码。后来,他使用来电号码的伪造服务(例如,www.spoofcard.com)给网络管理员打电话。此时,网管会认为该电话来自CEO,将遵从攻击人员的指示。这种假冒权威人员身份的狐假虎威的做法,利用了目标人员必须遵从公司高级管理人员指示的规律,诱导目标人员泄露信息。

8.4 啖以重利

人们常说“机不可失”,他们特别关注所谓机不可失的宝贵机会。这些想法都是人性贪婪一面的写照。啖以重利的方法利用了人们渴求谋利机会的贪婪心理。著名的 Nigerian 419 Scam(www.419eater.com)是利用人类贪欲的典型例子。让我们举一个例子,Bob想要收集XYZ大学里学生的个人信息。在他获取所有学生的E-mail地址的情况下,他可以向学生们发送邮件并宣告:提供个人信息(姓名、地址、电话、电子邮件、出生日期、护照号码等)将免费获赠 iPod。由于这个创意专门针对在校学生设计,而且足以使他们确信能够免费获得最新的 iPod,所以多数的在校学生会落入这个骗局。在企业界,相应的攻击方法通常鼓吹可以获得最大商业收益,达成业务目标。

8.5 社会关系

作为人,我们需要某种形式的社会关系,以分享思想、感情和想法。社会关系最易受攻击的部分是“性”。多数情况下,异性总是互相吸引。由于这种强烈的感情和信任的错觉,人们可能在不意间向对手透露信息。很多线上的社交门户网站都提供了见面和聊天的服务,以促进用户间的社会交际。Facebook、MySpace、Twitter、Orkut 等网站都是如此。例如, XYZ公司聘请了Bob,要他获取ABC公司财务策略和市场营销战略以保持自身的竞争优势。他首先査找对方公司的雇员信息,发现 ABC 公司负责所有业务运营的人是一个叫作 Alice的女孩。因此,他假装是一个普通的工商学的研究生,试图与Alice取得联系(例如,通过Facebook)。后来,Bob 蓄意营造遇见 Alice 的机会,共同出席聚会、年庆活动,一同造访舞厅、音乐厅等地方。通过在见面期间的攀谈,Bob自然而然地获取到ABC公司有用的财务和市场策略信息。请记住,达成的关系越有效,越信任,就越有利于社会工程学工程师达到目标。在信息安全方面还有很多简化这些操作的工具。下一小节将会介绍的SET工具就是典型的社会工程学工具。

8.6 Social Engineering Toolkit(SET)

Social Engineering Toolkit(SET)是一款先进的多功能的社会工程学计算机辅助工具集。它由 TrustedSec(https://www.trustedsec.com)的创始人编写,可以行之有效地利用客户端应用程序的漏洞获取目标的机息(例如E-mail密码)。SET可实现多种非常有效且实用的攻击方法。其中,人们常用的方法有:用恶意附件对目标进行E-mail钓鱼攻击、Java applet 攻击、基于浏览器的漏洞攻击、收集网站认证信息、建立感染的便携媒体(USB/DVD/CD)、邮件群发攻击及其他类似攻击。它是实现这些攻击方法的合成攻击平台。充分利用这个程序的极具说服力的技术,可对人的因素进行深入测试。

如需启动SET,可在桌面菜单中依次选中Applications | Kali Linux | Exploitation Tools | Social Engineering Toolkit | setoolkit。

或者在终端中加载SET程序。

root@kali:~# setoolkit

上述指令将显示如下选项(见图8.1)。

本例将演示通过恶意PDF附件发起钓鱼攻击的方法。在收件人打开附件时,他们的主机将被攻陷。

不要使用SET工具集自带的更新功能更新SET程序包。您应该使用Kali Linux 系统的更新功能,以获取SET 软件的更新。

定向钓鱼攻击

如果采用这种攻击方法,我们就要首先创建一个配合恶意PDF附件的E-mail模板,再选择适当的PDF exploit payload,然后设置攻击平台与目标主机之间的连接关系,最后通过Gmail向目标发送这封E-mail。需要注意的是,您可以通过Kali Linux自带的sendmail程序伪造原始发件人的 E-mail 地址和 IP 地址。Sendmail 的配置文件是/usr/share/set/config/set_config。有关程序的详细信息,请参考Social Engineer Toolkit(SET)的官方说明:http://www.social-engineer.org/framework/Social_Engineering_Framework。

这种攻击方法的具体步骤如下。

1. 在SET 程序的最初菜单里选择1,进入图8.2 所示的设置界面。

2. 我们选择1,即Spear-fishing Attack Vectors,然后进入图8.3 所示的设置界面。

3. 在上述选项中,我们必须选择 3,创建社会工程学邮件的模板。然后,我们书写邮件正文,如图8.4所示。

4. 虽然我们在上一步里写好了邮件的正文,但是并没有设置邮件的格式。模板生成程序会把您编辑的内容当作模板的一部分套用格式模板。在编辑完正文之后,使用Ctrl+C键返回上级菜单。然后,进行E-mail攻击的有关设置。我们从Perform a Mass Email Attack菜单里选择1,再选择6,即Adobe CoolType SING Table“uniqueName”Overflow选项,如图8.5所示。

5. 接下来设置payload 类型。本例应该选择6,即Windows reverse TCP shell。然后设置目标主机应当连接到的攻击平台(通常是Kali Linux 主机)的IP 和端口。本例假设攻击平台的IP地址是192.168.1.1,服务端口是5555。我们进行相应设置,如图8.6所示。

6. 然后我们更改文件名,以使文件名称引人注目。我们把 payload 的文件名改成了BizRep2010.pdf。然后,我们要让SET知道它要如何处理我们的payload。我们选择 1,向单个 E-mail 地址发送 payload;然后再选择 1,使用先前编辑好的邮件模板。现在,您的屏幕大体会是图8.7所示的这种情况。

7. 接下来,我们选择先前创建的 E-mail 模板(11)。这样,SET 将在后续的社会工程学攻击里重复利用这个模板。您创建的模板的质量,很大程度上决定了钓鱼战役的实际效果。然后,我们使用有效的E-mail中转服务器或Gmail账户向目标人员发送攻击性E-mail。

只有在测试条款里存在相应测试内容且客户明确理解测试内容的情况下,您才可以进行这种攻击测试。SET工具把感染文件发送给E-mail收件人,这种行为可能会引发法律问题。您需要参照发起测试地区的当地法律文件了解有关的法律规定。一旦您在SET中设置了E-mail信息,它就会立即建立连接发送文件。程序会在没有任何警告或提示的情况下直接发送E-mail。

8. 至此,我们已经向目标发起了攻击。现在我们等待受害人打开我们的恶意PDF 文件。在他/她打开PDF附件的时候,我们将通过反射shell连接到被害人电脑的shell。请注意,我们配置的 IP 地址 192.168.1.1 是攻击人员主机的 IP 地址(也就是Steven电脑的IP),它在5555端口受理被害人电脑反射shell返回的连接。

通过上述步骤,我们就完成了向目标发起社会工程学攻击的操作,并可远程访问被害人的主机。我们可在shell的交互式提示符下执行Windows命令。

SET 可同时对一人或多人进行电子邮件的钓鱼攻击。它整合了可定制的 E-mail 功能,便于社会工程学工程师制定安全的攻击路线。这种功能可在攻击多个公司员工的同时保持攻击的隐蔽性。

SET 的作者不断地更新着这个程序,以适应当前技术的剧烈变化。不过,它的功能可见一斑。本书强烈建议读者访问作者的网站,继续领略 SET 的风采。它的官方网站是https://www.trustedsec.com/downloads/social- engineer-toolkit/。

8.7 本章总结

在本章中,我们阐述了社会工程学在生活中各领域的常见用法。渗透测试人员可以根据实际情况采取相应的社会工程学策略,获取目标的敏感信息。人性本身非常容易受到这种技术的欺骗攻击。为了全面介绍社会工程学的技巧,本文讨论了构成人类心理学模型的几个因素,这些因素包括沟通、环境、知识和沟通模式控制。这些心理学原则可帮助攻击人员根据被测目标的实际情况,拟定适用的攻击过程(情报收集、确定漏洞点、规划攻击和执行攻击)和攻击方法(冒名顶替、投桃报李、狐假虎威、啖以重利和社会关系)。随后,我们演示了 SET 的使用方法,它具有在线进行自动化社会工程学攻击的强大功能。

相关图书

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

相关文章

相关课程