Metasploit从入门到精通(1)
前言
渗透测试是一种有目的性的、针对目标机构计算机系统安全的检测评估方法。
渗透测试可以发现系统的漏洞和安全机制方面的隐患,并以此进行渗透攻击来取得目标计算机的控制权。
通过渗透测试可以知道目标机构的计算机系统是否易于受到攻击,现有的安全部署是否能妥善地抵御攻击,以及哪部分安全机制可能被绕过,等等。渗透测试的主要目的是改善目标机构的安全性。
渗透测试的各个阶段
前期交互阶段
作为渗透测试的第一个步骤,前期交互阶段将确定客户(可能是一个公司、机构或者网络)的渗透测试的关键细节。这一切都是在与客户进行商讨之后决定的。
这个阶段确定渗透测试的范围、目标以及代表客户进行测试时的特殊需求,例如特殊的权限、关键系统的访问许可等。
渗透测试的范围
这一部分需要确定渗透测试的范围并预估整个项目的工作量。同时要确定哪些目标在渗透测试范围内,哪些是不允许进行渗透测试的。
关于渗透范围的常规文档应该包含了如下问题的答案:
- 目标组织最大的安全问题是什么?
- 应该对哪些主机、网络地址范围或者应用程序进行测试?
- 在测试时,应该将哪些主机、网络地址范围或者应用程序排除在测试范围之外?
- 在测试范围内是否存在第三方系统或者网络?它们拥有了哪些系统?
- 渗透测试是在现场实地环境中进行还是在虚拟测试环境中进行?
- 渗透测试是否包括以下测试技术:使用ping对网络范围进行扫描、对目标主机进行端口扫描、对目标进行漏洞扫描、对目标进行渗透测试、应用程序级的操作、客户端Java/ActiveX逆向功能、物理渗透尝试、社会工程学。
- 渗透测试是否包括内部网络测试?如果包括的话,如何获取权限?
- 客户端/终端用户系统是否包含在测试范围内?如果包含的话,将会涉及多少客户?
- 是否允许使用社会工程学手段?如果允许的话,如何使用?
- 是否允许使用拒绝服务攻击?
- 是否可以使用具有破坏性的检查手段和渗透模块?
渗透测试的目标
这一部分要商定本次渗透测试预期达到的主要和次要效果。
有关渗透目标的常见问题列举如下:
- 这次渗透测试的商业需求是什么?
- 出于审计和标准化的目的
- 积极主动的内部决策以确定所有弱点
- 目标是什么?
- 列出目标的各种漏洞
- 证明各种漏洞的存在
- 测试各种事件响应
- 对网络、系统或者应用程序漏洞的渗透模块开发
- 以上全部
渗透测试用到的术语和定义
这一部分要向客户介绍整个测试过程中出现的专业术语和定义,以便客户能够更好地理解整个渗透测试工作。
渗透测试的规定
这一部分要商定完成渗透测试的工期,具体工作展开的进度表,渗透攻击的授权许可,以及定期召开会议以跟进渗透测试进程中出现的各种情况。
有关约定规则的常见问题列举如下:
- 希望在什么时候执行这些测试?
- 在工作时间
- 下班之后
- 在周末
- 在系统维护期间
- 这个测试是在生产环境下进行的吗?
- 如果生产环境不能受到影响,是否存在类似的环境(开发或者测试系统)可以用来进行渗透测试?
- 谁是技术要点的联系人?
信息收集/侦查阶段
在信息收集阶段,你需要尽可能采用各种方式来收集目标网络的所有信息。这个目标网络可能是互联网的一个网站,或者是一个社会性的组织,甚至可能是一个财力雄厚的老牌商业公司。
在这个阶段,最重要的是要通过各种社交媒体网络来收集相关信息,以及使用Google Hacking(一种使用特殊的查询方法通过Google搜索引擎收集敏感信息的方式)技术去寻找目标的相关信息。
另外,对目标使用主动扫描和被动扫描技术进行踩点(footprinting)也是一种可行的办法。
信息收集是整个渗透测试过程中最为重要的阶段之一。与尝试所有可行的渗透测试方法相比,对目标有适当的了解可以让测试者选择合适和准确的渗透测试攻击方式。
这一阶段涉及的步骤如下:
- 目标选择
选择攻击的目标,确定攻击达到的效果以及整个攻击过程花费的时间。 - 隐私收集
包括现场信息采集,检查使用的设备信息,甚至从丢弃的废品中收集信息。 - 踩点工作
包含针对目标的主动和被动扫描技术,例如网络端口扫描、banner获取等。 - 验证目标的安全机制
包含防火墙、网络流量过滤系统、网络和主机的保护措施的确认工作等。
了解测试环境
大多数时候,当渗透测试工程师开始进行渗透的时候,他们已经明确下一步要做什么了。这意味着如果他们看到一个Windows操作系统在运行,将会选择专门针对Windows操作系统的渗透模块(exploit)。
威胁建模阶段
为了保证我们的渗透测试能够正确进行,必须进行威胁建模。在这个阶段,主要的工作是模拟出对目标准确的威胁以及这些威胁的作用,并根据这些威胁可能对目标产生的影响对其进行分类。
根据之前在信息收集阶段作出的分析,在这个阶段我们可以确定最佳的攻击方式。
这一阶段将解决以下问题:
- 如何攻击指定的网络?
- 需要获得的重要信息是什么?
- 在攻击时采取什么方法最为合适?
- 对目标来说最大的安全威胁是什么?
漏洞分析阶段
漏洞分析是在一个系统或者一个应用程序中发现漏洞的过程。
这些漏洞多种多样,涵盖了很多方面,从服务器的配置到Web程序服务,从应用程序到数据库服务,从一个基于VOIP的服务器到基于SCADA的服务都可能存在漏洞。
在这个阶段包含了三个不同的机制,那就是测试、验证和研究。
测试包括主动测试和被动测试。验证包括去除误报和通过手动验证确认漏洞的存在。研究指的是发现并触发漏洞以确认它的存在。
渗透阶段和后渗透阶段
渗透攻击阶段可以利用之前漏洞分析阶段的成果。这个阶段一般被认为是真正的攻击阶段。在这个阶段,渗透测试者可以针对目标系统的漏洞使用对应的入侵模块获得控制权限。
报告阶段
在进行渗透测试时,创建整个渗透测试的正式报告是在最后一个阶段进行的。
渗透测试报告的重要组成部分包括:确定目标最为重要的威胁,将渗透得到的数据生成表格和图表,对目标系统的改进建议,以及这些问题的修复方案。
在虚拟环境安装Kali Linux
可以看看我的往期文章,有比较详细的安装方法。
Kali-Linux-2021.3保姆级安装教程【手把手教你安装Kali】
有任何问题也可以随时咨询博主,博主会根据自己的经验和知识讲讲自己的看法。如果是想要资料或者看的书也可以私信博主。
在开始使用Metasploit之前,需要有一个测试用的实验环境。建立这种环境最好的办法就是拥有数目众多的计算机,同时在这些计算机上安装不同的操作系统。然而,如果只有一台计算机的话,最好的办法就是建立一个虚拟的实验环境。
虚拟化技术在如今的渗透测试中扮演了十分重要的角色。由于硬件设备的价格相对昂贵,采用虚拟化技术可以使得渗透测试经济有效。在一台计算机上模拟出多个操作系统不仅可以节省大量成本,同时也降低了电力的使用和空间的占用。建立一个虚拟化的渗透测试环境可以避免对你的真实主机系统进行任何修改,并使得我们的所有操作都在一个独立的环境中进行。虚拟化的网络环境允许你的渗透测试在一个独立的虚拟网络中运行,从而无须使用或者修改主机系统的网络硬件。
安装VMWare16
安装Kali Linux
Metasploit 基础
Metasploit是一种安全框架,为渗透测试工程师提供了大量的渗透模块和扫描模块。
2003年H.D Moore创建了Metasploit,从那之后Metasploit便快速发展起来,如今被公认是最为流行的渗透测试工具之一。
Metasploit是一个完全的Ruby驱动项目,提供了大量的漏洞渗透、攻击载荷(payloa