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