Mtaun

Windows内网渗透_3.权限提升

3.1、UAC

UAC,即用户账户控制,其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序损坏系统的效果。

那如何寻找bypass uac的方法呢。我们可以找一些以高权限运行的,但是并没有uac提示的进程,然后利用ProcessMonitor寻找他启动调用却缺失的如dll、注册表键值,然后我们添加对应的值达到bypass uac的效果。

以高权限运行的进程图标一般有如下标志:

图片

我们win10以ComputerDefaults.exe作为bypass案例,ComputerDefaults.exe进程图标确实有个uac的标志(然后你双击打开会发现并没有uac提醒),

图片

我们利用ProcessMonitor对该进程的行为做一个监听:

先寻找HKCU:\Software\Classes\ms-settings\Shell\Open\Command 注册表,然后发现键值不存在,再寻找HKCR:\ms-settings\Shell\Open\Command\DelegateExecute

图片

因此当我们修改hkcu注册表后,运行ComputerDefaults.exe就会得到一个bypass uac后的cmd:

图片

图片

对了,当修改HKCU\Software\Classes\下的键值时,会同步修改HKCR下面的键值。

3.2、ms14-068

该漏洞可以在只有一个普通域用户的权限时,获取到域控权限。微软已经修复了该漏洞,对应的补丁号为kb3011780。下面介绍下漏洞的成因,先来一个Kerberos协议流程图:

##

图片

大致流程如下:

1、域用户登录时,向KDC的AS服务以自身密码加密的时间戳进行预认证;

2、域控的AS服务验证用户的密码是否正确。验证通过后,返回给用户一张TGT票据,该票据为krbtgt密码加密而成;

3、域用户拿着TGT向KDC的TGS服务申请访问Application Server的票据

4、域控的TGS服务验证TGT通过后,返回给域用户能够访问Application Server的票据,即ST,ST以Application Server的服务账号密码加密;

5、域用户拿着ST访问对应的Application Server;

6、Application Server验证ST,决定成功与否。

下面简述ms14-068的问题所在:

TGT中作为用户凭证,包含了用户名、用户id、所属组等信息,即PAC。简单点讲,PAC就是验证用户所拥有权限的特权属性证书。

默认PAC是包含在TGT中的,而出现ms14-068这个问题的原因在于用户在申请TGT时可以要求KDC返回的TGT不包含PAC(include-PAC为false),然后用户自己构造PAC并放入TGS_REQ数据包中的REQ_BODY中,KDC会解密PAC并加密到一个新的TGT中(正常应该返回一个ST)并返回给用户,此时这个TGT已经带入了我们构造的恶意的PAC。后面就是正常的kerberos流程了。

利用方法:

python ms14-068.py -u @ -s -d mimikatz.exe "kerberos::ptc TGT_user@domain.ccache" exit

也可以使用goldenPac.py来达到ms14-068+psexec的自动化利用:

goldenPac.py domain.com/username:password@dc.domain.com