8.1 KiB
Yazılabilir Sys Yolu + Dll Hijacking Privilege Escalation
AWS hacklemeyi sıfırdan kahramanlık seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family koleksiyonumuzu keşfedin, özel NFT'ler koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'ı takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.
Giriş
Eğer bir Sistem Yolu klasörüne yazabileceğinizi tespit ettiyseniz (unutmayın, bir Kullanıcı Yolu klasörüne yazabiliyorsanız bu çalışmayacaktır), bu durumda sisteminizde privilege escalation (ayrıcalık yükseltme) yapabilirsiniz.
Bunu yapmak için, Daha fazla ayrıcalığa sahip bir hizmet veya işlem tarafından yüklenen bir kütüphaneyi ele geçireceksiniz ve çünkü bu hizmet, muhtemelen sistemde hiç var olmayan bir Dll'yi yüklemeye çalışacak, bu Dll'yi yazabileceğiniz Sistem Yolu'ndan yüklemeye çalışacak.
Dll Hijacking hakkında daha fazla bilgi için:
{% content-ref url="../dll-hijacking.md" %} dll-hijacking.md {% endcontent-ref %}
Dll Hijacking ile Privilege Escalation
Eksik bir Dll bulma
İlk yapmanız gereken, sizden daha fazla ayrıcalığa sahip bir işlem tarafından Sistem Yolu'ndan bir Dll yüklemeye çalışan bir işlemi tespit etmektir.
Bu durumdaki sorun, bu işlemlerin muhtemelen zaten çalışıyor olmasıdır. İhtiyaç duyduğunuz hizmetlerin eksik olan Dll'lerini bulmak için, işlemler yüklenmeden önce mümkün olan en kısa sürede procmon'u başlatmanız gerekmektedir. Bu nedenle, eksik .dll'leri bulmak için şunları yapın:
C:\privesc_hijacking
klasörünü oluşturun ve Sistem Yolu çevresel değişkenineC:\privesc_hijacking
yolunu ekleyin. Bunları manuel olarak yapabilirsiniz veya PS ile yapabilirsiniz:
# Set the folder path to create and check events for
$folderPath = "C:\privesc_hijacking"
# Create the folder if it does not exist
if (!(Test-Path $folderPath -PathType Container)) {
New-Item -ItemType Directory -Path $folderPath | Out-Null
}
# Set the folder path in the System environment variable PATH
$envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine")
if ($envPath -notlike "*$folderPath*") {
$newPath = "$envPath;$folderPath"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
}
procmon
'u başlatın veOptions
-->Enable boot logging
seçeneğine gidin ve açılan penceredeOK
düğmesine basın.- Ardından, sistemi yeniden başlatın. Bilgisayar yeniden başlatıldığında
procmon
olayları kaydetmeye başlayacaktır. - Windows başladığında
procmon
'ı tekrar çalıştırın, çalıştığını ve olayları bir dosyada saklamak isteyip istemediğinizi soracaktır. Evet deyin ve olayları bir dosyada saklayın. - Dosya oluşturulduktan sonra, açık olan
procmon
penceresini kapatın ve olaylar dosyasını açın. - Aşağıdaki filtreleri ekleyin ve yazılabilir Sistem Yolu klasöründen yüklenmeye çalışılan tüm DLL'leri bulacaksınız:
Eksik DLL'ler
Bu komutu ücretsiz bir sanal (vmware) Windows 11 makinesinde çalıştırdığımda şu sonuçları elde ettim:
Bu durumda .exe dosyaları işe yaramaz, onları görmezden gelin, eksik DLL'ler şunlardan kaynaklanmaktadır:
Hizmet | DLL | CMD satırı |
---|---|---|
Görev Zamanlayıcısı (Schedule) | WptsExtensions.dll | C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule |
Tanılama İlkesi Hizmeti (DPS) | Unknown.DLL | C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS |
??? | SharedRes.dll | C:\Windows\system32\svchost.exe -k UnistackSvcGroup |
Bunu bulduktan sonra, bu ilginç blog yazısını buldum, ayrıca WptsExtensions.dll'yi ayrıcalık yükseltmek için nasıl kötüye kullanabileceğinizi açıklıyor. Şimdi bunu yapacağız.
Sömürü
Bu nedenle, ayrıcalıkları yükseltmek için WptsExtensions.dll kütüphanesini ele geçireceğiz. Yolu ve adı olan kötü amaçlı dll'yi sadece oluşturmanız gerekiyor.
Bu örneklerden herhangi birini denemeyi deneyebilirsiniz. Rev shell alabilir, bir kullanıcı ekleyebilir, bir işaretçi çalıştırabilirsiniz...
{% hint style="warning" %}
Dikkat edin, tüm hizmetler NT AUTHORITY\SYSTEM
ile çalıştırılmaz, bazıları aynı zamanda NT AUTHORITY\LOCAL SERVICE
ile çalıştırılır ve bu daha az ayrıcalığa sahiptir ve yeni bir kullanıcı oluşturamazsınız. Bununla birlikte, bu kullanıcının seImpersonate
ayrıcalığı vardır, bu nedenle potato suite'yi ayrıcalıkları yükseltmek için kullanabilirsiniz. Bu durumda, bir rev shell oluşturmak, bir kullanıcı oluşturmaya çalışmaktan daha iyi bir seçenektir.
{% endhint %}
Bu yazıyı yazdığım sırada Görev Zamanlayıcısı hizmeti Nt AUTHORITY\SYSTEM ile çalıştırılıyor.
Kötü amaçlı DLL'yi oluşturduktan sonra (benim durumumda x64 rev shell kullandım ve msfvenom'dan geldiği için defender tarafından öldürüldü), onu yazılabilir Sistem Yolu'na WptsExtensions.dll adıyla kaydedin ve bilgisayarı yeniden başlatın (veya hizmeti yeniden başlatın veya etkilenen hizmeti/programı yeniden çalıştırmak için gerekeni yapın).
Hizmet yeniden başlatıldığında, dll yüklenecek ve çalıştırılacaktır (kütüphanenin beklenildiği gibi yüklendiğini kontrol etmek için procmon hilesini yeniden kullanabilirsiniz).
AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te tanıtmak veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.