Windows Local Privilege Escalation
Windows yerel ayrıcalık yükseltme vektörlerini aramak için en iyi araç: WinPEAS
Başlangıç Windows Teorisi
Erişim Jetonları
Windows Erişim Jetonları nedir bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okuyun:
pageAccess TokensACL'ler - DACL'ler/SACL'ler/ACE'ler
ACL'ler - DACL'ler/SACL'ler/ACE'ler hakkında daha fazla bilgi için aşağıdaki sayfayı kontrol edin:
pageACLs - DACLs/SACLs/ACEsBütünlük Seviyeleri
Windows'taki bütünlük seviyeleri hakkında bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okumalısınız:
pageIntegrity LevelsWindows Güvenlik Kontrolleri
Windows'ta sistemi numaralandırmanızı engelleyebilecek, yürütülebilir dosyaları çalıştırmanızı veya hatta faaliyetlerinizi tespit etmenizi önleyebilecek farklı şeyler bulunmaktadır. Ayrıcalık yükseltme numaralandırmasına başlamadan önce bu savunma mekanizmalarını okumalı ve tüm bu savunmaları numaralandırmalısınız:
pageWindows Security ControlsSistem Bilgisi
Sürüm bilgisi numaralandırma
Windows sürümünün bilinen bir güvenlik açığı olup olmadığını kontrol edin (uygulanan yamaları da kontrol edin).
Sürüm Sızıntıları
Bu site, Microsoft güvenlik açıkları hakkında detaylı bilgi aramak için kullanışlıdır. Bu veritabanında 4,700'den fazla güvenlik açığı bulunmaktadır, Windows ortamının sunduğu geniş saldırı yüzeyini göstermektedir.
Sistemde
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas, watson gömülüdür)
Yerel sistem bilgileri ile
Exploit Github depoları:
Ortam
Ortam değişkenlerinde kaydedilmiş herhangi bir kimlik bilgisi/önemli bilgi var mı?
PowerShell Geçmişi
PowerShell Transkript Dosyaları
Bunu nasıl açacağınızı https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/ adresinden öğrenebilirsiniz.
PowerShell Modül Günlüğü
PowerShell boru hattı yürütmelerinin ayrıntıları kaydedilir, yürütülen komutları, komut çağrılarını ve betik parçalarını kapsar. Bununla birlikte, tam yürütme ayrıntıları ve çıktı sonuçları yakalanmayabilir.
Bunu etkinleştirmek için, belgelerin "Transkript dosyaları" bölümündeki talimatları izleyin ve "Powershell Transcription" yerine "Modül Günlüğü" seçeneğini tercih edin.
Son 15 etkinliği PowersShell günlüklerinden görüntülemek için şunu yürütebilirsiniz:
PowerShell Komut Bloğu Günlüğü
Komut dosyasının yürütülmesine ilişkin tam bir etkinlik ve içerik kaydı yakalanır, böylece her kod bloğu çalıştırıldığı şekilde belgelenir. Bu süreç, her etkinliğin kapsamlı bir denetim izini korumasını sağlar, bu da adli bilişim ve kötü niyetli davranışların analizi için değerlidir. Yürütme anındaki tüm etkinliklerin belgelenmesiyle, işlem hakkında detaylı içgörüler sağlanır.
Script Block için günlük olaylar, Windows Olay Görüntüleyicisi'nde şu yol üzerinde bulunabilir: Uygulama ve Hizmet Günlükleri > Microsoft > Windows > PowerShell > Operasyonel. Son 20 olayı görüntülemek için şunu kullanabilirsiniz:
İnternet Ayarları
Sürücüler
WSUS
Eğer güncellemeler http ile değil de httpS kullanılarak istenmiyorsa sistem tehlikeye girebilir.
Aşağıdaki komutu çalıştırarak ağın SSL olmayan WSUS güncellemesi kullandığını kontrol edebilirsiniz:
Eğer şöyle bir yanıt alırsanız:
Ve eğer HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
değeri 1
'e eşitse.
O zaman, saldırılabilir. Eğer son kayıt 0'a eşitse, o zaman WSUS girişi yok sayılacaktır.
Bu zafiyetleri sömürmek için Wsuxploit, pyWSUS gibi araçları kullanabilirsiniz - Bunlar, 'sahte' güncellemeleri non-SSL WSUS trafiğine enjekte etmek için kullanılan MiTM silahlaştırılmış saldırı betikleridir.
Araştırmayı buradan okuyabilirsiniz:
WSUS CVE-2020-1013
Tam raporu buradan okuyun. Temelde, bu hata tarafından sömürülen açık şudur:
Eğer yerel kullanıcı proxy'sini değiştirme yetkimiz varsa ve Windows Güncellemeleri, Internet Explorer'ın ayarlarında yapılandırılan proxy'yi kullanıyorsa, bu durumda PyWSUS'u yerel olarak çalıştırarak kendi trafiğimizi araya sokabilir ve varlığımızda yükseltilmiş bir kullanıcı olarak kod çalıştırabiliriz.
Ayrıca, WSUS hizmeti mevcut kullanıcının ayarlarını kullanır ve bu nedenle sertifika deposunu kullanır. WSUS ana bilgisayar adı için bir öz imzalı sertifika oluşturursak ve bu sertifikayı mevcut kullanıcının sertifika deposuna eklersek, hem HTTP hem de HTTPS WSUS trafiğini araya sokabiliriz. WSUS, sertifikada güven ilk kullanımda güven türünde bir doğrulama uygulamak için HSTS benzeri mekanizmalar kullanmaz. Sunulan sertifika kullanıcı tarafından güvenilirse ve doğru ana bilgisayar adına sahipse, hizmet tarafından kabul edilecektir.
Bu zafiyeti WSUSpicious aracını kullanarak sömürebilirsiniz (özgür bırakıldığında).
KrbRelayUp
Belirli koşullar altında Windows alan ortamlarında bir yerel ayrıcalık yükseltme zafiyeti bulunmaktadır. Bu koşullar, LDAP imzalamanın zorunlu olmadığı ortamları, kullanıcıların Kaynak Tabanlı Kısıtlanmış Delege (RBCD) yapılandırmasına izin veren kendi haklarına sahip olduğu ve kullanıcıların alan içinde bilgisayarlar oluşturabilme yeteneğine sahip olduğu ortamları içerir. Bu gereksinimlerin, varsayılan ayarlar kullanılarak karşılandığını belirtmek önemlidir.
Sömürüyü bulabilirsiniz https://github.com/Dec0ne/KrbRelayUp
Saldırının akışı hakkında daha fazla bilgi için https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
AlwaysInstallElevated
Eğer bu 2 kayıt etkinse (değeri 0x1 ise), herhangi bir ayrıcalığa sahip kullanıcılar *.msi
dosyalarını NT AUTHORITY\SYSTEM olarak yükleme (çalıştırma) yapabilir.
Metasploit yük yükleri
Eğer bir meterpreter oturumunuz varsa, bu tekniği exploit/windows/local/always_install_elevated
modülünü kullanarak otomatize edebilirsiniz.
PowerUP
Power-up'dan Write-UserAddMSI
komutunu kullanarak ayrıcalıkları yükseltmek için mevcut dizine bir Windows MSI ikili dosyası oluşturun. Bu komut dosyası, kullanıcı/grup eklemesi için bir kullanıcıya sormak üzere derlenmiş bir MSI yükleyicisi oluşturur (bu nedenle GIU erişimine ihtiyacınız olacak):
MSI Sargısı
Bu araçları kullanarak bir MSI sargısı oluşturmayı öğrenmek için bu kılavuzu okuyun. Sadece komut satırlarını çalıştırmak istiyorsanız bir ".bat" dosyasını sargılayabilirsiniz.
pageMSI WrapperWIX ile MSI Oluşturma
pageCreate MSI with WIXVisual Studio ile MSI Oluşturma
Cobalt Strike veya Metasploit ile
C:\privesc\beacon.exe
konumunda yeni bir Windows EXE TCP yükü oluşturun.Visual Studio'yu açın, Yeni bir proje oluştur'u seçin ve arama kutusuna "kurulumcu" yazın. Kurulum Sihirbazı projesini seçin ve İleri'ye tıklayın.
Projeye AlwaysPrivesc gibi bir ad verin, konum olarak
C:\privesc
'yi kullanın, çözümü ve projeyi aynı dizine yerleştir seçeneğini işaretleyin ve Oluştur'a tıklayın.İleri'ye tıklayarak devam edin ve 4 adımlı işlemde 3. adıma gelene kadar devam edin (dahil edilecek dosyaları seçin). Ekle'ye tıklayın ve oluşturduğunuz Beacon yükünü seçin. Sonra Bitir'e tıklayın.
Çözüm Gezgini'nde AlwaysPrivesc projesini vurgulayın ve Özellikler'de Hedef Platform'u x86 yerine x64 olarak değiştirin.
Kurulan uygulamayı daha meşru gösterebilecek Yazar ve Üretici gibi diğer özellikleri değiştirebilirsiniz.
Projeye sağ tıklayın ve Görünüm > Özel Eylemler'i seçin.
Yükle'ye sağ tıklayın ve Özel Eylem Ekle'yi seçin.
Uygulama Klasörü üzerine çift tıklayın, beacon.exe dosyanızı seçin ve Tamam'a tıklayın. Bu, kurulumcu çalıştırıldığında beacon yükünün hemen yürütülmesini sağlar.
Özel Eylem Özellikleri'nde Run64Bit'i True olarak değiştirin.
Son olarak, derleyin.
`Dosya 'beacon-tcp.exe', 'x86' hedef platformuyla uyumlu değil' uyarısı görüntülenirse, platformu x64 olarak ayarladığınızdan emin olun.
MSI Kurulumu
Kötücül .msi
dosyasının arkaplanda kurulumunu çalıştırmak için:
Bu zafiyeti sömürmek için şunu kullanabilirsiniz: exploit/windows/local/always_install_elevated
Antivirüs ve Algılayıcılar
Denetim Ayarları
Bu ayarlar neyin günlüğe kaydedildiğini belirler, bu yüzden dikkat etmelisiniz
WEF
Windows Event Forwarding, günlüklerin nereye gönderildiğini bilmek açısından ilginçtir
LAPS
LAPS, yerel Yönetici şifrelerinin yönetimi için tasarlanmış olup, her şifrenin alan adına katılan bilgisayarlarda benzersiz, rastgele ve düzenli olarak güncellendiğinden emin olur. Bu şifreler Active Directory içinde güvenli bir şekilde depolanır ve yalnızca ACL'ler aracılığıyla yeterli izinleri verilen kullanıcılar tarafından erişilebilir, bunlar da yetkilendirilmişse yerel yönetici şifrelerini görebilirler.
pageLAPSWDigest
Eğer etkinse, düz metin şifreleri LSASS'ta (Yerel Güvenlik Otoritesi Alt Sistemi Hizmeti) depolanır. WDigest hakkında daha fazla bilgi için bu sayfaya bakın.
LSA Koruma
Windows 8.1 ile başlayarak, Microsoft, yerel Güvenlik Otoritesi (LSA)'nın belleğini okumaya veya kod enjekte etmeye çalışan güvensiz işlemleri engellemek için geliştirilmiş bir koruma tanıttı, böylece sistem daha da güvenli hale getirildi. Daha fazla LSA Koruma bilgisi için buraya tıklayın.
Kimlik Bilgileri Koruma
Kimlik Bilgileri Koruma, Windows 10'da tanıtıldı. Amacı, bir cihazda saklanan kimlik bilgilerini geçiş anahtarını kullanarak yapılan saldırılar gibi tehditlere karşı korumaktır.| Kimlik Bilgileri Koruma hakkında daha fazla bilgi burada.
Önbelleğe Alınmış Kimlik Bilgileri
Alan kimlik bilgileri, Yerel Güvenlik Otoritesi (LSA) tarafından doğrulanır ve işletim sistemi bileşenleri tarafından kullanılır. Bir kullanıcının oturum açma verileri, kayıtlı bir güvenlik paketi tarafından doğrulandığında, genellikle kullanıcı için alan kimlik bilgileri oluşturulur. Önbelleğe Alınmış Kimlik Bilgileri hakkında daha fazla bilgi için buraya tıklayın.
Kullanıcılar ve Gruplar
Kullanıcıları ve Grupları Sıralama
İlgili izinlere sahip olabileceğiniz grupları kontrol etmelisiniz.
Ayrıcalıklı gruplar
Eğer bir ayrıcalıklı gruba ait iseniz ayrıcalıkları yükseltebilirsiniz. Ayrıcalıklı gruplar hakkında bilgi edinin ve ayrıcalıkları yükseltmek için nasıl kötüye kullanabileceğinizi buradan öğrenin:
pagePrivileged GroupsToken manipülasyonu
Daha fazla bilgi edinmek için bu sayfada token nedir: Windows Tokens. İlgili tokenlar hakkında bilgi edinmek ve nasıl kötüye kullanabileceğinizi öğrenmek için aşağıdaki sayfayı kontrol edin:
pageAbusing TokensGiriş yapmış kullanıcılar / Oturumlar
Ev klasörleri
Parola Politikası
Pano içeriğini alma
Çalışan İşlemler
Dosya ve Klasör İzinleri
İlk olarak, işlemleri listele ve işlemin komut satırında parolaları kontrol et. Eğer bazı çalışan ikili dosyaları üzerine yazabilir veya ikili dosya klasöründe yazma izinleriniz varsa, olası DLL Hijacking saldırılarını kullanarak zafiyetleri sömürüp sömüremeyeceğinizi kontrol edin:
Her zaman çalışan olası electron/cef/chromium hata ayıklayıcılarını kontrol edin, ayrıcalıkları yükseltmek için kötüye kullanabilirsiniz.
İşlem ikili dosyalarının izinlerini kontrol etme
İşlem ikili dosyalarının klasörlerinin izinlerini kontrol etme (DLL Hijacking)
Bellek Şifre Madenciliği
Sysinternals'den procdump kullanarak çalışan bir işlemin belleğini oluşturabilirsiniz. FTP gibi hizmetlerde şifreler açık metin olarak bellekte bulunur, belleği dökerek şifreleri okumaya çalışın.
Güvensiz GUI uygulamaları
SISTEM olarak çalışan uygulamalar bir kullanıcının CMD başlatmasına veya dizinleri gezmesine izin verebilir.
Örnek: "Windows Yardım ve Destek" (Windows + F1), "komut istemi" arayın, "Komut İstemi'ni Açmak İçin Tıklayın" üzerine tıklayın
Hizmetler
Hizmet listesini al:
İzinler
Bir hizmetin bilgilerini almak için sc komutunu kullanabilirsiniz
Binary accesschk'e Sysinternals 'dan erişmek, her bir servis için gerekli olan ayrıcalık seviyesini kontrol etmek için önerilir.
Önerilen, "Authenticated Users"ın herhangi bir hizmeti değiştirip değiştiremeyeceğini kontrol etmektir:
XP için accesschk.exe'yi buradan indirebilirsiniz
Hizmeti Etkinleştir
Eğer bu hatayla karşılaşıyorsanız (örneğin SSDPSRV ile):
1058 sistem hatası oluştu. Hizmet başlatılamıyor, ya devre dışı bırakıldığı için ya da ona bağlı etkin cihazlar yoktur.
Etkinleştirebilirsiniz:
Hizmet upnphost'un çalışması için SSDPSRV hizmetine bağımlı olduğunu unutmayın (XP SP1 için)
Bu sorunun başka bir çözümü şudur:
Hizmet ikili yolu değiştirme
"Kimlik doğrulanmış kullanıcılar" grubunun bir hizmet üzerinde SERVICE_ALL_ACCESS yetkisine sahip olduğu senaryoda, hizmetin yürütülebilir ikilisinin değiştirilmesi mümkündür. sc'yi değiştirmek ve yürütmek için:
Servisi yeniden başlatma
Ayrıcalıklar çeşitli izinler aracılığıyla yükseltilebilir:
SERVICE_CHANGE_CONFIG: Hizmet ikili dosyasının yeniden yapılandırılmasına izin verir.
WRITE_DAC: İzin yeniden yapılandırmayı etkinleştirir, bu da hizmet yapılandırmalarını değiştirme yeteneğine yol açar.
WRITE_OWNER: Sahiplik edinme ve izin yeniden yapılandırmaya izin verir.
GENERIC_WRITE: Hizmet yapılandırmalarını değiştirme yeteneğini devralır.
GENERIC_ALL: Ayrıca hizmet yapılandırmalarını değiştirme yeteneğini devralır.
Bu zafiyetin tespiti ve istismarı için exploit/windows/local/service_permissions kullanılabilir.
Hizmet ikili dosyalarının zayıf izinleri
Hizmet tarafından yürütülen ikili dosyayı değiştirebileceğinizi kontrol edin veya ikili dosyanın bulunduğu klasörde yazma izinlerinizin olup olmadığını kontrol edin (DLL Hijacking). wmic kullanarak (system32'de değil) hizmet tarafından yürütülen her ikili dosyayı alabilir ve icacls kullanarak izinlerinizi kontrol edebilirsiniz:
Ayrıca sc ve icacls komutlarını kullanabilirsiniz:
Hizmetler kayıt defteri değiştirme izinleri
Herhangi bir hizmet kayıt defterini değiştirip değiştiremeyeceğinizi kontrol etmelisiniz. Bir hizmet kayıt defteri üzerindeki izinlerinizi kontrol edebilirsiniz:
Authenticated Users veya NT AUTHORITY\INTERACTIVE'in FullControl
izinlerine sahip olup olmadığı kontrol edilmelidir. Eğer öyleyse, hizmet tarafından yürütülen ikili dosya değiştirilebilir.
Yürütülen ikili dosyanın Yolunu değiştirmek için:
Hizmetler kayıt defteri AppendData/AddSubdirectory izinleri
Bir kayıt defteri üzerinde bu izne sahipseniz, bu demek oluyor ki bu kayıttan alt kayıtlar oluşturabilirsiniz. Windows hizmetleri durumunda bu, keyfi kodu yürütmek için yeterlidir:
pageAppendData/AddSubdirectory permission over service registryTırnak İçermeyen Hizmet Yolları
Bir yürütülebilir dosyanın yolu tırnak içinde değilse, Windows her boşluktan önce biten her şeyi yürütmeye çalışacaktır.
Örneğin, C:\Program Files\Some Folder\Service.exe yolu için Windows, şunları yürütmeye çalışacaktır:
Tüm dahili Windows hizmetlerine ait olmayan tırnak içinde olmayan hizmet yollarını listeleyin:
Bu zafiyeti metasploit ile tespit edebilir ve sömürebilirsiniz: exploit/windows/local/trusted\_service\_path
Metasploit ile manuel olarak bir hizmet ikili dosyası oluşturabilirsiniz:
Kurtarma İşlemleri
Windows, bir hizmet başarısız olduğunda alınacak adımların belirlenmesine izin verir. Bu özellik bir ikili dosyaya işaret etmek üzere yapılandırılabilir. Bu ikili dosya değiştirilebilirse, ayrıcalık yükseltme mümkün olabilir. Daha fazla ayrıntıya resmi belgelerde ulaşılabilir.
Uygulamalar
Yüklü Uygulamalar
İkili dosyaların izinlerini kontrol edin (belki birini üzerine yazabilir ve ayrıcalıkları yükseltebilirsiniz) ve dizinlerin izinlerini (DLL Kaldırma) kontrol edin.
Yazma İzinleri
Bazı yapılandırma dosyalarını değiştirip özel bir dosyayı okuyup okuyamayacağınızı veya bir Yönetici hesabı tarafından yürütülecek bir ikili dosyayı değiştirip değiştiremeyeceğinizi kontrol edin (schedtasks).
Sistemde zayıf klasör/dosya izinlerini bulmanın bir yolu şöyledir:
Başlangıçta çalıştır
Farklı bir kullanıcı tarafından çalıştırılacak bir kayıt defteri veya ikili dosyayı üzerine yazabileceğinizi kontrol edin. Ayrıcalıkları yükseltmek için ilginç otomatik çalıştırma konumları hakkında daha fazla bilgi edinmek için aşağıdaki sayfayı okuyun:
pagePrivilege Escalation with AutorunsSürücüler
Mümkün üçüncü taraf garip/korunmasız sürücüler arayın
YOL DLL Kaçırma
Eğer PATH'te bulunan bir klasörde yazma izinleriniz varsa, bir süreç tarafından yüklenen bir DLL'yi kaçırabilir ve yetkileri yükseltebilirsiniz.
PATH içindeki tüm klasörlerin izinlerini kontrol edin:
Bu denetimi nasıl kötüye kullanacağınız hakkında daha fazla bilgi için:
pageWritable Sys Path +Dll Hijacking PrivescAğ
Paylaşımlar
hosts dosyası
Diğer bilinen bilgisayarları hosts dosyasında sabitlenmiş olarak kontrol edin
Ağ Arayüzleri ve DNS
Açık Portlar
Dışarıdan kısıtlanmış servisleri kontrol edin
Yönlendirme Tablosu
ARP Tablosu
Güvenlik Duvarı Kuralları
Güvenlik duvarı ile ilgili komutlar için bu sayfaya bakın (kuralları listele, kurallar oluştur, kapat, kapat...)
Daha fazla ağ taraması komutu burada
Windows Alt Sistemi Linux (wsl)
Binary bash.exe
ayrıca C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
konumunda bulunabilir.
Root kullanıcısına erişirseniz herhangi bir porta dinleyebilirsiniz (nc.exe
'yi ilk kez bir porta dinlemek için kullandığınızda, güvenlik duvarı tarafından nc
'nin izin verilip verilmeyeceği GUI aracılığıyla sorulacaktır).
Bash'ı kolayca root olarak başlatmak için --default-user root
komutunu deneyebilirsiniz.
WSL
dosya sistemini C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
klasöründe keşfedebilirsiniz.
Windows Kimlik Bilgileri
Winlogon Kimlik Bilgileri
Kimlik bilgileri yöneticisi / Windows kasası
https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Windows Vault, Windows'un kullanıcıları otomatik olarak giriş yapabileceği sunucular, web siteleri ve diğer programlar için kullanıcı kimlik bilgilerini depolar. İlk bakışta, bu, kullanıcıların Facebook kimlik bilgilerini, Twitter kimlik bilgilerini, Gmail kimlik bilgilerini vb. depolayabileceği ve böylece tarayıcılar aracılığıyla otomatik olarak giriş yapabileceği anlamına gelebilir. Ancak durum böyle değil.
Windows Vault, Windows'un kullanıcıları otomatik olarak giriş yapabileceği kimlik bilgilerini depolar, yani Windows uygulamaları, bir kaynağa erişmek için kimlik bilgilerine ihtiyaç duyduğunda, bu Kimlik Bilgileri Yöneticisi ve Windows Vault'tan yararlanabilir ve kullanıcıların sürekli olarak kullanıcı adı ve şifre girmesi yerine sağlanan kimlik bilgilerini kullanabilir.
Uygulamalar Kimlik Bilgileri Yöneticisi ile etkileşime geçmedikçe, belirli bir kaynağın kimlik bilgilerini kullanmalarının mümkün olmadığını düşünüyorum. Dolayısıyla, uygulamanız kasayı kullanmak istiyorsa, varsayılan depolama kasasından belirli bir kaynağın kimlik bilgilerini iletişim kurarak ve talep ederek kullanmalıdır.
Makinede depolanan kimlik bilgilerini listelemek için cmdkey
komutunu kullanın.
Ardından kayıtlı kimlik bilgilerini kullanmak için runas
komutunu /savecred
seçenekleriyle kullanabilirsiniz. Aşağıdaki örnek, bir SMB paylaşımı aracılığıyla uzak bir ikili dosyayı çağırıyor.
runas
komutunu sağlanan bir kimlik bilgesi kümesi ile kullanma.
Mimikatz, lazagne, credentialfileview, VaultPasswordView veya Empire Powershells modülünden bilgi alınabilir.
DPAPI
Veri Koruma API'sı (DPAPI), verilerin simetrik şifrelemesi için bir yöntem sağlar ve genellikle Windows işletim sisteminde asimetrik özel anahtarların simetrik şifrelemesi için kullanılır. Bu şifreleme, entropiye önemli ölçüde katkıda bulunan bir kullanıcı veya sistem sırrını kullanır.
DPAPI, kullanıcının giriş sırlarından türetilen simetrik bir anahtar aracılığıyla anahtarların şifrelenmesini sağlar. Sistem şifrelemesi içeren senaryolarda, sistem alan kimlik doğrulama sırlarını kullanır.
DPAPI kullanılarak şifrelenmiş kullanıcı RSA anahtarları, %APPDATA%\Microsoft\Protect\{SID}
dizininde depolanır, burada {SID}
kullanıcının Güvenlik Tanımlayıcısını temsil eder. DPAPI anahtarı, genellikle kullanıcının özel anahtarlarını koruyan anahtarla aynı dosyada bulunan 64 byte'lık rastgele veriden oluşur. (Bu dizine erişim kısıtlıdır ve CMD'de dir
komutuyla içeriği listelenemez, ancak PowerShell ile listelenebilir).
Mimikatz modülünü uygun argümanlarla (/pvk
veya /rpc
) kullanarak şifrelemeyi çözebilirsiniz.
Genellikle ana şifre ile korunan kimlik dosyaları şurada bulunur:
Mimikatz modülü dpapi::cred
'i uygun /masterkey
ile kullanarak şifreyi çözebilirsiniz.
Eğer root iseniz, sekurlsa::dpapi
modülü ile bellekten birçok DPAPI masterkey'i çıkarabilirsiniz.
PowerShell Kimlik Bilgileri
PowerShell kimlik bilgileri genellikle betik yazma ve otomasyon görevleri için şifrelenmiş kimlik bilgilerini kullanmanın uygun bir yoludur. Kimlik bilgileri genellikle DPAPI kullanılarak korunur, bu da genellikle yalnızca aynı kullanıcı tarafından ve aynı bilgisayarda oluşturuldukları bilgisayar üzerinde çözülebileceği anlamına gelir.
Bir dosyada bulunan PS kimlik bilgilerini çözmek için şunları yapabilirsiniz:
Wifi
Wifi
Kaydedilmiş RDP Bağlantıları
Onları HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
ve HKCU\Software\Microsoft\Terminal Server Client\Servers\
dizinlerinde bulabilirsiniz.
Son Çalıştırılan Komutlar
Uzak Masaüstü Kimlik Bilgisi Yöneticisi
Mimikatz dpapi::rdg
modülünü uygun /masterkey
ile kullanarak herhangi bir .rdg dosyasını şifreleyebilirsiniz
Mimikatz sekurlsa::dpapi
modülü ile bellekten birçok DPAPI anahtarını çıkarabilirsiniz
Yapışkan Notlar
İnsanlar genellikle Windows iş istasyonlarında StickyNotes uygulamasını kullanarak şifreleri ve diğer bilgileri kaydettiklerinin farkında olmadan, bu dosyanın bir veritabanı dosyası olduğunu. Bu dosya C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
konumunda bulunur ve her zaman aranmaya ve incelenmeye değerdir.
AppCmd.exe
AppCmd.exe'den şifreleri kurtarmak için Yönetici olmanız ve Yüksek Bütünlük seviyesinde çalışmanız gerektiğini unutmayın.
AppCmd.exe %systemroot%\system32\inetsrv\
dizininde bulunur.
Bu dosya mevcutsa, bazı kimlik bilgilerinin yapılandırılmış olabileceği ve kurtarılabilir olduğu mümkündür.
Bu kod PowerUP'dan çıkarılmıştır:
SCClient / SCCM
C:\Windows\CCM\SCClient.exe
dosyasının varlığını kontrol edin.
Yükleyiciler SYSTEM ayrıcalıklarıyla çalıştırılır, birçok yükleyici DLL Yan Yükleme açığına sahiptir (https://github.com/enjoiz/Privesc) adresinden bilgi alınabilir.
Dosyalar ve Kayıt Defteri (Kimlik Bilgileri)
Putty Kimlik Bilgileri
Putty SSH Anahtarları
Kayıt Defterinde SSH anahtarları
SSH özel anahtarları, HKCU\Software\OpenSSH\Agent\Keys
kayıt defteri anahtarının içine depolanabilir, bu yüzden orada ilginç bir şey olup olmadığını kontrol etmelisiniz:
Eğer bu yol içinde herhangi bir giriş bulursanız, muhtemelen kaydedilmiş bir SSH anahtarı olacaktır. Şifreli olarak depolanmış olsa da https://github.com/ropnop/windows_sshagent_extract kullanılarak kolayca şifresi çözülebilir. Bu teknik hakkında daha fazla bilgi burada: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/
Eğer ssh-agent
servisi çalışmıyorsa ve otomatik olarak başlamasını istiyorsanız, şunu çalıştırın:
Bu teknik artık geçerli değil gibi görünüyor. Bazı ssh anahtarları oluşturmayı denedim, onları ssh-add
ile ekledim ve bir makineye ssh üzerinden giriş yapmaya çalıştım. HKCU\Software\OpenSSH\Agent\Keys kaydı mevcut değil ve procmon, asimetrik anahtar kimlik doğrulaması sırasında dpapi.dll
'nin kullanımını tespit etmedi.
Otomatik dosyalar
Ayrıca bu dosyaları metasploit kullanarak da arayabilirsiniz: post/windows/gather/enum_unattend
Örnek içerik:
SAM ve SYSTEM yedeklemeleri
Bulut Kimlik Bilgileri
McAfee SiteList.xml
SiteList.xml dosyasını arayın
Önbelleğe Alınmış GPP Şifresi
Daha önce mevcut olan bir özellik, Grup İlke Tercihleri (GPP) aracılığıyla bir grup makineye özel yerel yönetici hesaplarının dağıtılmasına izin veriyordu. Ancak, bu yöntemin ciddi güvenlik açıkları vardı. İlk olarak, SYSVOL'de XML dosyaları olarak depolanan Grup İlke Nesnelerine (GPO'lar) herhangi bir etki alanı kullanıcısı tarafından erişilebilirdi. İkinci olarak, bu GPP'lerdeki şifreler, genel olarak belgelenmiş varsayılan bir anahtar kullanılarak AES256 ile şifrelenmiş olmasına rağmen, herhangi bir kimlik doğrulama yapmış kullanıcı tarafından çözülebilirdi. Bu, kullanıcıların yükseltilmiş ayrıcalıklar elde etmesine izin verebileceğinden ciddi bir risk oluşturuyordu.
Bu riski azaltmak için, yerel olarak önbelleğe alınmış GPP dosyalarını taramak için bir işlev geliştirildi. Bu dosyalar içinde boş olmayan bir "cpassword" alanı bulunduğunda, işlev şifreyi çözer ve özel bir PowerShell nesnesi döndürür. Bu nesne, GPP ve dosyanın konumu hakkında detaylar içerir ve bu güvenlik açığının tanımlanması ve giderilmesine yardımcı olur.
Bu dosyaları aramak için C:\ProgramData\Microsoft\Group Policy\history
veya C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history (W Vista'dan önce) konumuna bakın:
Groups.xml
Services.xml
Scheduledtasks.xml
DataSources.xml
Printers.xml
Drives.xml
cPassword'i çözmek için:
Kodları almak için crackmapexec kullanımı:
IIS Web Yapılandırması
Örnek web.config dosyası kimlik bilgileriyle:
OpenVPN kimlik bilgileri
Günlükler
Kimlik bilgilerini isteyin
Her zaman kullanıcıdan kimlik bilgilerini girmesini isteyebilirsiniz hatta farklı bir kullanıcının kimlik bilgilerini bile isteyebilirsiniz eğer onları biliyor olabileceğini düşünüyorsanız (müşteriden kimlik bilgilerini sormak gerçekten risklidir):
Kimlik bilgileri içeren olası dosya adları
Bazı zamanlar şifreleri açık metin veya Base64 içeren bilinen dosyalar
Tüm önerilen dosyaları arayın:
Geri Dönüşüm Kutusundaki Kimlik Bilgileri
Ayrıca, içinde kimlik bilgileri aramak için Geri Dönüşüm Kutusunu kontrol etmelisiniz.
Çeşitli programlar tarafından kaydedilen şifreleri kurtarmak için şu bağlantıyı kullanabilirsiniz: http://www.nirsoft.net/password_recovery_tools.html
Kayıt Defterinde
Kimlik bilgileri içeren diğer olası kayıt defteri anahtarları
Kayıttan openssh anahtarlarını çıkarın.
Tarayıcı Geçmişi
Chrome veya Firefox'dan şifrelerin saklandığı veritabanlarını kontrol etmelisiniz. Ayrıca tarayıcıların geçmişini, yer imlerini ve favorilerini kontrol edin, belki bazı şifreler orada saklanmıştır.
Tarayıcılardan şifreleri çıkarmak için araçlar:
Mimikatz:
dpapi::chrome
COM DLL Üzerine Yazma
Component Object Model (COM), farklı dillerdeki yazılım bileşenleri arasında etkileşim sağlayan Windows işletim sistemi içinde yer alan bir teknolojidir. Her COM bileşeni bir sınıf kimliği (CLSID) aracılığıyla tanımlanır ve her bileşen bir veya daha fazla arayüz aracılığıyla işlevselliği sunar, bu arayüzler arayüz kimlikleri (IID) aracılığıyla tanımlanır.
COM sınıfları ve arayüzler, sırasıyla HKEY_CLASSES_ROOT\CLSID ve HKEY_CLASSES_ROOT\Interface altında kayıt defterinde tanımlanır. Bu kayıt defteri, HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes birleştirilerek oluşturulur = HKEY_CLASSES_ROOT.
Bu kayıt defterinin CLSIDs içinde, InProcServer32 adlı çocuk kayıt defterini bulabilirsiniz, bu kayıt defteri bir DLL'ye işaret eden bir varsayılan değer ve Apartment (Tek İplikli), Free (Çoklu İplikli), Both (Tek veya Çoklu) veya Neutral (İplik Nötr) olabilen bir ThreadingModel adlı bir değer içerir.
Temelde, yürütülecek olan DLL'lerden herhangi birini üzerine yazabilirseniz, bu DLL'nin farklı bir kullanıcı tarafından yürütülmesi durumunda yetkileri yükseltebilirsiniz.
Saldırganların COM Hijacking'i kalıcılık mekanizması olarak nasıl kullandığını öğrenmek için şu adrese bakın:
pageCOM HijackingDosyalarda ve kayıt defterinde Genel Şifre araması
Dosya içeriğini arayın
Belirli bir dosya adıyla dosya arayın
Kayıt defterinde anahtar adları ve şifreleri arayın
Parolaları arayan araçlar
MSF-Credentials Eklentisi benim oluşturduğum bir msf eklentisidir. Bu eklenti, kurbanın içinde kimlik bilgilerini arayan her metasploit POST modülünü otomatik olarak çalıştırmak için oluşturulmuştur. Winpeas otomatik olarak bu sayfada belirtilen parolaları içeren tüm dosyaları arar. Lazagne sistemi parolaları çıkarmak için harika bir araçtır.
SessionGopher aracı, bu verileri açık metin olarak saklayan çeşitli araçların (PuTTY, WinSCP, FileZilla, SuperPuTTY ve RDP) oturumları, kullanıcı adlarını ve parolaları arar.
Sızdırılan İşleyiciler
SİSTEM olarak çalışan bir işlem, OpenProcess()
ile tam erişim ile yeni bir işlem açar. Aynı işlem aynı zamanda düşük ayrıcalıklarla yeni bir işlem oluşturur (CreateProcess()
), ancak ana işlemin tüm açık işleyicilerini devralır.
Sonra, düşük ayrıcalıklı işleme tam erişiminiz varsa, OpenProcess()
ile oluşturulan açık işleyiciyi yakalayabilir ve bir kabuk kodu enjekte edebilirsiniz.
Bu zafiyetin nasıl tespit edilip istismar edileceği hakkında daha fazla bilgi için bu örneği okuyun.
Farklı izin seviyeleriyle devralınan işlemlerin ve iş parçacıklarının daha fazla açık işleyicisini nasıl test edip kötüye kullanacağınız hakkında daha kapsamlı bir açıklama için bu diğer yazıyı okuyun.
Adlandırılmış Boru İstemci Taklit Etme
Borular olarak adlandırılan paylaşılan bellek segmentleri, işlem iletişimini ve veri transferini sağlar.
Windows, farklı ağlar üzerinden bile ilişkisiz işlemlerin veri paylaşmasına izin veren Adlandırılmış Borular adlı bir özellik sunar. Bu, rolleri adlandırılmış boru sunucusu ve adlandırılmış boru istemcisi olarak tanımlanan bir istemci/sunucu mimarisine benzer.
Bir istemci tarafından bir boru aracılığıyla gönderilen verilerde, boruyu kuran sunucu, gerekli SeImpersonate haklarına sahipse istemcinin kimliğini alabilir. İletişim kurduğunuz bir boru üzerinden etkileşime girdiğinde, taklit edebileceğiniz bir ağır ayrıcalıklı işlemi tanımlamak, o işlemin kimliğini aldığınızda daha yüksek ayrıcalıklar elde etme fırsatı sunar. Bu tür bir saldırıyı gerçekleştirmek için talimatlar için yardımcı kılavuzlar burada ve burada bulunabilir.
Ayrıca aşağıdaki araç, burp gibi bir araçla adlandırılmış bir boru iletişimini dinlemeye izin verir: https://github.com/gabriel-sztejnworcel/pipe-intercept ve bu araç, tüm boruları listelemenize ve ayrıcalıkları bulmanıza olanak tanır https://github.com/cyberark/PipeViewer
Çeşitli
Şifreler için Komut Satırlarını İzleme
Bir kullanıcı olarak kabuk aldığınızda, komut satırında kimlik bilgilerini ileten zamanlanmış görevler veya diğer işlemler olabilir. Aşağıdaki betik, işlem komut satırlarını her iki saniyede bir yakalar, mevcut durumu önceki durumla karşılaştırır ve herhangi bir farkı çıktılar.
İşlemlerden şifreleri çalmak
Düşük Ayrıcalıklı Kullanıcıdan NT\AUTHORITY SYSTEM'e (CVE-2019-1388) / UAC Atlatma
Grafik arayüze erişiminiz varsa (konsol veya RDP aracılığıyla) ve UAC etkinse, bazı Microsoft Windows sürümlerinde düşük ayrıcalıklı bir kullanıcıdan bir terminal veya "NT\AUTHORITY SYSTEM" gibi başka bir işlemi çalıştırmak mümkündür.
Bu, aynı zafiyetle aynı anda ayrıcalıkları yükseltme ve UAC'yi atlatma olanağı sağlar. Ek olarak, herhangi bir şey yüklemeye gerek yoktur ve işlem sırasında kullanılan ikili dosya, Microsoft tarafından imzalanmış ve yayımlanmıştır.
Etkilenen sistemlerin bazıları aşağıdaki gibidir:
Bu zafiyeti sömürmek için aşağıdaki adımları gerçekleştirmek gereklidir:
Aşağıdaki GitHub deposunda gerekli tüm dosyalar ve bilgiler bulunmaktadır:
https://github.com/jas502n/CVE-2019-1388
Yönetici Orta Seviyeden Yüksek Bütünlük Seviyesine / UAC Atlatma
Bütünlük Seviyeleri hakkında bilgi edinmek için bunu okuyun:
pageIntegrity LevelsArdından UAC ve UAC atlatmaları hakkında bilgi edinmek için bunu okuyun:
pageUAC - User Account ControlYüksek Bütünlükten Sisteme
Yeni servis
Eğer zaten Yüksek Bütünlük sürecinde çalışıyorsanız, SİSTEM'e geçiş sadece yeni bir servis oluşturup çalıştırmak olabilir:
AlwaysInstallElevated
Yüksek Bütünlük sürecinden AlwaysInstallElevated kayıt girdilerini etkinleştirmeyi ve bir ters kabuk kullanarak bir .msi sarmalayıcısı ile bir ters kabuk kurmayı deneyebilirsiniz. Daha fazla bilgi için ilgili kayıt anahtarları ve bir .msi paketini nasıl kuracağınız hakkında buraya bakabilirsiniz.
Yüksek + SeImpersonate ayrıcalıkları ile Sistem'e
Kodu burada bulabilirsiniz.
SeDebug + SeImpersonate'den Tam Token ayrıcalıklarına
Bu token ayrıcalıklarına sahipseniz (bunları muhtemelen zaten Yüksek Bütünlük sürecinde bulacaksınız), SeDebug ayrıcalığı ile nearly any process'i (korunan olmayan süreçler) açabilir, sürecin token'ını kopyalayabilir ve o token ile keyfi bir süreç oluşturabilirsiniz. Bu teknik genellikle tüm token ayrıcalıklarına sahip SYSTEM olarak çalışan herhangi bir sürecin seçilmesi için kullanılır (evet, tüm token ayrıcalıklarına sahip olmayan SYSTEM süreçleri bulabilirsiniz). Önerilen teknik uygulamayı yürüten kod örneğini burada bulabilirsiniz.
Adlandırılmış Borular
Bu teknik, getsystem
içinde yükselmek için meterpreter tarafından kullanılır. Teknik, bir boru oluşturmayı ve ardından o boruya yazmak için bir hizmet oluşturmak/istismar etmeyi içerir. Daha sonra, boruyu oluşturan sunucu (boruyu SeImpersonate
ayrıcalığı ile oluşturan) boru istemcisinin (hizmetin) token'ını taklit edebilecek ve SYSTEM ayrıcalıklarını elde edebilecektir.
Eğer name pipes hakkında daha fazla bilgi edinmek istiyorsanız burayı okumalısınız.
Eğer yüksek bütünlükten Sistem'e name pipes kullanarak nasıl geçileceğine dair bir örnek okumak istiyorsanız burayı okumalısınız.
Dll Kaçırma
Eğer SYSTEM olarak çalışan bir süreç tarafından yüklenen bir dll'yi kaçırmayı başarırsanız, bu izinlerle keyfi kodu yürütebilir hale geleceksiniz. Bu nedenle Dll Kaçırma, bu tür ayrıcalık yükseltmeleri için de yararlıdır ve ayrıca, yüksek bütünlük sürecinden kolayca başarılabilir olacaktır çünkü dll'leri yüklemek için kullanılan klasörlerde yazma izinlerine sahip olacaktır. Dll kaçırma hakkında daha fazla bilgi edinebilirsiniz burada.
Yönetici veya Ağ Hizmetinden Sistem'e
LOCAL SERVICE veya NETWORK SERVICE'den tam ayrıcalıklara
Oku: https://github.com/itm4n/FullPowers
Daha fazla yardım
Statik impacket ikili dosyaları
Faydalı araçlar
Windows yerel ayrıcalık yükseltme vektörlerini aramak için en iyi araç: WinPEAS
PS
PrivescCheck
PowerSploit-Privesc(PowerUP) -- Yanlış yapılandırmaları ve hassas dosyaları kontrol edin (buraya bakın). Algılandı.
JAWS -- Bazı olası yanlış yapılandırmaları kontrol edin ve bilgi toplayın (buraya bakın).
privesc -- Yanlış yapılandırmaları kontrol edin
SessionGopher -- PuTTY, WinSCP, SuperPuTTY, FileZilla ve RDP kayıtlı oturum bilgilerini çıkarır. Yerelde -Thorough kullanın.
Invoke-WCMDump -- Kimlik Yöneticisinden kimlik bilgilerini çıkarır. Algılandı.
DomainPasswordSpray -- Toplanan şifreleri etki alanı boyunca yayınlayın
Inveigh -- Inveigh, bir PowerShell ADIDNS/LLMNR/mDNS/NBNS sahtekar ve araçtır.
WindowsEnum -- Temel ayrıcalık yükseltme Windows numaralandırması
Sherlock ~~~~ -- Bilinen ayrıcalık yükseltme zafiyetlerini arayın (Watson için DEPRECATED)
WINspect -- Yerel kontroller (Yönetici hakları gerektirir)
Exe
Watson -- Bilinen ayrıcalık yükseltme zafiyetlerini arayın (VisualStudio kullanılarak derlenmesi gerekmektedir) (derlenmiş)
SeatBelt -- Yanlış yapılandırmaları arayan ana bilgisayarı numaralandırır (daha çok bir bilgi toplama aracıdır) (derlenmesi gerekmektedir) (derlenmiş)
LaZagne -- Birçok yazılımdan kimlik bilgilerini çıkarır (github'da derlenmiş exe)
SharpUP -- PowerUp'ın C# portu
Beroot ~~~~ -- Yanlış yapılandırmaları kontrol edin (github'da derlenmiş yürütülebilir). Tavsiye edilmez. Win10'da iyi çalışmaz.
Windows-Privesc-Check -- Olası yanlış yapılandırmaları kontrol edin (python'dan exe). Tavsiye edilmez. Win10'da iyi çalışmaz.
Bat
winPEASbat -- Bu gönderiye dayalı olarak oluşturulan araç (düzgün çalışması için accesschk'ye ihtiyaç duymaz ancak kullanabilir).
Yerel
Windows-Exploit-Suggester -- systeminfo çıktısını okur ve çalışan zafiyetleri önerir (yerel python) Windows Exploit Suggester Next Generation -- systeminfo çıktısını okur ve çalışan zafiyetleri önerir (yerel python)
Meterpreter
multi/recon/local_exploit_suggestor
Projeyi doğru .NET sürümünü kullanarak derlemeniz gerekmektedir (buna bakın). Kurban ana bilgisayar üzerinde yüklü .NET sürümünü görmek için şunu yapabilirsiniz:
Kaynaklar
Last updated