2020年初,我通过了准备已久的Pentest+认证考试。我还写了一篇 考试指南,有兴趣的读者可以点击查看。
近期我打算花一点时间把Pentest+知识体系整理成一系列文章,巩固一下我对渗透测试的理解以及加深我对渗透测试的看法。
这一系列文章的大体内容纲要如下
第一章 渗透测试简介
第二章 前期交互
第三章 信息收集
第四章 漏洞识别
第五章 社会工程学
第六章 有线/无线网络利用
第七章 基于应用的漏洞利用
第八章 基于本地主机和物理的利用
第九章 后-利用 技术
第十章 渗透测试工具集介绍
第十一章 渗透报告
话不多说,直接进入第一个主题 ---->
第一章 渗透测试简介
什么是道德黑客(Ethical hacking)
我理解的黑客是指技术精湛的人,能发现漏洞并利用,黑客本身是中性的,没有褒贬的意思。换句话说就是一个技术精湛的人,可以做坏事也可以做好事。而道德黑客是指那些负责人的,有担当的,正义,善良,有职业荣誉感的黑客,简单的说就是做好事的黑客。有关道德的论述,本文不再多说,引用一句著名的哲言
“头顶有群星璀璨, 心中有道德法庭”。 -- 康德
为什么需要渗透测试
书中有这么一句话
We need to determine what it is we are protecting and whether our defenses can hold up to the threats that are imposed on them.
就是说渗透测试不仅仅要评估目标的脆弱性,还要在各种防御机制基础上,验证防御机制是否有效。我印象很深的是有一次我做固件分析,发现固件是经过加密的,我就直接让甲方提供一个未加密的固件。如果只是想进行漏洞识别,那也没什么问题,只是这么以来,就不能再称之为渗透测试了,只能说是漏洞识别或者脆弱性分析。
渗透测试的一部分内容就是绕WAF,IDS,IPC,Anti Virus等防御机制,所以渗透测试比漏洞识别更难,所有也更耗时,资费也更贵。
威胁及漏洞
引用CC认证文档 CCPART1V3.1R5中的描述
威胁主体带来威胁,这些威胁针对资产来说增加了风险,而资产所有者希望通过措施去减小风险。
威胁可以理解为一种有意识/无意识的“动机”。所有带来威胁的主体叫威胁主体。
漏洞/脆弱点可以理解为一种脆弱的状态。
利用以及后利用是一种动作/行为。
风险是威胁达成的概率。
一般而言,可以把威胁主体分为以下几类
1. 有组织的犯罪 2. 黑客行为主义者 3. 国家支持的黑客(大部分都是APT) 4. 内部威胁 5. 脚本小子
以一个例子来说明这些概念之间的关系
再举一个例子
所以说威胁主体和威胁是没办法控制的,以上面的例子来说,你不能控制别人偷盗的想法,不能控制下不下冰雹。
唯一能做的是减少漏洞,以及增加利用难度。还是以上面的例子来说
减少漏洞:检测所有门窗都是安全的; 把车停在车库中
增加利用难度:在客厅放置全景摄像头实时监控移动侦测。增加安全红外感应有人闯入则发起警报。
这就是渗透测试的职能,首先去挖掘安全漏洞,其次验证防护机制是否完善到能抵御威胁。
渗透测试方法论
渗透测试可以分为:黑盒,灰盒,白盒测试。黑->灰->白 根据测试人员获取到的信息由小到大来分类。黑盒是啥都不知道,白盒是啥都知道,其他都可归类为灰盒。一般由时间和预算决定采用什么方式测试
Time and money are typically deciding factors in the determination of which type of penetration test to complete.
已知的成熟的渗透测试方法论如下
- PTES(Penetration Testing Execution Standard)
- PCI-DSS
- Penetration Testing Framework
- NIST SP 800-115
- OSSTMM(Open Source Security Testing Methodology Manual)
- ISSAF(Information Systems Security Assessment Framework)
- OWASP Testing Project
测试之外
要知道要想把产品做安全,只依赖渗透测试是完全不够的,在OWASP Testing Guide 也说了“The SDLC is King”。
另外,渗透测试不只是发现漏洞并利用就足够了,渗透测试人员还需要透彻理解漏洞原理及漏洞修复/缓解方案,协助产品开发人员排查漏洞并修复。
In many insances, if you find a vulnerability in one area, it may indicate weakness in process or development practices that may have replicated or enabled similar vulnerabilities in other areas of the organization. It is therefore important for your client or the organization that hired you to carefully investigate weak systems or applications that are the results of ineffective security controls when remediating and not to simply deploy "point fixes"
渗透测试技能培训,给产品相关人员进行技能培训,让他们有安全漏洞意识,在开发过程能自测漏洞,并了解漏洞解决方案
第二章 前期交互
本章节内容包括测试计划,测试范围,协议签定等测试前期需要执行的过程。
以渗透测试执行者为乙方,渗透测试需求方为甲方,站在乙方的角度,需要在前期交互过程做
我把本章节主要内容,整理成两份表格,一份是调查问卷表,一份是前期交互表
其中调查问卷表的目标是让乙方通过调查问卷,初步了解甲方的需求和测试目标,为后期的范围,目标定义做铺垫
调查问卷表
前期交互表
注:
技术限制指:渗透测试不能做什么,比如不能用sqlmap跑,不能对xx系统进行拒绝服务测试等。
可提供的材料:API文档,SDK,产品说明书,产品架构文档,等
渗透评估日期声明:因为漏洞实时在变动,需要声明测试的截至日期
漏洞报告声明:报告仅以xx形式提供,并且不为甲方漏洞报告的遗失或泄露负责,并且不为漏洞被泄露后的利用负责
测试计划
文末提供了上述表格的下载链接
确认范围和目标
渗透测试可以分为两类,一类是基于目标,一类是基于兼容性
基于目标是指针对一个目标进行渗透测试,比如目标是数据库账户信息,那么渗透测试就是要评估是否有方式可能泄露或者破解数据库信息数据
基于兼容性是指针对一个法律/法规的兼容性测试,比如GDPR,等保2.0
确认是否关闭一些防御机制比如IPS,IDS,NAC,WAF等
确认测试范围是否覆盖无线网络
渗透测试策略:黑盒/灰盒/白盒
测试范围:黑名单 / 白名单
渗透测试涉及到的法律术语
合同(Contracts)
书面授权(Written Authorization)
工作说明书(SOW:Statement Of Work)
主要服务协议(MSA:Master Service Agreements)
保密协议(NDA:Non-Disclosure Agreement)
出口限制(Export Restrictions)
公司政策(Corporte Policies)
如果测试范围涉及到第三方(比如云服务厂商)的产品,也应该考虑法律层面授权问题
前期交互总结
本章节可以用以下几个词语概括:授权 --> 范围 --> 目标 --> 计划
参考文献
[1] Pentest+ Cert Guide