Windows Sistemlerde Pivoting

Windows sistemlere yönelik yapılan sızma testlerinde ana hedef, bir sisteme sızdıktan sonra tüm sistemleri ele geçirmektir. Bu nedenle testlerin son aşaması olarak, sistemlerin ortak bir noktadan yönetilebilmesini sağlayan ve Active Directory Domain ortamında ana sunucu rolünde bulunan DC (Domain Controller) sunucusunun ele geçirilmesi ve tüm yönetimin ele alınması amaçlanır. DC makinenin ele geçirilmesi için genel olarak, Active Directory Domain ortamına bağlı bir makineye yönelik sızma işlemi gerçekleştirilir ve DC makineye erişim sağlamak amacıyla ele geçirilen makine üzerinden bazı yöntemler uygulanarak ilerleme sağlanır. Bu yöntemler post exploitation aşamaları olarak tanımlanır. Genel post exploitation aşamaları aşağıda listelenmiştir:

  • Privilege Escalation (Hak ve Yetki Yükseltme)
  • Credential Dump (Kimlik Bilgilerinin Ele Geçirilmesi)
  • Lateral Movement/Pivoting (Yanal Hareket)
  • Persistence (Kalıcılık Sağlama)

Saldırganlar ele geçirdikleri bir sistem üzerinde düşük yetkilere sahiplerse, ilk olarak ele geçirilen bir makinenin sistem içerisinde bulunan zafiyetlerinden yararlanarak privilege escalation işlemi gerçekleştiririrler ve yüksek yetkilere erişmeye çalışırlar. Sistem üzerinde yüksek yetkiler elde edildikten sonra ağdaki diğer makineler keşfedilir ve Domain ortamında bulunan diğer makinelere erişmek adına ele geçirilen sistem üzerinden kimlik bilgilerini almak için credential dumping işlemi yapılır.

Kimlik bilgisi ele geçirildikten sonra başka bir VLAN’daki makinelere erişmek için lateral movement işlemi yapılır. Eğer erişilmek istenen makineler saldırgan makinenin erişemediği, ancak ele geçirilen makinenin erişebildiği bir ağa bağlıysa, bu durumda ele geçirilen sistem kullanılarak diğer ağ ile bağlantı kurulur ve o ağda bulunan makinelere erişim sağlanır. Bu işlem ise pivoting olarak adlandırılır. Son olarak Domain Controller makinenin ele geçirilmesiyle birlikte, saldırganların son aşaması olan sistemde kalıcılık sağlama işleminin sızma testi raporuna yansıtılması amacıyla sistemde bir backdoor oluşturulur ve bu işlem persistence olarak adlandırılır.

Bu yazıda Domain ortamına bağlı olan ve yüksek haklar ile ele geçirilmiş bir makine üzerinden, farklı bir ağa bağlı olan DC makineye pivoting işlemi yaparak nasıl sızılacağı uygulamalı olarak anlatılmıştır. Pivoting işlemine geçilmeden önce credential dumping işlemi yapılmıştır ve DC makineye erişim sağlamak için Domain Admin yetkilerine sahip bir hesabın kimlik bilgileri ele geçirilmiştir. Aşağıda anlatılan uygulamalar Metasploit Framework’e bağlı kalınmadan gerçekleştirilmiştir.

Resim 1.1’de uygulama yapılacak laboratuvar ortamı yer almaktadır.

Windows Sistemlerde Pivoting
Resim 1.1 – Laboratuvar Ortamı

Senaryoya göre, 192.168.106.131 IP adresine sahip olan bir saldırgan makine LAB001 adlı makineye, Administrator hesabına ait parola ile SMB (445) portu üzerinden erişim sağlamıştır. LAB001, ikinci bir ağ interface’i kullanmaktadır ve bu interface aracılığıyla 192.168.35.0/24 ağında bulunan DC makineyle haberleşebilmektedir. Ancak saldırgan makine DC makine ile doğrudan haberleşememektedir. Dolayısıyla LAB001 pivot makine olarak kullanılacaktır ve DC makineye erişim sağlanacaktır.

Kimlik Bilgilerinin Ele Geçirilmesi

Önceki bölümde anlatıldığı üzere LAB001 makinesi ele geçirilmiştir. Sysinternals tarafından geliştirilen ve SMB üzerinden diğer makineleri yönetmek amacıyla kullanılan PSEXEC aracı ile LAB001 adlı makineye erişilmiştir. LAB001 makinesi üzerinden alınan bağlantı Resim 2.1’de yer almaktadır.

Windows Sistemlerde Pivoting
Resim 2.1 – LAB001 Erişimi

