在学习渗透测试之初,有必要先系统了解一下它的流程,静下心来阅读一下,树立一个全局观,一步一步去建设并完善自己的专业领域,最终实现从懵逼到牛逼的华丽转变。渗透测试是通过模拟恶意黑客的攻击方法,同时也是在授权情况下对目标系统进行安全性测试和评估的过程。 需要强调的是,重点是测试,是过程,而不是不计后果的攻击或测试防御,它是一套科学流程,不局限于某一工具或技巧的运用。
渗透测试流程:
1. 前期交互 (Pre-engagement Interactions)
渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。其中定义范围可以说是渗透测试中最重要的组成部分之一,客户完全不知道他们需要测试的是什么也有可能,问卷调查是一种较好的形式,客户必须回答几个问题,以便可以正确地估计参与范围。
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。和客户对上述目标达成一致意见后,拿到正式的授权委托书。
2. 情报搜集 (Intelligence Gathering)
许多公司没有考虑到在公共场合有关于他们公司及员工的大量信息,而这些信息可能成为被人利用的弱点。
渗透测试团队尽可能地使用多种信息搜集工具,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。渗透测试者可以使用的情报搜集方法包括网站微信微博、邮箱、Google Hacking、whois查询、扫描探测、网络监听、社交网络等。
情报搜集能力是渗透测试者一项非常重要的技能,只有建立在足够信息分析的基础上,渗透测试才能游刃有余。因为信息越多,发现漏洞的几率越大。其中我们会重点学习常用的一些扫描探测的工具如 netdiscover, nmap, appscan, nessus 和 nikto 。
3. 威胁建模 (Threat Modeling)
在搜集到充分的情报信息之后,渗透测试团队成员要坐下来进行威胁建模与攻击规划。在威胁建模过程中,要对客户公司的组织资产进行分类和罗列,举例如下:
公司的内部政策、商业计划、路线图
公司的产品信息和源代码
公司的财务信息(如银行,信贷,股权账户)
公司的技术信息如基础设施信息,系统配置信息和用户帐户凭据
员工数据和客户数据
当识别出这些商业资产,分析不同资产的价值,便建立准确的威胁模型,通过团队的头脑风暴,进行缜密的情报分析与渗透思路整理,可以从大量的信息情报中理清头绪,确定出最可行的渗透通道。这个步骤在学习阶段也可以暂时跳过。
4. 漏洞分析 (Vulnerability Analysis)
在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。
假设我们在前面步骤知道对方站点的 ftp 是 vsFTPd 2.3.4 ,可以在 Google 搜索 "vsFTPd 2.3.4 漏洞”, 就会发现它是笑脸漏洞(Backdoor Command Execution) 这样我们就可以针对性的进行渗透。常见的漏洞搜索网站还有 http://exploit-db.com 和 http://github.com 。
5. 渗透攻击 (Exploitation)
渗透攻击是渗透测试过程中进行精确打击并最具有魅力的环节。在此环节中,渗透测试团队需要利用找出的安全漏洞,来真正入侵系统当中,获得访问控制权。渗透攻击可以利用公开渠道可获取的渗透代码。
6. 后渗透攻击 (Post Exploitation)
后渗透攻击是很能体现渗透测试团队职业操守与技术能力的环节。
前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,在得到客户允许的情况下,渗透测试团队进行权限提升并保持对机器的控制以供以后使用,就是常说的后门。同时需要和客户约定规则,以确保客户的日常运营和数据不会面临风险。一些重要的规则举例如下:
除非事先达成一致,否则将不会修改客户认为对其基础设施"至关重要"的服务。
必须记录针对系统执行的所有修改,包括配置更改。
必须保留针对受损系统采取的详细操作列表。
密码(包括加密形式的密码)将不会包含在最终报告中
测试人员收集的所有数据必须在测试人员使用的系统上加密。
除非客户在订立合同/工作说明书中明确授权,否则不得删除,清除或修改日志。
7. 形成报告 (Reporting)
渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告。
这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,渗透过程中用到的代码(poc,exp等), 以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
文档获取方式:
加入我的软件测试交流群:822269834免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取