İçerik
Active Directory Nedir?
Makine Üzerinde Active Directory Pentest
Active Directory Nedir?
Active Directory, Microsoft firması tarafından geliştirilmiş bir dizin hizmetidir. Büyük ölçekli ağlar için kullanılan bir hizmet olan Active Directory, ağdaki kaynakların yönetimini kolaylaştırır ve merkezi bir veritabanı olarak görev yapar.
Active Directory, ağdaki tüm kaynakların yönetimini tek bir merkezi noktadan sağlar. Kullanıcı hesapları, gruplar, yazıcılar, sunucular, cihazlar, dosya ve klasörler gibi birçok kaynak Active Directory üzerinde yönetilir. Bu kaynaklara erişim, Active Directory üzerinde tanımlanmış olan kullanıcı hesaplarına bağlıdır. Bu sayede, kullanıcılara ve kaynaklara erişim yönetimi kolaylaşır ve kontrol altında tutulabilir.
Active Directory, özellikle büyük ölçekli işletmelerde yaygın olarak kullanılmaktadır. Microsoft Windows Server işletim sistemi üzerinde ve LDAP (Lightweight Directory Access Protocol) protokolünü kullanarak çalışır. Active Directory, ağdaki tüm cihazlara ve kaynaklara erişimi yönetmek için tek bir merkezi nokta oluşturur ve ağ yönetimini daha kolay hale getirir.
Makine Üzerinde Active Directory Pentest
Attacktive Directory
Öncelikle Active Directory saldırılarında sıkça kullanılan araçların yer aldığı Impacket dosyasını indirip kurmamız gerekiyor.
Bash:
git clone https://github.com/SecureAuthCorp/impacket.git /opt/impacket
İmpacket adlı dosyayı /opt dizini içerisine klonladık. Şimdi modülleri indirmek için aşağıdaki kodu kullanacağız.
Bash:
pip3 install -r /opt/impacket/requirements.txt
Modüller de indirildiğine göre /opt dizinine gelip İmpacket içerisindeki setup.py dosyasını çalıştırarak kurulumu tamamlayacağız.
Bash:
cd /opt/impacket/ && python3 ./setup.py install
What tool will allow us to enumerate port 139/445?
Burada 139 ve 445 numaralı portları hangi araç yardımıyla enumerasyon(numaralandırma) yapabileceğimiz sorulmuş, Bunun cevabı enum4linux'dır.
enum4linux, Windows ve Samba sistemlerinde numaralandırma yapmak için kullanılan bir araçtır.
What is the NetBIOS-Domain Name of the machine?
Burada makinenin NetBIOS etki alan adı sorulmakta, cevabı bulmak için enum4linux aracı ile tarama yapmamız gerekmekte. Aşağıdaki kod ile bir tarama başlatıyoruz.
Bash:
enum4linux -a spookysec.local
Tarama sonucu etki alanının(domain name) THM-AD olduğunu görüyoruz.
What invalid TLD do people commonly use for their Active Directory Domain?
Burada, insanların Active Directory Domain'leri için hangi geçersiz TLD'ler kullanıp kullanmadığını sorulmakta. Bu soruya aslında direkt olarak .local cevabını verebiliriz. Fakat siz yine de Nmap ile tarama yaparak cevabı bulabilirsiniz.
Bash:
nmap -sV -A 10.10.83.85
TLD, "Top-Level Domain" teriminin kısaltmasıdır ve internet adresleri için kullanılan üst düzey alan adlarını ifade eder. ".local", ".corp", ".lan" ve ".home" gibi TLD'ler geçersiz TLD'lerdir.
What command within Kerbrute will allow us to enumerate valid usernames?
Burada, Kerbrute aracındaki hangi komutun geçerli kullanıcı adlarını numaralandırdığı sorularmakta bunun için makinede bulunan Kerbrute dosyasını indirdikten sonra aşağıdaki kodu çalıştırmamız gerekmekte,
Bash:
./kerbrute_linux_amd64 -h
Cevabımız, userenum komutudur.
Kerbrute, bir güvenlik testi aracıdır ve Windows Active Directory ortamında parola zayıflıklarını tespit etmek için kullanılır.
What notable account is discovered? (These should jump out at you)
Burada, hangi önemli hesabın keşfedildiği soruluyor, bunun için makinede verilen user ve password listeleri indirip bruteforce yapacağız,
Bash:
./kerbrute_linux_amd64 userenum -d spookysec.local --dc spookysec.local user.txt -t 100
Bruteforce sonucunda hesaplar karşımıza çıktı burada cevabımız, svc-admin'dir.
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?
Burada, hangi kullanıcının şifre gerektirmeden(no pass) bilet aracılığıyla girilebildiği sorulmaktadır. Bunu öğrenmek için Impacket içerisindeki GetNPUsers.py scriptini kullanacağız.
Bash:
GetNPUsers.py spookysec.local/svc-admin -no-pass
Sonuç bize bu hesabın svc-admin olduğunu ve hash'ini(ticket) veriyor. Bu hash ilerki sorularda karşımıza çıkacaktır.
Looking at the Hashcat Examples Wiki page, what type of Kerberos hash did we retrieve from the KDC? (Specify the full name)
Burada, daha önce bulduğumuz hash'in "Hashcat Örnekleri" sayfasında hangi Kerberos hash türüne ait olduğu sorulmaktadır. Bunu çözmek için ilgili websitesine göz atmalıyız. Hash'in ilk kısmındaki KDC değerini(AS-REP) sitede sorguladığımda bu hash'in Kerberos 5 AS-REP etype 23'e ait olduğunu öğreniyoruz.
What mode is the hash?
Burada, hash'in hangi modda olduğu sorulmakta. Bunu öğrenmek için yine "Hashcat Examples" sayfasına göz atmamız gerekir bu değer, hash türünün solunda yer almaktadır yani 18200'dür.
Now crack the hash with the modified password list provided, what is the user accounts password?
Şimdi ise Hashcat aracını kullanarak indirdiğimiz password list ile bu hash'i kırmaya çalışacağız.
Kod:
hashcat -m 18200 -a 0 passhash pass.txt --force > passun
cat passun
Bu işlemden sonra kırdığımız hash'in management2005 olduğunu öğreniyoruz.
Using utility can we map remote SMB shares?
Bu sorunun cevabı zaten "Hint" içinde verilmiş cevap, smbclient'dır.
Which option will list shares?
Burada, hangi komutun SMD'deki paylaşımları listelediği sorulmakta. Cevap, -L komutudur.
Şimdi, smbclient ile svc-admin'e bağlanalım.
Bash:
smbclient spookysec.local -L -u 'svc-admin'
Burada backup diski gözümüze çarpmakta,
Bash:
smbclient \\\\spookysec.local\\\backup -u 'svc-admin'
dir
Backup içerisinde backup_credentials.txt adında bir dosya bulduk. İçeriğini görüntülemek için more komutunu kullanacağız.
Karşımıza base64 ile şifrelenmiş bir kod çıktı. Smbclient'den çıkıp kodu çözümleyelim.
Kod:
echo 'YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw' | base64 -d > smbpass
cat smbpass
Decrypt işleminden sonra karşımıza bir username ve password çıkmakta.. Elimizdeki veriler ile soruları cevaplamaya devam edelim.
How many remote shares is the server listing?
Burada, sunucunun kaç uzak paylaşımı listelediği sorulmakta. Cevap, 6'dır.
There is one particular share that we have access to that contains a text file. Which share is it?
Eriştiğimiz hangi paylaşımlı dosyada metin belgesi bulunduğu sorulmakta. Cevap, backup'dır.
What is the content of the file?
Dosya içeriğinde ne olduğu sorulmakta. Cevap, YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw
Decoding the contents of the file, what is the full contents?
Burada, decode edilen veri istenmiş. Cevap, [email protected]:backup2517860
Şimdi ise topladığımız veriler ile Impacket içerisindeki secretsdump.py scriptini kullanmamız gerekiyor.
Kod:
secretsdump.py -dc-ip 10.10.83.85 spookysec.local/[email protected]
Password:backup2517860
Bu işlemden sonra karşımıza birçok kullanıcı ve hash bilgileri çıkmakta, öncelikle soruları cevaplayalım.
What method allowed us to dump NTDS.DIT?
Bu soruda, NTDS.DIT dosyasının nasıl dump edildiği soruluyor. Cevap, DRSUAPI
What is the Administrators NTLM hash?
Bu soruda, Administrator hesabının NTLM hash değerinin ne olduğu soruluyor. Cevap, 0e0363213e37b94221497260b0bcb4fc
Şimdi Evil-winrm aracı ile bağlanıp pass the hash yöntemi uygulayacağız.
"Pass the hash" yöntemi, NTLM kimlik doğrulama hash'i ile oturum açma işlemini taklit ederek, Windows işletim sistemi hedeflerine erişebilmesini sağlayan bir tekniktir.
Bash:
ewil-winrm -u administrator -H 0e0363213e37b94221497260b0bcb4fc -i 10.10.83.85
Başarılı bir şekilde erişim sağladık şimdi ise flagları bulalıım.
Bash:
cd ..
cd Desktop
ls
Görüldüğü gibi root.txt içerisinde Administrator flagını bulduk. Diğer flaglarıda bulduktan sonra makineyi tamamlayabiliriz.
Bash:
cd svc-admin
cd Desktop
ls
cat user.txt.txt
user.txt.txt dosyası içerisinde de svc-admin flagını bulduk.
Kod:
cd backup
cd Desktop
ls
cat PrivEsc.txt
Son flagıda bulduğumuza göre soruları cevaplayabiliriz.
Administrator (TryHackMe{4ctiveD1rectoryM4st3r})
backup
(TryHackMe{B4ckM3UpSc0tty!})
svc-admin (TryHackMe{K3rb3r0s_Pr3_4uth})
Umarım bu konu AD pentest işlemleri hakkında sizlere bir bilgi katmıştır.
Konuyu okurken hatalı bulduğunuz yerleri belirtirseniz düzeltebilirim.
Okuduğunuz için teşekkür ederim.
Son düzenleme: