Windows提权(上)

系统内核漏洞提权

1、查找漏洞

  • 手动

提取辅助网站:https://i.hacking8.com/tiquan
通过systeminfo命令获取补丁后,用上面链接寻找可用内核提权漏洞。

  • 工具

WES-NGhttps://github.com/bitsadmin/wesng

2、利用漏洞
根据CVE搜寻利用程序exp,上传运行即可。

系统服务提权

总体思路即:将以系统权限启动的系统服务的二进制文件替换更改为后门文件,那么启动此服务时,即可获得系统权限。
用户对系统服务的访问权限列表:服务的访问权限
AccessChk工具可以枚举主机上存在权限缺陷的系统服务。

accesschk.exe /accepteula -uwcqv "Authenticated Users" *	# 枚举具有Authenticated Users标识的用户(即经过身份验证的用户)的权限
accesschk.exe /accepteula -uwcqv "Authenticated Users" HKLM\SYSTEM\CurrentControlSet\Services	# 具有写入权限的服务注册表
accesschk.exe /accepteula -uwcqv "Authenticated Users" RegSvc	# 是否有具有重启权限
accesschk.exe /accepteula -quv "C:\Program Files\xxx\"	#查看服务的二进制文件目录是否有写权限

主要分为以下几类:

  1. 不安全的服务权限:通过sc config命令修改指定服务的二进制文件路径
  2. 服务注册表权限脆弱:使用reg add修改服务注册表的ImagePath指向攻击载荷
  3. 服务路径权限可控:直接将服务路径下的二进制文件进行替换
  4. 未引用的服务路径:二进制文件的路径中包含空格且未有效包含在引号中,当系统尝试服务路径中的空格时,会以当前服务所拥有的权限进行。比如_C:\Program Files\xxx\ _会先去检查 _C:\Program.exe _文件。

MSI安装策略提权

MSI就是一种微软格式的安装包。
条件:MSI安装策略启用了永远以高特权进行安装
利用:MSF生成msi格式的后门,上传运行,即可

访问令牌

访问令牌是Windows的访问控制模型(ACM)的一个组成部分.
令牌分为:

  • 主令牌:与进程相关,由内核创建并分配给进程的默认访问令牌。每个进程都有,描述了当前进程关联的用户账户的安全上下文。
  • 模拟令牌:线程模拟客户端时,当同时具有主令牌和模拟令牌。

令牌窃取:从指定的进程中复制访问令牌,并将得到的访问令牌用于现有进程或新进程,以达到提取并绕过访问控制的目的。
令牌窃取只能在特权用户的上下文中才能完成。因为通过令牌创建进程要使用下面两个Windows API函数。
2个重要的Windows API函数:

  • CreateProcessWithTokenW 用于在指定令牌的安全上下文创建新进程。
  • CreateProcessAsUserA 用于在指定令牌表示的用户的安全上下文中创建新的进程。

这2个API函数分别要求用户拥有这2个特权

  • SeImpersonatePrivilege
  • SeAssignPrimaryTokenPrivilege/SeIncreaseQuotaPrivilege

而有这2个特权的账户也一般是系统管理员账户、系统服务账户。

令牌窃取

1、incognito.exe窃取令牌
……
2、msf窃取令牌

load incognito			# 加载模块
list_tokens -u			# 列出所有令牌
impersonate_token "NT AUTHORITY\SYSTEM"	# 窃取令牌
steal_token <PID>		# 从指定PID进程窃取令牌

利用令牌窃取获得TrustedInstaller权限

SYSTEM权限虽高,但依旧无法修改Windows系统文件。例如 C:\Windows\servicing 目录
NT SERVICE\TrustedInstaller账户具有这个目录的完全控制权限!

获取TrustedInstaller权限步骤:

  1. 启动 TrustedInstaller 服务,并记住PID

    sc start TrustedInstaller
  2. 窃取令牌

    steal_token <PID>

Potato家族

学习原理需要知道:COM对象?BITS对象?NTLM认证?NTLM Relay?NTLM反射?(网上的话术多得很)

我这里学习原理的时候发现,用国内的浏览器搜出来的都是些CSDN、博客园什么的文章,点进去一看都是一模一样的废话… 还是推荐用谷歌浏览器搜。

