Windows Local Privilege Escalation
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Windows Erişim Jetonlarının ne olduğunu bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okuyun:
ACL'ler - DACL'ler/SACL'ler/ACE'ler hakkında daha fazla bilgi için aşağıdaki sayfayı kontrol edin:
Windows'taki bütünlük seviyelerinin ne olduğunu bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okumalısınız:
Windows'ta sistemi listelemenizi, yürütülebilir dosyaları çalıştırmanızı veya hatta etkinliklerinizi tespit etmenizi engelleyebilecek farklı şeyler vardır. Yetki yükseltme listelemesine başlamadan önce, aşağıdaki sayfayı okuyun ve tüm bu savunma mekanizmalarını listeleyin:
Windows sürümünün bilinen bir açığı olup olmadığını kontrol edin (uygulanan yamaları da kontrol edin).
Bu site, Microsoft güvenlik açıkları hakkında ayrıntılı bilgi aramak için kullanışlıdır. Bu veritabanında 4,700'den fazla güvenlik açığı bulunmaktadır ve bu, bir Windows ortamının sunduğu büyük saldırı yüzeyini göstermektedir.
Sistemde
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas, watson'ı gömülü olarak içerir)
Sistem bilgileri ile yerel olarak
İstismarların Github reposu:
Env değişkenlerinde herhangi bir kimlik bilgisi/juicy bilgi kaydedildi mi?
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 boru hattı yürütmelerinin detayları, yürütülen komutlar, komut çağrıları ve script parçalarını kapsayacak şekilde kaydedilir. Ancak, tam yürütme detayları ve çıktı sonuçları kaydedilmeyebilir.
Bunu etkinleştirmek için, belgelerin "Transkript dosyaları" bölümündeki talimatları izleyin ve "Modül Günlüğü" seçeneğini "Powershell Transkripsiyonu" yerine tercih edin.
Powershell günlüklerinden son 15 olayı görüntülemek için şunu çalıştırabilirsiniz:
Bir scriptin yürütülmesinin tam etkinlik ve içerik kaydı tutulur, böylece her kod bloğu çalıştıkça belgelenir. Bu süreç, her etkinliğin kapsamlı bir denetim izini korur, bu da adli tıp ve kötü niyetli davranışları analiz etmek için değerlidir. Yürütme anında tüm etkinlikleri belgeleyerek, süreç hakkında ayrıntılı bilgiler sağlanır.
Script Bloğu için günlükleme olayları, Windows Olay Görüntüleyici'de şu yolda bulunabilir: Uygulama ve Hizmet Günlükleri > Microsoft > Windows > PowerShell > Operasyonel. Son 20 olayı görüntülemek için şunu kullanabilirsiniz:
Eğer güncellemeler http yerine httpS kullanılarak talep edilmemişse, sistemi tehlikeye atabilirsiniz.
Aşağıdaki komutu çalıştırarak ağın SSL olmayan bir WSUS güncellemesi kullanıp kullanmadığını kontrol ederek başlarsınız:
Eğer şu şekilde bir yanıt alırsanız:
And if HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
is equals to 1
.
Then, istismar edilebilir. Eğer son kayıt 0'a eşitse, WSUS girişi göz ardı edilecektir.
Bu güvenlik açıklarını istismar etmek için Wsuxploit, pyWSUS gibi araçlar kullanabilirsiniz - Bunlar, SSL olmayan WSUS trafiğine 'sahte' güncellemeler enjekte etmek için MiTM silahlandırılmış istismar betikleridir.
Araştırmayı burada okuyun:
WSUS CVE-2020-1013
Tam raporu burada okuyun. Temelde, bu hatanın istismar ettiği kusur şudur:
Eğer yerel kullanıcı proxy'mizi değiştirme gücüne sahipseniz ve Windows Güncellemeleri, Internet Explorer ayarlarında yapılandırılan proxy'yi kullanıyorsa, bu durumda PyWSUS aracını yerel olarak çalıştırma gücüne sahip oluruz, böylece kendi trafiğimizi kesebilir 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ı kullandığından, mevcut kullanıcının sertifika deposunu da kullanacaktır. WSUS ana bilgisayarı için kendinden imzalı bir sertifika oluşturursak ve bu sertifikayı mevcut kullanıcının sertifika deposuna eklersek, hem HTTP hem de HTTPS WSUS trafiğini kesme yeteneğine sahip olacağız. WSUS, sertifikada bir güven ilk kullanımda türü doğrulama uygulamak için HSTS benzeri mekanizmalar kullanmaz. Sunulan sertifika kullanıcı tarafından güvenilir olarak kabul ediliyorsa ve doğru ana bilgisayar adı varsa, hizmet tarafından kabul edilecektir.
Bu güvenlik açığını WSUSpicious aracıyla istismar edebilirsiniz (serbest bırakıldığında).
Windows domain ortamlarında belirli koşullar altında bir yerel ayrıcalık yükseltme güvenlik açığı bulunmaktadır. Bu koşullar, LDAP imzasının zorunlu olmadığı, kullanıcıların Kaynak Tabanlı Kısıtlı Delegasyon (RBCD) yapılandırmalarına izin veren kendi haklarına sahip olduğu ve kullanıcıların domain içinde bilgisayarlar oluşturma yeteneğine sahip olduğu ortamlardır. Bu gereksinimlerin varsayılan ayarlarla karşılandığını belirtmek önemlidir.
istismarı burada bulun https://github.com/Dec0ne/KrbRelayUp
Saldırı 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/ adresini kontrol edin.
Eğer bu 2 kayıt etkinse (değer 0x1 ise), o zaman herhangi bir ayrıcalığa sahip kullanıcılar *.msi
dosyalarını NT AUTHORITY\SYSTEM olarak kurabilir (çalıştırabilir).
Eğer bir meterpreter oturumunuz varsa, bu tekniği exploit/windows/local/always_install_elevated
modülünü kullanarak otomatikleştirebilirsiniz.
Write-UserAddMSI
komutunu power-up'tan kullanarak mevcut dizinde ayrıcalıkları artırmak için bir Windows MSI ikili dosyası oluşturun. Bu betik, bir kullanıcı/grup ekleme isteği yapan önceden derlenmiş bir MSI yükleyicisi yazar (bu nedenle GIU erişimine ihtiyacınız olacak):
Sadece oluşturulan ikili dosyayı çalıştırarak ayrıcalıkları artırın.
Bu araçları kullanarak bir MSI wrapper nasıl oluşturulacağını öğrenmek için bu eğitimi okuyun. Sadece komut satırlarını çalıştırmak istiyorsanız, bir ".bat" dosyasını sarmalayabileceğinizi unutmayın.
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 seçeneğini seçin ve arama kutusuna "installer" yazın. Setup Wizard projesini seçin ve İleriye tıklayın.
Projeye bir isim verin, örneğin AlwaysPrivesc, konum için C:\privesc
kullanın, çözümü ve projeyi aynı dizine yerleştir seçeneğini seçin ve Oluştur'a tıklayın.
4 adımın 3. adımına (dahil edilecek dosyaları seçin) gelene kadar İleriye tıklamaya devam edin. Ekle'ye tıklayın ve yeni oluşturduğunuz Beacon yükünü seçin. Ardından Tamamla'ya tıklayın.
Çözüm Gezgini'nde AlwaysPrivesc projesini vurgulayın ve Özellikler'de TargetPlatform'ı x86'dan x64'e değiştirin.
Yüklenen uygulamanın daha meşru görünmesini sağlayacak Yazar ve Üretici gibi değiştirebileceğiniz diğer özellikler de vardır.
Projeye sağ tıklayın ve Görüntüle > Özel Eylemler'i seçin.
Kurulum'a sağ tıklayın ve Özel Eylem Ekle'yi seçin.
Uygulama Klasörü'ne çift tıklayın, beacon.exe dosyanızı seçin ve Tamam'a tıklayın. Bu, yükleyici çalıştırıldığında beacon yükünün hemen çalıştırılmasını sağlayacaktır.
Özel Eylem Özellikleri altında Run64Bit'i True olarak değiştirin.
Son olarak, oluşturun.
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
uyarısı gösteriliyorsa, platformu x64 olarak ayarladığınızdan emin olun.
Kötü niyetli .msi
dosyasının kurulumunu arka planda çalıştırmak için:
Bu güvenlik açığını istismar etmek için şunu kullanabilirsiniz: exploit/windows/local/always_install_elevated
Bu ayarlar neyin kaydedileceğini belirler, bu yüzden dikkat etmelisiniz.
Windows Olay İletimi, logların nereye gönderildiğini bilmek ilginçtir.
LAPS, yerel Yönetici şifrelerinin yönetimi için tasarlanmıştır ve her şifrenin eşsiz, rastgele ve düzenli olarak güncellenmiş olmasını sağlar. Bu şifreler, Active Directory içinde güvenli bir şekilde saklanır ve yalnızca yeterli izinlere sahip kullanıcılar tarafından erişilebilir, bu da onlara yetkilendirildiklerinde yerel yönetici şifrelerini görüntüleme imkanı tanır.
Eğer aktifse, düz metin şifreler LSASS (Yerel Güvenlik Otoritesi Alt Sistemi Servisi) içinde saklanır. WDigest hakkında daha fazla bilgi bu sayfada.
Windows 8.1 ile birlikte, Microsoft, sistemin güvenliğini artırmak için Güvenlik Otoritesi'nin (LSA) bellek okuma veya kod enjekte etme girişimlerini engellemek amacıyla geliştirilmiş koruma sağladı. LSA Koruması hakkında daha fazla bilgi burada.
Credential Guard, Windows 10'da tanıtıldı. Amacı, bir cihazda depolanan kimlik bilgilerini pass-the-hash saldırıları gibi tehditlere karşı korumaktır.| Credentials Guard hakkında daha fazla bilgi burada.
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, kullanıcı için genellikle alan kimlik bilgileri oluşturulur. Önbelleklenmiş Kimlik Bilgileri hakkında daha fazla bilgi burada.
Ait olduğunuz gruplardan herhangi birinin ilginç izinlere sahip olup olmadığını kontrol etmelisiniz.
Eğer ayrıcalıklı bir gruba ait iseniz, ayrıcalıkları artırma imkanınız olabilir. Ayrıcalıklı gruplar hakkında ve bunları nasıl kötüye kullanabileceğiniz hakkında burada bilgi edinin:
Token nedir hakkında daha fazla bilgi edinin bu sayfada: Windows Token'ları. Aşağıdaki sayfayı kontrol edin ilginç token'lar hakkında bilgi edinmek ve bunları nasıl kötüye kullanabileceğinizi öğrenmek için:
Öncelikle, süreçleri listelemek sürecin komut satırında şifreleri kontrol edin. Bazı çalışan ikili dosyaları üzerine yazıp yazamayacağınızı veya ikili dosya klasöründe yazma izinlerinizin olup olmadığını kontrol edin, olası DLL Hijacking saldırılarını istismar etmek için:
Süreçlerin ikili dosyalarının izinlerini kontrol etme
Süreç ikili dosyalarının klasörlerinin izinlerini kontrol etme (DLL Hijacking)
Çalışan bir sürecin bellek dökümünü procdump kullanarak oluşturabilirsiniz. FTP gibi hizmetler kimlik bilgilerini bellek içinde düz metin olarak saklar, belleği dökün ve kimlik bilgilerini okuyun.
SYSTEM olarak çalışan uygulamalar, bir kullanıcının CMD açmasına veya dizinleri gezmesine izin verebilir.
Örnek: "Windows Yardım ve Destek" (Windows + F1), "komut istemi" için arama yapın, "Komut İstemini Açmak İçin Tıklayın" seçeneğine tıklayın
Hizmetlerin bir listesini alın:
Bir servisin bilgilerini almak için sc kullanabilirsiniz.
Her hizmet için gerekli ayrıcalık seviyesini kontrol etmek üzere Sysinternals'dan accesschk ikilisinin bulundurulması önerilir.
"Authenticated Users" grubunun herhangi bir hizmeti değiştirip değiştiremeyeceğini kontrol etmeniz önerilir:
accesschk.exe'yi XP için buradan indirebilirsiniz
Bu hatayı alıyorsanız (örneğin SSDPSRV ile):
Sistem hatası 1058 oluştu. Hizmet başlatılamıyor, ya devre dışı olduğu ya da ona bağlı etkin cihazların olmadığı için.
Bunu etkinleştirmek için kullanabilirsiniz
Hizmetin upnphost'un çalışması için SSDPSRV'ye bağımlı olduğunu dikkate alın (XP SP1 için)
Bu sorunun başka bir çözümü:
"Kimlik doğrulanmış kullanıcılar" grubunun bir serviste SERVICE_ALL_ACCESS yetkisine sahip olduğu senaryoda, servisin çalıştırılabilir ikilisinin değiştirilmesi mümkündür. sc'yi değiştirmek ve çalıştırmak için:
Yetkiler çeşitli izinler aracılığıyla yükseltilebilir:
SERVICE_CHANGE_CONFIG: Servis ikili dosyasının yeniden yapılandırılmasına izin verir.
WRITE_DAC: İzin yeniden yapılandırmasını etkinleştirir, bu da servis yapılandırmalarını değiştirme yeteneğine yol açar.
WRITE_OWNER: Mülkiyet edinimi ve izin yeniden yapılandırmasına izin verir.
GENERIC_WRITE: Servis yapılandırmalarını değiştirme yeteneğini devralır.
GENERIC_ALL: Ayrıca servis yapılandırmalarını değiştirme yeteneğini devralır.
Bu güvenlik açığının tespiti ve istismarı için, exploit/windows/local/service_permissions kullanılabilir.
Bir servis tarafından yürütülen ikili dosyayı değiştirebilir misiniz veya ikili dosyanın bulunduğu klasörde yazma izinleriniz var mı (DLL Hijacking). Bir servis tarafından yürütülen her ikili dosyayı wmic (system32 dışında) kullanarak alabilir ve izinlerinizi icacls ile kontrol edebilirsiniz:
Ayrıca sc ve icacls kullanabilirsiniz:
Herhangi bir hizmet kayıt defterini değiştirip değiştiremeyeceğinizi kontrol etmelisiniz. Bir hizmet kayıt defteri üzerindeki izinlerinizi kontrol etmek için:
Authenticated Users veya NT AUTHORITY\INTERACTIVE kullanıcılarının 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 ikilinin Yolunu değiştirmek için:
Eğer bir kayıt üzerinde bu izne sahipseniz, bu bu kayıttan alt kayıtlar oluşturabileceğiniz anlamına gelir. Windows hizmetleri durumunda bu rastgele kodu çalıştırmak için yeterlidir:
Eğer bir yürütülebilir dosyanın yolu tırnak içinde değilse, Windows her boşluktan önceki sonlandırmayı çalıştırmaya çalışacaktır.
Örneğin, C:\Program Files\Some Folder\Service.exe yolu için Windows şunları çalıştırmaya çalışacaktır:
Listele tüm alıntılanmamış hizmet yollarını, yerleşik Windows hizmetlerine ait olanlar hariç:
Bu güvenlik açığını tespit edebilir ve istismar edebilirsiniz metasploit ile: exploit/windows/local/trusted\_service\_path
Metasploit ile manuel olarak bir hizmet ikili dosyası oluşturabilirsiniz:
Windows, bir hizmet başarısız olursa alınacak eylemleri belirtmeye olanak tanır. Bu özellik, bir ikili dosyaya işaret edecek şekilde yapılandırılabilir. Eğer bu ikili dosya değiştirilebilir ise, ayrıcalık yükseltme mümkün olabilir. Daha fazla ayrıntı için resmi belgeleri inceleyebilirsiniz.
ikili dosyaların izinlerini kontrol edin (belki birini değiştirebilir ve ayrıcalıkları yükseltebilirsiniz) ve klasörlerin (DLL Hijacking).
Bazı yapılandırma dosyalarını özel bir dosyayı okumak için değiştirebilir misiniz veya bir Yönetici hesabı tarafından çalıştırılacak bir ikili dosyayı (schedtasks) değiştirebilir misiniz kontrol edin.
Sistemde zayıf klasör/dosya izinlerini bulmanın bir yolu:
Farklı bir kullanıcı tarafından çalıştırılacak bazı kayıt defteri veya ikili dosyaları üzerine yazıp yazamayacağınızı kontrol edin. Yetki artırmak için ilginç autorun konumları hakkında daha fazla bilgi edinmek için aşağıdaki sayfayı okuyun:
Olası üçüncü taraf garip/zaafiyetli sürücüleri arayın.
Eğer PATH üzerinde bulunan bir klasörde yazma izinleriniz varsa, bir süreç tarafından yüklenen bir DLL'yi ele geçirip yetkileri artırabilirsiniz.
PATH içindeki tüm klasörlerin izinlerini kontrol edin:
Daha fazla bilgi için bu kontrolü nasıl kötüye kullanacağınız hakkında:
hosts dosyasında hardcoded olarak bulunan diğer bilinen bilgisayarları kontrol edin
Dışarıdan kısıtlı hizmetleri kontrol edin
Firewall ile ilgili komutlar için bu sayfayı kontrol edin (kuralları listele, kurallar oluştur, kapat, kapat...)
Daha fazla ağ enumerasyonu komutları burada
Binary bash.exe
ayrıca C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
konumunda da bulunabilir.
Eğer root kullanıcısına erişirseniz, herhangi bir portta dinleme yapabilirsiniz (ilk kez nc.exe
kullanarak bir portta dinleme yaptığınızda, GUI üzerinden nc
'nin güvenlik duvarı tarafından izin verilip verilmeyeceğini soracaktır).
Bash'i kök olarak kolayca başlatmak için --default-user root
deneyebilirsiniz.
WSL
dosya sistemini C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
klasöründe keşfedebilirsiniz.
From https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Windows Vault, Windows'ın kullanıcıları otomatik olarak giriş yapabileceği sunucular, web siteleri ve diğer programlar için kullanıcı kimlik bilgilerini saklar. İlk bakışta, kullanıcıların Facebook kimlik bilgilerini, Twitter kimlik bilgilerini, Gmail kimlik bilgilerini vb. saklayabileceği ve böylece tarayıcılar aracılığıyla otomatik olarak giriş yapabileceği gibi görünebilir. Ama durum böyle değil.
Windows Vault, Windows'un kullanıcıları otomatik olarak giriş yapabileceği kimlik bilgilerini saklar, bu da demektir ki, herhangi bir kaynağa erişmek için kimlik bilgilerine ihtiyaç duyan Windows uygulaması (sunucu veya web sitesi) bu Credential Manager & Windows Vault'tan yararlanabilir ve kullanıcıların her seferinde kullanıcı adı ve şifre girmesi yerine sağlanan kimlik bilgilerini kullanabilir.
Uygulamalar Credential Manager ile etkileşime geçmediği sürece, belirli bir kaynak için kimlik bilgilerini kullanmalarının mümkün olduğunu düşünmüyorum. Bu nedenle, uygulamanız vault'tan yararlanmak istiyorsa, bir şekilde kimlik bilgilerini varsayılan depolama vault'undan talep etmek için kimlik bilgisi yöneticisi ile iletişim kurmalıdır.
Makinedeki saklanan kimlik bilgilerini listelemek için cmdkey
kullanın.
Sonra, kaydedilmiş 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ğırmaktadır.
runas
komutunu sağlanan bir kimlik bilgileri seti ile kullanma.
Not edin ki mimikatz, lazagne, credentialfileview, VaultPasswordView veya Empire Powershells module kullanabilirsiniz.
Data Protection API (DPAPI), verilerin simetrik şifrelenmesi için bir yöntem sağlar ve esasen Windows işletim sistemi içinde asimetrik özel anahtarların simetrik şifrelenmesi için kullanılır. Bu şifreleme, entropiye önemli ölçüde katkıda bulunmak için bir kullanıcı veya sistem sırrını kullanır.
DPAPI, kullanıcı giriş sırlarından türetilen bir simetrik anahtar aracılığıyla anahtarların şifrelenmesini sağlar. Sistem şifrelemesi içeren senaryolarda, sistemin alan kimlik doğrulama sırlarını kullanır.
DPAPI kullanarak şifrelenmiş kullanıcı RSA anahtarları, %APPDATA%\Microsoft\Protect\{SID}
dizininde saklanır; burada {SID}
, kullanıcının Güvenlik Tanımlayıcısı'dır. DPAPI anahtarı, kullanıcının özel anahtarlarını koruyan anahtar ile aynı dosyada yer alır ve genellikle 64 bayt rastgele veriden oluşur. (Bu dizine erişimin kısıtlandığını ve içeriğinin CMD'de dir
komutu ile listelenemediğini, ancak PowerShell aracılığıyla listelenebileceğini not etmek önemlidir).
mimikatz modülünü dpapi::masterkey
uygun argümanlarla (/pvk
veya /rpc
) kullanarak şifreyi çözebilirsiniz.
ana şifre ile korunan kimlik bilgisi dosyaları genellikle şurada bulunur:
mimikatz modülünü dpapi::cred
uygun /masterkey
ile şifreyi çözmek için kullanabilirsiniz.
Bellekten birçok DPAPI masterkey sekurlsa::dpapi
modülü ile çıkarabilirsiniz (eğer root iseniz).
PowerShell kimlik bilgileri, şifrelenmiş kimlik bilgilerini rahat bir şekilde saklamak için genellikle betik yazma ve otomasyon görevlerinde kullanılır. Kimlik bilgileri DPAPI kullanılarak korunur, bu genellikle yalnızca oluşturuldukları bilgisayarda aynı kullanıcı tarafından şifresinin çözülebileceği anlamına gelir.
Bir dosyadan PS kimlik bilgilerini şifrelemek için şunu yapabilirsiniz:
Onları HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
ve HKCU\Software\Microsoft\Terminal Server Client\Servers\
içinde bulabilirsiniz.
Use the Mimikatz dpapi::rdg
module with appropriate /masterkey
to decrypt any .rdg files
You can extract many DPAPI masterkeys from memory with the Mimikatz sekurlsa::dpapi
module
İnsanlar genellikle Windows iş istasyonlarında şifreleri ve diğer bilgileri kaydetmek için StickyNotes uygulamasını kullanır, bunun bir veritabanı dosyası olduğunu fark etmeden. Bu dosya C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
konumunda bulunur ve her zaman aramaya ve incelemeye değerdir.
AppCmd.exe'den şifreleri kurtarmak için Yönetici olmanız ve Yüksek Bütünlük seviyesinde çalıştırmanız gerektiğini unutmayın.
AppCmd.exe %systemroot%\system32\inetsrv\
dizininde bulunur.
Bu dosya mevcutsa, bazı kimlik bilgileri yapılandırılmış olabilir ve kurtarılabilir.
This code was extracted from PowerUP:
C:\Windows\CCM\SCClient.exe
dosyasının var olup olmadığını kontrol edin.
Yükleyiciler SYSTEM ayrıcalıklarıyla çalıştırılır, birçoğu DLL Sideloading'e karşı savunmasızdır (Bilgi için https://github.com/enjoiz/Privesc).
SSH özel anahtarları kayıt defteri anahtarı HKCU\Software\OpenSSH\Agent\Keys
içinde saklanabilir, bu yüzden orada ilginç bir şey olup olmadığını kontrol etmelisiniz:
Eğer o yolda herhangi bir giriş bulursanız, muhtemelen kaydedilmiş bir SSH anahtarıdır. Şifreli olarak saklanır ancak 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şlangıçta başlamasını istiyorsanız, şunu çalıştırın:
Bu tekniğin artık geçerli olmadığı görünüyor. Bazı ssh anahtarları oluşturmaya, bunları ssh-add
ile eklemeye ve bir makineye ssh ile giriş yapmaya çalıştım. HKCU\Software\OpenSSH\Agent\Keys kayıt defteri yok ve procmon, asimetrik anahtar kimlik doğrulaması sırasında dpapi.dll
kullanımını tespit etmedi.
You can also search for these files using metasploit: post/windows/gather/enum_unattend
Örnek içerik:
SiteList.xml adında bir dosya arayın.
Daha önce, Grup Politika Tercihleri (GPP) aracılığıyla bir grup makinede özel yerel yönetici hesaplarının dağıtımına olanak tanıyan bir özellik mevcuttu. Ancak, bu yöntemin önemli güvenlik açıkları vardı. Öncelikle, SYSVOL'da XML dosyası olarak saklanan Grup Politika Nesneleri (GPO'lar), herhangi bir etki alanı kullanıcısı tarafından erişilebilir durumdaydı. İkincisi, bu GPP'lerdeki şifreler, kamuya belgelenmiş varsayılan bir anahtar kullanılarak AES256 ile şifrelenmişti ve herhangi bir kimlik doğrulaması yapılmış kullanıcı tarafından çözülebiliyordu. Bu, kullanıcıların yükseltilmiş ayrıcalıklar elde etmesine olanak tanıdığı için ciddi bir risk oluşturuyordu.
Bu riski azaltmak için, boş olmayan bir "cpassword" alanı içeren yerel önbelleğe alınmış GPP dosyalarını tarayan bir işlev geliştirildi. Böyle bir dosya bulunduğunda, işlev şifreyi çözer ve özel bir PowerShell nesnesi döndürür. Bu nesne, GPP hakkında ayrıntılar ve dosyanın konumu gibi bilgileri içerir ve bu güvenlik açığının tanımlanmasına ve giderilmesine yardımcı olur.
Bu dosyalar 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) dizininde arama yapın:
Groups.xml
Services.xml
Scheduledtasks.xml
DataSources.xml
Printers.xml
Drives.xml
cPassword'ı çözmek için:
Kullanarak crackmapexec şifreleri almak:
Örnek web.config ile kimlik bilgileri:
Her zaman kullanıcıdan kendi kimlik bilgilerini veya farklı bir kullanıcının kimlik bilgilerini girmesini isteyebilirsiniz eğer onların bu bilgileri bilebileceğini düşünüyorsanız (dikkat edin ki müşteriden doğrudan kimlik bilgilerini istemek gerçekten risklidir):
Bir zamanlar düz metin veya Base64 formatında şifreler içeren bilinen dosyalar
Tüm önerilen dosyaları ara:
Bin'i kontrol ederek içinde kimlik bilgileri aramalısınız.
Birçok program tarafından kaydedilen şifreleri kurtarmak için şunları kullanabilirsiniz: http://www.nirsoft.net/password_recovery_tools.html
Kimlik bilgileri içeren diğer olası kayıt defteri anahtarları
Açık SSH anahtarlarını kayıt defterinden çıkarın.
Chrome veya Firefox'tan şifrelerin saklandığı veritabanlarını kontrol etmelisiniz. Ayrıca tarayıcıların geçmişini, yer imlerini ve favorilerini kontrol edin, belki bazı şifreler burada saklanmıştır.
Tarayıcılardan şifreleri çıkarmak için araçlar:
Mimikatz: dpapi::chrome
Bileşen Nesne Modeli (COM), farklı dillerdeki yazılım bileşenleri arasında iletişim sağlamak için Windows işletim sistemi içinde oluşturulmuş bir teknolojidir. Her COM bileşeni, bir sınıf kimliği (CLSID) ile tanımlanır ve her bileşen, bir veya daha fazla arayüz aracılığıyla işlevsellik sunar; bu arayüzler, arayüz kimlikleri (IIDs) ile tanımlanır.
COM sınıfları ve arayüzleri, kayıt defterinde HKEY_CLASSES_ROOT\CLSID ve HKEY_CLASSES_ROOT\Interface altında tanımlanmıştır. Bu kayıt defteri, HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes = HKEY_CLASSES_ROOT birleştirilerek oluşturulur.
Bu kayıt defterinin CLSID'leri içinde, bir DLL'ye işaret eden bir varsayılan değer ve Apartment (Tek İşlemci), Free (Çok İşlemci), Both (Tek veya Çok) veya Neutral (İşlemci Nötr) olabilen bir ThreadingModel adlı değeri içeren InProcServer32 adlı alt kayıt defterini bulabilirsiniz.
Temelde, yürütülecek olan herhangi bir DLL'yi üzerine yazabilirseniz, o DLL farklı bir kullanıcı tarafından yürütülecekse yetkileri artırabilirsiniz.
Saldırganların COM Hijacking'i kalıcılık mekanizması olarak nasıl kullandığını öğrenmek için kontrol edin:
Dosya içeriklerini arayın
Belirli bir dosya adıyla bir dosya arayın
Anahtar adları ve şifreler için kayıt defterini ara
MSF-Credentials Plugin bir msf eklentisidir. Bu eklentiyi, kurbanın içindeki kimlik bilgilerini arayan her metasploit POST modülünü otomatik olarak çalıştırmak için oluşturdum. Winpeas bu sayfada belirtilen parolaları içeren tüm dosyaları otomatik olarak arar. Lazagne bir sistemden parola çıkarmak için başka bir harika araçtır.
SessionGopher aracı, oturumlar, kullanıcı adları ve parolaları açık metin olarak kaydeden çeşitli araçların verilerini arar (PuTTY, WinSCP, FileZilla, SuperPuTTY ve RDP)
Düşünün ki SYSTEM olarak çalışan bir işlem tam erişimle yeni bir işlem açıyor (OpenProcess()
). Aynı işlem düşük ayrıcalıklarla yeni bir işlem de oluşturuyor (CreateProcess()
) ancak ana işlemin tüm açık işlemcilerini miras alıyor.
Sonra, eğer düşük ayrıcalıklı işleme tam erişiminiz varsa, OpenProcess()
ile oluşturulan ayrıca ayrıcalıklı işleme açık işlemciyi alabilir ve shellcode enjekte edebilirsiniz.
Bu örneği okuyarak bu güvenlik açığını nasıl tespit edip istismar edeceğiniz hakkında daha fazla bilgi edinebilirsiniz.
Farklı izin seviyeleriyle (sadece tam erişim değil) miras alınan işlemler ve iş parçacıkları için daha fazla açık işlemciyi nasıl test edip istismar edeceğinize dair daha kapsamlı bir açıklama için bu diğer gönderiyi okuyun.
Paylaşılan bellek segmentleri, borular olarak adlandırılır ve işlem iletişimi ve veri transferini sağlar.
Windows, İsimli Borular adı verilen bir özellik sunar; bu, ilgisiz işlemlerin verileri paylaşmasına olanak tanır, hatta farklı ağlar üzerinden bile. Bu, istemci/sunucu mimarisi gibi görünür ve roller isimli boru sunucusu ve isimli boru istemcisi olarak tanımlanır.
Bir istemci tarafından bir boru aracılığıyla veri gönderildiğinde, boruyu kuran sunucu, gerekli SeImpersonate haklarına sahip olması durumunda istemcinin kimliğini üstlenme yeteneğine sahiptir. Bir boru aracılığıyla iletişim kuran ayrıca ayrıcalıklı bir işlemi tanımlamak, o işlemin sizin kurduğunuz boruyla etkileşime girdiğinde kimliğini benimseyerek daha yüksek ayrıcalıklar elde etme fırsatı sunar. Böyle bir saldırıyı gerçekleştirmek için talimatlar burada ve burada bulunabilir.
Ayrıca, aşağıdaki araç, burp gibi bir araçla isimli boru iletişimini kesmeyi sağlar: https://github.com/gabriel-sztejnworcel/pipe-intercept ve bu araç, privesc bulmak için tüm boruları listeleyip görmenizi sağlar https://github.com/cyberark/PipeViewer
Bir kullanıcı olarak bir shell aldığınızda, komut satırında kimlik bilgilerini geçiren planlanmış görevler veya başka işlemler olabilir. Aşağıdaki script, her iki saniyede bir işlem komut satırlarını yakalar ve mevcut durumu önceki durumla karşılaştırarak herhangi bir farkı çıktılar.
Grafik arayüzüne (konsol veya RDP aracılığıyla) erişiminiz varsa ve UAC etkinse, bazı Microsoft Windows sürümlerinde yetkisiz bir kullanıcıdan "NT\AUTHORITY SYSTEM" gibi bir terminal veya başka bir süreç çalıştırmak mümkündür.
Bu, aynı anda yetki yükseltme ve UAC'yi atlatma olanağı sağlar. Ayrıca, herhangi bir şey yüklemeye gerek yoktur ve süreç sırasında kullanılan ikili dosya, Microsoft tarafından imzalanmış ve verilmiştir.
Etkilenen sistemlerden bazıları şunlardır:
Bu güvenlik açığını istismar etmek için aşağıdaki adımların gerçekleştirilmesi gerekmektedir:
You have all the necessary files and information in the following GitHub repository:
https://github.com/jas502n/CVE-2019-1388
Read this to learn about Integrity Levels:
Then read this to learn about UAC and UAC bypasses:
If you are already running on a High Integrity process, the pass to SYSTEM can be easy just creating and executing a new service:
Yüksek Bütünlük sürecinden AlwaysInstallElevated kayıt defteri girişlerini etkinleştirmeyi ve bir .msi sarmalayıcı kullanarak ters bir shell yüklemeyi deneyebilirsiniz. Kayıt defteri anahtarları ve bir .msi paketini nasıl yükleyeceğiniz hakkında daha fazla bilgi burada.
Kodunuzu buradan bulabilirsiniz.
Bu token ayrıcalıklarına sahipseniz (muhtemelen bunu zaten Yüksek Bütünlük sürecinde bulacaksınız), neredeyse her süreci (korunan süreçler hariç) SeDebug ayrıcalığı ile açabileceksiniz, sürecin token'ını kopyalayacak ve o token ile rastgele bir süreç oluşturacaksınız. Bu tekniği kullanmak genellikle tüm token ayrıcalıklarıyla SYSTEM olarak çalışan herhangi bir süreci seçmek şeklindedir (evet, tüm token ayrıcalıkları olmadan SYSTEM süreçlerini bulabilirsiniz). Önerilen tekniği uygulayan bir kod örneğini burada bulabilirsiniz.
Bu teknik, meterpreter tarafından getsystem
'da yükselmek için kullanılır. Teknik, bir boru oluşturmayı ve ardından o boruya yazmak için bir hizmet oluşturmayı/istismar etmeyi içerir. Daha sonra, boruyu SeImpersonate
ayrıcalığı ile oluşturan sunucu, boru istemcisinin (hizmetin) token'ını taklit edebilecektir ve SYSTEM ayrıcalıkları elde edecektir.
Adlandırılmış borular hakkında daha fazla bilgi edinmek istiyorsanız bunu okumalısınız.
Yüksek bütünlükten Sistem'e adlandırılmış borular kullanarak geçiş yapma hakkında bir örnek okumak istiyorsanız bunu okumalısınız.
Eğer SYSTEM olarak çalışan bir süreç tarafından yüklenen bir dll'yi ele geçirmeyi başarırsanız, bu izinlerle rastgele kod çalıştırabileceksiniz. Bu nedenle, Dll Hijacking bu tür ayrıcalık yükseltmeleri için de faydalıdır ve ayrıca, yüksek bütünlük sürecinden elde edilmesi çok daha kolaydır çünkü dll'lerin yüklendiği klasörlerde yazma izinlerine sahip olacaktır. Dll hijacking hakkında daha fazla bilgi edinebilirsiniz buradan.
Oku: https://github.com/itm4n/FullPowers
Statik impacket ikili dosyaları
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 et (buradan kontrol edin). Tespit edildi.
JAWS -- Bazı olası yanlış yapılandırmaları kontrol et ve bilgi topla (buradan kontrol edin).
privesc -- Yanlış yapılandırmaları kontrol et
SessionGopher -- PuTTY, WinSCP, SuperPuTTY, FileZilla ve RDP kaydedilmiş oturum bilgilerini çıkarır. Yerel olarak -Thorough kullanın.
Invoke-WCMDump -- Kimlik bilgilerini Credential Manager'dan çıkarır. Tespit edildi.
DomainPasswordSpray -- Toplanan parolaları alan adı üzerinde püskürt
Inveigh -- Inveigh, bir PowerShell ADIDNS/LLMNR/mDNS/NBNS sahteleyici ve adam-arasında bir araçtır.
WindowsEnum -- Temel privesc Windows envanteri
Sherlock ~~~~ -- Bilinen privesc zafiyetlerini arayın (WATSON için DEPREKATE)
WINspect -- Yerel kontroller (Yönetici hakları gerekir)
Exe
Watson -- Bilinen privesc zafiyetlerini arayın (VisualStudio kullanılarak derlenmesi gerekir) (önceden derlenmiş)
SeatBelt -- Yanlış yapılandırmaları aramak için host'u tarar (privesc'den daha çok bilgi toplama aracı) (derlenmesi gerekir) (önceden derlenmiş)
LaZagne -- Birçok yazılımdan kimlik bilgilerini çıkarır (github'da önceden derlenmiş exe)
SharpUP -- PowerUp'ın C# portu
Beroot ~~~~ -- Yanlış yapılandırmaları kontrol et (github'da önceden derlenmiş çalıştırılabilir). Tavsiye edilmez. Win10'da iyi çalışmıyor.
Windows-Privesc-Check -- Olası yanlış yapılandırmaları kontrol et (python'dan exe). Tavsiye edilmez. Win10'da iyi çalışmıyor.
Bat
winPEASbat -- Bu gönderiye dayanan bir araç (doğru çalışması için accesschk'e ihtiyaç duymaz ama kullanabilir).
Yerel
Windows-Exploit-Suggester -- systeminfo çıktısını okur ve çalışan exploit'leri önerir (yerel python) Windows Exploit Suggester Next Generation -- systeminfo çıktısını okur ve çalışan exploit'leri önerir (yerel python)
Meterpreter
multi/recon/local_exploit_suggestor
Projeyi doğru .NET sürümü ile derlemeniz gerekiyor (bunu görün). Kurban makinedeki yüklü .NET sürümünü görmek için şunu yapabilirsiniz:
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)