在这本书中,我们已经讨论了关于Metasploit的多种技术和方法,涵盖了方方面面,从漏洞渗透模块的开发到Armitage脚本的编写。但是如果想要发挥出Metasploit的全部能力,还需要了解Metasploit框架的一些使用技巧与窍门。本章将介绍一些可以帮助我们使用Metasploit进行渗透测试的技巧和脚本。本章将围绕以下主题展开。
下面深入学习本书的最后一章,掌握一些非常酷的技巧与窍门。
首先我们要介绍一个非常优秀的脚本,自从使用它之后我就很少再去GitHub找同类的脚本了。Minion是Metasploit的一个插件,利用它可以很方便地进行渗透和开发。可以从https://github.com/T-S-A/Minion为Metasploit下载这个插件。
成功下载文件之后,将其复制到~/.msf4/plugins目录,然后启动msfconsole
。
在前面的章节中,我们已经看到了如何使用load
命令来将插件快速加载到Metasploit中。现在我们使用相同的方法来加载Minion插件,如上面的截图所示,命令为load minion
。当成功加载之后,切换到你刚刚工作的那个工作区,如果这个工作区中没有主机的话,就进行一次Nmap扫描。
因为db_nmap
扫描已经显示了大量的结果,所以下面看看Minion插件中使用了哪些选项。
太多了!可以看到目标主机上运行着MySQL服务。我们按照下图所示使用mysql_enum
命令。
意外吧?我们没有载入任何模块、设置任何参数,甚至没有特意启动任何模块,这是因为Minion插件已经自动帮我们完成了这些工作。我们可以看到目标主机上运行的MySQL的版本。下面来使用Minion中的MySQL攻击命令。
干得漂亮!插件Minion已经自动替我们完成了暴力破解攻击,并且使用用户名root和空白密码成功登录到了目标上。这个脚本令人欣喜的地方在于你可以随时对其进行编辑和定制,还可以添加更多的模块和命令,这一点也有助于你进行Metasploit的插件开发。
connect
代替NetcatMetasploit中提供了一个功能强大的connect
命令,它提供了和Netcat相类似的功能。假设一个系统shell正在等待来自目标系统上某个端口的连接,而我们不希望在Metasploit控制台中进行切换,这时就可以使用connect
命令来连接目标,如下图所示。
我们初始化了一个来自Metasploit框架监听器的连接,当我们还没有通过Metasploit获得反向连接时,就可以使用它去连接目标。
有些时候,我们可能不需要直接和被渗透主机进行互动。在这种情况下,我们就可以使用参数-z
,这样Metasploit就会将成功渗透产生的新会话切换到后台,如下图所示。
可以看到,我们已经打开了一个shell命令会话,不过像Meterpreter提供的那种高级控制权限才是我们所需要的。在这种情况下,我们就可以使用参数-u
来升级这个命令会话,这个过程如下图所示。
干得漂亮!我们已经成功将命令会话升级到了Meterpreter,从而获得了更高的控制权限。
在大型渗透测试场景中,我们需要同时对大量的系统进行测试,因此也会取得数量众多的Meterpreter shell。此时,最好为这些shell取一些容易辨识的名字。考虑下面这个场景。
我们可以使用参数-n
来为一个shell起名,这个过程如下图所示。
取的名字最好既容易理解又方便记忆,就像我们在上图中做的那样。
在自己喜欢的渗透测试框架上显示自定义提示符是不是很酷?其实要做到这一点并不复杂。要在Metasploit中显示自定义的提示符,只需对提示符变量进行设置。抛开能带来的乐趣不说,假设你是个记性不好的人,这样做也可以帮助你记住一些事情。例如,如果容易忘记当前使用的工作区,你就可以使用数据库变量%W
将其设置为提示符,如下图所示。
另外,你可以执行如下所示的一些操作。
可以看到,这里的%D
表示当前本地工作目录,%H
表示主机名,%J
显示当前正在运行的作业数量,%L
表示本地IP地址(使用这个变量非常方便),%S
表示我们当前所拥有的会话数量,%T
表示时间戳,%U
表示用户名,%W
表示工作空间。
很多时候,我们为某个扫描建立了专门的工作区,最后却忘记将扫描的结果保存在这个工作区中,而是仍然保存在了默认工作区中。不过,如果你掌握了Metasploit中的save
命令,那么这个问题就迎刃而解了。假设你现在已经切换了工作区,也完成了自定义提示符和其他一些操作,那么就可以输入save
命令来保存配置了。这意味着当下一次启动Metasploit的时候,你将会看到和之前一样的参数和工作区,如下图所示。
好了,让我们重新启动Metasploit,并查看这里面的设置是否和之前一模一样。
是的!Metasploit从配置文件中加载了所有内容。从现在起,你再也不用担心忘记切换工作空间了。
Metasploit中提供的handler
命令可以快速地建立handler,过程如下图所示。
从上图中可以看到,我们可以使用参数-p
来定义攻击载荷,使用参数-H
和-P
来指定目标主机和端口。使用handler
命令创建的handler会在后台工作。这里提到的后台工作任务可以使用rename_job
命令来改名,下面给出了一个完整的示例。
没错,我们可以利用sessions
命令和参数-c
在多个打开的Meterpreter会话中执行命令,如下图所示。
另外,在上图中我们也看到了,Metasploit十分智能地跳过了一个非Meterpreter会话,而所有的Meterpreter会话中都已经成功执行了这条命令。
社会工程学工具包(SET)是基于Python语言开发的,它主要以人作为渗透测试的目标。我们可以使用SET来完成钓鱼攻击、Web劫持攻击(让受害者以为要访问的网页已经移动到其他位置)、文件格式攻击(渗透目标系统上的特定软件)以及其他各种各样的攻击。SET最方便之处在于菜单驱动的操作,利用它可以快速启动各种攻击向量。
SET的使用说明请参见:https://www.social-engineer.org/framework/se-tools/computer-based/social-engineer-toolkit-set/。
SET对于生成客户端渗透模板已经很方便了,不过如果使用自动化脚本的话,这一切会更加便利,下面就是一个示例。
在上图中,我们为seautomate
工具指定了脚本se-script,这个操作将会产生一个攻击载荷并自动建立好一个对应的handler。如果想了解这个脚本的工作原理,可以打开它查看里面的内容。
你可能很想知道脚本中的这些数字是如何产生攻击载荷,以及如何建立handler的。
正如之前所讨论的一样,SET是一个菜单驱动的工具。所以这个脚本中的数字就表示你在菜单中所选择的选项。下面我们把这个脚本分解来看。
脚本中的第一个数字是1,表示选择Social-Engineering Attacks菜单中的第一个选项。
脚本中的第二个数字为4,表示如下图所示,选中了Create a Payload and Listener选项。
再下面的数字为2,表示所选择的攻击载荷类型为Windows Reverse_TCP Meterpreter,如下图所示。
接下来,我们需要指定监听器的IP地址,就是脚本中的192.168.10.113。我们可以看到这个值。
在下一个命令中,我们输入了4444,这是监听器所使用的端口。
我们在下一条命令中使用了yes
。这个值表示同意监听器的初始化。
自动输入yes
之后,控制权就交给Metasploit了,它会自动建立一个反向的handler,如下图所示。
我们可以按照前面讨论的方法来实现SET中的任何攻击。SET本身就已经非常方便快速了,不过如果使用seautomate
工具的话,你就会有“飞一样”的感觉。
你可以通过访问以下链接找到一些优秀的Metasploit速查手册:
关于渗透测试的更多信息可以访问SANS的官方网站:https://www.sans.org/security-resources/posters/pen-testing。另外,https://github.com/coreb1t/awesome-pentest-cheat-sheets提供了很多渗透测试工具和技术的速查手册。
在本书中,我们从实践的角度讲解了Metasploit以及各种相关内容。我们讨论了漏洞渗透、模块开发、向Metasploit移植渗透模块、客户端攻击、基于服务的渗透测试、规避技术、执法机构所采用的技术,以及Armitage等。另外也讲解了Ruby编程的基础知识和Armitage中的Cortana。
当你读完本书之后,如果还想要进一步扩展的话,可以访问如下资源。