7 Eylül 2019 Cumartesi

UAC Bypass w/ Exploiting Scheduled Tasks

Windows Görev Zamanlayıcı, ayrıcalıklı yükselişler bulmak ve bulmak için harika bir yerdir, tipik olarak Windows‘a SUID stili yetenekleri yanlış anlaşılması kolay bir pakette eklemek kötüye kullanılır. Programları LocalSystem olarak çalıştırabilir, UAC için uygulamaları otomatik olarak kaldırabilir, hatta isteğe bağlı COM nesnelerini barındırabilir. Sonuç olarak bu bir karışıklıktır, bu yüzden programlayıcıda veya görevlerde hata bulmak özellikle zor değildir. Örneğin burada var birkaç Ben ettik bulundu önce . Bu kısa blog, UAC ile sessizce çalışan, en yüksek bilgi istemi seviyesine ayarlanmış ve herhangi bir dosyayı (bir kayıt defteri anahtarının dışında) diske bırakmadan çalıştırılabileceğini keşfeden hızlı ve kirli bir UAC bypass‘ı hakkında.

Her neyse, teknik olarak Microsoft ürünlerinde hata bulmak (bu yüzden neden olmasın diye sormaktan kaçınmak) konusunda sabote ediyorum. Ancak bazen ben bakmıyorken size sadece bir böcek üzerinde gezi tür. Çeşitli zamanlanmış görevlerin etrafında duruyordum ve ilginç görünen birinin, SilentCleanup olduğunu fark ettim . Bunun ilginç olmasının otomatik yükseltme olarak işaretlenmiş olması (bu durumda arayan kişi bölünmüş bir yönetici ise sessizce UAC yöneticisi olarak çalıştırılacak) ve yönetici olmayan kullanıcı tarafından manuel olarak başlatılabilir.

Anlaşılan bu ilginç olduğunu farketmeden yalnız değilim, Matt Nelson zaten bu zamanlanmış görevde bir UAC atlaması buldu. fakat tespit edilebildiği kadarıyla zaten düzeltildi, yani hala onu kullanmanın bir yolu var mı? Görmek için Powershell‘i kullanarak görevin özelliklerinden bazılarını bırakalım.
Windows Görev Zamanlayıcı, ayrıcalıklı yükselişler bulmak ve bulmak için harika bir yerdir, tipik olarak Windows‘a SUID stili yetenekleri yanlış anlaşılması kolay bir pakette eklemek kötüye kullanılır. Programları LocalSystem olarak çalıştırabilir, UAC için uygulamaları otomatik olarak kaldırabilir, hatta isteğe bağlı COM nesnelerini barındırabilir. Sonuç olarak bu bir karışıklıktır, bu yüzden programlayıcıda veya görevlerde hata bulmak özellikle zor değildir. Örneğin burada var birkaç Ben ettik bulundu önce . Bu kısa blog, UAC ile sessizce çalışan, en yüksek bilgi istemi seviyesine ayarlanmış ve herhangi bir dosyayı (bir kayıt defteri anahtarının dışında) diske bırakmadan çalıştırılabileceğini keşfeden hızlı ve kirli bir UAC bypass‘ı hakkında.

Her neyse, teknik olarak Microsoft ürünlerinde hata bulmak (bu yüzden neden olmasın diye sormaktan kaçınmak) konusunda sabote ediyorum. Ancak bazen ben bakmıyorken size sadece bir böcek üzerinde gezi tür. Çeşitli zamanlanmış görevlerin etrafında duruyordum ve ilginç görünen birinin, SilentCleanup olduğunu fark ettim . Bunun ilginç olmasının otomatik yükseltme olarak işaretlenmiş olması (bu durumda arayan kişi bölünmüş bir yönetici ise sessizce UAC yöneticisi olarak çalıştırılacak) ve yönetici olmayan kullanıcı tarafından manuel olarak başlatılabilir.