PSEXEC aracı kullanılarak LAB001 makinesi ile bağlantı kurulmuştur ve Powershell uygulaması çalıştırılarak LAB001 üzerinden bir Powershell oturumu elde edilmiştir. Bu oturumdan yararlanarak kimlik bilgilerinin ele geçirilmesi amaçlanmaktadır. Kimlik bilgilerini ele geçirmek için LSASS sisteminden yararlanılmıştır. LSASS, Windows sistemler üzerinde kimlik doğrulama, parola değişikliklerini yönetme ve token oluşturma işlemlerinden sorumludur. LSASS sistemi bu işlemleri “lsass.exe” adlı process ile yönetir. Lsass.exe, Windows işletim sisteminin çalışmaya başmasıyla birlikte başlar ve makine kapanana kadar sürekli olarak çalışmaya devam eder. Ayrıca lsass.exe, Windows işletim sisteminde oturum açmış kullanıcıların parolalarına ait hash değerlerini tutar. Bu nedenle lsass.exe belleğinden oturum açmış hesapların kimlik bilgileri ele geçirilebilir. Kimlik bilgileri lsass.exe üzerinden ele geçirilmeden önce ilk olarak;

query user /server:$SERVER

komutuyla sistem üzerinde oturum açmış kullanıcılar hakkında bilgi alınmıştır. Resim 2.2’de oturum açmış kullanıcı bilgileri yer almaktadır.

Windows Sistemlerde Pivoting
Resim 2.2 – Oturum Açmış Kullanıcı

Ardından “net user” komutu çalıştırılmıştır ve bu kullanıcı yerel kullanıcılar arasında yer almadığı için sysadmin hesabının bir Domain hesabı olduğu anlaşılmıştır.

Windows Sistemlerde Pivoting
Resim 2.3 – Yerel Kullanıcılar

LSASS belleğinden kimlik bilgilerini almak için Mimikatz aracı kullanılabilir. Mimikatz, lsass.exe belleğinden kimlik bilgilerini alma özelliğine sahiptir. Bunun için LAB001 makinesine Mimikatz uygulaması yüklenebilir ve kimlik bilgileri LSASS üzerinden dump edilebilir. Ancak Windows Defender Mimikatz aracını zararlı olarak algılayacaktır ve silecektir. Farklı bir yöntem olarak lsass.exe adlı process’in bellek dökümü alınabilir. Bu işlem yapıldığında “.DMP” uzantılı bir dosya elde edilecektir. Bu dosya saldırgan makineye taşınabilir ve saldırgan makine üzerinde Mimikatz aracıyla incelenerek kimlik bilgileri alınabilir.

Lsass.exe’nin bellek dökümünü almak için Sysinternals tarafından geliştirilen “procdump” aracı kullanılacaktır. Procdump aracı buradan indirilebilir. Resim 2.4’ te procdump aracı LAB001 makinesine taşınmaktadır.

Windows Sistemlerde Pivoting
Resim 2.4 – Procdump

Aşağıda procdump aracı kullanılarak lsass.exe process belleğinin dump edilmesini sağlayan komut yer almaktadır.

procdump64.exe -accepteula -ma lsass.exe c:\lsass.dmp

Bu komutla lsass.exe process’inin bellek dökümü alınmıştır ve bellek dökümü “C:” dizinine “lsass.dmp” ismiyle kaydedilmiştir.

Windows Sistemlerde Pivoting
Resim 2.5 – Bellek Dökümü

Alınan bellek dökümü saldırgan makineye alınarak incelenebilir. Mimikatz, bellek dökümü dosyalarını inceleme özelliği sunmaktadır. Bunun için Mimikatz aracının

sekurlsa::minidump <<Dump_Path>>

komutu kullanılarak dosya belirtilecektir ve ardından

sekurlsa::logonpasswords

komutu kullanılarak kimlik bilgileri listelenecektir. Resim 2.6’da “sysadmin” hesabının kimlik bilgileri yer almaktadır.

Windows Sistemlerde Pivoting
Resim 2.6 – Domain Admin Kimlik Bilgileri

“sysadmin” hesabının kimlik bilgileri ele geçirilmiştir. Bundan sonra yapılacak olan işlem, sysadmin hesabı ile DC makineye erişim sağlamak olacaktır. Ancak DC makineye bağlanmak için pivoting yapılmalıdır.

Pivoting

