渗透攻击是许多安全专家职业生涯中都曾攀登过的“山峰”,获取目标主机完全控制权的感觉就像你登临险峰之上,会有一种极佳的自我满足感,但有时还会有点令人恐惧。虽然近些年来渗透攻击技术得到了长足发展,但是多样化的系统与网络防护技术的实施应用导致使用简单的渗透攻击手段越来越难以成功。本篇文章中,我们将从Metasploit框架最基本的命令接口开始讲起,逐步介绍一些更深入的渗透攻击方法。
本篇中讨论的大多数攻击和自定义操作需要用到MSF终端(msfconsole)、MSF 编码器(msfencode),以及MSF攻击载荷生成器(msfpayload)。后两者已经集成为msfvenom。
渗透攻击基础
1. msf>show exploits
这个命令会显示Metasploit框架中所有可用的渗透攻击模块。在MSF终端中,你可以针对渗透测试中发现的安全漏洞来实施相应的渗透攻击。Metasploit团队总是不断地开发出新的渗透攻击模块,因此这个列表会越来越长。
2. msf> show auxiliary
这个命令会显示所有的辅助模块以及它们的用途。在Metasploit中,辅助模块的用途非常广泛,它们可以是扫描器
、拒绝服务攻击工具
、Fuzz测试器
,以及其他类型的工具。
3. msf>show options
参数(Options)是保证Metasploit 框架中各个模块正确运行所需的各种设置。当你选择了一个模块,并输入msf>show options
后,会列出这个模块所需的各种参数。如果当前你没有选择任何模块,那么输入这个命令会显示所有的全局参数,举例来说,你可以修改全局参数中的LogLevel,使渗透攻击时记录系统日志更为详细。
你还可以输入back命令,以返回到Metasploit的上一个状态。
当你想要查找某个特定的渗透攻击
、辅助
或是攻击载荷模块
时,搜索(search)命令非常有用。例如,如果你想发起一次针对SQL数据库的攻击,输入下面的命令可以搜索出与SQL有关的模块。
4. msf> show payloads
和show options
命令一样,当你在当前模块的命令提示符下输入show payloads
命令时,Metasploit 只会将与当前模块兼容的攻击载荷显示出来。在针对基于Windows操作系统的攻击中,简单的攻击载荷可能只会返回目标主机的一个命令行界面,复杂的能够返回一个完整的图形操作界面。输入下面的命令可以查看到所有活动状态的攻击载荷:
msf>show payloads
上面的命令将显示Metasploit中所有的可用攻击载荷,然而如果你正在进行一次实际的渗透攻击,你可能只会看到适用于本次渗透攻击的攻击载荷列表。举例来说,在msf exploit
(ms08_067_netapi)提示符下,执行show payloads
命令仅会显示下一段中的输出结果。
5. msf> show targets
Metasploit的渗透攻击模块通常可以列出受到漏洞影响目标系统的类型。举例来说,由于针对MS08-067漏洞的攻击依赖于硬编码的内存地址,所以这个攻击仅针对特定的操作系统版本,且只适用于特定的补丁级别、语言版本以及安全机制实现(在第14章和第15章中会有详细的解释)。在MSF终端MS08-067的提示符状态下,会显示60个受影响的系统(下面例子中只截取了其中一部分)。攻击是否成功取决于目标Windows系统的版本,有时候自动选择目标这一功能可能无法正常工作,容易触发错误攻击行为,通常会导致远程服务崩溃。
在这个例子中,你看到“自动选择目标”(Automatic Targeting)是攻击目标列表中的一个选项。通常,攻击模块会通过目标操作系统的指纹信息,自动选择操作系统版本进行攻击。不过,最好还是通过人工更加准确地识别出目标操作系统的相关信息,这样才能避免触发错误的、破坏性的攻击。的一个选项。通常,攻击模块会通过目标操作系统的指纹信息,自动选择操作系统版本进行攻击。不过,最好还是通过人工更加准确地识别出目标操作系统的相关信息,这样才能避免触发错误的、破坏性的攻击。
6. info
当你觉得show和search命令所提供的信息过于简短,可以使用info命令加上模块的名字来显示此模块的详细信息、参数说明以及所有可用的目标操作系统(如果已选择了某个模块,直接在该模块的提示符下输入info即可):
7. set 和unset
Metasploit 模块中的所有参数只有两个状态:已设置(set)和未设置(unset)。有些参数会被标记为必填项(required),这样的参数必须经过手工设置并处于启用状态。输入show options命令可以查看哪些参数是必填的;使用set命令可以对某个参数进行设置(同时启用该参数);使用unset命令可以禁用相关参数。后面的列表展示了set和unset命令的使用方法:
在上面我们设置目标IP地址(RHOST)为192.168.91.22(我们的攻击对象)。我们设置目标操作系统类型为4,即使用msf> show targets
命令所列出的“Windows XP SP2 English
(AlwaysOn NX)”。我们运行了show options
以确认所有的参数已设置完成。
8. setg和unsetg
setg
命令和unsetg
命令能够对全局参数进行设置或清除。使用这组命令让你不必每次遇到某个参数时都要重新设置,特别是那些经常用到又很少会变的参数,如LHOST。
9. save
在使用setg
命令对全局参数进行设置后,可以使用save
命令将当前的设置值保存下来,这样在下次启动MSF终端时还可使用这些设置值。在Metasploit中可以在任何时候输入save命令以保存当前状态。
在命令执行结果中包含设置值保存在磁盘上的位置(/root/.msf4/config),如果由于一些原因你需要恢复到原始设置,可以将这个文件删除或移动到其他位置。
攻击Metasploitable主机
让我们对Metasploitable主机进行一次不同的攻击。
通过nmap扫描,我们共发现21、22、23、25、53、80等共计22个开放的端口。
我们还可以看到这台主机操作系统为Debian,它正运行着vsftpd2.3.4版本。
让我们搜索一个vsftpd渗透攻击模块,并尝试用它来攻击这台主机。攻击流程如下:
选择该模块并设置payload
设置options的参数
发动攻击
这种类型的攻击称为命令执行漏洞攻击,攻击代码的可靠性通常接近100%,因此被标注为
“excellent”的Rank。注意在这个例子中我们使用了一个绑定(bind)的交互式shell,在目标主机上打开了一个监听端口6200,Metasploit为我们创建了一个直接到目标系统的连接(记住如果攻击防火墙或NAT网关后的主机,应当使用反弹式连接攻击载荷)。
资源文件
资源文件(resourcefiles)是MSF终端内包含一系列自动化命令的脚本文件。这些文件实际上是一个可以在MSF终端中执行的命令列表,列表中的命令将按顺序执行。资源文件可以大大减少测试和开发所需的时间,将包括渗透攻击在内的许多重复性任务进行自动化。
- 可以在MSF终端中使用resource命令载入资源文件
- 可以在操作系统的命令行环境中使用
-r
标志将资源文件作为MSF终端的一个参数传递进来运行。
下面这个简单的例子展示了如何创建一个能够显示Metasploit版本,并载入声音插件的资源文件:
如你所见,version
命令和load sounds
命令被写入一个名为resource.rc的文件中。
这个文件随后跟在-r参数后输入到msfconsole中,最后这个资源文件被载入,其中包含的两个命令被执行,其执行结果如图所示。
也可以在MSF终端直接导入
在实验环境中你可以尝试使用一个更为复杂的资源文件,自动地对某台主机发起攻击。
网友评论