渗透测试流程介绍
在学习渗透测试之初,有必要先系统了解一下它的流程,静下心来阅读一下,树立一个全局观,一步一步去建设并完善自己的专业领域,最终实现从懵逼到牛逼的华丽转变。
渗透测试是通过模拟恶意黑客的攻击方法,同时也是在情况下对目标系统进行安全性测试和评估的过程。 需要强调的是,重点是测试,是过程,而不是不计后果的攻击或测试防御,它是一套科学流程,不局限于某一工具或技巧的运用。以下是渗透测试的几个知识板块,先从宏观上了解全景和各个板块的关系,了解每个板块中需要掌握的基本技能,不要一下子钻到一个相对生僻难懂的内容或案例,而是从易到难,逐步攻下各个知识点,在 Kali Linux 平台之上,从简单的例子开始,在老师指导下在靶机上通过实操来巩固技能。
渗透测试流程:
. 前期交互 (Pre-engagement Interactions)
渗透测试团队与客户组织进行交互讨论,重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。其中定义范围可以说是渗透测试中重要的组成部分之一,客户完全不知道他们需要测试的是什么也有可能,问卷调查是一种较好的形式,客户必须回答几个问题,以便可以正确地估计参与范围。下面列举一些典型的问题:
l 什么时间进行渗透测试?上班时间?下班时间?双休?
l 正在测试的IP地址总数是多少?哪些是例外保护对象?
l 是否存在可能影响渗透测试结果的设备?如防火墙,入侵检测系统
l 渗透到什么程度? 发现就算成功? 还是尽可能多?
l 能否提权获得高权限 (在Linux上为root,在Windows机器上为Administartor)
l 有多少无线网络?是否使用了访客无线网络?
l 是否有任何系统监控软件?
l 是否制定了灾难恢复程序?
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。和客户对上述目标达成一致意见后,拿到正式的委托书。
在学习阶段,我们有目标靶机,这个步骤可以暂时跳过,但在实际工作中一定是不可或缺的。
2. 情报搜集 (Intelligence Gathering)
许多公司没有考虑到在公共场合有关于他们公司及员工的大量信息,而这些信息可能成为被人利用的弱点。渗透测试团队尽可能地使用多种信息搜集工具,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。渗透测试者可以使用的情报搜集方法包括网站、、Google Hacking、whois查询、扫描探测、社交网络等。情报搜集能力是渗透测试者一项非常重要的技能,只有建立在足够信息分析的基础上,渗透测试才能游刃有余。因为信息越多,发现漏洞的几率越大。其中我们会重点学习常用的一些扫描探测的工具如 netdiscover, nmap, appscan, nessus 和 nikto 。
3. 威胁建模 (Threat Modeling)
在搜集到充分的情报信息之后,渗透测试团队成员要坐下来进行威胁建模与攻击规划。在威胁建模过程中,要对客户公司的组织资产进行分类和罗列,举例如下:
l 公司的内部政策、商业计划、路线图
l 公司的产品信息和源代码
l 公司的财务信息(如银行,信贷,股权账户)
l 公司的技术信息如基础设施信息,系统配置信息和用户帐户凭据
l 员工数据和客户数据
当识别出这些商业资产,分析不同资产的价值,便建立准确的威胁模型,通过团队的头脑风暴,进行缜密的情报分析与渗透思路整理,可以从大量的信息情报中理清头绪,确定出可行的渗透通道。这个步骤在学习阶段也可以暂时跳过。
4. 漏洞分析 (Vulnerability Analysis)
在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。
假设我们在前面步骤知道对方站点的 ftp 是 vsFTPd 2.3.4 ,可以在 Google 搜索 "vsFTPd 2.3.4 漏洞”, 就会发现它是笑脸漏洞(Backdoor Command Execution) 这样我们就可以针对性的进行渗透。常见的漏洞搜索网站还有 exploit-db.com 和 github.com 。
5. 渗透攻击 (Exploitation)
渗透攻击是渗透测试过程中进行打击并具有魅力的环节。在此环节中,渗透测试团队需要利用找出的安全漏洞,来真正入侵系统当中,获得访问控制权。渗透攻击可以利用公开渠道可获取的渗透代码,在一些场景中,渗透测试者还需要进行的漏洞利用,有可能需要手工编程或编译,并需要欺骗目标网络与绕过防御机制,才能成功达成渗透目的。Kali Linux 中也提供了很多现成的工具比如 Metasploit,来帮助我们顺利地攻击目标。
6. 后渗透攻击 (Post Exploitation)
后渗透攻击是很能体现渗透测试团队职业操守与技术能力的环节。前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,在得到客户允许的情况下,渗透测试团队进行权限提升并保持对机器的控制以供以后使用,就是常说的后门。同时需要和客户约定规则,以确保客户的日常运营和数据不会面临风险。一些重要的规则举例如下:
l 除非事先达成一致,否则将不会修改客户认为对其基础设施"至关重要"的服务。
l 必须记录针对系统执行的所有修改,包括配置更改。
l 必须保留针对受损系统采取的详细操作列表。
l 密码(包括加密形式的密码)将不会包含在最终报告中
l 测试人员收集的所有数据必须在测试人员使用的系统上加密。
l 除非客户在订立合同/工作说明书中明确,否则不得删除,或修改日志。
7. 形成报告 (Reporting)
渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告。这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,渗透过程中用到的代码(poc,exp等), 以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
渗透测试在具体实践中的一些问题:
1. 渗透测试一定要包含 "社会工程测试" 吗?
社会工程测试是个可选栏目,是否使用社会工程测试,双方要积极沟通,社会工程引入会带来的利和弊,测试负责人需要将详细指明,有利的一方面,当然是拓展了测试的维度,更好地揭示企业的安全漏洞,但也有潜在不利的一面,可能会发现了一些缺乏安全实践的员工和一些员工的不为人所知的隐私。最终是否使用社工,需要得到企业管理层的确认。
2. 如何将自动化融入渗透测试?
负责运维的人员已经能够把日志管理、补丁管理、报警管理等工作实现了自动化,提高了效率。那么当然可以添加一些自动化到渗透测试中,能更有效率,同时保持渗透测试过程的完整性。但在渗透测试中一般不可能实现全程自动化,例如获得数据库版本和进行SQL注入可以实现自动化,但整个过程不能被自动化。这个过程需要互动和专业知识来知道在哪里定位漏洞利用以及如何获得好的结果。大限度实施自动化是渗透测试的目标之一。
3. 公司已经通过了安全审计(Security Audit),还需要渗透测试吗?
需要。看过安全审计条目的小伙伴一定就知道,它们的覆盖的领域和范围还是不太相同的,虽然有一小部分关注点是类似的。
4. 做渗透测试的前景如何?
安全已经上升到战略层面,互联网信息办公室2016年12月27日发布《网络空间安全战略》,各行各业都加大了对网络安全的重视,特别是很多企业对网站或在线平台进行渗透入侵测试,提前发现系统潜在的各种高危漏洞和安全威胁有巨大的需求。所以渗透测试前景应该不错。
申请免费试听
只要一个电话
我们为您免费回电