Bir Domain Admin hesabına ait kimlik bilgisi, DC makineye direk erişim sağlamak için kullanılabileceğinden dolayı kolaylık sağlamaktadır. Ancak kimlik bilgilerini kullanmak için DC makine ile saldırgan makine arasında bir bağlantı oluşturulması gerekmektedir. Bu bağlantı LAB001 adlı makine üzerinden sağlanacaktır. Bağlantının sağlanması için Port Forwarding yöntemi kullanılacaktır. Port Forwarding, bir makinenin herhangi bir portunun, başka bir makinenin herhangi bir portuna yönlendirilmesidir. Bu durumda DC makinesine SMB (445) portundan erişim sağlanacağı için, DC makinesinin 445 portu LAB001 makinesinin herhangi bir portuna yönlendirilecektir. LAB001 makinesinin güvenlik duvarı kapalı olduğu için, saldırgan makine yönlendirilen porta erişim sağlayabilir. Port Forwarding işlemi için netsh aracı kullanılacaktır. Netsh bir sistemin yerel ve uzak ağ yapılandırmalarının konfigüre edilmesini sağlayan bir Windows yardımcı programıdır. Resim 3.1’de netsh kullanılarak 192.168.35.10 IP adresine sahip olan DC makinesinin 445 portu, LAB001 makinesinin 4455 portuna yönlendirilmiştir.

Resim 3.1 – Netsh ile Port Yönlendirme

Saldırgan cihazı ile LAB001 makinesinin 4455 portuna tarama yapıldığında bu portun açık olduğu ve port üzerinde SMB servisi çalıştığı anlaşılacaktır. Böylece DC makinenin 445 portuna LAB001 makinesinin 4455 portundan erişim sağlanacaktır. Resim 3.2’de tarama sonuçları yer almaktadır.

Resim 3.2 – Nmap Tarama Sonuçları

Son olarak yapılması gereken LAB001 makinesinin 4455 portu üzerinden DC makineye bağlanmaktır. Bunun için PSEXEC uygulaması kullanılmayacaktır. Çünkü, bu uygulama bir makinenin 135 veya 445 portuna bağlanmaya çalışır. Dolayısıyla açık kaynak bir uygulama kullanılarak 4455 portundan bağlantı sağlanabilir. 4455 portuna bağlanmak için Impacket çerçevesinin “smbexec” modülü kullanılabilir. Impacket, Python programlama dili ile yazılmış modüller içeren bir post exploitation çerçevesidir. Impacket aracı varsayılan olarak KALI işletim sisteminde “/usr/share/doc” dizini altında gelmektedir. Ayrıca buradan indirilerek kullanılabilir. Smbexec, Psexec uygulamasına benzer bir modüldür ve paylaşıma açık olan dosyalara erişmekten daha fazlasına sunarak işletim sistemi üzerinde komutlar çalıştırmak ve işletim sistemi üzerinden oturum bağlantısı elde etmek için kullanılabilir. Resim 3.3’te smbexec modülü çalıştırılmıştır ancak bağlantı sağlanmamış ve hata alınmıştır.

Resim 3.3 – SMBEXEC Hata

Hataya göre 4455 portu kabul edilmemektedir ve port parametresine sadece 139 ve 445 portları atanabilir. Açık kaynak bir modül olduğu için kaynak kodlar incelenerek istenilen portlar arasına 4455 portu da yerleştirilebilir.

Hata çözümlenmeden önce parametreler incelenecek olursa, ilk değer kullanıcı (PRIVIASECURITY\sysadmin) adını ifade etmektedir. 2. değer erişim sağlanacak olan makinenin IP adresini belirtmektedir ve kullanıcı adından sonra “@” işareti ile belirtilir. -hashes parametresi ise “LM:NTLM” formatında hash almaktadır. Windows sistemlerde parolalar LM ve NTLM olarak adlandırılan iki ayrı hash türü ile hashlenerek veritabanında LM:NTLM formatında saklanır. Kimlik doğrulama işlemi sırasında parola kullanmak yerine, MITM yöntemi ile parola yerine hash değeri kullanılabilir ve kimlik doğrulama başarılı bir şekilde gerçekleştirilerek sisteme erişim sağlanabilir. Bu yöntem PASS-THE-HASH olarak adlandırılır. Dolayısıyla sysadmin hesabı için bir parola bilgisi elde edilememesine rağmen, parolaya ait NTLM hash değeri elde edildiği için PASS-THE-HASH yöntemiyle kimlik doğrulama gerçekleştirilebilir. Sysadmin hesabının LM hash değeri tespit edilemedi. Ancak PASS-THE-HASH yöntemi LM hash değerinin doğruluğunu kontrol etmez ve sadece olmasına bakar. Dolayısıyla 128 bit uzunluğunda olan her değer LM hash yerine kullanılabilir. Ancak NTLM hash doğru olmak zorundadır.

Smbexec modülü kullanılarak PASS-THE-HASH gerçekleştirmek ve 4455 portu üzerinden kimlik doğrulamak için Resim 3.4’te kaynak kodlara 4455 portu da eklenmiştir.

Resim 3.4 – Kaynak Kodun Düzenlenmesi

Aynı komut yeniden çalıştırıldığında DC makineye erişim sağlanacaktır. Resim 3.5 ‘te DC makineye 4455 portu üzerinden erişim sağlanmıştır.

Resim 3.5 – DC Oturum Bağlantısı