4-1 渗透测试方法论
方法论是指在指定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。
渗透测试方法论是指先前的安全人员在测试和评估网络、应用、系统或三者结合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结出的一套理论。
1. 通用渗透测试框架
该框架(方法论)是从项目经理(技术管理)的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了经典的审计测试工作和渗透测试工作会涉及到各个阶段。一次完整的渗透测试的方法步骤如下:
- 范围界定
- 信息收集
- 目标识别
- 服务枚举
- 漏洞映射
- 社会工程学
- 漏洞利用
- 权限提升
- 访问维持
- 内网渗透(可选)
- 痕迹清理(可选)
- 文档报告
1.1 范围界定
开始技术性安全评估之前,要明确目标范围和一些外在条件。即:
- 测试对象是什么?
- 黑盒测试/白盒测试?
- 那些因素会限制或影响渗透测试过程?
- 需要多久才能完成测试?
- 此次测试应当达成什么样的目标?
1.2 信息收集
划定范围后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开的显性、隐形资源尽可能收集目标相关信息,收集的信息越多,渗透测试成功的概率越大。但不是一味的什么都收集,到处乱撞,而不是把时间大把的耗费在信息收集上,要能分辨哪些是重要的、敏感的信息,哪些是无关紧要的信息。
重要的信息包括:域名及DNS信息、IP信息、电子邮件地址、电话号码、个人信息、用户账户等
1.3 目标识别(即主机扫描)
这个阶段主要任务是识别目标的网络状态、操作系统和网络架构。尽可能完整的呈现目标网络里各种联网设备或技术的完整关系(内网结构、通信关系和路由关系),做出一个网络拓扑。
目标识别说白了就是主机扫描。
1.4 服务枚举(即端口扫描)
这一阶段根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口,再通过这些开放的端口来列出目标系统上运行的服务。通过对这些信息进行深度分析后,是为下一步发觉目标网络基础设施中可能存在的漏洞作铺垫和准备。
服务枚举说白了就是端口扫描。
1.5 漏洞映射
可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。
漏洞映射说白了就是查找已知和未知的漏洞,即找漏洞。
1.6 社会工程学
如果目标网络防护做得好,很难找到突破口,社会工程学欺骗的艺术将起到抛砖引玉的作用,社会工程学算是一张王牌,一种降维打击手段,一种对人性弱点和漏洞的攻击。
通常对目标组织中的人员进行定向攻击,这很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装有后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。又如,伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至诱使有人出现在某个地点等等这些都属于社会工程学攻击。
1.7 漏洞利用
在发现并找出目标系统中的漏洞之后,就要考虑怎么利用它、怎么绕过防御等,总之就是使这个漏洞产生实际影响和价值。
-
若是存在已知漏洞,则可以使用已知的漏洞利用程序对目标进行渗透攻击;
-
若是0day漏洞,暂无现有的该漏洞利用工具,则要求审计员有代码编写的能力,自行编写一个针对该漏洞的利用工具,即定制EXP。
即这个阶段的主要任务就是思考如何对已发现的这些漏洞进行有效利用,进而为下一步控制目标系统(获取最高权限)作好铺垫。
1.8 权限提升
获取目标系统的控制权是渗透成功的标志。一旦拥有了目标的最高控制权,则意味着我们可以在目标系统上随心所欲做任何事情。
在上一步漏洞利用中,若我们通过漏洞仅获得了目标的普通用户权限,仅是一个阶段性胜利,并不是最终胜利,我们还需要想办法来进一步提升自己的权限,从而获得目标的超级用户权限或系统级权限。目的就是获取目标系统的最高权限。
1.9 访问维持
我们在获取目标系统的最高访问权限后,需要在一段时间内维护对目标系统的访问权限,这样当我们下一次想访问该目标系统时,可以节约我们的时间、精力。我们通过一些秘密的通信隧道维持对目标的访问权限。这些隧道往往基于特定协议、代理或者点对点方法的后门程序(木马程序)。
1.10 内网渗透(可选)
当我们成功攻下局域网内一台主机时,就是对该局域网撕开了一个口子,我们可以以被攻下的主机为跳板,进而攻击目标所处局域网里的其他主机。
1.11 痕迹清理(可选)
若是在真实的网络攻击中,以上步骤顺利完成后,可算是成功攻下目标系统,我们最后还需要清除我们攻击时留下的痕迹(如日志记录、流量记录等等),这样就会很难溯源和反查到攻击者。
1.12 文档报告
对整个渗透过程进行简要描述和总结,对目标薄弱环节提出安全建议。