一些好的文章:

  • https://tttang.com/archive/1560/#toc__2
  • http://moonflower.fun/index.php/2022/05/01/329/
  • https://www.wangan.com/p/7fy747c482c3331f
  • https://www.geekby.site/2020/08/potato%E5%AE%B6%E6%97%8F%E6%8F%90%E6%9D%83%E5%88%86%E6%9E%90/#3-rotten-potato--juicypotato
  • ……

    Rotten Potato 烂土豆

    有时候列出来的令牌没有SYSTEM的令牌,上传执行一下烂土豆,就可以列出高权限令牌了。后续进行令牌窃取。
    execute -Hc -f rottenpotato.exe					# msf下执行
    list_tokens -u													# 列出所有令牌
    impersonate_token "NT AUTHORITY\SYSTEM"	# 窃取令牌

    Juicy Potato 多汁土豆

    跟烂土豆原理几乎完全相同。只是做了扩展。
    区别就是不只是可以利用BITS的COM对象了,可以利用多个COM对象。
    JuicyPotato.exe -t t -p C:\reverse_tcp.exe -l 6666 -n 135 -c {F89Vd9-9999-54SA-xxxx-xxxxxxxxxxx}
    
    #需要指定:
    #  -l	COM对象加载的端口
    #  -c	COM对象的CLSID
    #  -t	需要使用哪个API函数创建进程
    #  -p	要运行的攻击载荷
    #  -n	指定本地RPC端口(默认135)
    版本限制:
    只适用于Windows10 version 1809 和 Windows Server 2019之前的版本系统。
    在之后的系统,微软通过检查RPC绑定字符串中指定的端口修复了这个漏洞。

    PrintSpoofer(Pipe Potato)

    利用打印机组件路径检查中的一个bug,使高权限的服务能连接到我们创建的命名管道,以获得高权限令牌。

    Sweet Potato 甜土豆

    继承了Rotten Potato、Juicy Potato、PrintSpoofer……的功能。
    用来将 服务账户 权限提升 SYSTEM权限。

    Bypass UAC

    用户账户控制(UAC)是一种权限保护机制。
    针对 **非RID 500的管理员用户 **,在执行一些需要高权限的任务时会跳出来一个提示用户予以批准。
    相关辅助工具:UACME、msf的UAC模块……

    UAC白名单

    微软设置了为一些系统程序设置了白名单机制,白名单中的程序将不再询问。
    可以通过这些白名单程序进行DLL劫持、DLL注入、注册表劫持……绕过UAC并提权。
    1、寻找白名单程序
    工具:Sigcheck、Strings

白名单程序有一个共同特性:Manifest数据中的autoElevate属性值为True

2、监控白名单程序
使用Process Monitor监控:
image.png
找到读取数据的注册表路径,然后将要执行的攻击载荷写入。
3、提权
当再次执行这个白名单程序时,恶意程序就会随着执行。MSF执行getsystem命令即可提权成功。

DLL劫持

DLL即动态链接库。
在开启安全DLL搜索模式下,将按以下顺序进行搜索:

  1. 程序安装目录
  2. 系统目录(C:\Windows\System32)
  3. 16位系统目录(C:\Windows\System)
  4. Windows目录(C:\Windows)
  5. 当前工作目录
  6. PATH环境变量中列出的各目录

    DLL预加载劫持:若将同名恶意的DLL文件放在合法DLL文件所在路径之前的搜索位置,当应用顺序搜索DLL时,就会加载恶意的DLL。

前提:有写入权限,dll导出表函数要相同。
可用于权限持久化、权限提升。

通过劫持UAC白名单程序所加载的DLL文件,可以达到提权的目的。

但是这些UAC白名单程序几乎都位于可信任目录中,对标准用户不可写。
于是引出模拟可信任目录……

模拟可信任目录

已知Bypass UAC的条件有:

  1. autoElevate属性值为True
  2. 可执行文件的签名ok(即不能构造Manifest信息了)
  3. 位于可信任目录

模拟可信任目录原理:系统在检查可信任目录时,会自动去除末尾的空格。所以可以创建一个一模一样但是末尾有个空格的目录当做可信任目录,即模拟可信任目录。
再将白名单程序复制到模拟可信任目录中,配合DLL劫持绕过UAC提权。
例:C:\Windows\System32 -> C:\Windows \System32 \xx.exe

用户凭据操作

枚举Unattended凭据

Unattended(无人值守)安装允许在不需要管理员关注下自动安装。
无人值守的安装可能会在系统中残留一些配置文件,其中可能包含管理员的账号密码。
可以手动搜索,也可利用msf相关模块。

获取组策略凭据

域环境中,网络管理员往往通过下发组策略的形式对加入域的计算机的本地管理员密码进行批量修改。
域控制器会自动在SYSVOL共享目录生成一个XML文件保存了密码。AES-256加密,秘钥已公开。
可以利用MSF框架内置gpp模块自动化搜索SYSVOL共享目录的XML文件,并解密出密码。

HiveNightmare

CVE-2021-36934
由于ACL过于宽松,任何用户都可以从 系统卷影副本中读取 SAM、SYSTEM、SECURITY等文件。
利用程序:HiveNightmare.exe可以直接转储出SAM、SYSTEM、SECURITY等文件。
然后利用Impacket的secretsdump.py导出hash。

Zerologon 域内提权

CVE-2020-1472
可以重置域控密码