Active Directory Hacking — GOAD Part 1 (TR)

m3t3hn
5 min readAug 27, 2024

--

https://raw.githubusercontent.com/Orange-Cyberdefense/GOAD/main/docs/img/GOAD_schema.png

Selamlar!! Umarım her şey yolundadır. Bu yazımda GOAD ile active directory ortamında gerçekleştirilen sızma testlerini simüle edeceğiz.

Burada GOAD’ın checklist’ini ya da herhangi bi roadmap’i takip etmeden ilerleyeceğim şimdiden söyleyeyim. (^_-)

GOAD ortamının kurulumu ile ilgili buraya bakabilirsiniz.

Başlayalım…

1. — RECONNAISSANCE

Bu noktada direkt olarak netexec ile girişelim. Herhangi bir credential bulunmadığından sadece IP aralığını (192.168.56.0/24) vererek smb protokolü ile basit bi tarama başlatabiliriz. (bu arada netexec artık kali repolarında yerini aldı. “apt install netexec”)

nxc smb 192.168.56.0/24

Bu komutu çalıştırdığımızda aşağıdaki gibi bir çıktı alacağız.

Çıktıyı incelediğimizde elimizde 3 adet domain olduğunu görüyoruz.

  • north.sevenkingdoms.local
  • sevenkingdoms.local
  • essos.local

DC makinelerinde default smb “signing: True” olduğundan ve ortamda “signing: False” makineler olduğundan “winterfell”, “kingslanding” ve “meereen” makinelerinin DC olduğu çıkarımını yapabiliriz.

Tabi çıkarım yapmam ben garanti olsun diyosaniz nslookup ile DNS kayıtlarına bakarak DC’leri tespit edebilirsiniz.

1.1 — Cred Harvesting

Bu kısımda saldıracağımız active directory yapısında herhangi bir kullanıcımız olmadığını varsayarak olabildiğince credential toplamaya çalışacağız.

İlk olarak null session’ın aktif olup olmadığını kontrol etmek için username ve password parametrelerini boş gönderelim. Eğer aktifse password policy, group policy’leri vs. elde etmek için ya da user enumeration için kullanabiliriz.

Aşağıdaki netexec komutunu kullanarak NULL Session ile user enumeration deneyelim;

nxc smb 192.168.56.0/24 -u '' -p '' --users

Komutu çalıştırdığımızda “192.168.56.11” IP adresine sahip “WINTERFELL” DC makinesinden dönüş olduğunu görüyoruz.

Görseli incelersek buradaki tatlı kurgusal ortamımızda sihirli bir elin bize kolaylık sağlamaya çalıştığını görüyoruz. (˶˃ ᵕ ˂˶) .ᐟ.ᐟ

samwell.tarly:Heartsbane

Sihirli el sayesinde elde ettiğimiz cred’leri test edelim;

nxc smb 192.168.56.0/24 -u 'samwell.tarly' -p 'Heartsbane'

Görseli incelediğimizde CASTELBLACK (192.168.56.22 — SRV02), BRAAVOS (192.168.56.23 — SRV03) ve WINTERFELL (192.168.56.11 — DC02) makinelerinde oturum açabildiğimizi görüyoruz…

1.1.1 — SHARES

Smb share’larına bakalım;

nxc smb 192.168.56.0/24 -u 'samwell.tarly' -p 'Heartsbane' --shares

Yukarıdaki share’ları incelemek için yine netexec içerisindeki “spider_plus” modülünü kullanabiliriz;

nxc smb 192.168.56.11 -u 'samwell.tarly' -p 'Heartsbane' -M spider_plus -o DOWNLOAD_FLAG=True

Burada “-o DOWNLOAD_FLAG=True” parametresi ile bu smb share’da bulunan dosyaları direkt olarak hosta indiriyoruz.

Dosyaları lokalimize çektikten sonra bu modülün bizim için hazırladığı metadatalara bakarak tek tek folder gezmeden önce ilgi çekici şeylere göz atabiliriz.

Çıktıyı incelediğimde iki tane powershell scripti dikkatimi çekti ve script.ps1 dosyasını okuduğumda “jeor.mormont” kullanıcısının parolasını elde ettik.

jeor.mormont:_L0ngCl@w_

Elde ettiğimiz kullanıcıyı test edelim;

CASTELBLACK makinesinin Pwn3d! olduğunu görüyoruz.

Ayrıca bir diğer ilgi çekici dosya olan secret.ps1 scriptini inceleyip içerisindeki şifreleme fonsiyonunu tersine çevirince “powerkingftw135” datasını elde etmiş olduk. Nedir ne değildir çok üşendim açıkçası belki password spray yaparken kullanırız not almaya değer.

powerkingftw135

