Bu, bir dizi kimlik bilgisini tehlikeye attığınızda Windows makinelerine uzaktan komutların nasıl yürütüleceğini (ve “sahip olunacağını”) gösteren serinin üçüncü bölümüdür.
Bölüm 1’de Kali Linux’tan kabuk patlatmak için en sevdiğim araç ve tekniklerden bazılarını gösterdim. Geçerli bir etki alanı kullanıcısının kimlik bilgilerini öğrendikten sonra Windows makinelerinde etkileşimli ve yarı etkileşimli kabuklar elde etmek için Metasploit, CrackMapExec, winexe ve Impacket kitaplığındaki bazı komut dosyalarını kullandım.
Bölüm 2’de, Bölüm 1’deki tekniklerin bazılarını tekrar ele aldım, ancak tüm saldırıları bir Windows makinesinden gerçekleştirdim. kullandım runas
ele geçirilen hesap için bir Kerberos TGT almak ve yerleşik olarak kullanmak net
etki alanını keşfetme komutları. Sonra kullandım psexec
ve hedef Windows kutusunda kabukları ve komut yürütmeyi almak için uzak hizmetler.
Bu yazıda ayrıca bir Windows saldırı kutusundan çalışacağım, ancak Windows Yönetim Araçları (WMI) ve Windows Uzaktan Yönetim (WinRM) aracılığıyla komutları yürütmek için Windows komut satırını ve PowerShell’i kullanacağım.
WMI
Windows Yönetim Araçları (WMI), Windows tabanlı işletim sistemlerindeki yönetim verileri ve işlemlere yönelik altyapıdır.
MSDN’de WMI
WMI, Windows cihazlarının uzaktan sorgulanmasına ve yönetilmesine olanak tanıyan inanılmaz derecede güçlü bir özelliktir. Windows altyapısı için SNMP gibi düşünün. Ancak Microsoft’un tüm yönetim araçları ve özellikleri gibi, saldırganların WMI kullanma ve kötüye kullanma konusundaki inanılmaz potansiyeli fark etmeleri uzun sürmedi.
WMI ile sorgulama
Oluşturma işlemlerine geçmeden ve WMI yoluyla komut yürütmeyi almadan önce, WMI’nın başka ne için kullanılabileceğini görmek faydalı olacaktır. Saldırganın bakış açısından WMI, bir sistem veya etki alanı hakkındaki hassas bilgilerin numaralandırılmasında çok değerli olabilir.
Windows’ta wmic, WMI’yi sorgulamak için kullanılan komut satırı arayüzüdür. Basitçe yazarak wmic
sizi WMI aracılığıyla sistem hakkındaki bilgileri sorgulayabileceğiniz etkileşimli bir komut istemine bırakacaktır. Bir yayınlamak /?
çalıştırabileceğiniz tüm takma adları ve komutları listeleyecektir wmic
. Ayrıca doğrudan komut satırından da sorgu gönderebilirsiniz.
Not: Komut isteminden çalışırken, çıktının kolay okunması için “liste özeti” veya “liste dolu” ifadesinin eklenmesi yararlı olur. Ayrıca komut satırına “/format:list” ifadesini de ekleyebilirsiniz
Örneğin, burada yerel bir Windows makinesindeyim (başka bir şekilde bir kabuk aldığımı varsayalım) ve sistem hakkında bilgi aktarıyorum:
Sistem, süreç, etki alanı, kullanıcılar ve gruplar hakkındaki bilgileri numaralandırmak için yararlı takma adların bir listesi aşağıda verilmiştir:
|
|
Daha kullanışlı komutlar için bu Technet makalesine bakın.
Uzaktan WMI Sorgulama
Şimdi işin eğlenceli kısmına geçiyoruz. Yerel sistem hakkındaki bilgileri sorgulamak harikadır ancak sistem yöneticileri veya saldırganlar için pek yararlı değildir. wmic
sorgulamak için kullanılabilir uzak sistemler de. Komut anahtarları alır /node
Ve /user
Hangi ana bilgisayarın sorgulanacağını ve kimlik doğrulamasının hangi kimlik bilgileriyle yapılacağını belirtmek için.
Windows saldırı kutumuza dönersek, güvenliği ihlal edilmiş etki alanı kimlik bilgilerimizi kullanarak etki alanına katılmış bir bilgisayarı hassas bilgiler açısından sorgulayabiliriz:
Hedef sistemde günlüğe kaydedilebilecek bir hizmeti başlatmadığımızı veya normal bir komut yürütmediğimizi, hatta tespit edilebilecek kalıcı bir bağlantıyı açmadığımızı unutmayın. Aslında, WMI olaylarının günlüğe kaydedilmesi varsayılan olarak devre dışıdır ve açıkça açılması gerekir. Bu etkinleştirildikten sonra, çalıştırılan WMI sorgusunun tamamını nihayet görebilirsiniz:
Yukarıda belirtilen takma adların tümü uzaktan kullanılabilir. Ayrıca ‘yol’ seçeneğini kullanarak sınıflarla doğrudan etkileşime girebilirsiniz. Örneğin, uzaktaki bir makinedeki yerel yöneticileri keşfetmenin çok gizli bir yolu var (etki alanının bilgisayar adı olduğunu unutmayın):
|
|
Not: Wmic’i komut isteminden jarrieta olarak çalıştırdım, dolayısıyla /user belirtmeme gerek kalmadı
Bir başka yararlı oneliner, bir makinede kimin oturum açtığını görmektir (yöneticileri avlarken için):
|
|
wmic
hatta bir metin dosyasındaki düğümleri okuyabilir ve komutu hepsinde çalıştırabilir. İş istasyonlarının bir metin dosyasına sahipseniz:
|
|
Yukarıdaki örnekler WMI’ın yapabileceklerinin ancak yüzeyini çizmektedir. Her türlü bilgiyi sorgulamanın yanı sıra ayarları değiştirme ve yeni nesneler oluşturma olanağına da sahipsiniz. Örneğin, kullanıcının şifrelerini bile WMI aracılığıyla değiştirebilirsiniz.
Neyse ki pek çok akıllı insan, WMI’nin saldırganlar için en iyi özelliklerini son derece kullanışlı PowerShell komut dosyalarına dönüştürdü. Bu tür sorgular, Nishang ve PowerSploit gibi çerçevelerde yer aldığını gördüğünüz birçok keşif aracının merkezinde yer alır.
WMI Süreci Oluşturma
Şimdi WMI’nin “en iyi” özelliklerinden birine geliyoruz; uzaktan kod yürütmek için kullanılabilmesi!
Win32_Process sınıfı sorgulamak, değiştirmek, sonlandırmak ve WMI aracılığıyla çağrılabilir. yaratmak süreçleri çalıştırıyor.
Hızlı bir örnek olarak, yerel bir makinede WMI deyimi aracılığıyla “calc.exe”yi başlatma komutunu burada bulabilirsiniz:
Komut, İşlem Kimliğini ve Dönüş Değerini döndürür (0, hata olmadığı anlamına gelir)
Belirterek /node
süreçleri uzaktan oluşturmak ve komutları yürütmek inanılmaz derecede kolaydır. Son gönderide Meterpreter’ı bir cihazdan başlatmayı gösterdim. sc create
Metasploit’in web_delivery modülü ile komut verin. Bunu değiştirmek için bu sefer bir PowerShell Empire aracısı başlatalım. İlk olarak, Empire’daki “başlatıcı” aşamasını kullanarak yürütülecek komut dizesini oluşturun:
|
|
Ve şimdi Windows’tan, bu dizeyi yürütmek için WMI üzerinden uzaktan bir işlem oluşturacağız:
|
|
Başarıyla yürütüldüğünü görüyoruz (ReturnValue = 0). Ve bir saniye sonra Empire dinleyicimiz bunu anlıyor. İşlem kimliğinin WMI’nin döndürdüğü ile aynı olduğunu unutmayın:
Kurban makinede hiçbir pencere açılmadı, hiçbir ikili dosya bırakılmadı, hiçbir hizmet oluşturulmadı ve makine WMI Etkinliğini günlüğe kaydedecek şekilde yapılandırılmadığı sürece geride kolayca izlenebilir hiçbir günlük kalmadı. Seksi.
Bu, Kali araçlarının “wmiexec.py”, “wmis” ve CrackMapExec’in kullandığı tekniğin aynısıdır.
WinRM
Windows Uzaktan Yönetim (WinRM), SOAP kullanarak Windows makinelerinin HTTP(S) üzerinden uzaktan yönetilmesine olanak tanıyan bir Microsoft protokolüdür. Arka uçta WMI kullanıyor, dolayısıyla onu WMI için HTTP tabanlı bir API olarak düşünebilirsiniz.
Bunu tartışmak için çok fazla zaman harcamayacağım çünkü açıkçası bunu bir müşteride kullanıldığını hiç görmedim ve bu nedenle gerçekten faydalanmadım, ancak laboratuvarımda onunla oynadım. Karşılaşırsam en azından aşina olmak iyi olur.
Makinede WinRM etkinleştirildiyse makineyi PowerShell’den uzaktan yönetmek çok kolaydır. Aslında, makinedeki uzak bir PowerShell oturumuna katılabilirsiniz (sanki SSH kullanıyormuşsunuz gibi!)
WinRM’nin kullanılabilir olup olmadığını tespit etmenin en kolay yolu portun açık olup olmadığına bakmaktır. WinRM iki bağlantı noktasından birini dinleyecektir:
- 5985/tcp (HTTP)
- 5986/tcp (HTTPS)
Bu bağlantı noktalarından biri açıksa WinRM yapılandırılmıştır ve uzak oturuma girmeyi deneyebilirsiniz.
WinRM Oturumunu Başlatma.
Öncelikle saldırı makinemizi WinRM ile çalışacak şekilde yapılandırmamız gerekiyor. Bunu etkinleştirmemiz ve tüm “kurbanları” güvenilir ana bilgisayarlar olarak eklememiz gerekiyor. Yükseltilmiş bir PowerShell isteminden aşağıdaki iki komutu çalıştırın:
|
|
Bu, güvenilir ana bilgisayarlar ayarına bir joker karakter ekler. Bunun neleri gerektirdiğine karşı dikkatli olun. Not: Ayrıca saldırı makinemdeki ağ türünü “Genel”den “İş” ağına değiştirmek zorunda kaldım. YMMV
Saldırı makinesi yapılandırıldıktan sonra Test-WSMan
Hedefin WinRM için yapılandırılıp yapılandırılmadığını test etme işlevi. Protokol sürümü ve wsmid hakkında bazı bilgilerin döndürüldüğünü görmelisiniz:
Bu durumda “ordws01”in yapılandırıldığını ancak “ordws04”ün yapılandırılmadığını görüyoruz.
Artık PowerShell’i kullanabiliriz Invoke-Command
WinRM üzerinden hedef üzerinde uzaktan bir komut yürütmek için. Uzaktan çalıştırmak için ipconfig
ve çıktıya bakın:
|
|
Veya doğrudan etkileşimli bir PowerShell oturumuna katılmak istiyorsanız Enter-PSSession
işlev:
WinRM’yi Açmaya Zorlamak. PS Remoting ve WinRM’yi gerçekten kullanmak istiyorsanız ancak hedef bunun için yapılandırılmamışsa, tek bir komutla bunu “zorlayabilirsiniz”. Bunu tavsiye etmem ama gerçekten WinRM veya PSRemoting’i kullanmak istiyorsanız kesinlikle bu şekilde yapın. Örneğin, PSExec kullanarak:
|
|
Artık ordws04’te uzak PS oturumuna girebiliriz (daha önce devre dışı olduğunu görmüştük).
Özet
Microsoft, sistem yöneticilerinin Windows ortamlarını uzaktan yönetebilmeleri için gerçekten çok sayıda yararlı özellik uygulamaktadır. Ne yazık ki, bu araç ve tekniklerin her biri kötü niyetli aktörler veya pentester’lar tarafından kullanılabilir ve kötüye kullanılabilir.
Metasploit, CrackMapExec ve Impacket gibi araçlar inanılmaz derecede güçlüdür ve neredeyse işaretle ve tıkla (ya da CLI eşdeğeri ne olursa olsun – yaz ve tıkla?) kullanarak pentesterlerin işini çok daha kolay hale getirir. Ancak bu araçlara çok fazla güvenmek kolaydır ve nasıl çalıştıkları veya tekniklerini manuel olarak nasıl yeniden oluşturacakları hakkında bilgi sahibi olmadan, bunlara erişimi olmayan bir pentester fazla bir şey yapamayacaktır.
Bölüm 1’de, kimlik bilgileriniz olduğunda Kali linux’taki Windows ana bilgisayarlarında komut çalıştırmanın en hızlı ve en güvenilir yollarından bazılarını açıkladım. Bölüm 2 ve 3’te, gerçekte nasıl çalıştıklarını göstermek için aynı teknikleri Windows’ta manuel olarak uyguladım. Araçları kullanmayı bırakmayacağım (onlar çok harikalar!) ama artık ben ve umarım siz, işe yaramazsa veya mevcut değilse ne deneyeceğimi biliyorum.
Umarım seriyi beğenmişsinizdir. Herhangi bir şeyi kaçırırsam veya herhangi bir şeye ilişkin sınırlı, basitleştirilmiş açıklamalarım yanlışsa bana bildirin. Bu araç ve tekniklerin kullanımıyla ilgili gelecekteki gönderilere bakın olmadan şifreler. PTH ve Kerberos ftw!
-ropnop