TryHackMe Attacktive Directory Write-Up
Merhaba. Bu yazımda TryHackMe Attacktive Directory isimli Active Directory lab write-up‘ını yapacağım. Siber Güvenlik alanında çalışan uzmanların sızma testi yaparken sıklıkla karşılaştığı bu yapının lab haline getirilmiş olması oldukça faydalıdır. Odaya https://tryhackme.com/room/attacktivedirectory buradan erişilebilir. TryHackMe Attacktive Directory odası oldukça zevkli ve Active Directory konusunda oldukça öğretici bir oda.
Impacket Install
İlk olarak Active Directory saldırılarında sıklıkla kullanılan araçların yer aldığı İmpacket reposunu kendi makinemize klonlayalım. /opt dizinine klonluyorum fakat siz istediğiniz dizine klonlayabilirsiniz.
git clone https://github.com/SecureAuthCorp/impacket.git /opt/impacket
Burada /opt dizini altına klonlama işlemini gerçekleştiriyorum. Ardından gerekli modüllerin yüklenmesi amacı ile aşağıdaki komutu çalıştırıyorum.
pip3 install -r /opt/impacket/requirements.txt
Daha sonra ilgili dizine giderek setup.py dosyasını çalıştırarak kurulumu tamamlıyorum.
cd /opt/impacket/ && python3 ./setup.py install
Kurulum tamamlandığına göre sonra çözüme başlayalım.
TryHackMe Attacktive Directory Write-Up
İlk olarak nmap taraması yapalım.
nmap -sS -sV -A 10.10.34.222
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-29 23:03 +03
Nmap scan report for 10.10.34.222
Host is up (0.084s latency).
Not shown: 987 closed ports
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2021-01-29 20:04:09Z)
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
| rdp-ntlm-info:
| Target_Name: THM-AD
| NetBIOS_Domain_Name: THM-AD
| NetBIOS_Computer_Name: ATTACKTIVEDIREC
| DNS_Domain_Name: spookysec.local
| DNS_Computer_Name: AttacktiveDirectory.spookysec.local
| Product_Version: 10.0.17763
|_ System_Time: 2021-01-29T20:04:28+00:00
| ssl-cert: Subject: commonName=AttacktiveDirectory.spookysec.local
| Not valid before: 2020-09-16T22:48:24
|_Not valid after: 2021-03-18T22:48:24
|_ssl-date: 2021-01-29T20:04:36+00:00; 0s from scanner time.
Tarama ardından soruları cevaplamaya başlayalım. Soruları cevaplamadan hosts dosyama spookysec.local adresini ekliyorum.
1. Enumerate the DC
What tool will allow us to enumerate port 139/445?
139 ve 445 numaralı portları enumeration yapmak için enum4linux isimli aracı kullanabiliriz. Enum4linux: windows ve samba sistemlerinde enumeration yapmak için kullanılır.
What is the NetBIOS-Domain Name of the machine? (THM-AD)
Makinenin NetBIOS etki alan adını enum4linux taraması sonucu elde edebiliriz.
What invalid TLD do people commonly use for their Active Directory Domain? (.local)
Nmap taraması sonucu gördüğümüz üzere Active Directory alanlarında kullanılan TLD .local
2. Enumerate the DC pt 2
What command within Kerbrute will allow us to enumerate valid usernames? (userenum)
Bu kısımda bizden Kerbrute aracını kullanmamız istenmektedir. İlk olarak Kerbrute aracını yükleyelim. Soru içerisinde verilen bağlantıdan uygun aracı yüklüyorum.
kerbrute -h komutu ile aracı inceleyip soruyu cevaplıyoruz.
What notable account is discovered? (These should jump out at you) (svc-admin)
Hangi önemli hesabın keşfedildiğini soruluyor. Soru içerisinde verilen userlist ve passwordlist dosyalarını indirip brute force yaparak soruyu cevaplayalım.
Brute force sonucu elde ettiğimiz veriler ile soruyu cevaplayıp devam ediyorum.
3. Exploiting Kerberos
We have two user accounts that we could potentially query a ticket from. Which user account can you query a ticket from with no password? (svc-admin)
Bu sorunun cevabını elde ettiğimiz kullanıcılardan olan svc-admin olarak cevaplayıp devam ediyorum.
Looking at the Hashcat Examples Wiki page, what type of Kerberos hash did we retrieve from the KDC? (Specify the full name) (Kerberos 5 AS-REP etype 23)
İlk olarak GetNPUsers.py aracı ile kerberos hashi elde ediyoruz ve bunu krbhash isimli bir dosyaya kayıt ediyorum. Hint içerisinde verilen adrese gidip hash türünü vererek soruyu cevaplıyorum.
What mode is the hash? (18200)
Hint içerisinde bize verilen adrese gidelim. Elde ettiğimiz hashin hash mode değerine bakalım ve soruyu cevaplayalım.
Daha sonra hashcat aracını kullanarak bize verilen passwordlist ile hashi kırmaya çalışalım.
Now crack the hash with the modified password list provided, what is the user accounts password? (management2005)
Enumerate the DC pt 3
Using utility can we map remote SMB shares? (smbclient)
Which option will list shares? (-L)
How many remote shares is the server listing? (6)
There is one particular share that we have access to that contains a text file. Which share is it? (backup)
Elde ettiğimiz kullanıcı adı ve parola ile devam edelim. Burada bizden smbclient kullanmamızı istiyor fakat ben onda hata aldığım için smbmap kullanacağım. Sorulan sorular smbclient üzerinden soruluyor bu cevapları smbclient man sayfasından elde edebiliriz.
smbmap çıktısına baktığımda backup dizininin read only olduğunu görüyorum. backup dizinine gidelim.
backup dizini içerisinde backup_credentials.txt isimli bir dosya yer almakta.
What is the content of the file? (YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw)
Metin belgesi içeriğine bakmamız isteniyor. Smbclient‘te yaşadığım ve çözemediğim sorunlardan dolayı biraz araştırma yaptıktan sonra paylaşımı bağlayarak ilerleyeceğim.
Paylaşımı bağlayıp içeriğine baktığımda base64 ile encode edilmiş bir veri görüyorum. Bu veriyi terminal üzerinden decode ederek soruları cevaplayıp devam ediyorum.
Decoding the contents of the file, what is the full contents? ([email protected]:backup2517860)
Elevating Privileges
Bu kısımda bizden elde ettiğimiz veriler ile impacket içerisinde yer alan secretsdump.py isimli scripti kullanmamız isteniyor. Bu, bu kullanıcı hesabının (etki alanı denetleyicisiyle senkronize edilen) sunduğu tüm parola karmalarını almamıza olanak tanır. Bundan yararlanarak, AD Alanı üzerinde tam kontrole sahip olacağız.
secretsdump.py çıktısında birçok kullanıcı ve hash elde ediyoruz.
What method allowed us to dump NTDS.DIT? (DRSUAPI)
What is the Administrators NTLM hash? (0e0363213e37b94221497260b0bcb4fc)
Elde ettiğimiz çıktıdan soruları cevaplayarak devam ediyorum.
What method of attack could allow us to authenticate as the user without the password? (pass the hash)
Pass the Hash Nedir?
Windows server veya istemcileri parolaları NT Hash algoritması ile hashlemektedir ve bu parolaları hashlenmiş bir biçimde saklamaktadır. Saldırganlar ise RAM üzerinden ilgili hash bilgilerini çalarak hedef sisteme erişilmesine Pass The Hash Attack denilmektedir.
https://www.muhammedaygun.com/2020/12/pass-hash-attack-nedir.html
Pass The Hash atağın amacı domain içerisine yayılmak ve hak yükseltmektir.
Windows sistemlerde NT Hash değerleri saldırgan tarafından ele geçilirse, parola yerine NT Hash değerleri kullanılarak, kimlik doğrulama işlemi gerçekleştirilebilir. Dolayısıyla yetkili bir Windows hesabın parolası bilinmese bile, NT Hash kullanılarak hesaba erişim sağlanabilir.
Bu soruyu da cevapladıktan sonra artık elde ettiğimiz veriler ile evil-winrm aracını kullanarak bağlantı sağlayacağız. Evil-winrm aracının aşağıdaki çıktısında sorunun cevabını buluyoruz.
Using a tool called Evil-WinRM what option will allow us to use a hash? (-H)
Flags
Evil-winrm ile bağlantı sağlayalım ve flagları elde edip çözümü sonlandıralım.
Evet bağlantıyı başarılı bir şekilde sağladık. Şimdi flagları bulalım.
svc-admin (TryHackMe{K3rb3r0s_Pr3_4uth})
backup (TryHackMe{B4ckM3UpSc0tty!})
Administrator (TryHackMe{4ctiveD1rectoryM4st3r})
Flagları girip TryHackMe Attacktive Directory odasını tamamlıyorum. Başka yazılarda görüşmek üzere.