192.168.56.22 makinesindeki smb share’i lokale indirdiğimde de şöyle bir mektup gördüm.

Tabi ki buradaki Needle’ı da boş geçersek olmaz.

nxc smb 192.168.56.0/24 -u 'arya.stark' -p 'Needle.'

BRAAVOS’da oturum açabildiğimizi görmüş olduk.

arya.stark : Needle.

1.1.2 — PASSWORD POLICY

Password policy’lerine bakalım.

nxc smb 192.168.56.0/24 -u 'jeor.mormont' -p '_L0ngCl@w_' --pass-pol

1.1.3 — USER ENUM

Recon’un sınırı yok. İsterseniz disklere, network interface’lerine group’lara vs. bakabilirsiniz ama ben son olarak kullanıcılara bakacağım.

nxc smb 192.168.56.0/24 -u 'jeor.mormont' -p '_L0ngCl@w_' --users

Burada elde ettiğimiz kullanıcılar ile bir users.txt oluşturalım.

Şimdi 192.168.56.11 IP adresine sahip DC makinemizin olduğu north.sevenkingdoms.local domaininde ASREPRoasting deneyelim.

1.1.3.1 — ASREPRoasting

ASREPRoasting saldırısı kerberos’ta saldırganların “Do not require Kerberos preauthentication” ayarı açık olan kullanıcı hesaplarından ticket talep edip gelen hash değerini localde kırmaya çalışmasına dayanan bi saldırı yöntemi.

Bunun için impacket’ın GetNPUsers.py script’ini kullanacağız.

python3 GetNPUsers.py north.sevenkingdoms.local/ -no-pass -usersfile users.txt

Scripti çalıştırdığımızda “brandon.stark” kullanıcısının ticket’ını elde etmiş olduk. Bu hash değerini hashcat aracını kullanarak localimizde kırmayı deneyelim.

hashcat -m 18200 hash /usr/share/wordlists/rockyou.txt

Hashcat ile hash değerini kırdığımızda “brandon.stark” kullanıcısının parolasını elde etmiş olduk.

brandon.stark:iseedeadpeople

1.1.3.2 — KERBEROASTING

Hazır başlamışken Kerberoasting’e de el atalım. Kerberoasting, kerberos’ta servis hesaplarının ticket’larını (TGS) talep edip gelen hash değerini localde kırmaya dayanan bi saldırı yöntemi.

Aşağıdaki komut ile Kerberoasting saldırısını başlatalım.

impacket-GetUserSPNs -request -dc-ip 192.168.56.11 north.sevenkingdoms.local/brandon.stark:iseedeadpeople -outputfile kerberoasting

Böylece servis hesaplarının ticket hashleri “kerberoasting” dosyasına kaydedilmiş oldu.

Şimdi hashcat ile bu hashleri kıralım.

 hashcat -m 13100 kerberoasting /usr/share/wordlists/rockyou.txt

Hashcat’i çalıştırdığımızda “jon.snow” kullanıcısının da parolasını elde etmiş olduk.

jon.snow:iknownothing

1.1.3.3 — PASSWORD SPRAYING

Daha önce oluşturmuş olduğumuz users.txt dosyasını kullanarak password spraying deneyelim.

Not: Mutlaka password policy’leri inceleyin. Hesapları kitleyebilirsiniz.

Önceki kısımlarda baktığımız password policy için hesap kilitleme threshold’u “5”. Buna göre“-t” parametresinde max deneme sayısı belirleyelim. Burada yapacağımız spraying “user=pass” şeklinde olacak.

sprayhound -U users.txt -d north.sevenkingdoms.local -dc 192.168.56.11  -t 2

Komutu çalıştırdığımızda “hodor” kullanıcısının parolasının “hodor”(😀) olduğunu gördük.

Password spraying yaparken arada yanlış deneme sayısını checklemekte fayda var.

nxc smb 192.168.56.11 -u hodor -p hodor -d north.sevenkingdoms.local --users

BadPW- kısmında hangi kullanıcının kaç yanlış deneme yaptığını görebiliriz.

Hasadımızın bu noktasında elimizde 6 adet kullanıcı ve ne olduğunu bilmediğimiz bi text olmuş oldu.

  • samwell.tarly : Heartsbane
  • jeor.mormont : _L0ngCl@w_
  • brandon.stark : iseedeadpeople
  • arya.stark : Needle.
  • jon.snow : iknownothing
  • hodor : hodor
  • powerkingftw135

İlk part’ı bu şekilde bitirelim. Part 2'de önce Bloodhound ile kendimize bi roadmap çizeceğiz. Sonra yaygın güvenlik zafiyetlerin tespiti ve sömürülmesine odaklanacağız.😁👍

--

--

No responses yet