Active Directory Saldırı Uygulama Senaryosu
Active Directory saldırılarını ele aldığımız bu yazıda basit bir saldırı senaryosunu gerçekleştiriyor olacağız. Bu saldırı senaryosunu gerçekleştirirken AD Enumeration, Kerberos, Cracking Hashes, Impacket gibi anahtar kelimelerin üzerinde durulacaktır.
İlk olarak Active Directory atakları için içinde birçok aracı barındıran impacket kurulumunu yapalım.
İmpacketi makinemize klonlayalım. /opt/impacket dizinine klonlama işlemini gerçekleştirelim. İstenilen herhangi bir dizine de klonlanabilir.
git clone https://github.com/SecureAuthCorp/impacket.git /opt/impacket
Daha sonra aynı dizin içinde gerekli Python modüllerinin yüklenmesi için aşağıdaki komutu çalıştıralım.
pip3 install -r /opt/impacket/requirements.txt
Bu aşamada son olarak aynı dizin içinde setup.py dosyasını çalıştırarak kurulumu tamamlayalım.
cd /opt/impacket/ && python3 ./setup.py install
Böylelikle kurulum işlemini tamamlamış olduk. Artık enumeration adımlarına geçelim.
Enumeration için ilk olarak nmap taraması gerçekleştirelim.
Tarama işleminden sonra enumeration işlemleri gerçekleştirelim. Bu aşamada hosts dosyasına spookysec.local dosyasını eklememiz gerekiyor. Bu işlemi de gedit /etc/hosts
komutuyla gerçekleştiriyoruz. hosts dosyasına içerisine makine ip adresi ve spookysec.local’i ekleyelim.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-2.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-1-1024x329.png)
Bu adımda enumeration çözümlerine devam edelim. İstenilen numaralardaki bağlantı noktasını tarama işlemini Enum4linux aracıyla gerçekleştirelim.
- Yaptığımız bu işlemle makinenin NetBIOS-Domain Name(etki alanı adı) THM-AD olarak bulundu.
- Kişiler Active Directory Etki Alanları için genellikle hangi geçersiz TLD’yi kullanır? (.local)
- Enum4linux SAMBA üzerinden Linux/Windows sistemlerden bilgi elde etmeye yarar. Kullanımı
enum4linux –a makine ipsi
şeklindedir. Birçok parametresi vardır.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-3.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-4.png)
Gerçekleştirilen işlemle domain name(etki alanı adı) sorusunun cevabını da THM-AD olarak bulmuş olduk.
Son sorunun yanıtını da nmap taramasında elde edilen sonuçtan yola çıkarak kullanılan TLD(Top Level Domain) .local olarak bulduk.
Görev 4 – Enumerating Users via Kerberos
Bu adımda yapılacak işlemler de enumeration işlemlerin ikinci kısmı niteliğindedir. Cevaplanması istenen sorular aşağıdaki gibidir:
- Kerbrute içindeki hangi komut geçerli kullanıcı adlarını numaralandırmamıza izin verir? (userenum)
- Hangi kayda değer hesap keşfedildi? (svc-admin)
- Keşfedilen diğer önemli hesap nedir? (backup)
Kerberos’un Active Directory içindeki bir kimlik doğrulama hizmeti olduğu bilinmektedir ve bizden bu aşamada Kerbrute aracını kullanmamızı istemektedir.
Kerbrute aracını yükleyelim.
cd /root/Downloads
komutu ile Kerbrute aracının yüklendiği dizine gidelim. Daha sonra soruda verilen User List ve Password List içindeki bilgileri kopyalayarak istenilen herhangi bir yerde touch userlist.txt
ve touch passwordlist.txt
komutlarıyla oluşturduğum dosyalara yapıştırdım.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-5.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-7.png)
Şimdi de bu listelerle bruteforce yaparak soruların yanıtlarını bulalım.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-9-1024x16.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-10-1024x16.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-11.png)
Kerbrute çıktısına göre kayda değer hesap olarak svc-admin; bir diğer önemli hesap için backup hesabını bulduk.
Görev 5 – Abusing Kerberos
Bu adımda yapılacak işlemler için de yine Kerberos’tan yararlanmamız istenmektedir ve cevaplanacak sorular aşağıdaki gibidir:
- Bir bileti sorgulama potansiyeline sahip iki kullanıcı hesabımız var. Şifresiz hangi kullanıcı hesabından bir bileti sorgulayabilirsiniz? (svc-admin)
- Hashcat Örnekleri Wiki sayfasına baktığımızda, KDC’den ne tür Kerberos hash’i aldık? (Tam adı belirtin) (Kerberos 5 AS-REP etype 23)
- Hash hangi moddur? (18200)
- Şimdi verilen değiştirilmiş şifre listesi ile hash’i kırın, kullanıcı hesaplarının şifresi nedir? (management2005)
Bu adımda Anahtar Dağıtım Merkezi’nden ASReproastable hesaplarını sorgulamamıza olanak tanıyan “ GetNPUsers.py ” (Impacket/examples/GetNPUsers.py’de bulunur) adında bir aracın olduğu ve hesapları sorgulamak için gerekli olan tek şeyin, daha önce Kerbrute ile numaralandırdığımız geçerli bir kullanıcı adı kümesi olduğu bilinmektedir.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-12.png)
Kerberos kimlik doğrulaması svc-admin kullanıcısı için GetNPUsers.py spookysec.local/svc-admin –request –no-pass –dc-ip makine ipsi
komutu çıktısı ile ilk sorunun yanıtının svc-admin olduğunu görüyoruz.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-13-1024x113.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-14-1024x118.png)
GetNPUsers.py kullanarak aldığımız çıktıda svc-admin için hash türü bilgisinin krb5asrep23 olduğunu görüyoruz.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-15.png)
İnternet açık kaynaklarında yapılan araştırmalar sonucunda yukarıda bulduğumuz kullanıcı hashine ait hash türünü ve modunu bulduk.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-16.png)
Böylelikle ikinci sorunun cevabını Kerberos 5 AS-REP etype 23 olarak, hash modunu da 18200 olarak bularak soruları yanıtladık.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-17.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-18.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-19-1024x169.png)
Krbhash.txt nin içeriğini cat komutuyla da görebilirsiniz.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-20-1024x174.png)
Şimdi de son sorunun yanıtını bulmak için password listesi yardımıyla hashi kırmaya çalışalım. Bunun için hashcat aracı kurulumunu gerçekleştirelim.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-21.png)
Daha sonra passwordlist.txt ile hashcat aracını aynı dizinde çalıştıralım.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-22.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-23-1024x526.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-24-1024x423.png)
Hashcat çıktısı sonucu son sorunun yanıtını da management2005 olarak bulduk.
Görev 6 – Back to the Basics
Bir kullanıcının hesap kimlik bilgileriyle, artık etki alanında önemli ölçüde daha fazla erişime sahibiz. Artık etki alanı denetleyicisinin verebileceği tüm paylaşımları numaralandırmaya çalışalım.
Bu adımda yanıtlanacak sorular aşağıdaki gibidir:
- Yardımcı programı kullanarak uzak SMB paylaşımlarını eşleyebilir miyiz? (smbclient)
- Paylaşımları hangi seçenek listeleyecek? (-L)
- Sunucu listesi kaç tane uzak paylaşımdır? (6)
- Bir metin dosyası içeren erişimimiz olan belirli bir paylaşım var. Hangi pay bu? (backup)
- Dosyanın içeriği nedir? (YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw)
- Dosyanın içeriğini çözerken tam içerik nedir? (backup@spookysec.local:backup2517860)
İlk olarak Hint kısmında smbclient kullanmamız isteniyor ve kullanalım.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-25.png)
smbclient ile alınan çıktıyla kaç tane uzak paylaşım sorusunun cevabının 6 olduğunu gördük.
Bir diğer sorunun cevabını bulabilmemiz için Hint kısmında verilen man smbclient komutuyla paylaşımları hangi seçeneğin listelediğini görüyoruz.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-26.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-27-1024x500.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-28-1024x231.png)
Beşinci soruda Hint kısmında dosyanın kodlanmış şeklindeki içeriğini istediğini belirtmiş biz de içeriği görüntülemek için smb içinde more backup_credentials.txt komutuyla içeriğe ulaştık.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-29-1024x416.png)
cat komutuyla backup_credentials.txt içeriğini görelim.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-30.png)
İçeriğin base64 ile kodlanmış olduğunu görüyoruz. Kodlanmamış halini görmek için base64 -d kullanalım.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-31-1024x65.png)
Görev 7- Elevating Privileges within the Domain
Bu kısımda bizden elde ettiğimiz veriler ile impacket içerisinde yer alan secretsdump.py isimli scripti kullanmamız isteniyor.
- Secretdump.py, 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.
Yanıtlanması istenen sorular aşağıdaki gibidir:
- Hangi yöntem NTDS.DIT’i boşaltmamıza izin verdi? (DRSUAPI)
- Yöneticilerin NTLM karması nedir? (0e0363213e37b94221497260b0bcb4fc)
- Parola olmadan kullanıcı kimliğini doğrulamamıza hangi saldırı yöntemi izin verebilir? (pass the hash)
- Evil-WinRM adlı bir aracı kullanarak, hash kullanmamıza hangi seçenek izin verir? (-H)
Secretdump.py’yi kullanalım.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-32-1024x27.png)
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-33-1024x456.png)
Secretsdump çıktısıyla birçok kullanıcı ve hash elde ettik. Hint kısmındaki gibi çıktıyı okuyarak ilk sorunun cevabının DRSUAPI ikinci sorunun cevabının da administrator kısmı sonundaki alan olduğunu gördük.
![](https://www.forencrypt.com/wp-content/uploads/2022/01/image-34-1024x421.png)
Son olarak birçok kullanıcının hashini elde etmiş olduk ve saldırı senaryosu bu şekilde sona erdi.