Anlaşılan bu ilginç olduğunu farketmeden yalnız değilim, Matt Nelson zaten bu zamanlanmış görevde bir UAC atlaması buldu. fakat tespit edilebildiği kadarıyla zaten düzeltildi, yani hala onu kullanmanın bir yolu var mı? Görmek için Powershell‘i kullanarak görevin özelliklerinden bazılarını bırakalım.



Gelen Principal mülkiyet görebildiğimiz Grup olarak çalışacak şekilde Kullanıcılar Kimliği doğrulanmış gerçekten bir işe başlama oturum açan kullanıcı ile çalışacak anlamına gelir. Ayrıca RunLevel‘in En yükseğe ayarlanmış olduğunu görüyoruz.bu, Görev Zamanlayıcı‘nın görevi istemeden yöneticiye yükseltmeye çalışacağını gösterir. Şimdi eylemlere bakın, bir yol belirtiyor, ancak ilginç bir şey fark ediyor musunuz? Yolun bir parçası olarak bir ortam değişkeni kullanıyor ve UAC senaryolarında bunlar normal bir kullanıcı tarafından HKEY_CURRENT_USER \\ Enviroment kayıt defteri anahtarına yazılarak ve bir REG_SZ değeri belirtilerek etkilenebilir .

Bu yüzden çalıları çalmayı kes, haydi onu kullanmaya çalışalım. C: \\ dummy \\ system32 \\ cleanmgr.exe dosyasına basit bir çalıştırılabilir dosya bıraktım , windir ortam değişkenini c: \\ dummy olarak ayarlayınve zamanlanmış göreve başladım hemen yönetici ayrıcalıklarına sahibim. Öyleyse süreci otomatikleştirelim, ihtiyacımız olan tüm işi yapmak için reg ve schtasks komutlarını kullanabildiğimiz için herkesin favori dilini BATCH kullanacağım . Ayrıca bir dosyayı diske bırakmak istemediğimizden, yürütülebilir yolun Görev Zamanlayıcısı tarafından alıntılanmadığı gerçeğini kötüye kullanabiliriz, bu da isteğe bağlı komut satırı argümanlarını enjekte edebileceğimiz ve sadece basit bir CMD kabuğu çalıştırabiliriz.

Quote:
reg add hkcu\\Environment /v windir /d "cmd /K reg delete hkcu\\Environment /v windir /f REM "
schtasks /Run /TN \\Microsoft\\Windows\\DiskCleanup\\SilentCleanup /I




BATCH dosyası ilk önce windir ortam değişkenini "cmd / K" olarak ayarlar, ardından orijinal windir ortam değişkenini silen aşağıdaki komut dosyası ile satırın geri kalan kısmını yorumlamak için REM kullanır. Bunu Windows 10 Anniversary Edition ve daha üst sürümlerinde split jeton yöneticisi olarak kullanmak, yönetici olarak çalışan bir mermi elde etmenizi sağlar. Daha önceki Windows sürümlerinde test etmedim, bu yüzden YMMV. Bunu MSRC‘ye göndermedim, ancak bir arkadaşım aracılığıyla RS3‘ün gelecek bir sürümünde zaten düzeltilmesi gerektiğini doğruladı, bu yüzden MS, en azından olabildiğince UAC‘yi geri kilitlemeye çalışmak konusunda ciddi görünüyor. .

Quote:
$action = New-ScheduledTaskAction -Execute $env:windir\\System32\\cleanmgr.exe -Argument "/autoclean /d $env:systemdrive"
Set-ScheduledTask SilentCleanup -TaskPath \\Microsoft\\Windows\\DiskCleanup -Action $action



Başka potansiyel adaylar bulmak istiyorsanız, aşağıdaki Powershell betiği
, otomatik olarak yükselten yürütülebilir eylemlerle tüm görevleri bulacaktır. Sistemimde 4 ayrı görev var, ancak yalnızca bir kişi ( SilentCleanup görevi) normal bir kullanıcı olarak yürütülebiliyor, bu yüzden gerisi sömürülemez. Sanırım iyi bir şey.

0 comentários:

Yorum Gönder